diff --git a/src/components/FloatingSupportChat/Chat.tsx b/src/components/FloatingSupportChat/Chat.tsx index 188ab27..4a76beb 100644 --- a/src/components/FloatingSupportChat/Chat.tsx +++ b/src/components/FloatingSupportChat/Chat.tsx @@ -159,6 +159,7 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { process.env.REACT_APP_DOMAIN + `/heruvym/v1.0.0/ticket?ticket=${sessionData?.ticketId}&s=${sessionData?.sessionId}`, onNewData: (ticketMessages) => { + console.log("ticketMessages useSSESubscription " + ticketMessages) const isTicketClosed = ticketMessages.some( (message) => message.session_id === "close" ); @@ -205,7 +206,7 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { const message = getMessageFromFetchError(error); if (message) enqueueSnackbar(message); }, - onFetchStateChange: () => {}, + onFetchStateChange: () => { }, enabled: Boolean(user), }); @@ -249,16 +250,40 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { useEffect(() => { if (open) { - if (user !== undefined && messages.length > 1) { - console.log("SHOWN") - console.log("user") - console.log(user) - console.log(messages[messages.length - 1]) - const newMessages = messages.filter(({ shown }) => shown.me !== 1); + console.log("SHOWN") + console.log("messages") + console.log(messages) + console.log("open") + console.log(open) + if (messages.length > 1) { - newMessages.map(async ({ id }) => { - await shownMessage(id); - }); + let last_message + + for (let i = messages.length - 1; i >= 0; i--) { + if (messages[i].ticket_id !== "111") { + last_message = messages[i]; + break; + } + } + + console.log("last_message") + console.log(last_message) + + if (last_message) { + console.log("if") + console.log(((ticket.sessionData?.sessionId || user) !== last_message.user_id) && last_message.shown.me !== 1 && last_message.ticket_id !== "111") + console.log(((ticket.sessionData?.sessionId || user) !== last_message.user_id)) + console.log(last_message.shown.me !== 1) + + if (((ticket.sessionData?.sessionId || user) !== last_message.user_id) && last_message.shown.me !== 1 && last_message.ticket_id !== "111") { + shownMessage(last_message.id); + } + + + console.log("user") + console.log(user) + console.log(messages[messages.length - 1]) + } } } }, [open, messages]); @@ -535,13 +560,6 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { /> ); } - console.log("isSelf " + message.message) - console.log("ticket.sessionData?.sessionId " + ticket.sessionData?.sessionId) - console.log("user_id ") - console.log("message.user_id " + message.user_id) - console.log("---------boolean result-----------") - console.log((ticket.sessionData?.sessionId || user) === - message.user_id) return ( { + let count = 0; + + // Идём с конца массива к началу + for (let i = messages.length - 1; i >= 0; i--) { + const message = messages[i]; + + // Пропускаем сообщение с id "111" + if (message.id === "111") continue; + + // Если сообщение не прочитано (shown.me !== 1) + if (message.shown.me !== 1) { + count++; + } else { + // Встретили прочитанное сообщение - прекращаем подсчёт + break; + } + } + + return count; + }, [messages]); // Зависимость от messages - пересчитывается при их изменении + useEffect(() => { const onResize = () => { if (document.fullscreenElement) { @@ -153,7 +175,7 @@ export default function FloatingSupportChat() { /> )} shown.me !== 1).length} + badgeContent={unreadMessagesCount} sx={{ "& .MuiBadge-badge": { display: isChatOpened ? "none" : "flex",