diff --git a/src/state/CallViewModel/localMember/LocalMembership.ts b/src/state/CallViewModel/localMember/LocalMembership.ts index a0b06d46..8f7d8b54 100644 --- a/src/state/CallViewModel/localMember/LocalMembership.ts +++ b/src/state/CallViewModel/localMember/LocalMembership.ts @@ -172,9 +172,11 @@ export const createLocalMembership$ = ({ combineLatest( [connectionManager.connections$, localTransport$], (connections, transport) => { - if (transport === undefined) return undefined; - return connections.value.find((connection) => - areLivekitTransportsEqual(connection.transport, transport), + if (transport === null) return null; + return ( + connections.value.find((connection) => + areLivekitTransportsEqual(connection.transport, transport), + ) ?? null ); }, ), diff --git a/src/state/CallViewModel/localMember/LocalTransport.ts b/src/state/CallViewModel/localMember/LocalTransport.ts index 69c9b934..a96962c9 100644 --- a/src/state/CallViewModel/localMember/LocalTransport.ts +++ b/src/state/CallViewModel/localMember/LocalTransport.ts @@ -91,7 +91,9 @@ export const createLocalTransport$ = ({ combineLatest( [useOldestMember$, oldestMemberTransport$, preferredTransport$], (useOldestMember, oldestMemberTransport, preferredTransport) => - useOldestMember ? oldestMemberTransport : preferredTransport, + useOldestMember + ? (oldestMemberTransport ?? preferredTransport) + : preferredTransport, ).pipe(distinctUntilChanged(deepCompare)), ); return advertisedTransport$; diff --git a/src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts b/src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts index c9434327..05ffb4f9 100644 --- a/src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts +++ b/src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts @@ -145,13 +145,12 @@ export function createMatrixLivekitMembers$({ // TODO add this to the JS-SDK export function areLivekitTransportsEqual( - t1: LivekitTransport, - t2: LivekitTransport, + t1?: LivekitTransport, + t2?: LivekitTransport, ): boolean { - return ( - t1.livekit_service_url === t2.livekit_service_url && - // In case we have different lk rooms in the same SFU (depends on the livekit authorization service) - // It is only needed in case the livekit authorization service is not behaving as expected (or custom implementation) - t1.livekit_alias === t2.livekit_alias - ); + if (t1 && t2) return t1.livekit_service_url === t2.livekit_service_url; + // In case we have different lk rooms in the same SFU (depends on the livekit authorization service) + // It is only needed in case the livekit authorization service is not behaving as expected (or custom implementation) + if (!t1 && !t2) return true; + return false; }