diff --git a/src/frontend/src/components/chatComponent/index.tsx b/src/frontend/src/components/chatComponent/index.tsx index 66ff2b609..0eff32c8d 100644 --- a/src/frontend/src/components/chatComponent/index.tsx +++ b/src/frontend/src/components/chatComponent/index.tsx @@ -9,32 +9,32 @@ import { useStoreStore } from "../../stores/storeStore"; import { classNames } from "../../utils/utils"; import ForwardedIconComponent from "../genericIconComponent"; import { Separator } from "../ui/separator"; +import { useHotkeys } from "react-hotkeys-hook"; export default function FlowToolbar(): JSX.Element { + function handleAPIWShortcut(e: KeyboardEvent) { + e.preventDefault(); + setOpenCodeModal((oldOpen) => !oldOpen) + } + + function handleChatWShortcut(e: KeyboardEvent) { + if (useFlowStore.getState().hasIO) { + e.preventDefault(); + setOpen((oldState) => !oldState); + } + } + + useHotkeys("mod+k", handleChatWShortcut); + useHotkeys("mod+r", handleAPIWShortcut); const [open, setOpen] = useState(false); + const [openCodeModal, setOpenCodeModal] = useState(false); + const hasIO = useFlowStore((state) => state.hasIO); const hasStore = useStoreStore((state) => state.hasStore); const validApiKey = useStoreStore((state) => state.validApiKey); const currentFlow = useFlowsManagerStore((state) => state.currentFlow); const hasApiKey = useStoreStore((state) => state.hasApiKey); - useEffect(() => { - const handleKeyDown = (event: KeyboardEvent) => { - if ( - (event.key === "K" || event.key === "k") && - (event.metaKey || event.ctrlKey) && - useFlowStore.getState().hasIO - ) { - event.preventDefault(); - setOpen((oldState) => !oldState); - } - }; - document.addEventListener("keydown", handleKeyDown); - return () => { - document.removeEventListener("keydown", handleKeyDown); - }; - }, []); - const prevNodesRef = useRef(); const ModalMemo = useMemo( @@ -117,7 +117,7 @@ export default function FlowToolbar(): JSX.Element {
{currentFlow && currentFlow.data && ( - +
{ const { autoLogin } = useContext(AuthContext); - const [open, setOpen] = useState(false); + const [open, setOpen] = + mySetOpen !== undefined && myOpen !== undefined + ? [myOpen, mySetOpen] + : useState(false); const [activeTab, setActiveTab] = useState("0"); const tweak = useRef([]); const tweaksList = useRef([]); diff --git a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx index 8dcd851e7..c86255848 100644 --- a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx @@ -95,8 +95,8 @@ export default function NodeToolbarComponent({ } function handleShareWShortcut(e: KeyboardEvent) { - e.preventDefault() if (hasApiKey || hasStore) { + e.preventDefault() setShowconfirmShare((state) => !state); } }