From 1120d552b6a53ebe6fd88c18172e5b467de77eeb Mon Sep 17 00:00:00 2001 From: hjlarry Date: Sat, 11 Oct 2025 14:09:37 +0800 Subject: [PATCH] fix knowledge node add/delete dataset not sync --- .../nodes/knowledge-retrieval/use-config.ts | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts b/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts index 8a1f2d8455..f728a44901 100644 --- a/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts +++ b/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts @@ -215,21 +215,39 @@ const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => { const [selectedDatasetsLoaded, setSelectedDatasetsLoaded] = useState(false) // datasets + // Fetch details whenever dataset IDs change so create/delete stays consistent across collaborators. useEffect(() => { - (async () => { - const inputs = inputRef.current - const datasetIds = inputs.dataset_ids - if (datasetIds?.length > 0) { - const { data: dataSetsWithDetail } = await fetchDatasets({ url: '/datasets', params: { page: 1, ids: datasetIds } as any }) - setSelectedDatasets(dataSetsWithDetail) + let aborted = false + const datasetIds = inputs.dataset_ids + const loadDatasets = async () => { + if (!datasetIds || datasetIds.length === 0) { + if (!aborted) { + setSelectedDatasets([]) + setSelectedDatasetsLoaded(true) + } + return } - const newInputs = produce(inputs, (draft) => { - draft.dataset_ids = datasetIds - }) - setInputs(newInputs) - setSelectedDatasetsLoaded(true) - })() - }, []) + setSelectedDatasetsLoaded(false) + try { + const { data: dataSetsWithDetail } = await fetchDatasets({ + url: '/datasets', + params: { page: 1, ids: datasetIds } as any, + }) + if (aborted) + return + setSelectedDatasets(dataSetsWithDetail) + updateDatasetsDetail(dataSetsWithDetail) + } + finally { + if (!aborted) + setSelectedDatasetsLoaded(true) + } + } + loadDatasets() + return () => { + aborted = true + } + }, [inputs.dataset_ids, updateDatasetsDetail]) useEffect(() => { const inputs = inputRef.current