From 04ee5dfa85a2d997423e921049d54f670d493fb2 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Fri, 9 Dec 2022 15:43:31 +0800 Subject: [PATCH] feat: add hotkey cmd+k --- .../app/src/providers/global-modal-provider.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/app/src/providers/global-modal-provider.tsx b/packages/app/src/providers/global-modal-provider.tsx index 3cb8944c00..987db1fedc 100644 --- a/packages/app/src/providers/global-modal-provider.tsx +++ b/packages/app/src/providers/global-modal-provider.tsx @@ -1,4 +1,4 @@ -import { createContext, useContext, useState } from 'react'; +import { createContext, useContext, useEffect, useState } from 'react'; import type { PropsWithChildren } from 'react'; import ShortcutsModal from '@/components/shortcuts-modal'; import ContactModal from '@/components/contact-modal'; @@ -24,7 +24,20 @@ export const ModalProvider = ({ const [openContactModal, setOpenContactModal] = useState(false); const [openShortcutsModal, setOpenShortcutsModal] = useState(false); const [openQuickSearchModal, setOpenQuickSearchModal] = useState(false); - + useEffect(() => { + const down = (e: KeyboardEvent) => { + if (e.key === 'k' && e.metaKey) { + const selection = window.getSelection(); + if (selection?.isCollapsed) { + setOpenQuickSearchModal( + openQuickSearchModal => !openQuickSearchModal + ); + } + } + }; + document.addEventListener('keydown', down); + return () => document.removeEventListener('keydown', down); + }, []); return (