mirror of
https://github.com/vector-im/element-call.git
synced 2026-04-25 09:35:33 +00:00
fix: Ensure to publish on the correct transport
This commit is contained in:
@@ -120,6 +120,7 @@ import {
|
|||||||
type LocalMatrixLivekitMember,
|
type LocalMatrixLivekitMember,
|
||||||
type RemoteMatrixLivekitMember,
|
type RemoteMatrixLivekitMember,
|
||||||
type MatrixLivekitMember,
|
type MatrixLivekitMember,
|
||||||
|
areLivekitTransportsEqual,
|
||||||
} from "./remoteMembers/MatrixLivekitMembers.ts";
|
} from "./remoteMembers/MatrixLivekitMembers.ts";
|
||||||
import {
|
import {
|
||||||
type AutoLeaveReason,
|
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$({
|
const localMembership = createLocalMembership$({
|
||||||
scope,
|
scope,
|
||||||
homeserverConnected: createHomeserverConnected$(
|
homeserverConnected: createHomeserverConnected$(
|
||||||
@@ -546,9 +567,7 @@ export function createCallViewModel$(
|
|||||||
},
|
},
|
||||||
connectionManager,
|
connectionManager,
|
||||||
matrixRTCSession,
|
matrixRTCSession,
|
||||||
localTransport$: scope.behavior(
|
localTransport$: scope.behavior(publishingTransport$),
|
||||||
localTransport$.pipe(switchMap((t) => t.advertised$)),
|
|
||||||
),
|
|
||||||
logger: logger.getChild(`[${Date.now()}]`),
|
logger: logger.getChild(`[${Date.now()}]`),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user