| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // @ts-nocheck
- import { useQueryClient } from '@tanstack/react-query'
- import { useOperationQueueActions } from './useOperationQueueActions'
- import { useIsQueueOperationsEnabled } from '@/components/interfaces/Account/Preferences/useDashboardSettings'
- import { tableRowKeys } from '@/data/table-rows/keys'
- import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
- import { SHORTCUT_IDS } from '@/state/shortcuts/registry'
- import { useShortcut } from '@/state/shortcuts/useShortcut'
- import { useTableEditorStateSnapshot } from '@/state/table-editor'
- /**
- * Hook that provides keyboard shortcuts for the operation queue.
- *
- * Shortcuts:
- * - Cmd/Ctrl + S: Save all pending changes
- * - Cmd/Ctrl + .: Toggle the operation queue side panel
- *
- * These shortcuts are registered on the capture phase to ensure they fire
- * before the data grid handles the keyboard event.
- */
- export function useOperationQueueShortcuts() {
- const queryClient = useQueryClient()
- const { data: project } = useSelectedProjectQuery()
- const isQueueOperationsEnabled = useIsQueueOperationsEnabled()
- const snap = useTableEditorStateSnapshot()
- const { handleSave } = useOperationQueueActions()
- const isSaving = snap.operationQueue.status === 'saving'
- const hasOperations = snap.hasPendingOperations
- const isEnabled = isQueueOperationsEnabled && hasOperations
- useShortcut(
- SHORTCUT_IDS.OPERATION_QUEUE_SAVE,
- () => {
- if (!isSaving && hasOperations) {
- handleSave()
- }
- },
- { enabled: isEnabled }
- )
- useShortcut(
- SHORTCUT_IDS.OPERATION_QUEUE_TOGGLE,
- () => {
- snap.toggleViewOperationQueue()
- },
- { enabled: isEnabled }
- )
- useShortcut(
- SHORTCUT_IDS.OPERATION_QUEUE_UNDO,
- () => {
- const tableIdLatestOperation = snap.operationQueue.operations.at(-1)?.tableId
- snap.undoLatestOperation()
- if (project && tableIdLatestOperation) {
- queryClient.invalidateQueries({
- queryKey: tableRowKeys.tableRowsAndCount(project.ref, tableIdLatestOperation),
- })
- }
- },
- { enabled: isEnabled }
- )
- }
|