From 250296ee5292eaeccd0e36f119231dcb0b64cf4e Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 5 Nov 2021 21:57:20 +0300 Subject: [PATCH] Message List: Fix stuck unread divider before service notification --- src/components/middle/MessageList.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/middle/MessageList.tsx b/src/components/middle/MessageList.tsx index 50260192e..70508df6f 100644 --- a/src/components/middle/MessageList.tsx +++ b/src/components/middle/MessageList.tsx @@ -77,6 +77,7 @@ type StateProps = { isBot?: boolean; messageIds?: number[]; messagesById?: Record; + isUnread?: boolean; firstUnreadId?: number; isViewportNewest?: boolean; isRestricted?: boolean; @@ -124,6 +125,7 @@ const MessageList: FC = ({ messageIds, messagesById, firstUnreadId, + isUnread, isViewportNewest, threadFirstMessageId, isRestricted, @@ -172,11 +174,12 @@ const MessageList: FC = ({ }, [firstUnreadId]); // Updated only once when messages are loaded (as we want the unread divider to keep its position) + const withUnreadDivider = areMessagesLoaded && isUnread; useOnChange(() => { - if (areMessagesLoaded) { + if (withUnreadDivider) { memoUnreadDividerBeforeIdRef.current = memoFirstUnreadIdRef.current; } - }, [areMessagesLoaded]); + }, [withUnreadDivider]); useOnChange(() => { memoFocusingIdRef.current = focusingId; @@ -503,7 +506,7 @@ const MessageList: FC = ({ messageIds={messageIds || [lastMessage!.id]} messageGroups={messageGroups || groupMessages([lastMessage!])} isViewportNewest={Boolean(isViewportNewest)} - isUnread={Boolean(firstUnreadId)} + isUnread={Boolean(isUnread)} withUsers={withUsers} noAvatars={noAvatars} containerRef={containerRef} @@ -578,6 +581,7 @@ export default memo(withGlobal( isBot: Boolean(chatBot), messageIds, messagesById, + isUnread: Boolean(chat.unreadCount), firstUnreadId: selectFirstUnreadId(global, chatId, threadId), isViewportNewest: type !== 'thread' || selectIsViewportNewest(global, chatId, threadId), threadFirstMessageId: selectFirstMessageId(global, chatId, threadId),