|
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], |
|
}); |
|
}; |
|
|