|
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; |
|
}; |
|
|