From e4a3dbd7f75211567a7601f2b9a7ff4b38e845e7 Mon Sep 17 00:00:00 2001 From: Robin Townsend Date: Wed, 7 Jun 2023 14:31:31 -0400 Subject: [PATCH] Don't prematurely claim that we've joined the call in widget mode In GroupCallView we do 'await enter()' when responding to a widget API join request, but it turns out enter wasn't actually returning a promise until now. The consequence of this was that in Element Web, when you click the join button you get shown a blank screen for a moment. This fixes that half-second moment of the UI being broken, allowing Element Web to show the intermediate 'joining' state. --- src/room/useGroupCall.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/room/useGroupCall.ts b/src/room/useGroupCall.ts index 153bb186..799927a8 100644 --- a/src/room/useGroupCall.ts +++ b/src/room/useGroupCall.ts @@ -65,7 +65,7 @@ export interface UseGroupCallReturnType { localVideoMuted: boolean; error: TranslatedError | null; initLocalCallFeed: () => void; - enter: () => void; + enter: () => Promise; leave: () => void; toggleLocalVideoMuted: () => void; toggleMicrophoneMuted: () => void; @@ -483,7 +483,7 @@ export function useGroupCall( [groupCall] ); - const enter = useCallback(() => { + const enter = useCallback(async () => { if ( groupCall.state !== GroupCallState.LocalCallFeedUninitialized && groupCall.state !== GroupCallState.LocalCallFeedInitialized @@ -498,7 +498,7 @@ export function useGroupCall( // have started tracking by the time calls start getting created. groupCallOTelMembership?.onJoinCall(); - groupCall.enter().catch((error) => { + await groupCall.enter().catch((error) => { console.error(error); updateState({ error }); });