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