From fe0ea13f701fa79812d911a7063c2ffa46c146cc Mon Sep 17 00:00:00 2001 From: yyh Date: Mon, 19 Jan 2026 18:02:15 +0800 Subject: [PATCH] perf: parallelize file uploads and add consistent drag validation Use Promise.all for concurrent file uploads instead of sequential processing, improving upload performance for multiple files. Also add isFileDrag check to handleFolderDragOver for consistency with other drag handlers. --- .../workflow/skill/hooks/use-file-drop.ts | 18 ++++++++++-------- .../skill/hooks/use-folder-file-drop.ts | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/web/app/components/workflow/skill/hooks/use-file-drop.ts b/web/app/components/workflow/skill/hooks/use-file-drop.ts index 511b39b050..d4d5e072ba 100644 --- a/web/app/components/workflow/skill/hooks/use-file-drop.ts +++ b/web/app/components/workflow/skill/hooks/use-file-drop.ts @@ -71,14 +71,16 @@ export function useFileDrop() { return try { - for (const file of files) { - await createFile.mutateAsync({ - appId, - name: file.name, - file, - parentId: targetFolderId, - }) - } + await Promise.all( + files.map(file => + createFile.mutateAsync({ + appId, + name: file.name, + file, + parentId: targetFolderId, + }), + ), + ) Toast.notify({ type: 'success', diff --git a/web/app/components/workflow/skill/hooks/use-folder-file-drop.ts b/web/app/components/workflow/skill/hooks/use-folder-file-drop.ts index fa0cc79d74..00a6a2f93a 100644 --- a/web/app/components/workflow/skill/hooks/use-folder-file-drop.ts +++ b/web/app/components/workflow/skill/hooks/use-folder-file-drop.ts @@ -62,7 +62,7 @@ export function useFolderFileDrop(node: NodeApi): UseFolderFileDro }, [isFolder, scheduleAutoExpand]) const handleFolderDragOver = useCallback((e: React.DragEvent) => { - if (!isFolder) + if (!isFolder || !isFileDrag(e)) return handleDragOver(e, { folderId: node.data.id, isFolder: true }) }, [handleDragOver, isFolder, node.data.id])