refactor: more TS code
This commit is contained in:
@@ -58,7 +58,7 @@ export const channelApi = createApi({
|
||||
}
|
||||
}
|
||||
}),
|
||||
getHistoryMessages: builder.query<ChatMessage[], { id: number; mid?: number; limit: number }>({
|
||||
getHistoryMessages: builder.query<ChatMessage[], { id: number; mid?: number; limit?: number }>({
|
||||
query: ({ id, mid = null, limit = 100 }) => ({
|
||||
url: mid
|
||||
? `/group/${id}/history?before=${mid}&limit=${limit}`
|
||||
|
||||
@@ -166,7 +166,7 @@ export const messageApi = createApi({
|
||||
}),
|
||||
readMessage: builder.mutation<
|
||||
void,
|
||||
{ users?: [{ uid: number; mid: number }]; groups?: [{ gid: number; mid: number }] }
|
||||
{ users?: { uid: number; mid: number }[]; groups?: { gid: number; mid: number }[] }
|
||||
>({
|
||||
query: (data) => ({
|
||||
url: `/user/read-index`,
|
||||
|
||||
@@ -112,7 +112,7 @@ export const userApi = createApi({
|
||||
await onMessageSendStarted.call(this, param1, param2, "user");
|
||||
}
|
||||
}),
|
||||
getHistoryMessages: builder.query<ChatMessage[], { id: number; mid?: number; limit: number }>({
|
||||
getHistoryMessages: builder.query<ChatMessage[], { id: number; mid?: number; limit?: number }>({
|
||||
query: ({ id, mid = null, limit = 100 }) => ({
|
||||
url: mid
|
||||
? `/user/${id}/history?before=${mid}&limit=${limit}`
|
||||
|
||||
@@ -13,25 +13,25 @@ import { User } from "../../types/user";
|
||||
interface State {
|
||||
initialized: boolean;
|
||||
user: User | undefined;
|
||||
token: string | null;
|
||||
token: string;
|
||||
expireTime: number;
|
||||
refreshToken: string | null;
|
||||
refreshToken: string;
|
||||
}
|
||||
const loginUser = localStorage.getItem(KEY_LOGIN_USER) || "";
|
||||
const initialState: State = {
|
||||
initialized: true,
|
||||
user: loginUser ? JSON.parse(loginUser) : undefined,
|
||||
token: localStorage.getItem(KEY_TOKEN),
|
||||
token: localStorage.getItem(KEY_TOKEN) || "",
|
||||
expireTime: Number(localStorage.getItem(KEY_EXPIRE) || +new Date()),
|
||||
refreshToken: localStorage.getItem(KEY_REFRESH_TOKEN)
|
||||
refreshToken: localStorage.getItem(KEY_REFRESH_TOKEN) || ""
|
||||
};
|
||||
|
||||
const emptyState: State = {
|
||||
initialized: true,
|
||||
user: undefined,
|
||||
token: null,
|
||||
token: "",
|
||||
expireTime: +new Date(),
|
||||
refreshToken: null
|
||||
refreshToken: ""
|
||||
};
|
||||
|
||||
const authDataSlice = createSlice({
|
||||
|
||||
@@ -87,14 +87,14 @@ const footprintSlice = createSlice({
|
||||
}
|
||||
});
|
||||
},
|
||||
updateReadUsers(state, action: PayloadAction<{ uid: number; mid: number }[]>) {
|
||||
updateReadUsers(state, action: PayloadAction<{ uid: number; mid: number }[] | undefined>) {
|
||||
const reads = action.payload || [];
|
||||
if (reads.length == 0) return;
|
||||
reads.forEach(({ uid, mid }) => {
|
||||
state.readUsers[uid] = mid;
|
||||
});
|
||||
},
|
||||
updateReadChannels(state, action: PayloadAction<{ gid: number; mid: number }[]>) {
|
||||
updateReadChannels(state, action: PayloadAction<{ gid: number; mid: number }[] | undefined>) {
|
||||
const reads = action.payload || [];
|
||||
if (reads.length == 0) return;
|
||||
reads.forEach(({ gid, mid }) => {
|
||||
|
||||
+14
-17
@@ -8,7 +8,19 @@ export interface State {
|
||||
[key: string | number]: number;
|
||||
};
|
||||
}
|
||||
|
||||
export interface MessagePayload {
|
||||
mid: number;
|
||||
sending: boolean;
|
||||
content_type: string;
|
||||
content: string;
|
||||
properties?: {
|
||||
content_type: string;
|
||||
size: number;
|
||||
};
|
||||
file_path?: string;
|
||||
download?: string;
|
||||
thumbnail?: string;
|
||||
}
|
||||
const initialState: State = {
|
||||
replying: {}
|
||||
};
|
||||
@@ -27,22 +39,7 @@ const messageSlice = createSlice({
|
||||
const { mid, ...rest } = action.payload;
|
||||
state[mid] = { ...state[mid], ...rest };
|
||||
},
|
||||
addMessage(
|
||||
state,
|
||||
action: PayloadAction<{
|
||||
mid: number;
|
||||
sending: boolean;
|
||||
content_type: string;
|
||||
content: string;
|
||||
properties?: {
|
||||
content_type: string;
|
||||
size: number;
|
||||
};
|
||||
file_path?: string;
|
||||
download?: string;
|
||||
thumbnail?: string;
|
||||
}>
|
||||
) {
|
||||
addMessage(state, action: PayloadAction<MessagePayload>) {
|
||||
const data = action.payload;
|
||||
const { mid, sending, content_type, content, properties } = data;
|
||||
// 如果是正发送,并且已存在,则不覆盖
|
||||
|
||||
@@ -22,7 +22,7 @@ const userMsgSlice = createSlice({
|
||||
state.ids = Object.keys(action.payload).map((k) => +k);
|
||||
state.byId = action.payload;
|
||||
},
|
||||
addUserMsg(state, action: PayloadAction<{ id: number; mid: number; local_id: number }>) {
|
||||
addUserMsg(state, action: PayloadAction<{ id: number; mid: number; local_id?: number }>) {
|
||||
const { id, mid, local_id } = action.payload;
|
||||
if (state.byId[id]) {
|
||||
const midExisted = state.byId[id].findIndex((id: number) => id == mid) > -1;
|
||||
|
||||
Reference in New Issue
Block a user