Add delete message feature

Remove deleted property from Message

Add dedicated route for delete_message

Pre-commit

Revert change to promp_repository fetch_message

Remove blank line
This commit is contained in:
rjmacarthy
2023-02-02 13:33:22 +00:00
parent fa53505369
commit e9add425e6
5 changed files with 49 additions and 5 deletions
@@ -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 (
<Menu>
<MenuButton>
@@ -186,6 +194,9 @@ const MessageActions = ({
<MenuItem as="a" href={`/admin/manage_user/${message.user_id}`} target="_blank" icon={<User />}>
{t("view_user")}
</MenuItem>
<MenuItem onClick={handleDelete} icon={<Trash />}>
{t("common:delete")}
</MenuItem>
</>
)}
</MenuList>