From d687ea2cde3a3fbd379fd935e50b1995a7e1fc2c Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Fri, 11 Apr 2025 07:39:54 +0800 Subject: [PATCH] [Manager] Fix infinite fetch attempts when response is empty (#3392) --- .../content/manager/ManagerDialogContent.vue | 18 ++++++++++++++---- src/composables/nodePack/useInstalledPacks.ts | 7 +++---- src/composables/nodePack/useWorkflowPacks.ts | 7 +++---- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/components/dialog/content/manager/ManagerDialogContent.vue b/src/components/dialog/content/manager/ManagerDialogContent.vue index 38757d23e..1c9cb9f7e 100644 --- a/src/components/dialog/content/manager/ManagerDialogContent.vue +++ b/src/components/dialog/content/manager/ManagerDialogContent.vue @@ -185,14 +185,16 @@ const { startFetchInstalled, filterInstalledPack, installedPacks, - isLoading: isLoadingInstalled + isLoading: isLoadingInstalled, + isReady: installedPacksReady } = useInstalledPacks() const { startFetchWorkflowPacks, filterWorkflowPack, workflowPacks, - isLoading: isLoadingWorkflow + isLoading: isLoadingWorkflow, + isReady: workflowPacksReady } = useWorkflowPacks() const filterMissingPacks = (packs: components['schemas']['Node'][]) => @@ -236,7 +238,11 @@ watch([isInstalledTab, installedPacks], () => { if (!isEmptySearch.value) { displayPacks.value = filterInstalledPack(searchResults.value) - } else if (!installedPacks.value.length) { + } else if ( + !installedPacks.value.length && + !installedPacksReady.value && + !isLoadingInstalled.value + ) { startFetchInstalled() } else { displayPacks.value = installedPacks.value @@ -250,7 +256,11 @@ watch([isMissingTab, isWorkflowTab, workflowPacks], () => { displayPacks.value = isMissingTab.value ? filterMissingPacks(filterWorkflowPack(searchResults.value)) : filterWorkflowPack(searchResults.value) - } else if (!workflowPacks.value.length) { + } else if ( + !workflowPacks.value.length && + !isLoadingWorkflow.value && + !workflowPacksReady.value + ) { startFetchWorkflowPacks() } else { displayPacks.value = isMissingTab.value diff --git a/src/composables/nodePack/useInstalledPacks.ts b/src/composables/nodePack/useInstalledPacks.ts index b70ed0eb7..1fa9a28a0 100644 --- a/src/composables/nodePack/useInstalledPacks.ts +++ b/src/composables/nodePack/useInstalledPacks.ts @@ -12,10 +12,8 @@ export const useInstalledPacks = (options: UseNodePacksOptions = {}) => { Array.from(comfyManagerStore.installedPacksIds) ) - const { startFetch, cleanup, error, isLoading, nodePacks } = useNodePacks( - installedPackIds, - options - ) + const { startFetch, cleanup, error, isLoading, nodePacks, isReady } = + useNodePacks(installedPackIds, options) const filterInstalledPack = (packs: components['schemas']['Node'][]) => packs.filter((pack) => comfyManagerStore.isPackInstalled(pack.id)) @@ -27,6 +25,7 @@ export const useInstalledPacks = (options: UseNodePacksOptions = {}) => { return { error, isLoading, + isReady, installedPacks: nodePacks, startFetchInstalled: startFetch, filterInstalledPack diff --git a/src/composables/nodePack/useWorkflowPacks.ts b/src/composables/nodePack/useWorkflowPacks.ts index 73f6f5f6c..b1dc3ec06 100644 --- a/src/composables/nodePack/useWorkflowPacks.ts +++ b/src/composables/nodePack/useWorkflowPacks.ts @@ -62,10 +62,8 @@ export const useWorkflowPacks = (options: UseNodePacksOptions = {}) => { Array.from(packsToUniqueIds(workflowPacks.value)) ) - const { startFetch, cleanup, error, isLoading, nodePacks } = useNodePacks( - workflowPacksIds, - options - ) + const { startFetch, cleanup, error, isLoading, nodePacks, isReady } = + useNodePacks(workflowPacksIds, options) const isIdInWorkflow = (packId: string) => workflowPacksIds.value.includes(packId) @@ -80,6 +78,7 @@ export const useWorkflowPacks = (options: UseNodePacksOptions = {}) => { return { error, isLoading, + isReady, workflowPacks: nodePacks, startFetchWorkflowPacks: startFetch, filterWorkflowPack