mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-04-23 03:00:31 -04:00
*migrate from `openapi-typescript-codegen` to `openapi-typescript` and `openapi-fetch`* `openapi-typescript-codegen` is not very actively maintained - it's been over a year since the last update. `openapi-typescript` and `openapi-fetch` are part of the actively maintained repo. key differences: - provides a `fetch` client instead of `axios`, which means we need to be a bit more verbose with typing thunks - fetch client is created at runtime and has a very nice typescript DX - generates a single file with all types in it, from which we then extract individual types. i don't like how verbose this is, but i do like how it is more explicit. - removed npm api generation scripts - now we have a single `typegen` script overall i have more confidence in this new library. *use nanostores for api base and token* very simple reactive store for api base url and token. this was suggested in the `openapi-fetch` docs and i quite like the strategy. *organise rtk-query api* split out each endpoint (models, images, boards, boardImages) into their own api extensions. tidy!
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import { RootState } from 'app/store/store';
|
|
import { ImageDTO } from 'services/api/types';
|
|
import { log } from 'app/logging/useLogger';
|
|
import { forEach } from 'lodash-es';
|
|
import { buildCanvasInpaintGraph } from './buildCanvasInpaintGraph';
|
|
import { NonNullableGraph } from 'features/nodes/types/types';
|
|
import { buildCanvasImageToImageGraph } from './buildCanvasImageToImageGraph';
|
|
import { buildCanvasTextToImageGraph } from './buildCanvasTextToImageGraph';
|
|
|
|
const moduleLog = log.child({ namespace: 'nodes' });
|
|
|
|
export const buildCanvasGraph = (
|
|
state: RootState,
|
|
generationMode: 'txt2img' | 'img2img' | 'inpaint' | 'outpaint',
|
|
canvasInitImage: ImageDTO | undefined,
|
|
canvasMaskImage: ImageDTO | undefined
|
|
) => {
|
|
let graph: NonNullableGraph;
|
|
|
|
if (generationMode === 'txt2img') {
|
|
graph = buildCanvasTextToImageGraph(state);
|
|
} else if (generationMode === 'img2img') {
|
|
if (!canvasInitImage) {
|
|
throw new Error('Missing canvas init image');
|
|
}
|
|
graph = buildCanvasImageToImageGraph(state, canvasInitImage);
|
|
} else {
|
|
if (!canvasInitImage || !canvasMaskImage) {
|
|
throw new Error('Missing canvas init and mask images');
|
|
}
|
|
graph = buildCanvasInpaintGraph(state, canvasInitImage, canvasMaskImage);
|
|
}
|
|
|
|
forEach(graph.nodes, (node) => {
|
|
graph.nodes[node.id].is_intermediate = true;
|
|
});
|
|
|
|
return graph;
|
|
};
|