From cb85733426cde498813697ea59f4514750da8f0e Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Fri, 11 Nov 2022 15:53:58 +0000 Subject: [PATCH] Add 'm' and 'space' shortcuts for mute/unmuting during a call --- src/room/useGroupCall.ts | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/room/useGroupCall.ts b/src/room/useGroupCall.ts index 3a917f9..cc39dd8 100644 --- a/src/room/useGroupCall.ts +++ b/src/room/useGroupCall.ts @@ -298,10 +298,14 @@ export function useGroupCall(groupCall: GroupCall): UseGroupCallReturnType { PosthogAnalytics.instance.eventMuteCamera.track(toggleToMute); }, [groupCall]); + const setMicrophoneMuted = useCallback((setMuted) => { + groupCall.setMicrophoneMuted(setMuted); + PosthogAnalytics.instance.eventMuteMicrophone.track(setMuted); + }, [groupCall]); + const toggleMicrophoneMuted = useCallback(() => { const toggleToMute = !groupCall.isMicrophoneMuted(); - groupCall.setMicrophoneMuted(toggleToMute); - PosthogAnalytics.instance.eventMuteMicrophone.track(toggleToMute); + setMicrophoneMuted(toggleToMute); }, [groupCall]); const toggleScreensharing = useCallback(async () => { @@ -395,6 +399,33 @@ export function useGroupCall(groupCall: GroupCall): UseGroupCallReturnType { } }, [t]); + + useEffect(() => { + const keyDownListener = (event) => { + if (event.key === "m") { + toggleMicrophoneMuted(); + } + if (event.key === " ") { + setMicrophoneMuted(false); + } + }; + + const keyUpListener = (event) => { + if (event.key === " ") { + setMicrophoneMuted(true); + } + }; + + window.addEventListener("keydown", keyDownListener, true); + window.addEventListener("keyup", keyUpListener, true); + + return () => { + window.removeEventListener("keydown", keyDownListener, true); + window.removeEventListener("keyup", keyUpListener, true); + } + }, [toggleMicrophoneMuted, setMicrophoneMuted]); + + return { state, calls,