56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { ISubscription } from '../../definitions';
|
|
import { events, logEvent } from '../../utils/log';
|
|
import { store } from '../auxStore';
|
|
import Navigation from '../Navigation';
|
|
import sdk from '../rocketchat';
|
|
|
|
async function jitsiURL({ room }: { room: ISubscription }) {
|
|
const { settings } = store.getState();
|
|
const { Jitsi_Enabled } = settings;
|
|
|
|
if (!Jitsi_Enabled) {
|
|
return '';
|
|
}
|
|
|
|
const { Jitsi_Domain, Jitsi_URL_Room_Prefix, Jitsi_SSL, Jitsi_Enabled_TokenAuth, uniqueID, Jitsi_URL_Room_Hash } = settings;
|
|
|
|
const domain = `${Jitsi_Domain}/`;
|
|
const prefix = Jitsi_URL_Room_Prefix;
|
|
const protocol = Jitsi_SSL ? 'https://' : 'http://';
|
|
|
|
let queryString = '';
|
|
if (Jitsi_Enabled_TokenAuth) {
|
|
try {
|
|
const accessToken = await sdk.methodCallWrapper('jitsi:generateAccessToken', room?.rid);
|
|
queryString = `?jwt=${accessToken}`;
|
|
} catch {
|
|
logEvent(events.RA_JITSI_F);
|
|
}
|
|
}
|
|
|
|
let rname;
|
|
if (Jitsi_URL_Room_Hash) {
|
|
rname = uniqueID + room?.rid;
|
|
} else {
|
|
rname = encodeURIComponent(room.t === 'd' ? (room?.usernames?.join?.(' x ') as string) : room?.name);
|
|
}
|
|
|
|
return `${protocol}${domain}${prefix}${rname}${queryString}`;
|
|
}
|
|
|
|
export function callJitsiWithoutServer(path: string): void {
|
|
logEvent(events.RA_JITSI_VIDEO);
|
|
const { Jitsi_SSL } = store.getState().settings;
|
|
const protocol = Jitsi_SSL ? 'https://' : 'http://';
|
|
const url = `${protocol}${path}`;
|
|
Navigation.navigate('JitsiMeetView', { url, onlyAudio: false });
|
|
}
|
|
|
|
async function callJitsi(room: ISubscription, onlyAudio = false): Promise<void> {
|
|
logEvent(onlyAudio ? events.RA_JITSI_AUDIO : events.RA_JITSI_VIDEO);
|
|
const url = await jitsiURL({ room });
|
|
Navigation.navigate('JitsiMeetView', { url, onlyAudio, rid: room?.rid });
|
|
}
|
|
|
|
export default callJitsi;
|