From 56ad05cbf979d1b85efcc84b51dceb7fe072a0b8 Mon Sep 17 00:00:00 2001 From: Slinetrac Date: Wed, 3 Dec 2025 13:15:21 +0800 Subject: [PATCH] refactor(main): extract keyboard shortcuts to utils --- src/main.tsx | 15 ++------------- src/utils/disable-webview-shortcuts.ts | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 src/utils/disable-webview-shortcuts.ts diff --git a/src/main.tsx b/src/main.tsx index 2ef58c97b..c2b9d42ca 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -25,6 +25,7 @@ import { ThemeModeProvider, UpdateStateProvider, } from "./services/states"; +import { disableWebViewShortcuts } from "./utils/disable-webview-shortcuts"; if (!window.ResizeObserver) { window.ResizeObserver = ResizeObserver; @@ -39,19 +40,7 @@ if (!container) { ); } -document.addEventListener("keydown", (event) => { - // Disable WebView keyboard shortcuts - const disabledShortcuts = - ["F5", "F7"].includes(event.key) || - (event.altKey && ["ArrowLeft", "ArrowRight"].includes(event.key)) || - ((event.ctrlKey || event.metaKey) && - ["F", "G", "H", "J", "P", "Q", "R", "U"].includes( - event.key.toUpperCase(), - )); - if (disabledShortcuts) { - event.preventDefault(); - } -}); +disableWebViewShortcuts(); const initializeApp = (initialThemeMode: "light" | "dark") => { const contexts = [ diff --git a/src/utils/disable-webview-shortcuts.ts b/src/utils/disable-webview-shortcuts.ts new file mode 100644 index 000000000..447745ec4 --- /dev/null +++ b/src/utils/disable-webview-shortcuts.ts @@ -0,0 +1,19 @@ +export const disableWebViewShortcuts = () => { + const handleKeydown = (event: KeyboardEvent) => { + const disabledShortcuts = + ["F5", "F7"].includes(event.key) || + (event.altKey && ["ArrowLeft", "ArrowRight"].includes(event.key)) || + ((event.ctrlKey || event.metaKey) && + ["F", "G", "H", "J", "P", "Q", "R", "U"].includes( + event.key.toUpperCase(), + )); + + if (disabledShortcuts) { + event.preventDefault(); + } + }; + + document.addEventListener("keydown", handleKeydown); + + return () => document.removeEventListener("keydown", handleKeydown); +};