mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat(ui): use updated types
This commit is contained in:
parent
7590f3005e
commit
5a4d10467b
@ -13,7 +13,6 @@ import {
|
|||||||
isControlAdapterLayer,
|
isControlAdapterLayer,
|
||||||
} from 'features/controlLayers/store/controlLayersSlice';
|
} from 'features/controlLayers/store/controlLayersSlice';
|
||||||
import { CA_PROCESSOR_DATA } from 'features/controlLayers/util/controlAdapters';
|
import { CA_PROCESSOR_DATA } from 'features/controlLayers/util/controlAdapters';
|
||||||
import { isImageOutput } from 'features/nodes/types/common';
|
|
||||||
import { toast } from 'features/toast/toast';
|
import { toast } from 'features/toast/toast';
|
||||||
import { t } from 'i18next';
|
import { t } from 'i18next';
|
||||||
import { isEqual } from 'lodash-es';
|
import { isEqual } from 'lodash-es';
|
||||||
@ -139,7 +138,7 @@ export const addControlAdapterPreprocessor = (startAppListening: AppStartListeni
|
|||||||
|
|
||||||
// We still have to check the output type
|
// We still have to check the output type
|
||||||
assert(
|
assert(
|
||||||
isImageOutput(invocationCompleteAction.payload.data.result),
|
invocationCompleteAction.payload.data.result.type === 'image_output',
|
||||||
`Processor did not return an image output, got: ${invocationCompleteAction.payload.data.result}`
|
`Processor did not return an image output, got: ${invocationCompleteAction.payload.data.result}`
|
||||||
);
|
);
|
||||||
const { image_name } = invocationCompleteAction.payload.data.result.image;
|
const { image_name } = invocationCompleteAction.payload.data.result.image;
|
||||||
|
@ -9,7 +9,6 @@ import {
|
|||||||
selectControlAdapterById,
|
selectControlAdapterById,
|
||||||
} from 'features/controlAdapters/store/controlAdaptersSlice';
|
} from 'features/controlAdapters/store/controlAdaptersSlice';
|
||||||
import { isControlNetOrT2IAdapter } from 'features/controlAdapters/store/types';
|
import { isControlNetOrT2IAdapter } from 'features/controlAdapters/store/types';
|
||||||
import { isImageOutput } from 'features/nodes/types/common';
|
|
||||||
import { toast } from 'features/toast/toast';
|
import { toast } from 'features/toast/toast';
|
||||||
import { t } from 'i18next';
|
import { t } from 'i18next';
|
||||||
import { imagesApi } from 'services/api/endpoints/images';
|
import { imagesApi } from 'services/api/endpoints/images';
|
||||||
@ -74,7 +73,7 @@ export const addControlNetImageProcessedListener = (startAppListening: AppStartL
|
|||||||
);
|
);
|
||||||
|
|
||||||
// We still have to check the output type
|
// We still have to check the output type
|
||||||
if (isImageOutput(invocationCompleteAction.payload.data.result)) {
|
if (invocationCompleteAction.payload.data.result.type === 'image_output') {
|
||||||
const { image_name } = invocationCompleteAction.payload.data.result.image;
|
const { image_name } = invocationCompleteAction.payload.data.result.image;
|
||||||
|
|
||||||
// Wait for the ImageDTO to be received
|
// Wait for the ImageDTO to be received
|
||||||
|
@ -11,7 +11,6 @@ import {
|
|||||||
} from 'features/gallery/store/gallerySlice';
|
} from 'features/gallery/store/gallerySlice';
|
||||||
import { IMAGE_CATEGORIES } from 'features/gallery/store/types';
|
import { IMAGE_CATEGORIES } from 'features/gallery/store/types';
|
||||||
import { $nodeExecutionStates, upsertExecutionState } from 'features/nodes/hooks/useExecutionState';
|
import { $nodeExecutionStates, upsertExecutionState } from 'features/nodes/hooks/useExecutionState';
|
||||||
import { isImageOutput } from 'features/nodes/types/common';
|
|
||||||
import { zNodeStatus } from 'features/nodes/types/invocation';
|
import { zNodeStatus } from 'features/nodes/types/invocation';
|
||||||
import { CANVAS_OUTPUT } from 'features/nodes/util/graph/constants';
|
import { CANVAS_OUTPUT } from 'features/nodes/util/graph/constants';
|
||||||
import { boardsApi } from 'services/api/endpoints/boards';
|
import { boardsApi } from 'services/api/endpoints/boards';
|
||||||
@ -33,7 +32,7 @@ export const addInvocationCompleteEventListener = (startAppListening: AppStartLi
|
|||||||
|
|
||||||
const { result, invocation_source_id } = data;
|
const { result, invocation_source_id } = data;
|
||||||
// This complete event has an associated image output
|
// This complete event has an associated image output
|
||||||
if (isImageOutput(data.result) && !nodeTypeDenylist.includes(data.invocation.type)) {
|
if (data.result.type === 'image_output' && !nodeTypeDenylist.includes(data.invocation.type)) {
|
||||||
const { image_name } = data.result.image;
|
const { image_name } = data.result.image;
|
||||||
const { canvas, gallery } = getState();
|
const { canvas, gallery } = getState();
|
||||||
|
|
||||||
|
@ -11,8 +11,7 @@ import { selectLastSelectedNode } from 'features/nodes/store/selectors';
|
|||||||
import { isInvocationNode } from 'features/nodes/types/invocation';
|
import { isInvocationNode } from 'features/nodes/types/invocation';
|
||||||
import { memo, useMemo } from 'react';
|
import { memo, useMemo } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import type { ImageOutput } from 'services/api/types';
|
import type { ImageOutput, S } from 'services/api/types';
|
||||||
import type { AnyResult } from 'services/events/types';
|
|
||||||
|
|
||||||
import ImageOutputPreview from './outputs/ImageOutputPreview';
|
import ImageOutputPreview from './outputs/ImageOutputPreview';
|
||||||
|
|
||||||
@ -66,4 +65,4 @@ const InspectorOutputsTab = () => {
|
|||||||
|
|
||||||
export default memo(InspectorOutputsTab);
|
export default memo(InspectorOutputsTab);
|
||||||
|
|
||||||
const getKey = (result: AnyResult, i: number) => `${result.type}-${i}`;
|
const getKey = (result: S['AnyInvocationOutput'], i: number) => `${result.type}-${i}`;
|
||||||
|
@ -144,5 +144,4 @@ const zImageOutput = z.object({
|
|||||||
type: z.literal('image_output'),
|
type: z.literal('image_output'),
|
||||||
});
|
});
|
||||||
export type ImageOutput = z.infer<typeof zImageOutput>;
|
export type ImageOutput = z.infer<typeof zImageOutput>;
|
||||||
export const isImageOutput = (output: unknown): output is ImageOutput => zImageOutput.safeParse(output).success;
|
|
||||||
// #endregion
|
// #endregion
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import type { NodesState } from 'features/nodes/store/types';
|
import type { NodesState } from 'features/nodes/store/types';
|
||||||
import { isInvocationNode } from 'features/nodes/types/invocation';
|
import { isInvocationNode } from 'features/nodes/types/invocation';
|
||||||
import { omit, reduce } from 'lodash-es';
|
import { omit, reduce } from 'lodash-es';
|
||||||
import type { Graph } from 'services/api/types';
|
import type { Graph, S } from 'services/api/types';
|
||||||
import type { AnyInvocation } from 'services/events/types';
|
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,7 +81,7 @@ export const buildNodesGraph = (nodesState: NodesState): Graph => {
|
|||||||
parsedEdges.forEach((edge) => {
|
parsedEdges.forEach((edge) => {
|
||||||
const destination_node = parsedNodes[edge.destination.node_id];
|
const destination_node = parsedNodes[edge.destination.node_id];
|
||||||
const field = edge.destination.field;
|
const field = edge.destination.field;
|
||||||
parsedNodes[edge.destination.node_id] = omit(destination_node, field) as AnyInvocation;
|
parsedNodes[edge.destination.node_id] = omit(destination_node, field) as S['AnyInvocation'];
|
||||||
});
|
});
|
||||||
|
|
||||||
// Assemble!
|
// Assemble!
|
||||||
|
@ -122,7 +122,6 @@ export type ModelInstallStatus = S['InstallStatus'];
|
|||||||
// Graphs
|
// Graphs
|
||||||
export type Graph = S['Graph'];
|
export type Graph = S['Graph'];
|
||||||
export type NonNullableGraph = O.Required<Graph, 'nodes' | 'edges'>;
|
export type NonNullableGraph = O.Required<Graph, 'nodes' | 'edges'>;
|
||||||
export type GraphExecutionState = S['GraphExecutionState'];
|
|
||||||
export type Batch = S['Batch'];
|
export type Batch = S['Batch'];
|
||||||
export type SessionQueueItemDTO = S['SessionQueueItemDTO'];
|
export type SessionQueueItemDTO = S['SessionQueueItemDTO'];
|
||||||
export type WorkflowRecordOrderBy = S['WorkflowRecordOrderBy'];
|
export type WorkflowRecordOrderBy = S['WorkflowRecordOrderBy'];
|
||||||
@ -132,10 +131,10 @@ export type WorkflowRecordListItemDTO = S['WorkflowRecordListItemDTO'];
|
|||||||
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
||||||
|
|
||||||
export type AnyInvocation = Exclude<
|
export type AnyInvocation = Exclude<
|
||||||
Graph['nodes'][string],
|
S['AnyInvocation'],
|
||||||
S['CoreMetadataInvocation'] | S['MetadataInvocation'] | S['MetadataItemInvocation'] | S['MergeMetadataInvocation']
|
S['CoreMetadataInvocation'] | S['MetadataInvocation'] | S['MetadataItemInvocation'] | S['MergeMetadataInvocation']
|
||||||
>;
|
>;
|
||||||
export type AnyInvocationIncMetadata = S['Graph']['nodes'][string];
|
export type AnyInvocationIncMetadata = S['AnyInvocation'];
|
||||||
|
|
||||||
export type InvocationType = AnyInvocation['type'];
|
export type InvocationType = AnyInvocation['type'];
|
||||||
type InvocationOutputMap = S['InvocationOutputMap'];
|
type InvocationOutputMap = S['InvocationOutputMap'];
|
||||||
|
@ -1,21 +1,12 @@
|
|||||||
import type { Graph, GraphExecutionState, S } from 'services/api/types';
|
import type { S } from 'services/api/types';
|
||||||
|
|
||||||
export type AnyInvocation = NonNullable<NonNullable<Graph['nodes']>[string]>;
|
|
||||||
|
|
||||||
export type AnyResult = NonNullable<GraphExecutionState['results'][string]>;
|
|
||||||
|
|
||||||
export type ModelLoadStartedEvent = S['ModelLoadStartedEvent'];
|
export type ModelLoadStartedEvent = S['ModelLoadStartedEvent'];
|
||||||
export type ModelLoadCompleteEvent = S['ModelLoadCompleteEvent'];
|
export type ModelLoadCompleteEvent = S['ModelLoadCompleteEvent'];
|
||||||
|
|
||||||
export type InvocationStartedEvent = Omit<S['InvocationStartedEvent'], 'invocation'> & { invocation: AnyInvocation };
|
export type InvocationStartedEvent = S['InvocationStartedEvent'];
|
||||||
export type InvocationDenoiseProgressEvent = Omit<S['InvocationDenoiseProgressEvent'], 'invocation'> & {
|
export type InvocationDenoiseProgressEvent = S['InvocationDenoiseProgressEvent'];
|
||||||
invocation: AnyInvocation;
|
export type InvocationCompleteEvent = S['InvocationCompleteEvent'];
|
||||||
};
|
export type InvocationErrorEvent = S['InvocationErrorEvent'];
|
||||||
export type InvocationCompleteEvent = Omit<S['InvocationCompleteEvent'], 'result' | 'invocation'> & {
|
|
||||||
result: AnyResult;
|
|
||||||
invocation: AnyInvocation;
|
|
||||||
};
|
|
||||||
export type InvocationErrorEvent = Omit<S['InvocationErrorEvent'], 'invocation'> & { invocation: AnyInvocation };
|
|
||||||
export type ProgressImage = InvocationDenoiseProgressEvent['progress_image'];
|
export type ProgressImage = InvocationDenoiseProgressEvent['progress_image'];
|
||||||
|
|
||||||
export type ModelInstallDownloadProgressEvent = S['ModelInstallDownloadProgressEvent'];
|
export type ModelInstallDownloadProgressEvent = S['ModelInstallDownloadProgressEvent'];
|
||||||
|
Loading…
Reference in New Issue
Block a user