import ReactTimeAgo from 'react-time-ago' import TimeAgo from 'javascript-time-ago' import ru from 'javascript-time-ago/locale/ru.json' import { useState } from 'react' import { Menu, MenuItem } from '@mui/material' TimeAgo.addLocale(ru) export const ShortMessage = ({ nick, text, date }) => { return ( <>
Ответ на сообщение {nick} {text}
) } export const Message = ({ id, nick, msg, date, media, own = false, replyTo, onMSGEdit, onMSGReply, onMSGForward }) => { let [isEdit, setIsEdit] = useState(false) let [messageEdit, setMessageEdit] = useState("" || msg) const [contextMenu, setContextMenu] = useState(null); const handleContextMenu = (event) => { event.preventDefault(); setContextMenu( contextMenu === null ? { mouseX: event.clientX - 2, mouseY: event.clientY - 4, } : // repeated contextmenu when it is already open closes it with Chrome 84 on Ubuntu // Other native context menus might behave different. // With this behavior we prevent contextmenu from the backdrop to re-locale existing context menus. null, ); }; const handleClose = (e, type, msg_id) => { if (type === "edit") { setIsEdit(true) } if (type === "reply") { onMSGReply([true, msg_id]) } if (type === "forward") { alert("Сорян пока не работает)") // onMSGForward([true, ""]) } setContextMenu(null); }; let msgEditHandler = () => { setIsEdit(false) onMSGEdit(id, messageEdit) } return (
  • handleClose(e, "reply", id)}>Ответить handleClose(e, "forward", id)}>Переслать handleClose(e, "edit", id)}>Редактировать {/* */} {replyTo &&
    В ответ на сообщение: {replyTo.text}
    }
    {nick} {isEdit ? <> setMessageEdit(e.target.value)} /> : {msg}} {media && media.length > 0 &&
      {media.map(file => { return (
    • {file.type && file.type.includes("audio") && } { file.type && file.type.includes("image") && media } { file.type && file.type.includes("video") && }
    • ) })}
    }
  • ) }