feat: upload files and management

This commit is contained in:
zerosoul
2022-03-30 10:17:48 +08:00
parent 40492c5e72
commit bdc4ab2db1
32 changed files with 585 additions and 121 deletions
+42
View File
@@ -0,0 +1,42 @@
import { createSlice } from "@reduxjs/toolkit";
const initialState = [];
const fileMessageSlice = createSlice({
name: "fileMessage",
initialState,
reducers: {
resetFileMessage() {
return initialState;
},
fullfillFileMessage(state, action) {
return action.payload || [];
},
addFileMessage(state, action) {
const mid = action.payload;
// 加入file message 列表
const fidIdx = state.findIndex((fid) => fid == mid);
if (fidIdx == -1) {
state.unshift(+mid);
}
},
removeFileMessage(state, action) {
const mids = Array.isArray(action.payload)
? action.payload
: [action.payload];
mids.forEach((id) => {
// 从file message 列表删掉
const fidIdx = state.fileMessages.findIndex((fid) => fid == id);
if (fidIdx > -1) {
state.splice(fidIdx, 1);
}
});
},
},
});
export const {
removeFileMessage,
resetFileMessage,
fullfillFileMessage,
addFileMessage,
} = fileMessageSlice.actions;
export default fileMessageSlice.reducer;
-19
View File
@@ -2,7 +2,6 @@ import { createSlice } from "@reduxjs/toolkit";
import BASE_URL, { ContentTypes } from "../config";
const initialState = {
replying: {},
fileMessages: [],
};
const messageSlice = createSlice({
name: "message",
@@ -18,16 +17,6 @@ const messageSlice = createSlice({
const { mid, ...rest } = action.payload;
state[mid] = { ...state[mid], ...rest };
},
readMessage(state, action) {
const mids = Array.isArray(action.payload)
? action.payload
: [action.payload];
mids.forEach((id) => {
if (state[id]) {
state[id].read = true;
}
});
},
addMessage(state, action) {
const data = action.payload;
const { mid, sending, content_type, content } = data;
@@ -41,8 +30,6 @@ const messageSlice = createSlice({
data.content = `${BASE_URL}/resource/file?file_path=${encodeURIComponent(
data.file_path
)}`;
// 加入file message 列表
state.fileMessages.unshift(mid);
}
// image
if (!sending && isImage) {
@@ -62,11 +49,6 @@ const messageSlice = createSlice({
: [action.payload];
mids.forEach((id) => {
delete state[id];
// 从file message 列表删掉
const fidIdx = state.fileMessages.findIndex((fid) => fid == id);
if (fidIdx > -1) {
state.fileMessages.splice(fidIdx, 1);
}
});
},
addReplyingMessage(state, action) {
@@ -87,7 +69,6 @@ export const {
fullfillMessage,
setMessage,
updateMessage,
readMessage,
addMessage,
removeMessage,
addReplyingMessage,