import ReactTimeAgo from 'react-time-ago'
import TimeAgo from 'javascript-time-ago'
import ru from 'javascript-time-ago/locale/ru.json'
import { useCallback, useState, useEffect, useRef } from 'react'
import { ListItem, 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 (
{/* */}
{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") &&
}
{
file.type && file.type.includes("video") &&
}
)
})}
}
)
}