fix: Ensure to publish on the correct transport

This commit is contained in:
Valere
2026-04-08 11:10:27 +02:00
parent 58d377c3f7
commit 08006d640a

View File

@@ -120,6 +120,7 @@ import {
type LocalMatrixLivekitMember,
type RemoteMatrixLivekitMember,
type MatrixLivekitMember,
areLivekitTransportsEqual,
} from "./remoteMembers/MatrixLivekitMembers.ts";
import {
type AutoLeaveReason,
@@ -517,6 +518,26 @@ export function createCallViewModel$(
),
);
// Observe the transport we should publish
const publishingTransport$ = localTransport$.pipe(
// observe the active$ transport
switchMap((t) => {
return combineLatest([t.active$, t.advertised$]).pipe(
map(([active, advertised]) => {
if (active?.transport) {
// use the active one (oldest member transport)
return active.transport;
} else {
// There is no active transport, we might just be the first member in the call
// so use the advertised to start
return advertised;
}
}),
);
}),
distinctUntilChanged(areLivekitTransportsEqual),
);
const localMembership = createLocalMembership$({
scope,
homeserverConnected: createHomeserverConnected$(
@@ -546,9 +567,7 @@ export function createCallViewModel$(
},
connectionManager,
matrixRTCSession,
localTransport$: scope.behavior(
localTransport$.pipe(switchMap((t) => t.advertised$)),
),
localTransport$: scope.behavior(publishingTransport$),
logger: logger.getChild(`[${Date.now()}]`),
});