From 370a64caca9f6eb7de2c73d51b312539b4e7bf22 Mon Sep 17 00:00:00 2001 From: Jennifer Player Date: Fri, 12 Apr 2024 14:34:30 -0400 Subject: [PATCH] fix recall all when loras, controls, or hrf arent present --- .../web/src/features/metadata/util/parsers.ts | 73 ++++++++++++------- .../src/features/metadata/util/recallers.ts | 16 ++-- 2 files changed, 55 insertions(+), 34 deletions(-) diff --git a/invokeai/frontend/web/src/features/metadata/util/parsers.ts b/invokeai/frontend/web/src/features/metadata/util/parsers.ts index 9f5c14d94eb..2a3e3158e8f 100644 --- a/invokeai/frontend/web/src/features/metadata/util/parsers.ts +++ b/invokeai/frontend/web/src/features/metadata/util/parsers.ts @@ -156,8 +156,13 @@ const parseSteps: MetadataParseFunc = (metadata) => getProperty( const parseStrength: MetadataParseFunc = (metadata) => getProperty(metadata, 'strength', isParameterStrength); -const parseHRFEnabled: MetadataParseFunc = (metadata) => - getProperty(metadata, 'hrf_enabled', isParameterHRFEnabled); +const parseHRFEnabled: MetadataParseFunc = async (metadata) => { + try { + return await getProperty(metadata, 'hrf_enabled', isParameterHRFEnabled); + } catch { + return false; + } +}; const parseHRFStrength: MetadataParseFunc = (metadata) => getProperty(metadata, 'hrf_strength', isParameterStrength); @@ -224,12 +229,16 @@ const parseLoRA: MetadataParseFunc = async (metadataItem) => { }; const parseAllLoRAs: MetadataParseFunc = async (metadata) => { - const lorasRaw = await getProperty(metadata, 'loras', isArray); - const parseResults = await Promise.allSettled(lorasRaw.map((lora) => parseLoRA(lora))); - const loras = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return loras; + try { + const lorasRaw = await getProperty(metadata, 'loras', isArray); + const parseResults = await Promise.allSettled(lorasRaw.map((lora) => parseLoRA(lora))); + const loras = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return loras; + } catch { + return []; + } }; const parseControlNet: MetadataParseFunc = async (metadataItem) => { @@ -288,12 +297,16 @@ const parseControlNet: MetadataParseFunc = async (meta }; const parseAllControlNets: MetadataParseFunc = async (metadata) => { - const controlNetsRaw = await getProperty(metadata, 'controlnets', isArray); - const parseResults = await Promise.allSettled(controlNetsRaw.map((cn) => parseControlNet(cn))); - const controlNets = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return controlNets; + try { + const controlNetsRaw = await getProperty(metadata, 'controlnets', isArray || undefined); + const parseResults = await Promise.allSettled(controlNetsRaw.map((cn) => parseControlNet(cn))); + const controlNets = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return controlNets; + } catch { + return []; + } }; const parseT2IAdapter: MetadataParseFunc = async (metadataItem) => { @@ -348,12 +361,16 @@ const parseT2IAdapter: MetadataParseFunc = async (meta }; const parseAllT2IAdapters: MetadataParseFunc = async (metadata) => { - const t2iAdaptersRaw = await getProperty(metadata, 't2iAdapters', isArray); - const parseResults = await Promise.allSettled(t2iAdaptersRaw.map((t2iAdapter) => parseT2IAdapter(t2iAdapter))); - const t2iAdapters = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return t2iAdapters; + try { + const t2iAdaptersRaw = await getProperty(metadata, 't2iAdapters', isArray); + const parseResults = await Promise.allSettled(t2iAdaptersRaw.map((t2iAdapter) => parseT2IAdapter(t2iAdapter))); + const t2iAdapters = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return t2iAdapters; + } catch { + return []; + } }; const parseIPAdapter: MetadataParseFunc = async (metadataItem) => { @@ -394,12 +411,16 @@ const parseIPAdapter: MetadataParseFunc = async (metada }; const parseAllIPAdapters: MetadataParseFunc = async (metadata) => { - const ipAdaptersRaw = await getProperty(metadata, 'ipAdapters', isArray); - const parseResults = await Promise.allSettled(ipAdaptersRaw.map((ipAdapter) => parseIPAdapter(ipAdapter))); - const ipAdapters = parseResults - .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') - .map((result) => result.value); - return ipAdapters; + try { + const ipAdaptersRaw = await getProperty(metadata, 'ipAdapters', isArray); + const parseResults = await Promise.allSettled(ipAdaptersRaw.map((ipAdapter) => parseIPAdapter(ipAdapter))); + const ipAdapters = parseResults + .filter((result): result is PromiseFulfilledResult => result.status === 'fulfilled') + .map((result) => result.value); + return ipAdapters; + } catch { + return []; + } }; export const parsers = { diff --git a/invokeai/frontend/web/src/features/metadata/util/recallers.ts b/invokeai/frontend/web/src/features/metadata/util/recallers.ts index 88af390a20a..4f332e23a9e 100644 --- a/invokeai/frontend/web/src/features/metadata/util/recallers.ts +++ b/invokeai/frontend/web/src/features/metadata/util/recallers.ts @@ -177,11 +177,11 @@ const recallLoRA: MetadataRecallFunc = (lora) => { }; const recallAllLoRAs: MetadataRecallFunc = (loras) => { + const { dispatch } = getStore(); + dispatch(lorasReset()); if (!loras.length) { return; } - const { dispatch } = getStore(); - dispatch(lorasReset()); loras.forEach((lora) => { dispatch(loraRecalled(lora)); }); @@ -192,11 +192,11 @@ const recallControlNet: MetadataRecallFunc = (controlN }; const recallControlNets: MetadataRecallFunc = (controlNets) => { + const { dispatch } = getStore(); + dispatch(controlNetsReset()); if (!controlNets.length) { return; } - const { dispatch } = getStore(); - dispatch(controlNetsReset()); controlNets.forEach((controlNet) => { dispatch(controlAdapterRecalled(controlNet)); }); @@ -207,11 +207,11 @@ const recallT2IAdapter: MetadataRecallFunc = (t2iAdapt }; const recallT2IAdapters: MetadataRecallFunc = (t2iAdapters) => { + const { dispatch } = getStore(); + dispatch(t2iAdaptersReset()); if (!t2iAdapters.length) { return; } - const { dispatch } = getStore(); - dispatch(t2iAdaptersReset()); t2iAdapters.forEach((t2iAdapter) => { dispatch(controlAdapterRecalled(t2iAdapter)); }); @@ -222,11 +222,11 @@ const recallIPAdapter: MetadataRecallFunc = (ipAdapter) }; const recallIPAdapters: MetadataRecallFunc = (ipAdapters) => { + const { dispatch } = getStore(); + dispatch(ipAdaptersReset()); if (!ipAdapters.length) { return; } - const { dispatch } = getStore(); - dispatch(ipAdaptersReset()); ipAdapters.forEach((ipAdapter) => { dispatch(controlAdapterRecalled(ipAdapter)); });