feat(ui): migrate all metadata recall logic to new system

This commit is contained in:
psychedelicious
2024-02-26 11:49:53 +11:00
parent ff00ed8e80
commit 71ceab9094
10 changed files with 177 additions and 1142 deletions

View File

@ -1,3 +1,4 @@
import { objectKeys } from 'common/util/objectKeys';
import { toast } from 'common/util/toast';
import type { ControlAdapterConfig } from 'features/controlAdapters/store/types';
import type { LoRA } from 'features/lora/store/loraSlice';
@ -312,3 +313,75 @@ export const handlers = {
renderItemValue: renderControlAdapterValue,
}),
} as const;
export const parseAndRecallPrompts = async (metadata: unknown) => {
const results = await Promise.allSettled([
handlers.positivePrompt.parse(metadata).then((positivePrompt) => {
if (!handlers.positivePrompt.recall) {
return;
}
handlers.positivePrompt?.recall(positivePrompt);
}),
handlers.negativePrompt.parse(metadata).then((negativePrompt) => {
if (!handlers.negativePrompt.recall) {
return;
}
handlers.negativePrompt?.recall(negativePrompt);
}),
handlers.sdxlPositiveStylePrompt.parse(metadata).then((sdxlPositiveStylePrompt) => {
if (!handlers.sdxlPositiveStylePrompt.recall) {
return;
}
handlers.sdxlPositiveStylePrompt?.recall(sdxlPositiveStylePrompt);
}),
handlers.sdxlNegativeStylePrompt.parse(metadata).then((sdxlNegativeStylePrompt) => {
if (!handlers.sdxlNegativeStylePrompt.recall) {
return;
}
handlers.sdxlNegativeStylePrompt?.recall(sdxlNegativeStylePrompt);
}),
]);
if (results.some((result) => result.status === 'fulfilled')) {
parameterSetToast(t('metadata.allPrompts'));
}
};
export const parseAndRecallImageDimensions = async (metadata: unknown) => {
const results = await Promise.allSettled([
handlers.width.parse(metadata).then((width) => {
if (!handlers.width.recall) {
return;
}
handlers.width?.recall(width);
}),
handlers.height.parse(metadata).then((height) => {
if (!handlers.height.recall) {
return;
}
handlers.height?.recall(height);
}),
]);
if (results.some((result) => result.status === 'fulfilled')) {
parameterSetToast(t('metadata.imageDimensions'));
}
};
export const parseAndRecallAllMetadata = async (metadata: unknown, skip: (keyof typeof handlers)[] = []) => {
const results = await Promise.allSettled(
objectKeys(handlers)
.filter((key) => !skip.includes(key))
.map((key) => {
const { parse, recall } = handlers[key];
return parse(metadata).then((value) => {
if (!recall) {
return;
}
/* @ts-expect-error The return type of parse and the input type of recall are guaranteed to be compatible. */
recall(value);
});
})
);
if (results.some((result) => result.status === 'fulfilled')) {
parameterSetToast(t('toast.parametersSet'));
}
};

View File

@ -203,62 +203,6 @@ const recallIPAdapters: MetadataRecallFunc<IPAdapterConfig[]> = (ipAdapters) =>
});
};
export const recallPrompts = (_metadata: unknown) => {
// recallPositivePrompt(metadata);
// recallNegativePrompt(metadata);
// recallSDXLPositiveStylePrompt(metadata);
// recallSDXLNegativeStylePrompt(metadata);
// parameterNotSetToast(t('metadata.allPrompts'));
// parameterSetToast(t('metadata.allPrompts'));
};
export const recallWidthAndHeight = (_metadata: unknown) => {
// recallWidth(metadata);
// recallHeight(metadata);
};
export const recallAll = async (_metadata: unknown) => {
// if (!metadata) {
// allParameterNotSetToast();
// return;
// }
// // Update the main model first, as other parameters may depend on it.
// await recallModel(metadata);
// await Promise.allSettled([
// // Core parameters
// recallCFGScale(metadata),
// recallCFGRescaleMultiplier(metadata),
// recallPositivePrompt(metadata),
// recallNegativePrompt(metadata),
// recallScheduler(metadata),
// recallSeed(metadata),
// recallSteps(metadata),
// recallWidth(metadata),
// recallHeight(metadata),
// recallStrength(metadata),
// recallHRFEnabled(metadata),
// recallHRFMethod(metadata),
// recallHRFStrength(metadata),
// // SDXL parameters
// recallSDXLPositiveStylePrompt(metadata),
// recallSDXLNegativeStylePrompt(metadata),
// recallRefinerSteps(metadata),
// recallRefinerCFGScale(metadata),
// recallRefinerScheduler(metadata),
// recallRefinerPositiveAestheticScore(metadata),
// recallRefinerNegativeAestheticScore(metadata),
// recallRefinerStart(metadata),
// // Models
// recallVAE(metadata),
// recallRefinerModel(metadata),
// recallAllLoRAs(metadata),
// recallControlNets(metadata),
// recallT2IAdapters(metadata),
// recallIPAdapters(metadata),
// ]);
// allParameterSetToast();
};
export const recallers = {
positivePrompt: recallPositivePrompt,
negativePrompt: recallNegativePrompt,