This is a stop gap example how we can obtain the delay id

This commit is contained in:
Timo K
2025-12-04 10:54:22 +01:00
parent f05d4b158e
commit 6e19ac9a61
2 changed files with 27 additions and 0 deletions

View File

@@ -100,6 +100,7 @@ import { createHomeserverConnected$ } from "./localMember/HomeserverConnected.ts
import {
createLocalMembership$,
enterRTCSession,
MatrixState,
RTCBackendState,
} from "./localMember/LocalMembership.ts";
import { createLocalTransport$ } from "./localMember/LocalTransport.ts";

View File

@@ -580,6 +580,21 @@ export const createLocalMembership$ = ({
};
}
matrixState$.pipe(scope.bind()).subscribe((matrixState) => {
if (matrixState.state !== MatrixState.Connected) return;
// UNSAVE. Arbitrary change some types to read properties we should not have access to (private)
// TODO this is bad and we need a proper solution to expose the delayId (or let the js-sdk take care of delegating the delayed event)
const sessionWithAccessToPrivateMembers = matrixRTCSession as unknown as {
membershipManager: { state: { delayId: string } };
};
const delayId =
sessionWithAccessToPrivateMembers.membershipManager.state.delayId;
logger.debug("delayId is available", delayId);
// call
void passDelayIdToJWT(delayId);
});
return {
startTracks,
requestConnect,
@@ -673,3 +688,14 @@ export async function enterRTCSession(
await widget.api.transport.send(ElementWidgetActions.JoinCall, {});
}
}
async function passDelayIdToJWT(delayId: string): Promise<void> {
// CHANGE ME!
// try{
// await fetch(sth using delayId)
// }catch(error){
// // at a minimum log the error (maybe we can do sth smarter)
// logger.error(error);
// }
return Promise.resolve();
}