Skip to content

Commit 12d9862

Browse files
fix(ui): ensure we clean up when session id changes
1 parent a3614b7 commit 12d9862

File tree

1 file changed

+11
-2
lines changed
  • invokeai/frontend/web/src/features/controlLayers/components/StagingArea

1 file changed

+11
-2
lines changed

invokeai/frontend/web/src/features/controlLayers/components/StagingArea/context.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { selectBboxRect, selectSelectedEntityIdentifier } from 'features/control
1515
import type { CanvasRasterLayerState } from 'features/controlLayers/store/types';
1616
import { imageNameToImageObject } from 'features/controlLayers/store/util';
1717
import type { PropsWithChildren } from 'react';
18-
import { createContext, memo, useContext, useMemo } from 'react';
18+
import { createContext, memo, useContext, useEffect, useMemo } from 'react';
1919
import { getImageDTOSafe } from 'services/api/endpoints/images';
2020
import { queueApi } from 'services/api/endpoints/queue';
2121
import type { S } from 'services/api/types';
@@ -94,7 +94,16 @@ export const StagingAreaContextProvider = memo(({ children, sessionId }: PropsWi
9494

9595
return _stagingAreaAppApi;
9696
}, [sessionId, socket, store]);
97-
const value = useMemo(() => new StagingAreaApi(sessionId, stagingAreaAppApi), [sessionId, stagingAreaAppApi]);
97+
const value = useMemo(() => {
98+
return new StagingAreaApi(sessionId, stagingAreaAppApi);
99+
}, [sessionId, stagingAreaAppApi]);
100+
101+
useEffect(() => {
102+
const api = value;
103+
return () => {
104+
api.cleanup();
105+
};
106+
}, [value]);
98107

99108
return <StagingAreaContext.Provider value={value}>{children}</StagingAreaContext.Provider>;
100109
});

0 commit comments

Comments
 (0)