mirror of
https://github.com/vector-im/element-call.git
synced 2026-08-08 20:09:19 +00:00
very hacky PoC to showcase delegation of delayed disconnect event
This commit is contained in:
@@ -53,6 +53,9 @@ import { MatrixRTCMode } from "../../../settings/settings.ts";
|
|||||||
import { Config } from "../../../config/Config.ts";
|
import { Config } from "../../../config/Config.ts";
|
||||||
import { type Connection } from "../remoteMembers/Connection.ts";
|
import { type Connection } from "../remoteMembers/Connection.ts";
|
||||||
|
|
||||||
|
import { getSFUConfigWithOpenID } from "../../../livekit/openIDSFU.ts"
|
||||||
|
import { type MatrixClient } from "matrix-js-sdk";
|
||||||
|
|
||||||
export enum RTCBackendState {
|
export enum RTCBackendState {
|
||||||
Error = "error",
|
Error = "error",
|
||||||
/** Not even a transport is available to the LocalMembership */
|
/** Not even a transport is available to the LocalMembership */
|
||||||
@@ -585,14 +588,21 @@ export const createLocalMembership$ = ({
|
|||||||
|
|
||||||
// UNSAVE. Arbitrary change some types to read properties we should not have access to (private)
|
// 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)
|
// 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 {
|
const sessionWithAccessToPrivateMembers = matrixRTCSession as unknown as {
|
||||||
membershipManager: { state: { delayId: string } };
|
membershipManager: { state: { delayId: string } },
|
||||||
|
room: { client: MatrixClient, roomId: string } ;
|
||||||
};
|
};
|
||||||
const delayId =
|
|
||||||
sessionWithAccessToPrivateMembers.membershipManager.state.delayId;
|
const delayId = sessionWithAccessToPrivateMembers.membershipManager.state.delayId;
|
||||||
logger.debug("delayId is available", delayId);
|
const roomId = sessionWithAccessToPrivateMembers.room.roomId
|
||||||
// call
|
const mxClient = sessionWithAccessToPrivateMembers.room.client
|
||||||
void passDelayIdToJWT(delayId);
|
const serviceUrl = localConnection$?.value?.transport?.livekit_service_url
|
||||||
|
|
||||||
|
//logger.debug("delayId is available", serviceUrl, delayId, roomId, mxClient);
|
||||||
|
if (serviceUrl) {
|
||||||
|
void getJWTTokenWithDelaydEventDelegation(serviceUrl, delayId, mxClient, roomId, logger);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -689,13 +699,22 @@ export async function enterRTCSession(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function passDelayIdToJWT(delayId: string): Promise<void> {
|
async function getJWTTokenWithDelaydEventDelegation(
|
||||||
// CHANGE ME!
|
serviceUrl: string,
|
||||||
// try{
|
delayId: string,
|
||||||
// await fetch(sth using delayId)
|
client: MatrixClient,
|
||||||
// }catch(error){
|
matrixRoomId: string,
|
||||||
// // at a minimum log the error (maybe we can do sth smarter)
|
logger: Logger,
|
||||||
// logger.error(error);
|
): Promise<void> {
|
||||||
// }
|
try {
|
||||||
return Promise.resolve();
|
const sfuConfig = await getSFUConfigWithOpenID(
|
||||||
|
client,
|
||||||
|
serviceUrl,
|
||||||
|
matrixRoomId,
|
||||||
|
delayId,
|
||||||
|
);
|
||||||
|
logger.debug("SFU Config retrieved successfully with delayId:", delayId, sfuConfig);
|
||||||
|
} catch (error) {
|
||||||
|
logger.error("Failed to get SFU config with OpenID:", error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user