From 9d94acbedb101c82d8eec1ed555d641e2ee16cf5 Mon Sep 17 00:00:00 2001 From: balibabu Date: Fri, 14 Mar 2025 16:17:10 +0800 Subject: [PATCH] Fix: Knowledge base page cannot upload folders #6062 (#6096) ### What problem does this PR solve? Fix: Knowledge base page cannot upload folders #6062 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- web/src/components/delimiter.tsx | 2 +- .../components/file-upload-modal/index.tsx | 9 +++++++-- .../components/knowledge-file/hooks.ts | 19 +++++++++++++++++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/web/src/components/delimiter.tsx b/web/src/components/delimiter.tsx index a79440874..8a592dedc 100644 --- a/web/src/components/delimiter.tsx +++ b/web/src/components/delimiter.tsx @@ -30,7 +30,7 @@ const Delimiter = () => { diff --git a/web/src/components/file-upload-modal/index.tsx b/web/src/components/file-upload-modal/index.tsx index 8dba74846..cc6b545aa 100644 --- a/web/src/components/file-upload-modal/index.tsx +++ b/web/src/components/file-upload-modal/index.tsx @@ -68,7 +68,10 @@ const FileUpload = ({ ); }; -interface IFileUploadModalProps extends IModalProps { +interface IFileUploadModalProps + extends IModalProps< + { parseOnCreation: boolean; directoryFileList: UploadFile[] } | UploadFile[] + > { uploadFileList?: UploadFile[]; setUploadFileList?: Dispatch>; uploadProgress?: number; @@ -108,7 +111,9 @@ const FileUploadModal = ({ } const ret = await onFileUploadOk?.( - fileList ? parseOnCreation : [...currentFileList, ...directoryFileList], + fileList + ? { parseOnCreation, directoryFileList } + : [...currentFileList, ...directoryFileList], ); return ret; }; diff --git a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts index a7697dd7a..1105e1c78 100644 --- a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts +++ b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts @@ -148,7 +148,13 @@ export const useHandleUploadDocument = () => { const { runDocumentByIds, loading: _ } = useRunNextDocument(); const onDocumentUploadOk = useCallback( - async (parseOnCreation: boolean): Promise => { + async ({ + parseOnCreation, + directoryFileList, + }: { + directoryFileList: UploadFile[]; + parseOnCreation: boolean; + }): Promise => { const processFileGroup = async (filesPart: UploadFile[]) => { // set status to uploading on files setFileList( @@ -192,9 +198,18 @@ export const useHandleUploadDocument = () => { totalSuccess: succesfulFilenames.length, }; }; - const totalFiles = fileList.length; + if (directoryFileList.length > 0) { + const ret = await uploadDocument(directoryFileList); + if (ret?.code === 0) { + hideDocumentUploadModal(); + } + if (totalFiles === 0) { + return 0; + } + } + if (totalFiles === 0) { console.log('No files to upload'); hideDocumentUploadModal();