From ef09c9fdf3ac25baf6449b463f2bdd765b14c18d Mon Sep 17 00:00:00 2001 From: Tristan Yang Date: Tue, 11 Jul 2023 17:57:21 +0800 Subject: [PATCH] feat: delete batch messages --- src/app/services/message.ts | 7 +++++++ src/hooks/useDeleteMessage.ts | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/app/services/message.ts b/src/app/services/message.ts index 8be7dd9a..10f13a4d 100644 --- a/src/app/services/message.ts +++ b/src/app/services/message.ts @@ -41,6 +41,12 @@ export const messageApi = createApi({ method: "DELETE" }) }), + deleteMessages: builder.query({ + query: (mids) => ({ + url: `/message/${mids}`, + method: "DELETE" + }) + }), prepareUploadFile: builder.mutation({ query: (meta = { content_type: "", filename: "" }) => ({ url: `/resource/file/prepare`, @@ -279,6 +285,7 @@ export const { useReactMessageMutation, useReplyMessageMutation, useLazyDeleteMessageQuery, + useLazyDeleteMessagesQuery, useReadMessageMutation, useCreateArchiveMutation, useLazyLoadMoreMessagesQuery diff --git a/src/hooks/useDeleteMessage.ts b/src/hooks/useDeleteMessage.ts index 185e22d0..34e66e8d 100644 --- a/src/hooks/useDeleteMessage.ts +++ b/src/hooks/useDeleteMessage.ts @@ -1,16 +1,19 @@ import { useState } from "react"; -import { useLazyDeleteMessageQuery } from "@/app/services/message"; +import { useLazyDeleteMessageQuery, useLazyDeleteMessagesQuery } from "@/app/services/message"; import { useAppSelector } from "@/app/store"; +import { compareVersion } from "@/utils"; export default function useDeleteMessage() { const [deleting, setDeleting] = useState(false); - const { loginUser, messageData } = useAppSelector((store) => { + const { loginUser, messageData, serverVersion } = useAppSelector((store) => { return { + serverVersion: store.server.version, messageData: store.message, loginUser: store.authData.user }; }); + const [batchRemove] = useLazyDeleteMessagesQuery(); const [ remove // { isError, isLoading, isSuccess }, @@ -19,8 +22,13 @@ export default function useDeleteMessage() { if (!mids) return; const _arr = Array.isArray(mids) ? mids : [mids]; setDeleting(true); - for await (const mid of _arr) { - await remove(mid); + if (compareVersion(serverVersion, "0.3.10") > -1) { + // batch delete + await batchRemove(_arr); + } else { + for await (const mid of _arr) { + await remove(mid); + } } setDeleting(false); };