| import { useAppDispatch } from 'app/store/storeHooks'; |
| import { useClearQueue } from 'features/queue/components/ClearQueueConfirmationAlertDialog'; |
| import { useCancelCurrentQueueItem } from 'features/queue/hooks/useCancelCurrentQueueItem'; |
| import { useInvoke } from 'features/queue/hooks/useInvoke'; |
| import { useRegisteredHotkeys } from 'features/system/components/HotkeysModal/useHotkeyData'; |
| import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; |
| import { setActiveTab } from 'features/ui/store/uiSlice'; |
|
|
| export const useGlobalHotkeys = () => { |
| const dispatch = useAppDispatch(); |
| const isModelManagerEnabled = useFeatureStatus('modelManager'); |
| const queue = useInvoke(); |
|
|
| useRegisteredHotkeys({ |
| id: 'invoke', |
| category: 'app', |
| callback: queue.queueBack, |
| options: { |
| enabled: !queue.isDisabled && !queue.isLoading, |
| preventDefault: true, |
| enableOnFormTags: ['input', 'textarea', 'select'], |
| }, |
| dependencies: [queue], |
| }); |
|
|
| useRegisteredHotkeys({ |
| id: 'invokeFront', |
| category: 'app', |
| callback: queue.queueFront, |
| options: { |
| enabled: !queue.isDisabled && !queue.isLoading, |
| preventDefault: true, |
| enableOnFormTags: ['input', 'textarea', 'select'], |
| }, |
| dependencies: [queue], |
| }); |
|
|
| const { |
| cancelQueueItem, |
| isDisabled: isDisabledCancelQueueItem, |
| isLoading: isLoadingCancelQueueItem, |
| } = useCancelCurrentQueueItem(); |
|
|
| useRegisteredHotkeys({ |
| id: 'cancelQueueItem', |
| category: 'app', |
| callback: cancelQueueItem, |
| options: { |
| enabled: !isDisabledCancelQueueItem && !isLoadingCancelQueueItem, |
| preventDefault: true, |
| }, |
| dependencies: [cancelQueueItem, isDisabledCancelQueueItem, isLoadingCancelQueueItem], |
| }); |
|
|
| const { clearQueue, isDisabled: isDisabledClearQueue, isLoading: isLoadingClearQueue } = useClearQueue(); |
|
|
| useRegisteredHotkeys({ |
| id: 'clearQueue', |
| category: 'app', |
| callback: clearQueue, |
| options: { |
| enabled: !isDisabledClearQueue && !isLoadingClearQueue, |
| preventDefault: true, |
| }, |
| dependencies: [clearQueue, isDisabledClearQueue, isLoadingClearQueue], |
| }); |
|
|
| useRegisteredHotkeys({ |
| id: 'selectCanvasTab', |
| category: 'app', |
| callback: () => { |
| dispatch(setActiveTab('canvas')); |
| }, |
| dependencies: [dispatch], |
| }); |
|
|
| useRegisteredHotkeys({ |
| id: 'selectUpscalingTab', |
| category: 'app', |
| callback: () => { |
| dispatch(setActiveTab('upscaling')); |
| }, |
| dependencies: [dispatch], |
| }); |
|
|
| useRegisteredHotkeys({ |
| id: 'selectWorkflowsTab', |
| category: 'app', |
| callback: () => { |
| dispatch(setActiveTab('workflows')); |
| }, |
| dependencies: [dispatch], |
| }); |
|
|
| useRegisteredHotkeys({ |
| id: 'selectModelsTab', |
| category: 'app', |
| callback: () => { |
| dispatch(setActiveTab('models')); |
| }, |
| options: { |
| enabled: isModelManagerEnabled, |
| }, |
| dependencies: [dispatch, isModelManagerEnabled], |
| }); |
|
|
| useRegisteredHotkeys({ |
| id: 'selectQueueTab', |
| category: 'app', |
| callback: () => { |
| dispatch(setActiveTab('queue')); |
| }, |
| dependencies: [dispatch, isModelManagerEnabled], |
| }); |
| }; |
|
|