Use a ref for spacebarHeld

because we can and it means fewer renders
This commit is contained in:
Robin Townsend 2023-04-19 15:17:32 -04:00
parent 30a224e20e
commit 18fa1371d3

View file

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import { useCallback, useState } from "react"; import { useCallback, useRef } from "react";
import { getSetting } from "./settings/useSetting"; import { getSetting } from "./settings/useSetting";
import { useEventTarget } from "./useEvents"; import { useEventTarget } from "./useEvents";
@ -25,7 +25,7 @@ export function useCallViewKeyboardShortcuts(
toggleLocalVideoMuted: () => void, toggleLocalVideoMuted: () => void,
setMicrophoneMuted: (muted: boolean) => void setMicrophoneMuted: (muted: boolean) => void
) { ) {
const [spacebarHeld, setSpacebarHeld] = useState(false); const spacebarHeld = useRef(false);
useEventTarget( useEventTarget(
window, window,
@ -43,8 +43,8 @@ export function useCallViewKeyboardShortcuts(
toggleMicrophoneMuted(); toggleMicrophoneMuted();
} else if (event.key == "v") { } else if (event.key == "v") {
toggleLocalVideoMuted(); toggleLocalVideoMuted();
} else if (event.key === " " && !spacebarHeld) { } else if (event.key === " " && !spacebarHeld.current) {
setSpacebarHeld(true); spacebarHeld.current = true;
setMicrophoneMuted(false); setMicrophoneMuted(false);
} }
}, },
@ -54,7 +54,6 @@ export function useCallViewKeyboardShortcuts(
toggleLocalVideoMuted, toggleLocalVideoMuted,
toggleMicrophoneMuted, toggleMicrophoneMuted,
setMicrophoneMuted, setMicrophoneMuted,
setSpacebarHeld,
] ]
) )
); );
@ -72,11 +71,11 @@ export function useCallViewKeyboardShortcuts(
} }
if (event.key === " ") { if (event.key === " ") {
setSpacebarHeld(false); spacebarHeld.current = false;
setMicrophoneMuted(true); setMicrophoneMuted(true);
} }
}, },
[enabled, setMicrophoneMuted, setSpacebarHeld] [enabled, setMicrophoneMuted]
) )
); );
@ -85,9 +84,9 @@ export function useCallViewKeyboardShortcuts(
"blur", "blur",
useCallback(() => { useCallback(() => {
if (spacebarHeld) { if (spacebarHeld) {
setSpacebarHeld(false); spacebarHeld.current = false;
setMicrophoneMuted(true); setMicrophoneMuted(true);
} }
}, [setMicrophoneMuted, setSpacebarHeld, spacebarHeld]) }, [setMicrophoneMuted, spacebarHeld])
); );
} }