| import { | |
| IConnectRequestBody, | |
| IFileListRequestBody, | |
| } from '@/interfaces/request/file-manager'; | |
| import { UploadFile } from 'antd'; | |
| import { useCallback } from 'react'; | |
| import { useDispatch, useSelector } from 'umi'; | |
| export const useFetchFileList = () => { | |
| const dispatch = useDispatch(); | |
| const fetchFileList = useCallback( | |
| (payload: IFileListRequestBody) => { | |
| return dispatch<any>({ | |
| type: 'fileManager/listFile', | |
| payload, | |
| }); | |
| }, | |
| [dispatch], | |
| ); | |
| return fetchFileList; | |
| }; | |
| export const useRemoveFile = () => { | |
| const dispatch = useDispatch(); | |
| const removeFile = useCallback( | |
| (fileIds: string[], parentId: string) => { | |
| return dispatch<any>({ | |
| type: 'fileManager/removeFile', | |
| payload: { fileIds, parentId }, | |
| }); | |
| }, | |
| [dispatch], | |
| ); | |
| return removeFile; | |
| }; | |
| export const useRenameFile = () => { | |
| const dispatch = useDispatch(); | |
| const renameFile = useCallback( | |
| (fileId: string, name: string, parentId: string) => { | |
| return dispatch<any>({ | |
| type: 'fileManager/renameFile', | |
| payload: { fileId, name, parentId }, | |
| }); | |
| }, | |
| [dispatch], | |
| ); | |
| return renameFile; | |
| }; | |
| export const useFetchParentFolderList = () => { | |
| const dispatch = useDispatch(); | |
| const fetchParentFolderList = useCallback( | |
| (fileId: string) => { | |
| return dispatch<any>({ | |
| type: 'fileManager/getAllParentFolder', | |
| payload: { fileId }, | |
| }); | |
| }, | |
| [dispatch], | |
| ); | |
| return fetchParentFolderList; | |
| }; | |
| export const useCreateFolder = () => { | |
| const dispatch = useDispatch(); | |
| const createFolder = useCallback( | |
| (parentId: string, name: string) => { | |
| return dispatch<any>({ | |
| type: 'fileManager/createFolder', | |
| payload: { parentId, name, type: 'folder' }, | |
| }); | |
| }, | |
| [dispatch], | |
| ); | |
| return createFolder; | |
| }; | |
| export const useSelectFileList = () => { | |
| const fileList = useSelector((state) => state.fileManager.fileList); | |
| return fileList; | |
| }; | |
| export const useSelectParentFolderList = () => { | |
| const parentFolderList = useSelector( | |
| (state) => state.fileManager.parentFolderList, | |
| ); | |
| return parentFolderList.toReversed(); | |
| }; | |
| export const useUploadFile = () => { | |
| const dispatch = useDispatch(); | |
| const uploadFile = useCallback( | |
| (fileList: UploadFile[], parentId: string) => { | |
| try { | |
| return dispatch<any>({ | |
| type: 'fileManager/uploadFile', | |
| payload: { | |
| file: fileList, | |
| parentId, | |
| path: fileList.map((file) => (file as any).webkitRelativePath), | |
| }, | |
| }); | |
| } catch (errorInfo) { | |
| console.log('Failed:', errorInfo); | |
| } | |
| }, | |
| [dispatch], | |
| ); | |
| return uploadFile; | |
| }; | |
| export const useConnectToKnowledge = () => { | |
| const dispatch = useDispatch(); | |
| const uploadFile = useCallback( | |
| (payload: IConnectRequestBody) => { | |
| try { | |
| return dispatch<any>({ | |
| type: 'fileManager/connectFileToKnowledge', | |
| payload, | |
| }); | |
| } catch (errorInfo) { | |
| console.log('Failed:', errorInfo); | |
| } | |
| }, | |
| [dispatch], | |
| ); | |
| return uploadFile; | |
| }; | |