mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat(ui): convert initial image to layer when starting canvas session
This commit is contained in:
parent
4a44e171fd
commit
0e4a25b029
@ -9,6 +9,7 @@ import { addBatchEnqueuedListener } from 'app/store/middleware/listenerMiddlewar
|
||||
import { addDeleteBoardAndImagesFulfilledListener } from 'app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted';
|
||||
import { addBoardIdSelectedListener } from 'app/store/middleware/listenerMiddleware/listeners/boardIdSelected';
|
||||
import { addBulkDownloadListeners } from 'app/store/middleware/listenerMiddleware/listeners/bulkDownload';
|
||||
import { addCanvasSessionRequestedListener } from 'app/store/middleware/listenerMiddleware/listeners/canvasSessionRequested';
|
||||
import { addControlAdapterPreprocessor } from 'app/store/middleware/listenerMiddleware/listeners/controlAdapterPreprocessor';
|
||||
import { addEnqueueRequestedLinear } from 'app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear';
|
||||
import { addEnqueueRequestedNodes } from 'app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes';
|
||||
@ -89,6 +90,7 @@ addBatchEnqueuedListener(startAppListening);
|
||||
// addStagingAreaImageSavedListener(startAppListening);
|
||||
// addCommitStagingAreaImageListener(startAppListening);
|
||||
addStagingListeners(startAppListening);
|
||||
addCanvasSessionRequestedListener(startAppListening);
|
||||
|
||||
// Socket.IO
|
||||
addGeneratorProgressEventListener(startAppListening);
|
||||
|
@ -0,0 +1,29 @@
|
||||
import type { AppStartListening } from 'app/store/middleware/listenerMiddleware';
|
||||
import {
|
||||
layerAdded,
|
||||
layerImageAdded,
|
||||
sessionRequested,
|
||||
sessionStarted,
|
||||
} from 'features/controlLayers/store/canvasV2Slice';
|
||||
import { getImageDTO } from 'services/api/endpoints/images';
|
||||
import { assert } from 'tsafe';
|
||||
|
||||
export const addCanvasSessionRequestedListener = (startAppListening: AppStartListening) => {
|
||||
startAppListening({
|
||||
actionCreator: sessionRequested,
|
||||
effect: async (action, { getState, dispatch }) => {
|
||||
const initialImageObject = getState().canvasV2.initialImage.imageObject;
|
||||
if (initialImageObject) {
|
||||
// We have an initial image that needs to be converted to a layer
|
||||
dispatch(layerAdded());
|
||||
const newLayer = getState().canvasV2.layers.entities[0];
|
||||
assert(newLayer, 'Expected new layer to be created');
|
||||
const imageDTO = await getImageDTO(initialImageObject.image.name);
|
||||
assert(imageDTO, 'Unable to fetch initial image DTO');
|
||||
dispatch(layerImageAdded({ id: newLayer.id, imageDTO }));
|
||||
}
|
||||
|
||||
dispatch(sessionStarted());
|
||||
},
|
||||
});
|
||||
};
|
@ -1,13 +1,12 @@
|
||||
import { Button } from '@invoke-ai/ui-library';
|
||||
import { useAppDispatch } from 'app/store/storeHooks';
|
||||
import { sessionStarted } from 'features/controlLayers/store/canvasV2Slice';
|
||||
import { sessionRequested } from 'features/controlLayers/store/canvasV2Slice';
|
||||
import { memo, useCallback } from 'react';
|
||||
|
||||
export const NewSessionButton = memo(() => {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const onClick = useCallback(() => {
|
||||
dispatch(sessionStarted());
|
||||
dispatch(sessionRequested());
|
||||
}, [dispatch]);
|
||||
|
||||
return <Button onClick={onClick}>New</Button>;
|
||||
|
Loading…
x
Reference in New Issue
Block a user