Skip to content

Commit 56399a6

Browse files
fix(ui): use zod to parse metdata when fetching from api
1 parent e4035a5 commit 56399a6

File tree

1 file changed

+16
-8
lines changed
  • invokeai/frontend/web/src/services/api/endpoints

1 file changed

+16
-8
lines changed

invokeai/frontend/web/src/services/api/endpoints/images.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
import { EntityState, Update } from '@reduxjs/toolkit';
2+
import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query';
23
import { PatchCollection } from '@reduxjs/toolkit/dist/query/core/buildThunks';
34
import {
45
ASSETS_CATEGORIES,
56
BoardId,
67
IMAGE_CATEGORIES,
78
IMAGE_LIMIT,
89
} from 'features/gallery/store/types';
10+
import {
11+
ImageMetadataAndWorkflow,
12+
zCoreMetadata,
13+
} from 'features/nodes/types/types';
914
import { getMetadataAndWorkflowFromImageBlob } from 'features/nodes/util/getMetadataAndWorkflowFromImageBlob';
1015
import { keyBy } from 'lodash-es';
1116
import { ApiFullTagDescription, LIST_TAG, api } from '..';
17+
import { $authToken, $projectId } from '../client';
1218
import { components, paths } from '../schema';
1319
import {
1420
DeleteBoardResult,
@@ -27,9 +33,6 @@ import {
2733
imagesSelectors,
2834
} from '../util';
2935
import { boardsApi } from './boards';
30-
import { ImageMetadataAndWorkflow } from 'features/nodes/types/types';
31-
import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query';
32-
import { $authToken, $projectId } from '../client';
3336

3437
export const imagesApi = api.injectEndpoints({
3538
endpoints: (build) => ({
@@ -158,18 +161,23 @@ export const imagesApi = api.injectEndpoints({
158161
let metadata = blobData.metadata;
159162

160163
if (args.shouldFetchMetadataFromApi) {
161-
const metadataResult = await fetchWithBaseQuery(
164+
const metadataResponse = await fetchWithBaseQuery(
162165
`images/i/${args.image.image_name}/metadata`
163166
);
164-
if (metadataResult.data) {
165-
metadata = (metadataResult.data as UnsafeImageMetadata)
166-
.metadata as UnsafeImageMetadata['metadata'];
167+
if (metadataResponse.data) {
168+
const metadataResult = zCoreMetadata.safeParse(
169+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
170+
(metadataResponse.data as any)?.metadata
171+
);
172+
if (metadataResult.success) {
173+
metadata = metadataResult.data;
174+
}
167175
}
168176
}
169177

170178
return { data: { ...blobData, metadata } };
171179
},
172-
providesTags: (result, error, { image, shouldFetchMetadataFromApi }) => [
180+
providesTags: (result, error, { image }) => [
173181
{ type: 'ImageMetadataFromFile', id: image.image_name },
174182
],
175183
keepUnusedDataFor: 86400, // 24 hours

0 commit comments

Comments
 (0)