mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat: metadata refactor
- Refactor how metadata is handled to support a user-defined metadata in graphs - Update workflow embed handling - Update UI to work with these changes - Update tests to support metadata/workflow changes
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
import { EntityState, Update } from '@reduxjs/toolkit';
|
||||
import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query';
|
||||
import { PatchCollection } from '@reduxjs/toolkit/dist/query/core/buildThunks';
|
||||
import { logger } from 'app/logging/logger';
|
||||
import {
|
||||
ASSETS_CATEGORIES,
|
||||
BoardId,
|
||||
@ -8,6 +9,7 @@ import {
|
||||
IMAGE_LIMIT,
|
||||
} from 'features/gallery/store/types';
|
||||
import {
|
||||
CoreMetadata,
|
||||
ImageMetadataAndWorkflow,
|
||||
zCoreMetadata,
|
||||
} from 'features/nodes/types/types';
|
||||
@ -23,7 +25,6 @@ import {
|
||||
ListImagesArgs,
|
||||
OffsetPaginatedResults_ImageDTO_,
|
||||
PostUploadAction,
|
||||
UnsafeImageMetadata,
|
||||
} from '../types';
|
||||
import {
|
||||
getCategories,
|
||||
@ -114,11 +115,24 @@ export const imagesApi = api.injectEndpoints({
|
||||
],
|
||||
keepUnusedDataFor: 86400, // 24 hours
|
||||
}),
|
||||
getImageMetadata: build.query<UnsafeImageMetadata, string>({
|
||||
getImageMetadata: build.query<CoreMetadata | undefined, string>({
|
||||
query: (image_name) => ({ url: `images/i/${image_name}/metadata` }),
|
||||
providesTags: (result, error, image_name) => [
|
||||
{ type: 'ImageMetadata', id: image_name },
|
||||
],
|
||||
transformResponse: (
|
||||
response: paths['/api/v1/images/i/{image_name}/metadata']['get']['responses']['200']['content']['application/json']
|
||||
) => {
|
||||
if (response) {
|
||||
const result = zCoreMetadata.safeParse(response);
|
||||
if (result.success) {
|
||||
return result.data;
|
||||
} else {
|
||||
logger('images').warn('Problem parsing metadata');
|
||||
}
|
||||
}
|
||||
return;
|
||||
},
|
||||
keepUnusedDataFor: 86400, // 24 hours
|
||||
}),
|
||||
getImageMetadataFromFile: build.query<
|
||||
|
@ -0,0 +1,31 @@
|
||||
import { logger } from 'app/logging/logger';
|
||||
import { Workflow, zWorkflow } from 'features/nodes/types/types';
|
||||
import { api } from '..';
|
||||
import { paths } from '../schema';
|
||||
|
||||
export const workflowsApi = api.injectEndpoints({
|
||||
endpoints: (build) => ({
|
||||
getWorkflow: build.query<Workflow | undefined, string>({
|
||||
query: (workflow_id) => `workflows/i/${workflow_id}`,
|
||||
keepUnusedDataFor: 86400, // 24 hours
|
||||
providesTags: (result, error, workflow_id) => [
|
||||
{ type: 'Workflow', id: workflow_id },
|
||||
],
|
||||
transformResponse: (
|
||||
response: paths['/api/v1/workflows/i/{workflow_id}']['get']['responses']['200']['content']['application/json']
|
||||
) => {
|
||||
if (response) {
|
||||
const result = zWorkflow.safeParse(response);
|
||||
if (result.success) {
|
||||
return result.data;
|
||||
} else {
|
||||
logger('images').warn('Problem parsing metadata');
|
||||
}
|
||||
}
|
||||
return;
|
||||
},
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
export const { useGetWorkflowQuery } = workflowsApi;
|
Reference in New Issue
Block a user