Some checks failed
Close stale issues and PRs / stale (push) Has been cancelled
103 lines
2.7 KiB
TypeScript
103 lines
2.7 KiB
TypeScript
import BaseDialog from './BaseDialog';
|
|
|
|
const CONFERENCE_ID = 'conference-id';
|
|
const CONFERENCE_URL = 'invite-more-dialog-conference-url';
|
|
const DIALOG_CONTAINER = 'invite-more-dialog';
|
|
const MORE_NUMBERS = 'more-numbers';
|
|
const PHONE_NUMBER = 'phone-number';
|
|
|
|
/**
|
|
* Represents the invite dialog in a particular participant.
|
|
*/
|
|
export default class InviteDialog extends BaseDialog {
|
|
/**
|
|
* Checks if the dialog is open.
|
|
*/
|
|
isOpen() {
|
|
return this.participant.driver.$(`.${DIALOG_CONTAINER}`).isExisting();
|
|
}
|
|
|
|
/**
|
|
* Open the invite dialog, if the info dialog is closed.
|
|
*/
|
|
async open() {
|
|
if (await this.isOpen()) {
|
|
return;
|
|
}
|
|
|
|
await this.participant.getParticipantsPane().clickInvite();
|
|
}
|
|
|
|
/**
|
|
* Returns the PIN for the conference.
|
|
*/
|
|
async getPinNumber() {
|
|
await this.open();
|
|
|
|
return (await this.getValueAfterColon(CONFERENCE_ID)).replace(/[# ]/g, '');
|
|
}
|
|
|
|
/**
|
|
* Private helper to get values after colons. The invite dialog lists conference specific information
|
|
* after a label, followed by a colon.
|
|
*
|
|
* @param className
|
|
* @private
|
|
*/
|
|
private async getValueAfterColon(className: string) {
|
|
const elem = this.participant.driver.$(`.${className}`);
|
|
|
|
await elem.waitForExist({ timeout: 5000 });
|
|
|
|
const fullText = await elem.getText();
|
|
|
|
this.participant.log(`Extracted text in invite dialog: ${fullText}`);
|
|
|
|
return fullText.split(':')[1].trim();
|
|
}
|
|
|
|
/**
|
|
* Returns the meeting url displayed in the dialog.
|
|
*/
|
|
async getMeetingURL() {
|
|
const elem = this.participant.driver.$(`.${CONFERENCE_URL}`);
|
|
|
|
await elem.waitForExist();
|
|
|
|
return (await elem.getText())?.trim();
|
|
}
|
|
|
|
/**
|
|
* Waits for the dialog to be open or closed.
|
|
* @param reverse
|
|
*/
|
|
async waitTillOpen(reverse = false) {
|
|
await this.participant.driver.waitUntil(
|
|
/* eslint-disable no-extra-parens */
|
|
async () => (reverse ? !await this.isOpen() : await this.isOpen()),
|
|
{
|
|
timeout: 2_000,
|
|
timeoutMsg: `invite dialog did not ${reverse ? 'close' : 'open'}`
|
|
}
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Gets the string that contains the dial in number for the current conference.
|
|
*/
|
|
getDialInNumber() {
|
|
return this.getValueAfterColon(PHONE_NUMBER);
|
|
}
|
|
|
|
/**
|
|
* Clicks the link to open a page to show all available dial in numbers.
|
|
*/
|
|
async openDialInNumbersPage() {
|
|
const moreNumbers = this.participant.driver.$(`.${MORE_NUMBERS}`);
|
|
|
|
await moreNumbers.waitForExist();
|
|
await moreNumbers.waitForClickable();
|
|
await moreNumbers.click();
|
|
}
|
|
}
|