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; } } },