Files
buzz/desktop/src/app/useSettingsShortcuts.ts
T

44 lines
1007 B
TypeScript

import * as React from "react";
import { hasPrimaryShortcutModifier } from "@/shared/lib/platform";
type UseSettingsShortcutsOptions = {
onClose: () => void;
onOpenSettings: () => void;
open: boolean;
};
export function useSettingsShortcuts({
onClose,
onOpenSettings,
open,
}: UseSettingsShortcutsOptions) {
React.useLayoutEffect(() => {
function handleKeyDown(event: KeyboardEvent) {
const isSettingsShortcut =
hasPrimaryShortcutModifier(event) &&
!event.altKey &&
!event.shiftKey &&
(event.key === "," || event.code === "Comma");
if (!isSettingsShortcut) {
return;
}
event.preventDefault();
event.stopImmediatePropagation();
if (open) {
onClose();
return;
}
onOpenSettings();
}
window.addEventListener("keydown", handleKeyDown, true);
return () => {
window.removeEventListener("keydown", handleKeyDown, true);
};
}, [onClose, onOpenSettings, open]);
}