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