From 6e19ac9a6181227f166b58dc86ca28990aa0a773 Mon Sep 17 00:00:00 2001 From: Timo K Date: Thu, 4 Dec 2025 10:54:22 +0100 Subject: [PATCH] This is a stop gap example how we can obtain the delay id --- src/state/CallViewModel/CallViewModel.ts | 1 + .../localMember/LocalMembership.ts | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/state/CallViewModel/CallViewModel.ts b/src/state/CallViewModel/CallViewModel.ts index 3c15958a..e1cb48e7 100644 --- a/src/state/CallViewModel/CallViewModel.ts +++ b/src/state/CallViewModel/CallViewModel.ts @@ -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"; diff --git a/src/state/CallViewModel/localMember/LocalMembership.ts b/src/state/CallViewModel/localMember/LocalMembership.ts index 60ae79b8..47f2b3d1 100644 --- a/src/state/CallViewModel/localMember/LocalMembership.ts +++ b/src/state/CallViewModel/localMember/LocalMembership.ts @@ -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 { + // 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(); +}