diff --git a/src/CallHandler.js b/src/CallHandler.js index 7ec4e7d8bb..86674afd7d 100644 --- a/src/CallHandler.js +++ b/src/CallHandler.js @@ -435,7 +435,7 @@ async function _startCallApp(roomId, type) { const confId = room.roomId.replace(/[^A-Za-z0-9]/g, '') + widgetSessionId; const jitsiDomain = SdkConfig.get()['jitsi']['preferredDomain']; - const widgetUrl = WidgetUtils.getLocalJitsiWrapperUrl(); + const widgetUrl = WidgetUtils.getLocalJitsiWrapperUrl({}); const widgetData = { widgetSessionId, // TODO: Remove this eventually diff --git a/src/utils/WidgetUtils.js b/src/utils/WidgetUtils.js index 7d6bf5e90d..26e29b49f8 100644 --- a/src/utils/WidgetUtils.js +++ b/src/utils/WidgetUtils.js @@ -485,19 +485,16 @@ export default class WidgetUtils { 'userId=$matrix_user_id', ].join('&'); - let currentUrl = window.location.href.split('#')[0]; - if (!currentUrl.startsWith("https://") && !opts.forLocalRender) { + let baseUrl = window.location; + if (window.location.protocol !== "https:" && !opts.forLocalRender) { // Use an external wrapper if we're not locally rendering the widget. This is usually // the URL that will end up in the widget event, so we want to make sure it's relatively // safe to send. // We'll end up using a local render URL when we see a Jitsi widget anyways, so this is // really just for backwards compatibility and to appease the spec. - currentUrl = "https://riot.im/app"; + baseUrl = "https://riot.im/app"; } - if (!currentUrl.endsWith('/')) { - currentUrl = `${currentUrl}/`; - } - - return currentUrl + "jitsi.html#" + queryString; + const url = new URL("jitsi.html#" + queryString, baseUrl); // this strips hash fragment from baseUrl + return url.href; } }