feat: delete batch messages

This commit is contained in:
Tristan Yang
2023-07-11 17:57:21 +08:00
parent 7da056874a
commit ef09c9fdf3
2 changed files with 19 additions and 4 deletions
+7
View File
@@ -41,6 +41,12 @@ export const messageApi = createApi({
method: "DELETE" method: "DELETE"
}) })
}), }),
deleteMessages: builder.query<number, number[]>({
query: (mids) => ({
url: `/message/${mids}`,
method: "DELETE"
})
}),
prepareUploadFile: builder.mutation<string, { content_type: string; filename: string }>({ prepareUploadFile: builder.mutation<string, { content_type: string; filename: string }>({
query: (meta = { content_type: "", filename: "" }) => ({ query: (meta = { content_type: "", filename: "" }) => ({
url: `/resource/file/prepare`, url: `/resource/file/prepare`,
@@ -279,6 +285,7 @@ export const {
useReactMessageMutation, useReactMessageMutation,
useReplyMessageMutation, useReplyMessageMutation,
useLazyDeleteMessageQuery, useLazyDeleteMessageQuery,
useLazyDeleteMessagesQuery,
useReadMessageMutation, useReadMessageMutation,
useCreateArchiveMutation, useCreateArchiveMutation,
useLazyLoadMoreMessagesQuery useLazyLoadMoreMessagesQuery
+12 -4
View File
@@ -1,16 +1,19 @@
import { useState } from "react"; import { useState } from "react";
import { useLazyDeleteMessageQuery } from "@/app/services/message"; import { useLazyDeleteMessageQuery, useLazyDeleteMessagesQuery } from "@/app/services/message";
import { useAppSelector } from "@/app/store"; import { useAppSelector } from "@/app/store";
import { compareVersion } from "@/utils";
export default function useDeleteMessage() { export default function useDeleteMessage() {
const [deleting, setDeleting] = useState(false); const [deleting, setDeleting] = useState(false);
const { loginUser, messageData } = useAppSelector((store) => { const { loginUser, messageData, serverVersion } = useAppSelector((store) => {
return { return {
serverVersion: store.server.version,
messageData: store.message, messageData: store.message,
loginUser: store.authData.user loginUser: store.authData.user
}; };
}); });
const [batchRemove] = useLazyDeleteMessagesQuery();
const [ const [
remove remove
// { isError, isLoading, isSuccess }, // { isError, isLoading, isSuccess },
@@ -19,8 +22,13 @@ export default function useDeleteMessage() {
if (!mids) return; if (!mids) return;
const _arr = Array.isArray(mids) ? mids : [mids]; const _arr = Array.isArray(mids) ? mids : [mids];
setDeleting(true); setDeleting(true);
for await (const mid of _arr) { if (compareVersion(serverVersion, "0.3.10") > -1) {
await remove(mid); // batch delete
await batchRemove(_arr);
} else {
for await (const mid of _arr) {
await remove(mid);
}
} }
setDeleting(false); setDeleting(false);
}; };