shown consultant to last message
This commit is contained in:
parent
b989b55426
commit
7c12c70f90
@ -16,7 +16,7 @@
|
|||||||
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
||||||
"@emotion/react": "^11.10.5",
|
"@emotion/react": "^11.10.5",
|
||||||
"@emotion/styled": "^11.10.5",
|
"@emotion/styled": "^11.10.5",
|
||||||
"@frontend/kitui": "^1.0.99",
|
"@frontend/kitui": "^1.0.100",
|
||||||
"@mui/icons-material": "^5.10.14",
|
"@mui/icons-material": "^5.10.14",
|
||||||
"@mui/material": "^5.10.14",
|
"@mui/material": "^5.10.14",
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
|
@ -159,6 +159,7 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) {
|
|||||||
process.env.REACT_APP_DOMAIN +
|
process.env.REACT_APP_DOMAIN +
|
||||||
`/heruvym/v1.0.0/ticket?ticket=${sessionData?.ticketId}&s=${sessionData?.sessionId}`,
|
`/heruvym/v1.0.0/ticket?ticket=${sessionData?.ticketId}&s=${sessionData?.sessionId}`,
|
||||||
onNewData: (ticketMessages) => {
|
onNewData: (ticketMessages) => {
|
||||||
|
console.log("ticketMessages useSSESubscription " + ticketMessages)
|
||||||
const isTicketClosed = ticketMessages.some(
|
const isTicketClosed = ticketMessages.some(
|
||||||
(message) => message.session_id === "close"
|
(message) => message.session_id === "close"
|
||||||
);
|
);
|
||||||
@ -249,16 +250,40 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (open) {
|
if (open) {
|
||||||
if (user !== undefined && messages.length > 1) {
|
|
||||||
console.log("SHOWN")
|
console.log("SHOWN")
|
||||||
|
console.log("messages")
|
||||||
|
console.log(messages)
|
||||||
|
console.log("open")
|
||||||
|
console.log(open)
|
||||||
|
if (messages.length > 1) {
|
||||||
|
|
||||||
|
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(user)
|
console.log(user)
|
||||||
console.log(messages[messages.length - 1])
|
console.log(messages[messages.length - 1])
|
||||||
const newMessages = messages.filter(({ shown }) => shown.me !== 1);
|
}
|
||||||
|
|
||||||
newMessages.map(async ({ id }) => {
|
|
||||||
await shownMessage(id);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [open, messages]);
|
}, [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 (
|
return (
|
||||||
<ChatMessage
|
<ChatMessage
|
||||||
unAuthenticated
|
unAuthenticated
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { useState, useEffect, forwardRef } from "react";
|
import { useState, useEffect, forwardRef, useMemo } from "react";
|
||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Fab,
|
Fab,
|
||||||
@ -71,6 +71,28 @@ export default function FloatingSupportChat() {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const unreadMessagesCount = useMemo(() => {
|
||||||
|
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(() => {
|
useEffect(() => {
|
||||||
const onResize = () => {
|
const onResize = () => {
|
||||||
if (document.fullscreenElement) {
|
if (document.fullscreenElement) {
|
||||||
@ -153,7 +175,7 @@ export default function FloatingSupportChat() {
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<Badge
|
<Badge
|
||||||
badgeContent={messages.filter(({ shown }) => shown.me !== 1).length}
|
badgeContent={unreadMessagesCount}
|
||||||
sx={{
|
sx={{
|
||||||
"& .MuiBadge-badge": {
|
"& .MuiBadge-badge": {
|
||||||
display: isChatOpened ? "none" : "flex",
|
display: isChatOpened ? "none" : "flex",
|
||||||
|
@ -100,8 +100,21 @@ function SupportChat() {
|
|||||||
process.env.REACT_APP_DOMAIN +
|
process.env.REACT_APP_DOMAIN +
|
||||||
`/heruvym/v1.0.0/ticket?ticket=${ticketId}&Authorization=${token}`,
|
`/heruvym/v1.0.0/ticket?ticket=${ticketId}&Authorization=${token}`,
|
||||||
onNewData: (ticketMessages) => {
|
onNewData: (ticketMessages) => {
|
||||||
updateSSEValue(ticketMessages);
|
console.log("ticketMessages")
|
||||||
addOrUpdateMessages(ticketMessages);
|
console.log(ticketMessages)
|
||||||
|
const data = ticketMessages.filter(t => {
|
||||||
|
if (typeof t === "object" && t !== null && "event" in t && t.event !== "ping") {
|
||||||
|
console.log("---------------------------------------------------")
|
||||||
|
console.log(t)
|
||||||
|
console.log(typeof t === "object")
|
||||||
|
console.log("event" in t)
|
||||||
|
console.log(t.event !== "ping")
|
||||||
|
console.log("---------------------------------------------------")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
updateSSEValue(data);
|
||||||
|
addOrUpdateMessages(data);
|
||||||
},
|
},
|
||||||
onDisconnect: useCallback(() => {
|
onDisconnect: useCallback(() => {
|
||||||
clearMessageState();
|
clearMessageState();
|
||||||
@ -220,6 +233,9 @@ function SupportChat() {
|
|||||||
setDisableFileButton(false);
|
setDisableFileButton(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
console.log("messages messmessagesmessagesmessages messages")
|
||||||
|
console.log(messages)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
@ -335,19 +351,22 @@ function SupportChat() {
|
|||||||
message?.files?.length > 0 &&
|
message?.files?.length > 0 &&
|
||||||
isFileImage()
|
isFileImage()
|
||||||
) {
|
) {
|
||||||
|
console.log("message NEWNEWNENWNEW _WE__WE_W_EW_E_WENWNEWNENWEWNE")
|
||||||
|
console.log(message)
|
||||||
return (
|
return (
|
||||||
<ChatImage
|
<ChatImage
|
||||||
unAuthenticated
|
unAuthenticated
|
||||||
key={message.id}
|
key={message.id}
|
||||||
file={message.files[0]}
|
file={message?.files[0]}
|
||||||
createdAt={message.created_at}
|
createdAt={message.created_at}
|
||||||
isSelf={ticket.user === message.user_id}
|
isSelf={ticket.user === message.user_id}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
message.files !== null &&
|
message?.files !== undefined &&
|
||||||
message.files.length > 0 &&
|
message?.files !== null &&
|
||||||
|
message?.files.length > 0 &&
|
||||||
isFileVideo()
|
isFileVideo()
|
||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
|
@ -1516,10 +1516,10 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
|
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
|
||||||
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
|
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
|
||||||
|
|
||||||
"@frontend/kitui@^1.0.99":
|
"@frontend/kitui@^1.0.100":
|
||||||
version "1.0.99"
|
version "1.0.100"
|
||||||
resolved "http://gitea.pena/api/packages/skeris/npm/%40frontend%2Fkitui/-/1.0.99/kitui-1.0.99.tgz#b5f5197f9d10a093d578fb2201f3ea8d12536949"
|
resolved "http://gitea.pena/api/packages/skeris/npm/%40frontend%2Fkitui/-/1.0.100/kitui-1.0.100.tgz#36045436d129ca8aaccbe0b2f7065d575eabed9f"
|
||||||
integrity sha512-FAaIQA2peXqSPEw/uK43XD+GdbTEL2K66nHG/TJE4Nd2IsQjOkDWGMjLR5QLk74xra3YKl0QskF3d3YpT9Y46Q==
|
integrity sha512-kt7WqtpAfzOaMH0T9BhUMnn9p5Vb+PxZXuBs8I4YCno4BLmcHMSQ3ZsGYKAZRvpTZx8GIQbi2V83VRe+v5xSmA==
|
||||||
dependencies:
|
dependencies:
|
||||||
immer "^10.0.2"
|
immer "^10.0.2"
|
||||||
reconnecting-eventsource "^1.6.2"
|
reconnecting-eventsource "^1.6.2"
|
||||||
|
Loading…
Reference in New Issue
Block a user