import React from "react"; import { Text, Flex, Avatar, ActionIcon, Tooltip, CopyButton, SimpleGrid } from "@mantine/core"; // @ts-ignore import SvgAvatarDevChat from './avatar_devchat.svg'; // @ts-ignore import SvgAvatarUser from './avatar_spaceman.png'; import { IconCheck, IconCopy, Icon360, IconEdit, IconTrash } from "@tabler/icons-react"; import { observer } from "mobx-react-lite"; import { useMst } from "@/views/stores/RootStore"; import { IMessage } from "@/views/stores/ChatStore"; import { IChatContext } from "@/views/stores/InputStore"; interface IProps { item?: IMessage, avatarType?: "user" | "bot" | "system", copyMessage?: string, messageContexts?: IChatContext[], deleteHash?: string, showEdit?: boolean, showDelete?: boolean } const MessageAvatar = observer((props: IProps) => { const { messageContexts = [], copyMessage = "", deleteHash = undefined, avatarType = "user", showEdit = false, showDelete = false } = props; const { input, chat } = useMst(); const [done, setDone] = React.useState(false); return ( { avatarType === 'bot' ? : } {avatarType === 'bot' ? 'DevChat' : 'User'} {avatarType === 'user' ? { input.setValue(copyMessage); input.setContexts(messageContexts); setDone(true); setTimeout(() => { setDone(false); }, 2000); }}> {done ? : } {showEdit && { }}> } {showDelete && deleteHash !== 'message' && { if (deleteHash) { chat.deleteMessage(deleteHash).then(); } else { chat.popMessage(); chat.popMessage(); } }}> } : {({ copied, copy }) => ( {copied ? : } )} } ); }); export default MessageAvatar;