import { Menu, MenuItem } from "@mui/material"; import { ReactElement, useState } from "react"; import { toast } from "react-hot-toast"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { useMessageStore, useUserStore } from "@/store"; import { Message } from "@/types"; import Icon from "../Icon"; import { CodeBlock } from "../CodeBlock"; interface Props { message: Message; } const MessageView = (props: Props) => { const message = props.message; const userStore = useUserStore(); const messageStore = useMessageStore(); const [menuAnchorEl, setMenuAnchorEl] = useState(null); const isCurrentUser = message.creatorId === userStore.currentUser.id; const showMenu = Boolean(menuAnchorEl); const handleMoreMenuClick = (event: React.MouseEvent) => { if (menuAnchorEl) { setMenuAnchorEl(null); } else { setMenuAnchorEl(event.currentTarget); } }; const copyMessage = () => { navigator.clipboard.writeText(message.content); toast.success("Copied to clipboard"); setMenuAnchorEl(null); }; const deleteMessage = (message: Message) => { messageStore.clearMessage((item) => item.id !== message.id); setMenuAnchorEl(null); }; return (
{isCurrentUser ? ( <>
{message.content}
) : ( <>
); }, code({ children }) { return `{children}`; }, }} > {message.content}
setMenuAnchorEl(null)} MenuListProps={{ "aria-labelledby": "basic-button", }} > Copy deleteMessage(message)}> Delete
)}
); }; export default MessageView;