diff --git a/src/app/services/base.query.ts b/src/app/services/base.query.ts index 38ce6c35..edf1c190 100644 --- a/src/app/services/base.query.ts +++ b/src/app/services/base.query.ts @@ -114,7 +114,13 @@ const baseQueryWithTokenCheck = async (args: any, api: any, extraOptions: any) = break; case 404: { - const whiteList404 = ["login", "getArchiveMessage", "preCheckFileFromUrl"]; + const whiteList404 = [ + "login", + "getArchiveMessage", + "preCheckFileFromUrl", + "deleteMessage", + "deleteMessages" + ]; if (!whiteList404.includes(api.endpoint)) { toast.error("Request Not Found"); } diff --git a/src/app/services/message.ts b/src/app/services/message.ts index e1b78485..8f602433 100644 --- a/src/app/services/message.ts +++ b/src/app/services/message.ts @@ -13,6 +13,7 @@ import { upsertArchiveMessage } from "../slices/message.archive"; import { RootState } from "../store"; import baseQuery from "./base.query"; import { onMessageSendStarted } from "./handlers"; +import { removeMessage } from "../slices/message"; export const messageApi = createApi({ reducerPath: "messageApi", @@ -39,13 +40,33 @@ export const messageApi = createApi({ query: (mid) => ({ url: `/message/${mid}`, method: "DELETE" - }) + }), + async onQueryStarted(mid, { dispatch, queryFulfilled }) { + try { + await queryFulfilled; + } catch (err) { + // 出错也得删 + console.log("delete message error", err); + dispatch(removeMessage(mid)); + } + } }), deleteMessages: builder.query({ query: (mids) => ({ url: `/message/bulk/${mids}`, method: "DELETE" - }) + }), + async onQueryStarted(mids, { dispatch, queryFulfilled }) { + try { + await queryFulfilled; + } catch (err) { + // 出错也得删 + console.log("delete messages error", err); + mids.forEach((mid) => { + dispatch(removeMessage(mid)); + }); + } + } }), prepareUploadFile: builder.mutation({ query: (meta = { content_type: "", filename: "" }) => ({