| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 | 
                        - import { useSetModalState, useShowDeleteConfirm } from '@/hooks/common-hooks';
 - import {
 -   useConnectToKnowledge,
 -   useCreateFolder,
 -   useDeleteFile,
 -   useFetchParentFolderList,
 -   useMoveFile,
 -   useRenameFile,
 -   useUploadFile,
 - } from '@/hooks/file-manager-hooks';
 - import { IFile } from '@/interfaces/database/file-manager';
 - import { TableRowSelection } from 'antd/es/table/interface';
 - import { UploadFile } from 'antd/lib';
 - import { useCallback, useMemo, useState } from 'react';
 - import { useNavigate, useSearchParams } from 'umi';
 - 
 - export const useGetFolderId = () => {
 -   const [searchParams] = useSearchParams();
 -   const id = searchParams.get('folderId') as string;
 - 
 -   return id ?? '';
 - };
 - 
 - export const useGetRowSelection = () => {
 -   const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
 - 
 -   const rowSelection: TableRowSelection<IFile> = {
 -     selectedRowKeys,
 -     getCheckboxProps: (record) => {
 -       return { disabled: record.source_type === 'knowledgebase' };
 -     },
 -     onChange: (newSelectedRowKeys: React.Key[]) => {
 -       setSelectedRowKeys(newSelectedRowKeys);
 -     },
 -   };
 - 
 -   return { rowSelection, setSelectedRowKeys };
 - };
 - 
 - export const useNavigateToOtherFolder = () => {
 -   const navigate = useNavigate();
 -   const navigateToOtherFolder = useCallback(
 -     (folderId: string) => {
 -       navigate(`/file?folderId=${folderId}`);
 -     },
 -     [navigate],
 -   );
 - 
 -   return navigateToOtherFolder;
 - };
 - 
 - export const useRenameCurrentFile = () => {
 -   const [file, setFile] = useState<IFile>({} as IFile);
 -   const {
 -     visible: fileRenameVisible,
 -     hideModal: hideFileRenameModal,
 -     showModal: showFileRenameModal,
 -   } = useSetModalState();
 -   const { renameFile, loading } = useRenameFile();
 - 
 -   const onFileRenameOk = useCallback(
 -     async (name: string) => {
 -       const ret = await renameFile({
 -         fileId: file.id,
 -         name,
 -       });
 - 
 -       if (ret === 0) {
 -         hideFileRenameModal();
 -       }
 -     },
 -     [renameFile, file, hideFileRenameModal],
 -   );
 - 
 -   const handleShowFileRenameModal = useCallback(
 -     async (record: IFile) => {
 -       setFile(record);
 -       showFileRenameModal();
 -     },
 -     [showFileRenameModal],
 -   );
 - 
 -   return {
 -     fileRenameLoading: loading,
 -     initialFileName: file.name,
 -     onFileRenameOk,
 -     fileRenameVisible,
 -     hideFileRenameModal,
 -     showFileRenameModal: handleShowFileRenameModal,
 -   };
 - };
 - 
 - export const useSelectBreadcrumbItems = () => {
 -   const parentFolderList = useFetchParentFolderList();
 - 
 -   return parentFolderList.length === 1
 -     ? []
 -     : parentFolderList.map((x) => ({
 -         title: x.name === '/' ? 'root' : x.name,
 -         path: `/file?folderId=${x.id}`,
 -       }));
 - };
 - 
 - export const useHandleCreateFolder = () => {
 -   const {
 -     visible: folderCreateModalVisible,
 -     hideModal: hideFolderCreateModal,
 -     showModal: showFolderCreateModal,
 -   } = useSetModalState();
 -   const { createFolder, loading } = useCreateFolder();
 -   const id = useGetFolderId();
 - 
 -   const onFolderCreateOk = useCallback(
 -     async (name: string) => {
 -       const ret = await createFolder({ parentId: id, name });
 - 
 -       if (ret === 0) {
 -         hideFolderCreateModal();
 -       }
 -     },
 -     [createFolder, hideFolderCreateModal, id],
 -   );
 - 
 -   return {
 -     folderCreateLoading: loading,
 -     onFolderCreateOk,
 -     folderCreateModalVisible,
 -     hideFolderCreateModal,
 -     showFolderCreateModal,
 -   };
 - };
 - 
 - export const useHandleDeleteFile = (
 -   fileIds: string[],
 -   setSelectedRowKeys: (keys: string[]) => void,
 - ) => {
 -   const { deleteFile: removeDocument } = useDeleteFile();
 -   const showDeleteConfirm = useShowDeleteConfirm();
 -   const parentId = useGetFolderId();
 - 
 -   const handleRemoveFile = () => {
 -     showDeleteConfirm({
 -       onOk: async () => {
 -         const code = await removeDocument({ fileIds, parentId });
 -         if (code === 0) {
 -           setSelectedRowKeys([]);
 -         }
 -         return;
 -       },
 -     });
 -   };
 - 
 -   return { handleRemoveFile };
 - };
 - 
 - export const useHandleUploadFile = () => {
 -   const {
 -     visible: fileUploadVisible,
 -     hideModal: hideFileUploadModal,
 -     showModal: showFileUploadModal,
 -   } = useSetModalState();
 -   const { uploadFile, loading } = useUploadFile();
 -   const id = useGetFolderId();
 - 
 -   const onFileUploadOk = useCallback(
 -     async (fileList: UploadFile[]): Promise<number | undefined> => {
 -       if (fileList.length > 0) {
 -         const ret: number = await uploadFile({ fileList, parentId: id });
 -         if (ret === 0) {
 -           hideFileUploadModal();
 -         }
 -         return ret;
 -       }
 -     },
 -     [uploadFile, hideFileUploadModal, id],
 -   );
 - 
 -   return {
 -     fileUploadLoading: loading,
 -     onFileUploadOk,
 -     fileUploadVisible,
 -     hideFileUploadModal,
 -     showFileUploadModal,
 -   };
 - };
 - 
 - export const useHandleConnectToKnowledge = () => {
 -   const {
 -     visible: connectToKnowledgeVisible,
 -     hideModal: hideConnectToKnowledgeModal,
 -     showModal: showConnectToKnowledgeModal,
 -   } = useSetModalState();
 -   const { connectFileToKnowledge: connectToKnowledge, loading } =
 -     useConnectToKnowledge();
 -   const [record, setRecord] = useState<IFile>({} as IFile);
 - 
 -   const initialValue = useMemo(() => {
 -     return Array.isArray(record?.kbs_info)
 -       ? record?.kbs_info?.map((x) => x.kb_id)
 -       : [];
 -   }, [record?.kbs_info]);
 - 
 -   const onConnectToKnowledgeOk = useCallback(
 -     async (knowledgeIds: string[]) => {
 -       const ret = await connectToKnowledge({
 -         fileIds: [record.id],
 -         kbIds: knowledgeIds,
 -       });
 - 
 -       if (ret === 0) {
 -         hideConnectToKnowledgeModal();
 -       }
 -       return ret;
 -     },
 -     [connectToKnowledge, hideConnectToKnowledgeModal, record.id],
 -   );
 - 
 -   const handleShowConnectToKnowledgeModal = useCallback(
 -     (record: IFile) => {
 -       setRecord(record);
 -       showConnectToKnowledgeModal();
 -     },
 -     [showConnectToKnowledgeModal],
 -   );
 - 
 -   return {
 -     initialValue,
 -     connectToKnowledgeLoading: loading,
 -     onConnectToKnowledgeOk,
 -     connectToKnowledgeVisible,
 -     hideConnectToKnowledgeModal,
 -     showConnectToKnowledgeModal: handleShowConnectToKnowledgeModal,
 -   };
 - };
 - 
 - export const useHandleBreadcrumbClick = () => {
 -   const navigate = useNavigate();
 - 
 -   const handleBreadcrumbClick = useCallback(
 -     (path?: string) => {
 -       if (path) {
 -         navigate(path);
 -       }
 -     },
 -     [navigate],
 -   );
 - 
 -   return { handleBreadcrumbClick };
 - };
 - 
 - export const useHandleMoveFile = (
 -   setSelectedRowKeys: (keys: string[]) => void,
 - ) => {
 -   const {
 -     visible: moveFileVisible,
 -     hideModal: hideMoveFileModal,
 -     showModal: showMoveFileModal,
 -   } = useSetModalState();
 -   const { moveFile, loading } = useMoveFile();
 -   const [sourceFileIds, setSourceFileIds] = useState<string[]>([]);
 - 
 -   const onMoveFileOk = useCallback(
 -     async (targetFolderId: string) => {
 -       const ret = await moveFile({
 -         src_file_ids: sourceFileIds,
 -         dest_file_id: targetFolderId,
 -       });
 - 
 -       if (ret === 0) {
 -         setSelectedRowKeys([]);
 -         hideMoveFileModal();
 -       }
 -       return ret;
 -     },
 -     [moveFile, hideMoveFileModal, sourceFileIds, setSelectedRowKeys],
 -   );
 - 
 -   const handleShowMoveFileModal = useCallback(
 -     (ids: string[]) => {
 -       setSourceFileIds(ids);
 -       showMoveFileModal();
 -     },
 -     [showMoveFileModal],
 -   );
 - 
 -   return {
 -     initialValue: '',
 -     moveFileLoading: loading,
 -     onMoveFileOk,
 -     moveFileVisible,
 -     hideMoveFileModal,
 -     showMoveFileModal: handleShowMoveFileModal,
 -   };
 - };
 
 
  |