From 7900a3e17fdb3577f6c1eb734576c6f7997ce21d Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Sat, 12 Aug 2023 16:29:18 +0800 Subject: [PATCH] fix: fix message ack not trigger update problem --- client/shared/redux/slices/chat.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/client/shared/redux/slices/chat.ts b/client/shared/redux/slices/chat.ts index c897652d..d2123e99 100644 --- a/client/shared/redux/slices/chat.ts +++ b/client/shared/redux/slices/chat.ts @@ -94,16 +94,16 @@ const chatSlice = createSlice({ state.converses[converseId].messages = newMessages; - const lastMessageId = _last( - newMessages.filter((m) => !isLocalMessageId(m._id)) - )?._id; - - if (isValidStr(lastMessageId)) { - state.lastMessageMap[converseId] = lastMessageId; - - if (state.currentConverseId === converseId) { - // 如果是当前会话,则立即已读 - state.ack[converseId] = lastMessageId; + /** + * 如果在当前会话中,则暂时不更新最后收到的消息的本地状态,避免可能出现的瞬间更新最后消息(出现小红点) 但是会立即已读(小红点消失) + * 所以仅对非当前会话的消息进行更新最后消息 + */ + if (state.currentConverseId !== converseId) { + const lastMessageId = _last( + newMessages.filter((m) => !isLocalMessageId(m._id)) + )?._id; + if (isValidStr(lastMessageId)) { + state.lastMessageMap[converseId] = lastMessageId; } } },