From adae0f20620acba41991bdd190e4484a3968c714 Mon Sep 17 00:00:00 2001 From: Ramon Souza <contato@ramonsouza.com> Date: Fri, 23 Apr 2021 09:29:13 -0300 Subject: [PATCH] keep read state of removed messages --- .../ui/components/components-data/chat-context/context.jsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bigbluebutton-html5/imports/ui/components/components-data/chat-context/context.jsx b/bigbluebutton-html5/imports/ui/components/components-data/chat-context/context.jsx index 08449297ad..9378431ee7 100644 --- a/bigbluebutton-html5/imports/ui/components/components-data/chat-context/context.jsx +++ b/bigbluebutton-html5/imports/ui/components/components-data/chat-context/context.jsx @@ -49,6 +49,8 @@ const generateTimeWindow = (timestamp) => { export const ChatContext = createContext(); +const removedMessagesReadState = {}; + const generateStateWithNewMessage = (msg, state, msgType = MESSAGE_TYPES.HISTORY) => { const timeWindow = generateTimeWindow(msg.timestamp); @@ -70,7 +72,7 @@ const generateStateWithNewMessage = (msg, state, msgType = MESSAGE_TYPES.HISTORY ...restMsg, key: messageKey, lastTimestamp: msg.timestamp, - read: msg.chatId === PUBLIC_CHAT_KEY && msg.timestamp <= getLoginTime() ? true : false, + read: msg.chatId === PUBLIC_CHAT_KEY && msg.timestamp <= getLoginTime() ? true : !!removedMessagesReadState[msg.id], content: [ { id: msg.id, text: msg.message, time: msg.timestamp }, ], @@ -129,7 +131,7 @@ const generateStateWithNewMessage = (msg, state, msgType = MESSAGE_TYPES.HISTORY const message = tempGroupMessage[key]; message.messageType = msgType; const previousMessage = message.timestamp <= getLoginTime(); - if (!previousMessage && message.sender !== Auth.userID && !message.id.startsWith(SYSTEM_CHAT_TYPE)) { + if (!previousMessage && message.sender !== Auth.userID && !message.id.startsWith(SYSTEM_CHAT_TYPE) && !message.read) { stateMessages.unreadTimeWindows.add(key); } }); @@ -329,6 +331,7 @@ const reducer = (state, action) => { const timeWindow = messages[timeWindowId]; if (timeWindow.messageType === MESSAGE_TYPES.STREAM) { chat.unreadTimeWindows.delete(timeWindowId); + removedMessagesReadState[newState[chatId][group][timeWindowId].id] = newState[chatId][group][timeWindowId].read; delete newState[chatId][group][timeWindowId]; } }); -- GitLab