From 66d7cfe71b8e63aecd0b264fa3381b062a5db655 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Tue, 15 Jun 2021 13:21:27 +0300 Subject: [PATCH] Message List: Another attempt to fix marking all messages read --- src/modules/actions/apiUpdaters/messages.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/actions/apiUpdaters/messages.ts b/src/modules/actions/apiUpdaters/messages.ts index 8880245b9..265f505c0 100644 --- a/src/modules/actions/apiUpdaters/messages.ts +++ b/src/modules/actions/apiUpdaters/messages.ts @@ -35,6 +35,7 @@ import { selectCurrentMessageList, selectViewportIds, selectFirstUnreadId, + selectRealLastReadId, } from '../../selectors'; import { getMessageContent, isChatPrivate, isMessageLocal } from '../../helpers'; @@ -429,12 +430,13 @@ function updateListedAndViewportIds(global: GlobalState, message: ApiMessage) { global = updateListedIds(global, chatId, MAIN_THREAD_ID, [id]); if (selectIsViewportNewest(global, chatId, MAIN_THREAD_ID)) { - // Always keep the first uread message in the viewport list + // Always keep the first unread message in the viewport list + const lastReadId = selectRealLastReadId(global, chatId, MAIN_THREAD_ID); const firstUnreadId = selectFirstUnreadId(global, chatId, MAIN_THREAD_ID); const newGlobal = addViewportId(global, chatId, MAIN_THREAD_ID, id); const newViewportIds = selectViewportIds(newGlobal, chatId, MAIN_THREAD_ID); - if (!firstUnreadId || newViewportIds!.includes(firstUnreadId)) { + if (!lastReadId || (firstUnreadId && newViewportIds!.includes(firstUnreadId))) { global = newGlobal; } }