import { enqueueRequested } from 'app/store/actions'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { useCallback } from 'react'; import { useEnqueueBatchMutation } from 'services/api/endpoints/queue'; export const useInvoke = () => { const dispatch = useAppDispatch(); const tabName = useAppSelector(selectActiveTab); const { isReady } = useIsReadyToEnqueue(); const [_, { isLoading }] = useEnqueueBatchMutation({ fixedCacheKey: 'enqueueBatch', }); const queueBack = useCallback(() => { if (!isReady) { return; } dispatch(enqueueRequested({ tabName, prepend: false })); }, [dispatch, isReady, tabName]); const queueFront = useCallback(() => { if (!isReady) { return; } dispatch(enqueueRequested({ tabName, prepend: true })); }, [dispatch, isReady, tabName]); return { queueBack, queueFront, isLoading, isDisabled: !isReady }; };