Apply prettier formatting
This commit is contained in:
parent
a32f12c8f3
commit
7921a6cbf8
104 changed files with 12169 additions and 11047 deletions
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { KJUR } from 'jsrsasign';
|
||||
import { KJUR } from "jsrsasign";
|
||||
import {
|
||||
IOpenIDCredentials,
|
||||
IWidgetApiRequest,
|
||||
|
@ -34,7 +34,7 @@ import { getVectorConfig } from "../getconfig";
|
|||
// We have to trick webpack into loading our CSS for us.
|
||||
require("./index.pcss");
|
||||
|
||||
const JITSI_OPENIDTOKEN_JWT_AUTH = 'openidtoken-jwt';
|
||||
const JITSI_OPENIDTOKEN_JWT_AUTH = "openidtoken-jwt";
|
||||
|
||||
// Dev note: we use raw JS without many dependencies to reduce bundle size.
|
||||
// We do not need all of React to render a Jitsi conference.
|
||||
|
@ -82,9 +82,9 @@ const setupCompleted = (async (): Promise<string | void> => {
|
|||
// If we have these params, expect a widget API to be available (ie. to be in an iframe
|
||||
// inside a matrix client). Otherwise, assume we're on our own, eg. have been popped
|
||||
// out into a browser.
|
||||
const parentUrl = qsParam('parentUrl', true);
|
||||
const widgetId = qsParam('widgetId', true);
|
||||
const theme = qsParam('theme', true);
|
||||
const parentUrl = qsParam("parentUrl", true);
|
||||
const widgetId = qsParam("widgetId", true);
|
||||
const theme = qsParam("theme", true);
|
||||
|
||||
if (theme) {
|
||||
document.body.classList.add(`theme-${theme.replace(" ", "_")}`);
|
||||
|
@ -93,10 +93,10 @@ const setupCompleted = (async (): Promise<string | void> => {
|
|||
// Set this up as early as possible because Element will be hitting it almost immediately.
|
||||
let widgetApiReady: Promise<void>;
|
||||
if (parentUrl && widgetId) {
|
||||
const parentOrigin = new URL(qsParam('parentUrl')).origin;
|
||||
const parentOrigin = new URL(qsParam("parentUrl")).origin;
|
||||
widgetApi = new WidgetApi(qsParam("widgetId"), parentOrigin);
|
||||
|
||||
widgetApiReady = new Promise<void>(resolve => widgetApi.once("ready", resolve));
|
||||
widgetApiReady = new Promise<void>((resolve) => widgetApi.once("ready", resolve));
|
||||
widgetApi.requestCapabilities(VideoConferenceCapabilities);
|
||||
widgetApi.start();
|
||||
|
||||
|
@ -134,39 +134,39 @@ const setupCompleted = (async (): Promise<string | void> => {
|
|||
meetApi = null;
|
||||
closeConference();
|
||||
} else {
|
||||
meetApi?.executeCommand('hangup');
|
||||
meetApi?.executeCommand("hangup");
|
||||
}
|
||||
});
|
||||
handleAction(ElementWidgetActions.MuteAudio, async () => {
|
||||
if (meetApi && !await meetApi.isAudioMuted()) {
|
||||
meetApi.executeCommand('toggleAudio');
|
||||
if (meetApi && !(await meetApi.isAudioMuted())) {
|
||||
meetApi.executeCommand("toggleAudio");
|
||||
}
|
||||
});
|
||||
handleAction(ElementWidgetActions.UnmuteAudio, async () => {
|
||||
if (meetApi && await meetApi.isAudioMuted()) {
|
||||
meetApi.executeCommand('toggleAudio');
|
||||
if (meetApi && (await meetApi.isAudioMuted())) {
|
||||
meetApi.executeCommand("toggleAudio");
|
||||
}
|
||||
});
|
||||
handleAction(ElementWidgetActions.MuteVideo, async () => {
|
||||
if (meetApi && !await meetApi.isVideoMuted()) {
|
||||
meetApi.executeCommand('toggleVideo');
|
||||
if (meetApi && !(await meetApi.isVideoMuted())) {
|
||||
meetApi.executeCommand("toggleVideo");
|
||||
}
|
||||
});
|
||||
handleAction(ElementWidgetActions.UnmuteVideo, async () => {
|
||||
if (meetApi && await meetApi.isVideoMuted()) {
|
||||
meetApi.executeCommand('toggleVideo');
|
||||
if (meetApi && (await meetApi.isVideoMuted())) {
|
||||
meetApi.executeCommand("toggleVideo");
|
||||
}
|
||||
});
|
||||
handleAction(ElementWidgetActions.TileLayout, async () => {
|
||||
meetApi?.executeCommand('setTileView', true);
|
||||
meetApi?.executeCommand("setTileView", true);
|
||||
});
|
||||
handleAction(ElementWidgetActions.SpotlightLayout, async () => {
|
||||
meetApi?.executeCommand('setTileView', false);
|
||||
meetApi?.executeCommand("setTileView", false);
|
||||
});
|
||||
handleAction(ElementWidgetActions.StartLiveStream, async ({ rtmpStreamKey }) => {
|
||||
if (!meetApi) throw new Error("Conference not joined");
|
||||
meetApi.executeCommand('startRecording', {
|
||||
mode: 'stream',
|
||||
meetApi.executeCommand("startRecording", {
|
||||
mode: "stream",
|
||||
// this looks like it should be rtmpStreamKey but we may be on too old
|
||||
// a version of jitsi meet
|
||||
//rtmpStreamKey,
|
||||
|
@ -178,23 +178,23 @@ const setupCompleted = (async (): Promise<string | void> => {
|
|||
}
|
||||
|
||||
// Populate the Jitsi params now
|
||||
jitsiDomain = qsParam('conferenceDomain');
|
||||
conferenceId = qsParam('conferenceId');
|
||||
displayName = qsParam('displayName', true);
|
||||
avatarUrl = qsParam('avatarUrl', true); // http not mxc
|
||||
userId = qsParam('userId');
|
||||
jitsiAuth = qsParam('auth', true);
|
||||
roomId = qsParam('roomId', true);
|
||||
roomName = qsParam('roomName', true);
|
||||
startAudioOnly = qsParam('isAudioOnly', true) === "true";
|
||||
isVideoChannel = qsParam('isVideoChannel', true) === "true";
|
||||
supportsScreensharing = qsParam('supportsScreensharing', true) === "true";
|
||||
jitsiDomain = qsParam("conferenceDomain");
|
||||
conferenceId = qsParam("conferenceId");
|
||||
displayName = qsParam("displayName", true);
|
||||
avatarUrl = qsParam("avatarUrl", true); // http not mxc
|
||||
userId = qsParam("userId");
|
||||
jitsiAuth = qsParam("auth", true);
|
||||
roomId = qsParam("roomId", true);
|
||||
roomName = qsParam("roomName", true);
|
||||
startAudioOnly = qsParam("isAudioOnly", true) === "true";
|
||||
isVideoChannel = qsParam("isVideoChannel", true) === "true";
|
||||
supportsScreensharing = qsParam("supportsScreensharing", true) === "true";
|
||||
|
||||
// We've reached the point where we have to wait for the config, so do that then parse it.
|
||||
const instanceConfig = new SnakedObject<IConfigOptions>((await configPromise) ?? <IConfigOptions>{});
|
||||
const jitsiConfig = instanceConfig.get("jitsi_widget") ?? {};
|
||||
skipOurWelcomeScreen = (new SnakedObject<IConfigOptions["jitsi_widget"]>(jitsiConfig))
|
||||
.get("skip_built_in_welcome_screen") ?? false;
|
||||
skipOurWelcomeScreen =
|
||||
new SnakedObject<IConfigOptions["jitsi_widget"]>(jitsiConfig).get("skip_built_in_welcome_screen") ?? false;
|
||||
|
||||
// Either reveal the prejoin screen, or skip straight to Jitsi depending on the config.
|
||||
// We don't set up the call yet though as this might lead to failure without the widget API.
|
||||
|
@ -238,10 +238,10 @@ function switchVisibleContainers(): void {
|
|||
}
|
||||
|
||||
function toggleConferenceVisibility(inConference: boolean): void {
|
||||
document.getElementById("jitsiContainer").style.visibility = inConference ? 'unset' : 'hidden';
|
||||
document.getElementById("jitsiContainer").style.visibility = inConference ? "unset" : "hidden";
|
||||
// Video rooms have a separate UI for joining, so they should never show our join button
|
||||
document.getElementById("joinButtonContainer").style.visibility =
|
||||
(inConference || isVideoChannel) ? 'hidden' : 'unset';
|
||||
inConference || isVideoChannel ? "hidden" : "unset";
|
||||
}
|
||||
|
||||
function skipToJitsiSplashScreen(): void {
|
||||
|
@ -256,7 +256,7 @@ function skipToJitsiSplashScreen(): void {
|
|||
*/
|
||||
function createJWTToken(): string {
|
||||
// Header
|
||||
const header = { alg: 'HS256', typ: 'JWT' };
|
||||
const header = { alg: "HS256", typ: "JWT" };
|
||||
// Payload
|
||||
const payload = {
|
||||
// As per Jitsi token auth, `iss` needs to be set to something agreed between
|
||||
|
@ -281,12 +281,7 @@ function createJWTToken(): string {
|
|||
// Sign JWT
|
||||
// The secret string here is irrelevant, we're only using the JWT
|
||||
// to transport data to Prosody in the Jitsi stack.
|
||||
return KJUR.jws.JWS.sign(
|
||||
'HS256',
|
||||
JSON.stringify(header),
|
||||
JSON.stringify(payload),
|
||||
'notused',
|
||||
);
|
||||
return KJUR.jws.JWS.sign("HS256", JSON.stringify(header), JSON.stringify(payload), "notused");
|
||||
}
|
||||
|
||||
async function notifyHangup(errorMessage?: string): Promise<void> {
|
||||
|
@ -318,9 +313,10 @@ function closeConference(): void {
|
|||
function joinConference(audioInput?: string | null, videoInput?: string | null): void {
|
||||
let jwt;
|
||||
if (jitsiAuth === JITSI_OPENIDTOKEN_JWT_AUTH) {
|
||||
if (!openIdToken?.access_token) { // eslint-disable-line camelcase
|
||||
if (!openIdToken?.access_token) {
|
||||
// eslint-disable-line camelcase
|
||||
// We've failing to get a token, don't try to init conference
|
||||
logger.warn('Expected to have an OpenID credential, cannot initialize widget.');
|
||||
logger.warn("Expected to have an OpenID credential, cannot initialize widget.");
|
||||
document.getElementById("widgetActionContainer").innerText = "Failed to load Jitsi widget";
|
||||
return;
|
||||
}
|
||||
|
@ -331,8 +327,8 @@ function joinConference(audioInput?: string | null, videoInput?: string | null):
|
|||
|
||||
logger.warn(
|
||||
"[Jitsi Widget] The next few errors about failing to parse URL parameters are fine if " +
|
||||
"they mention 'external_api' or 'jitsi' in the stack. They're just Jitsi Meet trying to parse " +
|
||||
"our fragment values and not recognizing the options.",
|
||||
"they mention 'external_api' or 'jitsi' in the stack. They're just Jitsi Meet trying to parse " +
|
||||
"our fragment values and not recognizing the options.",
|
||||
);
|
||||
|
||||
const options = {
|
||||
|
@ -400,7 +396,7 @@ function joinConference(audioInput?: string | null, videoInput?: string | null):
|
|||
meetApi.on("audioMuteStatusChanged", onAudioMuteStatusChanged);
|
||||
meetApi.on("videoMuteStatusChanged", onVideoMuteStatusChanged);
|
||||
|
||||
["videoConferenceJoined", "participantJoined", "participantLeft"].forEach(event => {
|
||||
["videoConferenceJoined", "participantJoined", "participantLeft"].forEach((event) => {
|
||||
meetApi.on(event, updateParticipants);
|
||||
});
|
||||
|
||||
|
@ -472,5 +468,4 @@ const updateParticipants = (): void => {
|
|||
});
|
||||
};
|
||||
|
||||
const onLog = ({ logLevel, args }): void =>
|
||||
(parent as unknown as typeof global).mx_rage_logger?.log(logLevel, ...args);
|
||||
const onLog = ({ logLevel, args }): void => (parent as unknown as typeof global).mx_rage_logger?.log(logLevel, ...args);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue