From 1cf26eec19c17dd4b3e02e177104789fba276a1f Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Sat, 4 Jan 2025 13:20:55 +0100 Subject: [PATCH] wip get passphrase from the backend --- src/backend/core/api/serializers.py | 2 ++ src/frontend/src/features/rooms/api/ApiRoom.ts | 1 + .../src/features/rooms/components/Conference.tsx | 12 ++++++------ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/backend/core/api/serializers.py b/src/backend/core/api/serializers.py index 51b37fbb..ff083858 100644 --- a/src/backend/core/api/serializers.py +++ b/src/backend/core/api/serializers.py @@ -143,6 +143,8 @@ class RoomSerializer(serializers.ModelSerializer): output["is_administrable"] = is_admin + output['passphrase'] = "thisisapassphrase" + return output diff --git a/src/frontend/src/features/rooms/api/ApiRoom.ts b/src/frontend/src/features/rooms/api/ApiRoom.ts index 7e5404d0..3c7e2536 100644 --- a/src/frontend/src/features/rooms/api/ApiRoom.ts +++ b/src/frontend/src/features/rooms/api/ApiRoom.ts @@ -4,6 +4,7 @@ export type ApiRoom = { slug: string is_public: boolean is_administrable: boolean + passphrase: string livekit?: { url: string room: string diff --git a/src/frontend/src/features/rooms/components/Conference.tsx b/src/frontend/src/features/rooms/components/Conference.tsx index f775d066..b5a2b43f 100644 --- a/src/frontend/src/features/rooms/components/Conference.tsx +++ b/src/frontend/src/features/rooms/components/Conference.tsx @@ -68,14 +68,11 @@ export const Conference = ({ retry: false, }) - const e2eePassphrase = typeof window !== 'undefined' && 'thisisapassphrase' - const worker = typeof window !== 'undefined' && - e2eePassphrase && new Worker(new URL('livekit-client/e2ee-worker', import.meta.url)) - const e2eeEnabled = !!(e2eePassphrase && worker) + const e2eeEnabled = !!worker const keyProvider = new ExternalE2EEKeyProvider() const [e2eeSetupComplete, setE2eeSetupComplete] = useState(false) @@ -108,9 +105,12 @@ export const Conference = ({ const room = useMemo(() => new Room(roomOptions), [roomOptions]) useEffect(() => { + if (!data) { + return + } if (e2eeEnabled) { keyProvider - .setKey('thisisapassphrase') + .setKey(data.passphrase) .then(() => { room.setE2EEEnabled(true).catch((e) => { if (e instanceof DeviceUnsupportedError) { @@ -127,7 +127,7 @@ export const Conference = ({ } else { setE2eeSetupComplete(true) } - }, [e2eeEnabled, room, e2eePassphrase]) + }, [e2eeEnabled, room, data]) const [showInviteDialog, setShowInviteDialog] = useState(mode === 'create')