Skip to content

Commit 2b08d9e

Browse files
psychedelicioushipsterusername
authored andcommitted
feat(ui): disable queue-related buttons when disconnected
1 parent 8954953 commit 2b08d9e

12 files changed

+63
-28
lines changed

invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ type Props = {
1212

1313
const CancelCurrentQueueItemButton = ({ asIconButton, sx }: Props) => {
1414
const { t } = useTranslation();
15-
const { cancelQueueItem, isLoading, currentQueueItemId } =
15+
const { cancelQueueItem, isLoading, isDisabled } =
1616
useCancelCurrentQueueItem();
1717

1818
return (
1919
<QueueButton
20-
isDisabled={!currentQueueItemId}
20+
isDisabled={isDisabled}
2121
isLoading={isLoading}
2222
asIconButton={asIconButton}
2323
label={t('queue.cancel')}

invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type Props = {
1313

1414
const ClearQueueButton = ({ asIconButton, sx }: Props) => {
1515
const { t } = useTranslation();
16-
const { clearQueue, isLoading, queueStatus } = useClearQueue();
16+
const { clearQueue, isLoading, isDisabled } = useClearQueue();
1717

1818
return (
1919
<IAIAlertDialog
@@ -22,7 +22,7 @@ const ClearQueueButton = ({ asIconButton, sx }: Props) => {
2222
acceptButtonText={t('queue.clear')}
2323
triggerComponent={
2424
<QueueButton
25-
isDisabled={!queueStatus?.queue.total}
25+
isDisabled={isDisabled}
2626
isLoading={isLoading}
2727
asIconButton={asIconButton}
2828
label={t('queue.clear')}

invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ type Props = {
1010

1111
const PauseProcessorButton = ({ asIconButton }: Props) => {
1212
const { t } = useTranslation();
13-
const { pauseProcessor, isLoading, isStarted } = usePauseProcessor();
13+
const { pauseProcessor, isLoading, isDisabled } = usePauseProcessor();
1414

1515
return (
1616
<QueueButton
1717
asIconButton={asIconButton}
1818
label={t('queue.pause')}
1919
tooltip={t('queue.pauseTooltip')}
20-
isDisabled={!isStarted}
20+
isDisabled={isDisabled}
2121
isLoading={isLoading}
2222
icon={<FaPause />}
2323
onClick={pauseProcessor}

invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ type Props = {
1010

1111
const PruneQueueButton = ({ asIconButton }: Props) => {
1212
const { t } = useTranslation();
13-
const { pruneQueue, isLoading, finishedCount } = usePruneQueue();
13+
const { pruneQueue, isLoading, finishedCount, isDisabled } = usePruneQueue();
1414

1515
return (
1616
<QueueButton
17-
isDisabled={!finishedCount}
17+
isDisabled={isDisabled}
1818
isLoading={isLoading}
1919
asIconButton={asIconButton}
2020
label={t('queue.prune')}

invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ type Props = {
1010

1111
const ResumeProcessorButton = ({ asIconButton }: Props) => {
1212
const { t } = useTranslation();
13-
const { resumeProcessor, isLoading, isStarted } = useResumeProcessor();
13+
const { resumeProcessor, isLoading, isDisabled } = useResumeProcessor();
1414

1515
return (
1616
<QueueButton
1717
asIconButton={asIconButton}
1818
label={t('queue.resume')}
1919
tooltip={t('queue.resumeTooltip')}
20-
isDisabled={isStarted}
20+
isDisabled={isDisabled}
2121
isLoading={isLoading}
2222
icon={<FaPlay />}
2323
onClick={resumeProcessor}

invokeai/frontend/web/src/features/queue/hooks/useCancelBatch.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useAppDispatch } from 'app/store/storeHooks';
1+
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
22
import { addToast } from 'features/system/store/systemSlice';
33
import { useCallback } from 'react';
44
import { useTranslation } from 'react-i18next';
@@ -8,6 +8,7 @@ import {
88
} from 'services/api/endpoints/queue';
99

1010
export const useCancelBatch = (batch_id: string) => {
11+
const isConnected = useAppSelector((state) => state.system.isConnected);
1112
const { isCanceled } = useGetBatchStatusQuery(
1213
{ batch_id },
1314
{
@@ -49,5 +50,5 @@ export const useCancelBatch = (batch_id: string) => {
4950
}
5051
}, [batch_id, dispatch, isCanceled, t, trigger]);
5152

52-
return { cancelBatch, isLoading, isCanceled };
53+
return { cancelBatch, isLoading, isCanceled, isDisabled: !isConnected };
5354
};

invokeai/frontend/web/src/features/queue/hooks/useCancelCurrentQueueItem.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useAppDispatch } from 'app/store/storeHooks';
1+
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
22
import { addToast } from 'features/system/store/systemSlice';
33
import { useCallback, useMemo } from 'react';
44
import { useTranslation } from 'react-i18next';
@@ -8,6 +8,7 @@ import {
88
} from 'services/api/endpoints/queue';
99

1010
export const useCancelCurrentQueueItem = () => {
11+
const isConnected = useAppSelector((state) => state.system.isConnected);
1112
const { data: queueStatus } = useGetQueueStatusQuery();
1213
const [trigger, { isLoading }] = useCancelQueueItemMutation();
1314
const dispatch = useAppDispatch();
@@ -38,5 +39,15 @@ export const useCancelCurrentQueueItem = () => {
3839
}
3940
}, [currentQueueItemId, dispatch, t, trigger]);
4041

41-
return { cancelQueueItem, isLoading, currentQueueItemId };
42+
const isDisabled = useMemo(
43+
() => !isConnected || !currentQueueItemId,
44+
[isConnected, currentQueueItemId]
45+
);
46+
47+
return {
48+
cancelQueueItem,
49+
isLoading,
50+
currentQueueItemId,
51+
isDisabled,
52+
};
4253
};

invokeai/frontend/web/src/features/queue/hooks/useCancelQueueItem.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import { useAppDispatch } from 'app/store/storeHooks';
1+
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
22
import { addToast } from 'features/system/store/systemSlice';
33
import { useCallback } from 'react';
44
import { useTranslation } from 'react-i18next';
55
import { useCancelQueueItemMutation } from 'services/api/endpoints/queue';
66

77
export const useCancelQueueItem = (item_id: number) => {
8+
const isConnected = useAppSelector((state) => state.system.isConnected);
89
const [trigger, { isLoading }] = useCancelQueueItemMutation();
910
const dispatch = useAppDispatch();
1011
const { t } = useTranslation();
@@ -27,5 +28,5 @@ export const useCancelQueueItem = (item_id: number) => {
2728
}
2829
}, [dispatch, item_id, t, trigger]);
2930

30-
return { cancelQueueItem, isLoading };
31+
return { cancelQueueItem, isLoading, isDisabled: !isConnected };
3132
};

invokeai/frontend/web/src/features/queue/hooks/useClearQueue.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { useAppDispatch } from 'app/store/storeHooks';
1+
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
22
import { addToast } from 'features/system/store/systemSlice';
3-
import { useCallback } from 'react';
3+
import { useCallback, useMemo } from 'react';
44
import { useTranslation } from 'react-i18next';
55
import {
66
useClearQueueMutation,
@@ -10,10 +10,9 @@ import { listCursorChanged, listPriorityChanged } from '../store/queueSlice';
1010

1111
export const useClearQueue = () => {
1212
const { t } = useTranslation();
13-
1413
const dispatch = useAppDispatch();
1514
const { data: queueStatus } = useGetQueueStatusQuery();
16-
15+
const isConnected = useAppSelector((state) => state.system.isConnected);
1716
const [trigger, { isLoading }] = useClearQueueMutation({
1817
fixedCacheKey: 'clearQueue',
1918
});
@@ -43,5 +42,10 @@ export const useClearQueue = () => {
4342
}
4443
}, [queueStatus?.queue.total, trigger, dispatch, t]);
4544

46-
return { clearQueue, isLoading, queueStatus };
45+
const isDisabled = useMemo(
46+
() => !isConnected || !queueStatus?.queue.total,
47+
[isConnected, queueStatus?.queue.total]
48+
);
49+
50+
return { clearQueue, isLoading, queueStatus, isDisabled };
4751
};

invokeai/frontend/web/src/features/queue/hooks/usePauseProcessor.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useAppDispatch } from 'app/store/storeHooks';
1+
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
22
import { addToast } from 'features/system/store/systemSlice';
33
import { useCallback, useMemo } from 'react';
44
import { useTranslation } from 'react-i18next';
@@ -10,6 +10,7 @@ import {
1010
export const usePauseProcessor = () => {
1111
const dispatch = useAppDispatch();
1212
const { t } = useTranslation();
13+
const isConnected = useAppSelector((state) => state.system.isConnected);
1314
const { data: queueStatus } = useGetQueueStatusQuery();
1415
const [trigger, { isLoading }] = usePauseProcessorMutation({
1516
fixedCacheKey: 'pauseProcessor',
@@ -42,5 +43,10 @@ export const usePauseProcessor = () => {
4243
}
4344
}, [isStarted, trigger, dispatch, t]);
4445

45-
return { pauseProcessor, isLoading, isStarted };
46+
const isDisabled = useMemo(
47+
() => !isConnected || !isStarted,
48+
[isConnected, isStarted]
49+
);
50+
51+
return { pauseProcessor, isLoading, isStarted, isDisabled };
4652
};

0 commit comments

Comments
 (0)