From b3402347116a86da8268154f2696e9f97b86f519 Mon Sep 17 00:00:00 2001 From: twwu Date: Mon, 27 Oct 2025 16:50:44 +0800 Subject: [PATCH] feat: add initialization state to plugin task list for improved loading handling --- web/service/use-plugins.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/web/service/use-plugins.ts b/web/service/use-plugins.ts index 2877ef15f2..650fb8b52e 100644 --- a/web/service/use-plugins.ts +++ b/web/service/use-plugins.ts @@ -1,4 +1,4 @@ -import { useCallback, useEffect } from 'react' +import { useCallback, useEffect, useState } from 'react' import type { FormOption, ModelProvider, @@ -487,6 +487,7 @@ export const useFetchPluginsInMarketPlaceByInfo = (infos: Record[]) const usePluginTaskListKey = [NAME_SPACE, 'pluginTaskList'] export const usePluginTaskList = (category?: PluginType) => { + const [initialized, setInitialized] = useState(false) const { canManagement, } = useReferenceSetting() @@ -510,7 +511,8 @@ export const usePluginTaskList = (category?: PluginType) => { useEffect(() => { // After first fetch, refresh plugin list each time all tasks are done - if (!isRefetching) { + // Skip initialization period, cause the query cache is not updated yet + if (initialized && !isRefetching) { const lastData = cloneDeep(data) const taskDone = lastData?.tasks.every(task => task.status === TaskStatus.success || task.status === TaskStatus.failed) const taskAllFailed = lastData?.tasks.every(task => task.status === TaskStatus.failed) @@ -521,6 +523,10 @@ export const usePluginTaskList = (category?: PluginType) => { } }, [isRefetching]) + useEffect(() => { + setInitialized(true) + }, []) + const handleRefetch = useCallback(() => { refetch() }, [refetch])