mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat(ui): improve session canceled handling
This commit is contained in:
parent
c6f935bf1a
commit
0ea35b1e3d
@ -54,6 +54,11 @@ import {
|
|||||||
addSessionInvokedPendingListener,
|
addSessionInvokedPendingListener,
|
||||||
addSessionInvokedRejectedListener,
|
addSessionInvokedRejectedListener,
|
||||||
} from './listeners/sessionInvoked';
|
} from './listeners/sessionInvoked';
|
||||||
|
import {
|
||||||
|
addSessionCanceledFulfilledListener,
|
||||||
|
addSessionCanceledPendingListener,
|
||||||
|
addSessionCanceledRejectedListener,
|
||||||
|
} from './listeners/sessionCanceled';
|
||||||
import {
|
import {
|
||||||
addReceivedResultImagesPageFulfilledListener,
|
addReceivedResultImagesPageFulfilledListener,
|
||||||
addReceivedResultImagesPageRejectedListener,
|
addReceivedResultImagesPageRejectedListener,
|
||||||
@ -101,18 +106,13 @@ addImageMetadataReceivedRejectedListener();
|
|||||||
addImageUrlsReceivedFulfilledListener();
|
addImageUrlsReceivedFulfilledListener();
|
||||||
addImageUrlsReceivedRejectedListener();
|
addImageUrlsReceivedRejectedListener();
|
||||||
|
|
||||||
// Invoking on tabs
|
// User Invoked
|
||||||
addUserInvokedCanvasListener();
|
addUserInvokedCanvasListener();
|
||||||
addUserInvokedNodesListener();
|
addUserInvokedNodesListener();
|
||||||
addUserInvokedTextToImageListener();
|
addUserInvokedTextToImageListener();
|
||||||
addUserInvokedImageToImageListener();
|
addUserInvokedImageToImageListener();
|
||||||
addSessionReadyToInvokeListener();
|
addSessionReadyToInvokeListener();
|
||||||
|
|
||||||
// Actual session invoking
|
|
||||||
addSessionInvokedPendingListener();
|
|
||||||
addSessionInvokedFulfilledListener();
|
|
||||||
addSessionInvokedRejectedListener();
|
|
||||||
|
|
||||||
// Canvas actions
|
// Canvas actions
|
||||||
addCanvasSavedToGalleryListener();
|
addCanvasSavedToGalleryListener();
|
||||||
addCanvasDownloadedAsImageListener();
|
addCanvasDownloadedAsImageListener();
|
||||||
@ -130,11 +130,21 @@ addSocketDisconnectedListener();
|
|||||||
addSocketSubscribedListener();
|
addSocketSubscribedListener();
|
||||||
addSocketUnsubscribedListener();
|
addSocketUnsubscribedListener();
|
||||||
|
|
||||||
// Sessions
|
// Session Created
|
||||||
addSessionCreatedPendingListener();
|
addSessionCreatedPendingListener();
|
||||||
addSessionCreatedFulfilledListener();
|
addSessionCreatedFulfilledListener();
|
||||||
addSessionCreatedRejectedListener();
|
addSessionCreatedRejectedListener();
|
||||||
|
|
||||||
|
// Session Invoked
|
||||||
|
addSessionInvokedPendingListener();
|
||||||
|
addSessionInvokedFulfilledListener();
|
||||||
|
addSessionInvokedRejectedListener();
|
||||||
|
|
||||||
|
// Session Canceled
|
||||||
|
addSessionCanceledPendingListener();
|
||||||
|
addSessionCanceledFulfilledListener();
|
||||||
|
addSessionCanceledRejectedListener();
|
||||||
|
|
||||||
// Gallery pages
|
// Gallery pages
|
||||||
addReceivedResultImagesPageFulfilledListener();
|
addReceivedResultImagesPageFulfilledListener();
|
||||||
addReceivedResultImagesPageRejectedListener();
|
addReceivedResultImagesPageRejectedListener();
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
import { log } from 'app/logging/useLogger';
|
||||||
|
import { startAppListening } from '..';
|
||||||
|
import { sessionCanceled } from 'services/thunks/session';
|
||||||
|
import { serializeError } from 'serialize-error';
|
||||||
|
|
||||||
|
const moduleLog = log.child({ namespace: 'session' });
|
||||||
|
|
||||||
|
export const addSessionCanceledPendingListener = () => {
|
||||||
|
startAppListening({
|
||||||
|
actionCreator: sessionCanceled.pending,
|
||||||
|
effect: (action, { getState, dispatch }) => {
|
||||||
|
//
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const addSessionCanceledFulfilledListener = () => {
|
||||||
|
startAppListening({
|
||||||
|
actionCreator: sessionCanceled.fulfilled,
|
||||||
|
effect: (action, { getState, dispatch }) => {
|
||||||
|
const { sessionId } = action.meta.arg;
|
||||||
|
moduleLog.debug(
|
||||||
|
{ data: { sessionId } },
|
||||||
|
`Session canceled (${sessionId})`
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const addSessionCanceledRejectedListener = () => {
|
||||||
|
startAppListening({
|
||||||
|
actionCreator: sessionCanceled.rejected,
|
||||||
|
effect: (action, { getState, dispatch }) => {
|
||||||
|
if (action.payload) {
|
||||||
|
const { arg, error } = action.payload;
|
||||||
|
moduleLog.error(
|
||||||
|
{
|
||||||
|
data: {
|
||||||
|
arg,
|
||||||
|
error: serializeError(error),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
`Problem canceling session`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
@ -1,4 +1,3 @@
|
|||||||
import { log } from 'app/logging/useLogger';
|
|
||||||
import { createAppAsyncThunk } from 'app/store/storeUtils';
|
import { createAppAsyncThunk } from 'app/store/storeUtils';
|
||||||
import { ImagesService, PaginatedResults_ImageDTO_ } from 'services/api';
|
import { ImagesService, PaginatedResults_ImageDTO_ } from 'services/api';
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ const isErrorWithStatus = (error: unknown): error is { status: number } =>
|
|||||||
* `SessionsService.invokeSession()` thunk
|
* `SessionsService.invokeSession()` thunk
|
||||||
*/
|
*/
|
||||||
export const sessionInvoked = createAppAsyncThunk<
|
export const sessionInvoked = createAppAsyncThunk<
|
||||||
any,
|
void,
|
||||||
SessionInvokedArg,
|
SessionInvokedArg,
|
||||||
SessionInvokedThunkConfig
|
SessionInvokedThunkConfig
|
||||||
>('api/sessionInvoked', async (arg, { rejectWithValue }) => {
|
>('api/sessionInvoked', async (arg, { rejectWithValue }) => {
|
||||||
@ -72,24 +72,28 @@ export const sessionInvoked = createAppAsyncThunk<
|
|||||||
type SessionCanceledArg = Parameters<
|
type SessionCanceledArg = Parameters<
|
||||||
(typeof SessionsService)['cancelSessionInvoke']
|
(typeof SessionsService)['cancelSessionInvoke']
|
||||||
>[0];
|
>[0];
|
||||||
|
type SessionCanceledThunkConfig = {
|
||||||
|
rejectValue: {
|
||||||
|
arg: SessionCanceledArg;
|
||||||
|
error: unknown;
|
||||||
|
};
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* `SessionsService.cancelSession()` thunk
|
* `SessionsService.cancelSession()` thunk
|
||||||
*/
|
*/
|
||||||
export const sessionCanceled = createAppAsyncThunk(
|
export const sessionCanceled = createAppAsyncThunk<
|
||||||
'api/sessionCanceled',
|
void,
|
||||||
async (arg: SessionCanceledArg, _thunkApi) => {
|
SessionCanceledArg,
|
||||||
|
SessionCanceledThunkConfig
|
||||||
|
>('api/sessionCanceled', async (arg: SessionCanceledArg, _thunkApi) => {
|
||||||
const { sessionId } = arg;
|
const { sessionId } = arg;
|
||||||
|
|
||||||
const response = await SessionsService.cancelSessionInvoke({
|
const response = await SessionsService.cancelSessionInvoke({
|
||||||
sessionId,
|
sessionId,
|
||||||
});
|
});
|
||||||
|
|
||||||
sessionLog.info({ arg, response }, `Session canceled (${sessionId})`);
|
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
});
|
||||||
);
|
|
||||||
|
|
||||||
type SessionsListedArg = Parameters<
|
type SessionsListedArg = Parameters<
|
||||||
(typeof SessionsService)['listSessions']
|
(typeof SessionsService)['listSessions']
|
||||||
|
Loading…
x
Reference in New Issue
Block a user