Skip to content

Commit 7fac833

Browse files
fix(ui): ref image model types again
1 parent b67eb41 commit 7fac833

File tree

4 files changed

+35
-11
lines changed

4 files changed

+35
-11
lines changed

invokeai/frontend/web/src/features/controlLayers/components/RefImage/RefImageModel.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@ import { selectBase } from 'features/controlLayers/store/paramsSlice';
55
import { memo, useCallback, useMemo } from 'react';
66
import { useTranslation } from 'react-i18next';
77
import { useGlobalReferenceImageModels } from 'services/api/hooks/modelsByType';
8-
9-
type RefImageModelConfig = ReturnType<typeof useGlobalReferenceImageModels>[0][number];
8+
import type {
9+
ChatGPT4oModelConfig,
10+
FLUXKontextModelConfig,
11+
FLUXReduxModelConfig,
12+
IPAdapterModelConfig,
13+
} from 'services/api/types';
1014

1115
type Props = {
1216
modelKey: string | null;
13-
onChangeModel: (modelConfig: RefImageModelConfig) => void;
17+
onChangeModel: (
18+
modelConfig: IPAdapterModelConfig | FLUXReduxModelConfig | ChatGPT4oModelConfig | FLUXKontextModelConfig
19+
) => void;
1420
};
1521

1622
export const RefImageModel = memo(({ modelKey, onChangeModel }: Props) => {
@@ -20,7 +26,9 @@ export const RefImageModel = memo(({ modelKey, onChangeModel }: Props) => {
2026
const selectedModel = useMemo(() => modelConfigs.find((m) => m.key === modelKey), [modelConfigs, modelKey]);
2127

2228
const _onChangeModel = useCallback(
23-
(modelConfig: RefImageModelConfig | null) => {
29+
(
30+
modelConfig: IPAdapterModelConfig | FLUXReduxModelConfig | ChatGPT4oModelConfig | FLUXKontextModelConfig | null
31+
) => {
2432
if (!modelConfig) {
2533
return;
2634
}
@@ -30,7 +38,7 @@ export const RefImageModel = memo(({ modelKey, onChangeModel }: Props) => {
3038
);
3139

3240
const getIsDisabled = useCallback(
33-
(model: RefImageModelConfig): boolean => {
41+
(model: IPAdapterModelConfig | FLUXReduxModelConfig | ChatGPT4oModelConfig | FLUXKontextModelConfig): boolean => {
3442
const hasMainModel = Boolean(currentBaseModel);
3543
const hasSameBase = currentBaseModel === model.base;
3644
return !hasMainModel || !hasSameBase;

invokeai/frontend/web/src/features/controlLayers/components/RefImage/RefImageSettings.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,13 @@ import type { SetGlobalReferenceImageDndTargetData } from 'features/dnd/dnd';
3838
import { setGlobalReferenceImageDndTarget } from 'features/dnd/dnd';
3939
import { selectActiveTab } from 'features/ui/store/uiSelectors';
4040
import { memo, useCallback, useMemo } from 'react';
41-
import type { ApiModelConfig, FLUXReduxModelConfig, ImageDTO, IPAdapterModelConfig } from 'services/api/types';
41+
import type {
42+
ChatGPT4oModelConfig,
43+
FLUXKontextModelConfig,
44+
FLUXReduxModelConfig,
45+
ImageDTO,
46+
IPAdapterModelConfig,
47+
} from 'services/api/types';
4248

4349
import { RefImageImage } from './RefImageImage';
4450

@@ -84,7 +90,7 @@ const RefImageSettingsContent = memo(() => {
8490
);
8591

8692
const onChangeModel = useCallback(
87-
(modelConfig: IPAdapterModelConfig | FLUXReduxModelConfig | ApiModelConfig) => {
93+
(modelConfig: IPAdapterModelConfig | FLUXReduxModelConfig | ChatGPT4oModelConfig | FLUXKontextModelConfig) => {
8894
dispatch(refImageModelChanged({ id, modelConfig }));
8995
},
9096
[dispatch, id]

invokeai/frontend/web/src/features/controlLayers/store/refImagesSlice.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import { clamp } from 'es-toolkit/compat';
77
import { getPrefixedId } from 'features/controlLayers/konva/util';
88
import type { FLUXReduxImageInfluence, RefImagesState } from 'features/controlLayers/store/types';
99
import { zModelIdentifierField } from 'features/nodes/types/common';
10-
import type { ApiModelConfig, FLUXReduxModelConfig, ImageDTO, IPAdapterModelConfig } from 'services/api/types';
10+
import type {
11+
ChatGPT4oModelConfig,
12+
FLUXKontextModelConfig,
13+
FLUXReduxModelConfig,
14+
ImageDTO,
15+
IPAdapterModelConfig,
16+
} from 'services/api/types';
1117
import { assert } from 'tsafe';
1218
import type { PartialDeep } from 'type-fest';
1319

@@ -86,7 +92,9 @@ export const refImagesSlice = createSlice({
8692
},
8793
refImageModelChanged: (
8894
state,
89-
action: PayloadActionWithId<{ modelConfig: IPAdapterModelConfig | FLUXReduxModelConfig | ApiModelConfig | null }>
95+
action: PayloadActionWithId<{
96+
modelConfig: IPAdapterModelConfig | FLUXReduxModelConfig | ChatGPT4oModelConfig | FLUXKontextModelConfig | null;
97+
}>
9098
) => {
9199
const { id, modelConfig } = action.payload;
92100
const entity = selectRefImageEntity(state, id);

invokeai/frontend/web/src/services/api/types.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ export type SigLipModelConfig = S['SigLIPConfig'];
6969
export type FLUXReduxModelConfig = S['FluxReduxConfig'];
7070
export type ApiModelConfig = S['ApiModelConfig'];
7171
export type MainModelConfig = DiffusersModelConfig | CheckpointModelConfig | ApiModelConfig;
72+
export type FLUXKontextModelConfig = MainModelConfig;
73+
export type ChatGPT4oModelConfig = ApiModelConfig;
7274
export type AnyModelConfig =
7375
| ControlLoRAModelConfig
7476
| LoRAModelConfig
@@ -230,7 +232,7 @@ export const isFluxReduxModelConfig = (config: AnyModelConfig): config is FLUXRe
230232
return config.type === 'flux_redux';
231233
};
232234

233-
export const isChatGPT4oModelConfig = (config: AnyModelConfig): config is ApiModelConfig => {
235+
export const isChatGPT4oModelConfig = (config: AnyModelConfig): config is ChatGPT4oModelConfig => {
234236
return config.type === 'main' && config.base === 'chatgpt-4o';
235237
};
236238

@@ -246,7 +248,7 @@ export const isFluxKontextApiModelConfig = (config: AnyModelConfig): config is A
246248
return config.type === 'main' && config.base === 'flux-kontext';
247249
};
248250

249-
export const isFluxKontextModelConfig = (config: AnyModelConfig): config is MainModelConfig => {
251+
export const isFluxKontextModelConfig = (config: AnyModelConfig): config is FLUXKontextModelConfig => {
250252
return config.type === 'main' && config.base === 'flux' && config.name?.toLowerCase().includes('kontext');
251253
};
252254

0 commit comments

Comments
 (0)