diff --git a/src/room/RoomPage.tsx b/src/room/RoomPage.tsx index 0cf4a7bc..28523b44 100644 --- a/src/room/RoomPage.tsx +++ b/src/room/RoomPage.tsx @@ -77,7 +77,8 @@ export const RoomPage: FC = () => { scope, devices, calculateInitialMuteState( - urlParams, + urlParams.skipLobby, + urlParams.callIntent, import.meta.env.VITE_PACKAGE, window.location.hostname, Config.get().trust_localhost_for_mute_state, diff --git a/src/state/initialMuteState.test.ts b/src/state/initialMuteState.test.ts index 7b3cb46c..58877ba7 100644 --- a/src/state/initialMuteState.test.ts +++ b/src/state/initialMuteState.test.ts @@ -24,7 +24,8 @@ test.each<{ "Should allow to unmute on start if not skipping lobby (callIntent: $callIntent, packageType: $packageType)", ({ callIntent, packageType }) => { const { audioEnabled, videoEnabled } = calculateInitialMuteState( - { skipLobby: false, callIntent }, + false, + callIntent, packageType, ); expect(audioEnabled).toBe(true); @@ -42,7 +43,8 @@ test.each<{ "Should always mute on start if skipping lobby on non embedded build (callIntent: $callIntent)", ({ callIntent }) => { const { audioEnabled, videoEnabled } = calculateInitialMuteState( - { skipLobby: true, callIntent }, + true, + callIntent, "full", ); expect(audioEnabled).toBe(false); @@ -60,7 +62,8 @@ test.each<{ "Can start unmuted if skipping lobby on embedded build (callIntent: $callIntent)", ({ callIntent }) => { const { audioEnabled, videoEnabled } = calculateInitialMuteState( - { skipLobby: true, callIntent }, + true, + callIntent, "embedded", ); expect(audioEnabled).toBe(true); @@ -85,7 +88,8 @@ test.each<{ "Should trust localhost domain when in dev mode isDevBuild($isDevBuild) host($currentHost)", ({ isDevBuild, currentHost, expectedEnabled }) => { const { audioEnabled, videoEnabled } = calculateInitialMuteState( - { skipLobby: true, callIntent: "video" }, + true, + "video", "full", currentHost, isDevBuild, diff --git a/src/state/initialMuteState.ts b/src/state/initialMuteState.ts index c62406a1..d4c4bca1 100644 --- a/src/state/initialMuteState.ts +++ b/src/state/initialMuteState.ts @@ -6,8 +6,7 @@ Please see LICENSE in the repository root for full details. */ import { logger } from "matrix-js-sdk/lib/logger"; - -import { type UrlParams } from "../UrlParams.ts"; +import { type RTCCallIntent } from "matrix-js-sdk/lib/matrixrtc"; /** * Calculates the initial mute state for media devices based on configuration. @@ -16,12 +15,12 @@ import { type UrlParams } from "../UrlParams.ts"; * This function encapsulates the logic to determine the appropriate initial state. */ export function calculateInitialMuteState( - urlParams: Pick, + skipLobby: boolean, + callIntent: RTCCallIntent | undefined, packageType: "full" | "embedded", hostname: string | undefined = undefined, trustLocalhost: boolean = false, ): { audioEnabled: boolean; videoEnabled: boolean } { - const { skipLobby, callIntent } = urlParams; logger.debug( `calculateInitialMuteState: skipLobby=${skipLobby}, callIntent=${callIntent}, hostname=${hostname}, trustLocalhost=${trustLocalhost}`,