From 8d87549ebe22ddbee9e7340f49d9551454ecefe7 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Sat, 7 Sep 2024 22:18:08 +1000 Subject: [PATCH] fix(ui): disabled global IP adapters used for generation --- .../nodes/util/graph/generation/addIPAdapters.ts | 8 ++++---- .../features/nodes/util/graph/generation/addRegions.ts | 10 +++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addIPAdapters.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addIPAdapters.ts index 90a314c11b..255818a463 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addIPAdapters.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addIPAdapters.ts @@ -1,4 +1,4 @@ -import type { CanvasIPAdapterState, IPAdapterConfig } from 'features/controlLayers/store/types'; +import type { CanvasIPAdapterState } from 'features/controlLayers/store/types'; import type { Graph } from 'features/nodes/util/graph/generation/Graph'; import type { BaseModelType, Invocation } from 'services/api/types'; import { assert } from 'tsafe'; @@ -13,7 +13,7 @@ export const addIPAdapters = ( collector: Invocation<'collect'>, base: BaseModelType ): AddIPAdaptersResult => { - const validIPAdapters = ipAdapters.filter((entity) => isValidIPAdapter(entity.ipAdapter, base)); + const validIPAdapters = ipAdapters.filter((entity) => isValidIPAdapter(entity, base)); const result: AddIPAdaptersResult = { addedIPAdapters: 0, @@ -50,10 +50,10 @@ const addIPAdapter = (entity: CanvasIPAdapterState, g: Graph, collector: Invocat g.addEdge(ipAdapterNode, 'ip_adapter', collector, 'item'); }; -export const isValidIPAdapter = (ipAdapter: IPAdapterConfig, base: BaseModelType): boolean => { +const isValidIPAdapter = ({ isEnabled, ipAdapter }: CanvasIPAdapterState, base: BaseModelType): boolean => { // Must be have a model that matches the current base and must have a control image const hasModel = Boolean(ipAdapter.model); const modelMatchesBase = ipAdapter.model?.base === base; const hasImage = Boolean(ipAdapter.image); - return hasModel && modelMatchesBase && hasImage; + return isEnabled && hasModel && modelMatchesBase && hasImage; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addRegions.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addRegions.ts index 3542356a34..fa523e419a 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addRegions.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addRegions.ts @@ -3,10 +3,10 @@ import type { CanvasManager } from 'features/controlLayers/konva/CanvasManager'; import { getPrefixedId } from 'features/controlLayers/konva/util'; import type { CanvasRegionalGuidanceState, + IPAdapterConfig, Rect, RegionalGuidanceIPAdapterConfig, } from 'features/controlLayers/store/types'; -import { isValidIPAdapter } from 'features/nodes/util/graph/generation/addIPAdapters'; import type { Graph } from 'features/nodes/util/graph/generation/Graph'; import type { BaseModelType, Invocation } from 'services/api/types'; import { assert } from 'tsafe'; @@ -234,3 +234,11 @@ export const addRegions = async ( return results; }; + +const isValidIPAdapter = (ipAdapter: IPAdapterConfig, base: BaseModelType): boolean => { + // Must be have a model that matches the current base and must have a control image + const hasModel = Boolean(ipAdapter.model); + const modelMatchesBase = ipAdapter.model?.base === base; + const hasImage = Boolean(ipAdapter.image); + return hasModel && modelMatchesBase && hasImage; +};