diff --git a/website/public/locales/en/common.json b/website/public/locales/en/common.json
index 6298a32c..86540b2d 100644
--- a/website/public/locales/en/common.json
+++ b/website/public/locales/en/common.json
@@ -18,5 +18,6 @@
"sign_out": "Sign Out",
"terms_of_service": "Terms of Service",
"title": "Open Assistant",
- "yes": "Yes"
+ "yes": "Yes",
+ "delete": "Delete"
}
diff --git a/website/src/components/Messages/MessageTableEntry.tsx b/website/src/components/Messages/MessageTableEntry.tsx
index 63c90a33..63b1cf32 100644
--- a/website/src/components/Messages/MessageTableEntry.tsx
+++ b/website/src/components/Messages/MessageTableEntry.tsx
@@ -14,7 +14,7 @@ import {
useDisclosure,
} from "@chakra-ui/react";
import { boolean } from "boolean";
-import { ClipboardList, Flag, MessageSquare, MoreHorizontal, User } from "lucide-react";
+import { ClipboardList, Flag, MessageSquare, MoreHorizontal, Trash, User } from "lucide-react";
import { useRouter } from "next/router";
import { useSession } from "next-auth/react";
import { useTranslation } from "next-i18next";
@@ -22,9 +22,10 @@ import { useCallback, useEffect, useMemo, useState } from "react";
import { LabelMessagePopup } from "src/components/Messages/LabelPopup";
import { getEmojiIcon, MessageEmojiButton } from "src/components/Messages/MessageEmojiButton";
import { ReportPopup } from "src/components/Messages/ReportPopup";
-import { post } from "src/lib/api";
+import { del, post } from "src/lib/api";
import { colors } from "src/styles/Theme/colors";
import { Message, MessageEmojis } from "src/types/Conversation";
+import { mutate } from "swr";
import useSWRMutation from "swr/mutation";
interface MessageTableEntryProps {
@@ -153,9 +154,16 @@ const MessageActions = ({
onReport: () => void;
message: Message;
}) => {
- const { t } = useTranslation("message");
+ const { t } = useTranslation(["message", "common"]);
+ const { trigger } = useSWRMutation(`/api/admin/delete_message/${message.id}`, del);
const { data } = useSession() || {};
const role = data?.user?.role;
+
+ const handleDelete = async () => {
+ await trigger();
+ mutate((key) => typeof key === "string" && key.startsWith("/api/messages"), undefined, { revalidate: true });
+ };
+
return (