| import { IFile, IFolder } from '@/interfaces/database/file-manager'; | |
| import fileManagerService from '@/services/fileManagerService'; | |
| import omit from 'lodash/omit'; | |
| import { DvaModel } from 'umi'; | |
| export interface FileManagerModelState { | |
| fileList: IFile[]; | |
| parentFolderList: IFolder[]; | |
| } | |
| const model: DvaModel<FileManagerModelState> = { | |
| namespace: 'fileManager', | |
| state: { fileList: [], parentFolderList: [] }, | |
| reducers: { | |
| setFileList(state, { payload }) { | |
| return { ...state, fileList: payload }; | |
| }, | |
| setParentFolderList(state, { payload }) { | |
| return { ...state, parentFolderList: payload }; | |
| }, | |
| }, | |
| effects: { | |
| *removeFile({ payload = {} }, { call, put }) { | |
| const { data } = yield call(fileManagerService.removeFile, { | |
| fileIds: payload.fileIds, | |
| }); | |
| const { retcode } = data; | |
| if (retcode === 0) { | |
| yield put({ | |
| type: 'listFile', | |
| payload: { parentId: payload.parentId }, | |
| }); | |
| } | |
| }, | |
| *listFile({ payload = {} }, { call, put }) { | |
| const { data } = yield call(fileManagerService.listFile, payload); | |
| const { retcode, data: res } = data; | |
| if (retcode === 0 && Array.isArray(res.files)) { | |
| yield put({ | |
| type: 'setFileList', | |
| payload: res.files, | |
| }); | |
| } | |
| }, | |
| *renameFile({ payload = {} }, { call, put }) { | |
| const { data } = yield call( | |
| fileManagerService.renameFile, | |
| omit(payload, ['parentId']), | |
| ); | |
| if (data.retcode === 0) { | |
| yield put({ | |
| type: 'listFile', | |
| payload: { parentId: payload.parentId }, | |
| }); | |
| } | |
| return data.retcode; | |
| }, | |
| *uploadFile({ payload = {} }, { call, put }) { | |
| const formData = new FormData(); | |
| formData.append('parent_id', payload.parentId); | |
| formData.append('file', payload.file); | |
| formData.append('path', payload.path); | |
| const { data } = yield call(fileManagerService.uploadFile, formData); | |
| if (data.retcode === 0) { | |
| yield put({ | |
| type: 'listFile', | |
| payload: { parentId: payload.parentId }, | |
| }); | |
| } | |
| return data.retcode; | |
| }, | |
| *createFolder({ payload = {} }, { call, put }) { | |
| const { data } = yield call(fileManagerService.createFolder, payload); | |
| if (data.retcode === 0) { | |
| yield put({ | |
| type: 'listFile', | |
| payload: { parentId: payload.parentId }, | |
| }); | |
| } | |
| return data.retcode; | |
| }, | |
| *getAllParentFolder({ payload = {} }, { call, put }) { | |
| const { data } = yield call( | |
| fileManagerService.getAllParentFolder, | |
| payload, | |
| ); | |
| if (data.retcode === 0) { | |
| yield put({ | |
| type: 'setParentFolderList', | |
| payload: data.data?.parent_folders ?? [], | |
| }); | |
| } | |
| return data.retcode; | |
| }, | |
| *connectFileToKnowledge({ payload = {} }, { call, put }) { | |
| const { data } = yield call( | |
| fileManagerService.connectFileToKnowledge, | |
| omit(payload, 'parentId'), | |
| ); | |
| if (data.retcode === 0) { | |
| yield put({ | |
| type: 'listFile', | |
| payload: { parentId: payload.parentId }, | |
| }); | |
| } | |
| return data.retcode; | |
| }, | |
| }, | |
| }; | |
| export default model; | |