feat: enhance keybinding management by integrating keybindingsEnabled state and updating related hooks

This commit is contained in:
Anwarul Islam
2025-07-18 08:05:02 +06:00
parent cdae10ca0a
commit 8e4661951d
2 changed files with 17 additions and 17 deletions
+5 -17
View File
@@ -1,21 +1,15 @@
import { useEffect } from "react";
import { ActionWithOptionalArgs, invokeAction } from "../constants/actions";
import { invokeAction } from "../constants/actions";
import { useKeybindingsStore } from "@/stores/keybindings-store";
/**
* This variable keeps track whether keybindings are being accepted
* true -> Keybindings are checked
* false -> Key presses are ignored (Keybindings are not checked)
*/
let keybindingsEnabled = true;
/**
* A composable that hooks to the caller component's
* lifecycle and hooks to the keyboard events to fire
* the appropriate actions based on keybindings
*/
export function useKeybindingsListener() {
const { keybindings, getKeybindingString } = useKeybindingsStore();
const { keybindings, getKeybindingString, keybindingsEnabled } =
useKeybindingsStore();
useEffect(() => {
const handleKeyDown = (ev: KeyboardEvent) => {
@@ -51,20 +45,14 @@ export function useKeybindingsListener() {
return () => {
document.removeEventListener("keydown", handleKeyDown);
};
}, [keybindings, getKeybindingString]);
}, [keybindings, getKeybindingString, keybindingsEnabled]);
}
/**
* This composable allows for the UI component to be disabled if the component in question is mounted
*/
export function useKeybindingDisabler() {
const disableKeybindings = () => {
keybindingsEnabled = false;
};
const enableKeybindings = () => {
keybindingsEnabled = true;
};
const { disableKeybindings, enableKeybindings } = useKeybindingsStore();
return {
disableKeybindings,