File size: 2,391 Bytes
8c06509
 
4056097
8c06509
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4056097
 
 
8c06509
 
 
 
4056097
8c06509
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4056097
 
 
 
 
 
 
 
 
 
 
 
 
 
8c06509
4056097
 
 
 
8c06509
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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;
    },
    *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;
    },
  },
};
export default model;