diff --git a/src/UrlParams.ts b/src/UrlParams.ts index df62aef..27b99cc 100644 --- a/src/UrlParams.ts +++ b/src/UrlParams.ts @@ -79,6 +79,11 @@ export interface UrlParams { * The Posthog analytics ID. It is only available if the user has given consent for sharing telemetry in element web. */ analyticsID: string | null; + /** + * Whether the app is allowed to use fallback STUN servers for ICE in case the + * user's homeserver doesn't provide any. + */ + allowIceFallback: boolean; } /** @@ -135,6 +140,7 @@ export const getUrlParams = ( fonts: getAllParams("font"), fontScale: Number.isNaN(fontScale) ? null : fontScale, analyticsID: getParam("analyticsID"), + allowIceFallback: hasParam("allowIceFallback"), }; }; diff --git a/src/widget.ts b/src/widget.ts index 6a38f9d..0bee23f 100644 --- a/src/widget.ts +++ b/src/widget.ts @@ -101,7 +101,14 @@ export const widget: WidgetHelpers | null = (() => { // We need to do this now rather than later because it has capabilities to // request, and is responsible for starting the transport (should it be?) - const { roomId, userId, deviceId, baseUrl, e2eEnabled } = getUrlParams(); + const { + roomId, + userId, + deviceId, + baseUrl, + e2eEnabled, + allowIceFallback, + } = getUrlParams(); if (!roomId) throw new Error("Room ID must be supplied"); if (!userId) throw new Error("User ID must be supplied"); if (!deviceId) throw new Error("Device ID must be supplied"); @@ -148,6 +155,7 @@ export const widget: WidgetHelpers | null = (() => { deviceId, timelineSupport: true, useE2eForGroupCall: e2eEnabled, + fallbackICEServerAllowed: allowIceFallback, } ); const clientPromise = client.startClient().then(() => client);