mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
fix(ui): use zod to parse metdata when fetching from api
This commit is contained in:
parent
e4035a51af
commit
56399a650a
@ -1,4 +1,5 @@
|
|||||||
import { EntityState, Update } from '@reduxjs/toolkit';
|
import { EntityState, Update } from '@reduxjs/toolkit';
|
||||||
|
import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query';
|
||||||
import { PatchCollection } from '@reduxjs/toolkit/dist/query/core/buildThunks';
|
import { PatchCollection } from '@reduxjs/toolkit/dist/query/core/buildThunks';
|
||||||
import {
|
import {
|
||||||
ASSETS_CATEGORIES,
|
ASSETS_CATEGORIES,
|
||||||
@ -6,9 +7,14 @@ import {
|
|||||||
IMAGE_CATEGORIES,
|
IMAGE_CATEGORIES,
|
||||||
IMAGE_LIMIT,
|
IMAGE_LIMIT,
|
||||||
} from 'features/gallery/store/types';
|
} from 'features/gallery/store/types';
|
||||||
|
import {
|
||||||
|
ImageMetadataAndWorkflow,
|
||||||
|
zCoreMetadata,
|
||||||
|
} from 'features/nodes/types/types';
|
||||||
import { getMetadataAndWorkflowFromImageBlob } from 'features/nodes/util/getMetadataAndWorkflowFromImageBlob';
|
import { getMetadataAndWorkflowFromImageBlob } from 'features/nodes/util/getMetadataAndWorkflowFromImageBlob';
|
||||||
import { keyBy } from 'lodash-es';
|
import { keyBy } from 'lodash-es';
|
||||||
import { ApiFullTagDescription, LIST_TAG, api } from '..';
|
import { ApiFullTagDescription, LIST_TAG, api } from '..';
|
||||||
|
import { $authToken, $projectId } from '../client';
|
||||||
import { components, paths } from '../schema';
|
import { components, paths } from '../schema';
|
||||||
import {
|
import {
|
||||||
DeleteBoardResult,
|
DeleteBoardResult,
|
||||||
@ -27,9 +33,6 @@ import {
|
|||||||
imagesSelectors,
|
imagesSelectors,
|
||||||
} from '../util';
|
} from '../util';
|
||||||
import { boardsApi } from './boards';
|
import { boardsApi } from './boards';
|
||||||
import { ImageMetadataAndWorkflow } from 'features/nodes/types/types';
|
|
||||||
import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query';
|
|
||||||
import { $authToken, $projectId } from '../client';
|
|
||||||
|
|
||||||
export const imagesApi = api.injectEndpoints({
|
export const imagesApi = api.injectEndpoints({
|
||||||
endpoints: (build) => ({
|
endpoints: (build) => ({
|
||||||
@ -158,18 +161,23 @@ export const imagesApi = api.injectEndpoints({
|
|||||||
let metadata = blobData.metadata;
|
let metadata = blobData.metadata;
|
||||||
|
|
||||||
if (args.shouldFetchMetadataFromApi) {
|
if (args.shouldFetchMetadataFromApi) {
|
||||||
const metadataResult = await fetchWithBaseQuery(
|
const metadataResponse = await fetchWithBaseQuery(
|
||||||
`images/i/${args.image.image_name}/metadata`
|
`images/i/${args.image.image_name}/metadata`
|
||||||
);
|
);
|
||||||
if (metadataResult.data) {
|
if (metadataResponse.data) {
|
||||||
metadata = (metadataResult.data as UnsafeImageMetadata)
|
const metadataResult = zCoreMetadata.safeParse(
|
||||||
.metadata as UnsafeImageMetadata['metadata'];
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
(metadataResponse.data as any)?.metadata
|
||||||
|
);
|
||||||
|
if (metadataResult.success) {
|
||||||
|
metadata = metadataResult.data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return { data: { ...blobData, metadata } };
|
return { data: { ...blobData, metadata } };
|
||||||
},
|
},
|
||||||
providesTags: (result, error, { image, shouldFetchMetadataFromApi }) => [
|
providesTags: (result, error, { image }) => [
|
||||||
{ type: 'ImageMetadataFromFile', id: image.image_name },
|
{ type: 'ImageMetadataFromFile', id: image.image_name },
|
||||||
],
|
],
|
||||||
keepUnusedDataFor: 86400, // 24 hours
|
keepUnusedDataFor: 86400, // 24 hours
|
||||||
|
Loading…
Reference in New Issue
Block a user