Files
jitsi-meet/react/features/authentication/functions.any.ts

76 lines
2.3 KiB
TypeScript

import { IConfig } from '../base/config/configType';
import { getBackendSafeRoomName } from '../base/util/uri';
/**
* Checks if the token for authentication is available.
*
* @param {Object} config - Configuration state object from store.
* @returns {boolean}
*/
export const isTokenAuthEnabled = (config: IConfig): boolean =>
typeof config.tokenAuthUrl === 'string' && config.tokenAuthUrl.length > 0;
/**
* Returns the state that we can add as a parameter to the tokenAuthUrl.
*
* @param {boolean} audioMuted - Start conference with audio muted.
* @param {boolean} audioOnlyEnabled - Join conference audio only.
* @param {string?} roomName - The room name.
* @param {string?} tenant - The tenant name if any.
* @param {boolean} skipPrejoin - Whether to skip pre-join page.
* @param {URL} locationURL - The location URL.
* @param {boolean} videoMuted - Start conference with video muted.
* @returns {Object} The state object.
*/
export const _getTokenAuthState = (
audioMuted: boolean | undefined = false,
audioOnlyEnabled: boolean | undefined = false,
roomName: string | undefined,
tenant: string | undefined,
skipPrejoin: boolean | undefined = false,
locationURL: URL,
// eslint-disable-next-line max-params
videoMuted: boolean | undefined = false): object => {
const state = {
room: roomName,
roomSafe: getBackendSafeRoomName(roomName),
tenant
};
if (audioMuted) {
// @ts-ignore
state['config.startWithAudioMuted'] = true;
}
if (audioOnlyEnabled) {
// @ts-ignore
state['config.startAudioOnly'] = true;
}
if (skipPrejoin) {
// We have already shown the prejoin screen, no need to show it again after obtaining the token.
// @ts-ignore
state['config.prejoinConfig.enabled'] = false;
}
if (videoMuted) {
// @ts-ignore
state['config.startWithVideoMuted'] = true;
}
const params = new URLSearchParams(locationURL.hash);
for (const [ key, value ] of params) {
// we allow only config and interfaceConfig overrides in the state
if (key.startsWith('config.') || key.startsWith('interfaceConfig.')) {
// @ts-ignore
state[key] = value;
}
}
return state;
};