diff --git a/src/room/InCallView.tsx b/src/room/InCallView.tsx index 4daeae83..b8460ad8 100644 --- a/src/room/InCallView.tsx +++ b/src/room/InCallView.tsx @@ -897,7 +897,7 @@ export const InCallView: FC = ({ onDismiss={closeSettings} tab={settingsTab} onTabChange={setSettingsTab} - livekitRoom={undefined} // TODO-MULTI-SFU + livekitRooms={allLivekitRooms} /> )} diff --git a/src/settings/DeveloperSettingsTab.tsx b/src/settings/DeveloperSettingsTab.tsx index 36df5c39..d503385b 100644 --- a/src/settings/DeveloperSettingsTab.tsx +++ b/src/settings/DeveloperSettingsTab.tsx @@ -26,10 +26,10 @@ import styles from "./DeveloperSettingsTab.module.css"; import { useUrlParams } from "../UrlParams"; interface Props { client: MatrixClient; - livekitRoom?: LivekitRoom; + livekitRooms?: { room: LivekitRoom; url: string; isLocal?: boolean }[]; } -export const DeveloperSettingsTab: FC = ({ client, livekitRoom }) => { +export const DeveloperSettingsTab: FC = ({ client, livekitRooms }) => { const { t } = useTranslation(); const [duplicateTiles, setDuplicateTiles] = useSetting(duplicateTilesSetting); const [debugTileLayout, setDebugTileLayout] = useSetting( @@ -59,15 +59,16 @@ export const DeveloperSettingsTab: FC = ({ client, livekitRoom }) => { const urlParams = useUrlParams(); - const sfuUrl = useMemo((): URL | null => { - if (livekitRoom?.engine.client.ws?.url) { + const localSfuUrl = useMemo((): URL | null => { + const localRoom = livekitRooms?.find((r) => r.isLocal)?.room; + if (localRoom?.engine.client.ws?.url) { // strip the URL params - const url = new URL(livekitRoom.engine.client.ws.url); + const url = new URL(localRoom.engine.client.ws.url); url.search = ""; return url; } return null; - }, [livekitRoom]); + }, [livekitRooms]); return ( <> @@ -211,22 +212,26 @@ export const DeveloperSettingsTab: FC = ({ client, livekitRoom }) => { )} />{" "} - {livekitRoom ? ( + {livekitRooms?.map((livekitRoom) => ( <> -

+

{t("developer_mode.livekit_sfu", { - url: sfuUrl?.href || "unknown", + url: livekitRoom.url || "unknown", })} +

+ {livekitRoom.isLocal &&

ws-url: {localSfuUrl?.href}

} +

+ {t("developer_mode.livekit_server_info")}( + {livekitRoom.isLocal ? "local" : "remote"})

-

{t("developer_mode.livekit_server_info")}

-            {livekitRoom.serverInfo
-              ? JSON.stringify(livekitRoom.serverInfo, null, 2)
+            {livekitRoom.room.serverInfo
+              ? JSON.stringify(livekitRoom.room.serverInfo, null, 2)
               : "undefined"}
-            {livekitRoom.metadata}
+            {livekitRoom.room.metadata}
           
- ) : null} + ))}

{t("developer_mode.environment_variables")}

{JSON.stringify(import.meta.env, null, 2)}

{t("developer_mode.url_params")}

diff --git a/src/settings/SettingsModal.tsx b/src/settings/SettingsModal.tsx index 3272200d..9e581647 100644 --- a/src/settings/SettingsModal.tsx +++ b/src/settings/SettingsModal.tsx @@ -51,7 +51,11 @@ interface Props { onTabChange: (tab: SettingsTab) => void; client: MatrixClient; roomId?: string; - livekitRoom?: LivekitRoom; + livekitRooms?: { + room: LivekitRoom; + url: string; + isLocal?: boolean; + }[]; } export const defaultSettingsTab: SettingsTab = "audio"; @@ -63,7 +67,7 @@ export const SettingsModal: FC = ({ onTabChange, client, roomId, - livekitRoom, + livekitRooms, }) => { const { t } = useTranslation(); @@ -204,7 +208,9 @@ export const SettingsModal: FC = ({ const developerTab: Tab = { key: "developer", name: t("settings.developer_tab_title"), - content: , + content: ( + + ), }; const tabs = [audioTab, videoTab]; diff --git a/src/state/CallViewModel.ts b/src/state/CallViewModel.ts index 6e922bee..8479f76b 100644 --- a/src/state/CallViewModel.ts +++ b/src/state/CallViewModel.ts @@ -593,11 +593,18 @@ export class CallViewModel extends ViewModel { ]).pipe( map(([remoteConnections, localConnection, localFocus]) => Array.from(remoteConnections.entries()) - .map(([index, c]) => ({ room: c.livekitRoom, url: index })) + .map( + ([index, c]) => + ({ + room: c.livekitRoom, + url: index, + }) as { room: LivekitRoom; url: string; isLocal?: boolean }, + ) .concat([ { room: localConnection.livekitRoom, url: localFocus.livekit_service_url, + isLocal: true, }, ]), ),