diff --git a/src/UrlParams.test.ts b/src/UrlParams.test.ts index 47428ac6..f78ffae4 100644 --- a/src/UrlParams.test.ts +++ b/src/UrlParams.test.ts @@ -100,4 +100,95 @@ describe("UrlParams", () => { expect(getUrlParams("?preload=true&widgetId=12345").preload).toBe(true); }); }); + + describe("returnToLobby", () => { + it("is true in SPA mode", () => { + expect(getUrlParams("?returnToLobby=false").returnToLobby).toBe(true); + }); + + it("defaults to false in widget mode", () => { + expect( + getUrlParams("?widgetId=12345&parentUrl=https%3A%2F%2Flocalhost%2Ffoo") + .returnToLobby, + ).toBe(false); + }); + + it("respected in widget mode", () => { + expect( + getUrlParams( + "?returnToLobby=true&widgetId=12345&parentUrl=https%3A%2F%2Flocalhost%2Ffoo", + ).returnToLobby, + ).toBe(true); + }); + }); + + describe("userId", () => { + it("is ignored in SPA mode", () => { + expect(getUrlParams("?userId=asd").userId).toBe(null); + }); + + it("is parsed in widget mode", () => { + expect( + getUrlParams( + "?userId=asd&widgetId=12345&parentUrl=https%3A%2F%2Flocalhost%2Ffoo", + ).userId, + ).toBe("asd"); + }); + }); + + describe("deviceId", () => { + it("is ignored in SPA mode", () => { + expect(getUrlParams("?deviceId=asd").deviceId).toBe(null); + }); + + it("is parsed in widget mode", () => { + expect( + getUrlParams( + "?deviceId=asd&widgetId=12345&parentUrl=https%3A%2F%2Flocalhost%2Ffoo", + ).deviceId, + ).toBe("asd"); + }); + }); + + describe("baseUrl", () => { + it("is ignored in SPA mode", () => { + expect(getUrlParams("?baseUrl=asd").baseUrl).toBe(null); + }); + + it("is parsed in widget mode", () => { + expect( + getUrlParams( + "?baseUrl=asd&widgetId=12345&parentUrl=https%3A%2F%2Flocalhost%2Ffoo", + ).baseUrl, + ).toBe("asd"); + }); + }); + + describe("viaServers", () => { + it("is ignored in widget mode", () => { + expect( + getUrlParams( + "?viaServers=asd&widgetId=12345&parentUrl=https%3A%2F%2Flocalhost%2Ffoo", + ).viaServers, + ).toBe(null); + }); + + it("is parsed in SPA mode", () => { + expect(getUrlParams("?viaServers=asd").viaServers).toBe("asd"); + }); + }); + + describe("homeserver", () => { + it("is ignored in widget mode", () => { + expect( + getUrlParams( + "?homeserver=asd&widgetId=12345&parentUrl=https%3A%2F%2Flocalhost%2Ffoo", + ).homeserver, + ).toBe(null); + }); + + it("is parsed in SPA mode", () => { + expect(getUrlParams("?homeserver=asd").homeserver).toBe("asd"); + }); + }); }); diff --git a/src/UrlParams.ts b/src/UrlParams.ts index c87b79cc..e471a9d9 100644 --- a/src/UrlParams.ts +++ b/src/UrlParams.ts @@ -232,10 +232,10 @@ export const getUrlParams = ( showControls: parser.getFlagParam("showControls", true), hideScreensharing: parser.getFlagParam("hideScreensharing"), e2eEnabled: parser.getFlagParam("enableE2EE", true), - userId: parser.getParam("userId"), + userId: isWidget ? parser.getParam("userId") : null, displayName: parser.getParam("displayName"), - deviceId: parser.getParam("deviceId"), - baseUrl: parser.getParam("baseUrl"), + deviceId: isWidget ? parser.getParam("deviceId") : null, + baseUrl: isWidget ? parser.getParam("baseUrl") : null, lang: parser.getParam("lang"), fonts: parser.getAllParams("font"), fontScale: Number.isNaN(fontScale) ? null : fontScale, @@ -243,10 +243,10 @@ export const getUrlParams = ( allowIceFallback: parser.getFlagParam("allowIceFallback"), perParticipantE2EE: parser.getFlagParam("perParticipantE2EE"), skipLobby: parser.getFlagParam("skipLobby"), - returnToLobby: parser.getFlagParam("returnToLobby"), + returnToLobby: isWidget ? parser.getFlagParam("returnToLobby") : true, theme: parser.getParam("theme"), - viaServers: parser.getParam("viaServers"), - homeserver: parser.getParam("homeserver"), + viaServers: !isWidget ? parser.getParam("viaServers") : null, + homeserver: !isWidget ? parser.getParam("homeserver") : null, }; };