From 6855e61c47b36099ed4d592bf077c2c7adf115fe Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Mon, 14 Nov 2022 20:55:24 +0000 Subject: [PATCH] Correctly handle window losing focus --- src/room/useGroupCall.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/room/useGroupCall.ts b/src/room/useGroupCall.ts index e06787ca..14e40d14 100644 --- a/src/room/useGroupCall.ts +++ b/src/room/useGroupCall.ts @@ -404,6 +404,8 @@ export function useGroupCall(groupCall: GroupCall): UseGroupCallReturnType { } }, [t]); + const [spacebarHeld, setSpacebarHeld] = useState(false); + useEventTarget( window, "keydown", @@ -420,10 +422,16 @@ export function useGroupCall(groupCall: GroupCall): UseGroupCallReturnType { } else if (event.key == "v") { toggleLocalVideoMuted(); } else if (event.key === " ") { + setSpacebarHeld(true); setMicrophoneMuted(false); } }, - [toggleLocalVideoMuted, toggleMicrophoneMuted, setMicrophoneMuted] + [ + toggleLocalVideoMuted, + toggleMicrophoneMuted, + setMicrophoneMuted, + setSpacebarHeld, + ] ) ); @@ -439,13 +447,25 @@ export function useGroupCall(groupCall: GroupCall): UseGroupCallReturnType { } if (event.key === " ") { + setSpacebarHeld(false); setMicrophoneMuted(true); } }, - [setMicrophoneMuted] + [setMicrophoneMuted, setSpacebarHeld] ) ); + useEventTarget( + window, + "blur", + useCallback(() => { + if (spacebarHeld) { + setSpacebarHeld(false); + setMicrophoneMuted(true); + } + }, [setMicrophoneMuted, setSpacebarHeld, spacebarHeld]) + ); + return { state, calls,