tidy(ui): more cleanup

This commit is contained in:
psychedelicious 2024-08-23 18:24:04 +10:00
parent 71e742e238
commit cb97969bbc
4 changed files with 12 additions and 50 deletions

View File

@ -15,6 +15,8 @@ import type { ImageDTO } from 'services/api/types';
const log = logger('gallery'); const log = logger('gallery');
//TODO(psyche): handle image deletion (canvas sessions?)
// Some utils to delete images from different parts of the app // Some utils to delete images from different parts of the app
const deleteNodesImages = (state: RootState, dispatch: AppDispatch, imageDTO: ImageDTO) => { const deleteNodesImages = (state: RootState, dispatch: AppDispatch, imageDTO: ImageDTO) => {
state.nodes.present.nodes.forEach((node) => { state.nodes.present.nodes.forEach((node) => {
@ -49,8 +51,8 @@ const deleteNodesImages = (state: RootState, dispatch: AppDispatch, imageDTO: Im
// }; // };
const deleteIPAdapterImages = (state: RootState, dispatch: AppDispatch, imageDTO: ImageDTO) => { const deleteIPAdapterImages = (state: RootState, dispatch: AppDispatch, imageDTO: ImageDTO) => {
state.canvasV2.ipAdapters.entities.forEach(({ id, imageObject }) => { state.canvasV2.ipAdapters.entities.forEach(({ id, ipAdapter }) => {
if (imageObject?.image.image_name === imageDTO.image_name) { if (ipAdapter.image?.image_name === imageDTO.image_name) {
dispatch(ipaImageChanged({ id, imageDTO: null })); dispatch(ipaImageChanged({ id, imageDTO: null }));
} }
}); });

View File

@ -11,12 +11,7 @@ import type { CanvasControlLayerState, CanvasRasterLayerState } from 'features/c
import { imageDTOToImageObject } from 'features/controlLayers/store/types'; import { imageDTOToImageObject } from 'features/controlLayers/store/types';
import type { TypesafeDraggableData, TypesafeDroppableData } from 'features/dnd/types'; import type { TypesafeDraggableData, TypesafeDroppableData } from 'features/dnd/types';
import { isValidDrop } from 'features/dnd/util/isValidDrop'; import { isValidDrop } from 'features/dnd/util/isValidDrop';
import { import { imageToCompareChanged, isImageViewerOpenChanged, selectionChanged } from 'features/gallery/store/gallerySlice';
imageSelected,
imageToCompareChanged,
isImageViewerOpenChanged,
selectionChanged,
} from 'features/gallery/store/gallerySlice';
import { fieldImageValueChanged } from 'features/nodes/store/nodesSlice'; import { fieldImageValueChanged } from 'features/nodes/store/nodesSlice';
import { upscaleInitialImageChanged } from 'features/parameters/store/upscaleSlice'; import { upscaleInitialImageChanged } from 'features/parameters/store/upscaleSlice';
import { imagesApi } from 'services/api/endpoints/images'; import { imagesApi } from 'services/api/endpoints/images';
@ -47,32 +42,6 @@ export const addImageDroppedListener = (startAppListening: AppStartListening) =>
log.debug({ activeData, overData }, `Unknown payload dropped`); log.debug({ activeData, overData }, `Unknown payload dropped`);
} }
/**
* Image dropped on current image
*/
if (
overData.actionType === 'SET_CURRENT_IMAGE' &&
activeData.payloadType === 'IMAGE_DTO' &&
activeData.payload.imageDTO
) {
dispatch(imageSelected(activeData.payload.imageDTO));
dispatch(isImageViewerOpenChanged(true));
return;
}
// /**
// * Image dropped on Control Adapter Layer
// */
// if (
// overData.actionType === 'SET_CA_IMAGE' &&
// activeData.payloadType === 'IMAGE_DTO' &&
// activeData.payload.imageDTO
// ) {
// const { id } = overData.context;
// dispatch(caImageChanged({ id, imageDTO: activeData.payload.imageDTO }));
// return;
// }
/** /**
* Image dropped on IP Adapter Layer * Image dropped on IP Adapter Layer
*/ */

View File

@ -1,7 +1,6 @@
import { MenuItem } from '@invoke-ai/ui-library'; import { MenuItem } from '@invoke-ai/ui-library';
import { useAppDispatch } from 'app/store/storeHooks'; import { useAppDispatch } from 'app/store/storeHooks';
import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext'; import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext';
import { useDefaultControlAdapter } from 'features/controlLayers/hooks/useLayerControlAdapter';
import { rasterLayerConvertedToControlLayer } from 'features/controlLayers/store/canvasV2Slice'; import { rasterLayerConvertedToControlLayer } from 'features/controlLayers/store/canvasV2Slice';
import { memo, useCallback } from 'react'; import { memo, useCallback } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
@ -12,11 +11,9 @@ export const RasterLayerMenuItemsRasterToControl = memo(() => {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const entityIdentifier = useEntityIdentifierContext(); const entityIdentifier = useEntityIdentifierContext();
const defaultControlAdapter = useDefaultControlAdapter();
const convertRasterLayerToControlLayer = useCallback(() => { const convertRasterLayerToControlLayer = useCallback(() => {
dispatch(rasterLayerConvertedToControlLayer({ id: entityIdentifier.id, controlAdapter: defaultControlAdapter })); dispatch(rasterLayerConvertedToControlLayer({ id: entityIdentifier.id }));
}, [dispatch, defaultControlAdapter, entityIdentifier.id]); }, [dispatch, entityIdentifier.id]);
return ( return (
<MenuItem onClick={convertRasterLayerToControlLayer} icon={<PiLightningBold />}> <MenuItem onClick={convertRasterLayerToControlLayer} icon={<PiLightningBold />}>

View File

@ -9,28 +9,22 @@ import { isInvocationNode } from 'features/nodes/types/invocation';
import { some } from 'lodash-es'; import { some } from 'lodash-es';
import type { ImageUsage } from './types'; import type { ImageUsage } from './types';
// TODO(psyche): handle image deletion (canvas sessions?)
export const getImageUsage = (nodes: NodesState, canvasV2: CanvasV2State, image_name: string) => { export const getImageUsage = (nodes: NodesState, canvasV2: CanvasV2State, image_name: string) => {
const isLayerImage = canvasV2.rasterLayers.entities.some((layer) =>
layer.objects.some((obj) => obj.type === 'image' && obj.image.image_name === image_name)
);
const isNodesImage = nodes.nodes const isNodesImage = nodes.nodes
.filter(isInvocationNode) .filter(isInvocationNode)
.some((node) => .some((node) =>
some(node.data.inputs, (input) => isImageFieldInputInstance(input) && input.value?.image_name === image_name) some(node.data.inputs, (input) => isImageFieldInputInstance(input) && input.value?.image_name === image_name)
); );
const isControlAdapterImage = canvasV2.controlLayers.entities.some( const isIPAdapterImage = canvasV2.ipAdapters.entities.some(
(ca) => ca.imageObject?.image.image_name === image_name || ca.processedImageObject?.image.image_name === image_name ({ ipAdapter }) => ipAdapter.image?.image_name === image_name
); );
const isIPAdapterImage = canvasV2.ipAdapters.entities.some((ipa) => ipa.imageObject?.image.image_name === image_name);
const imageUsage: ImageUsage = { const imageUsage: ImageUsage = {
isLayerImage, isLayerImage: false,
isNodesImage, isNodesImage,
isControlAdapterImage, isControlAdapterImage: false,
isIPAdapterImage, isIPAdapterImage,
}; };