diff --git a/src/components/middle/ActionMessage.tsx b/src/components/middle/ActionMessage.tsx index 8f74c50b35..f112cc8ab1 100644 --- a/src/components/middle/ActionMessage.tsx +++ b/src/components/middle/ActionMessage.tsx @@ -128,6 +128,7 @@ const ActionMessage: FC = ({ getReceipt, openGiftInfoModalFromMessage, openPrizeStarsTransactionFromGiveaway, + markMentionsRead, } = getActions(); const oldLang = useOldLang(); @@ -195,6 +196,12 @@ const ActionMessage: FC = ({ } }, [isVisible, requestConfetti]); + useEffect(() => { + if (isVisible && message.hasUnreadMention) { + markMentionsRead({ messageIds: [message.id] }); + } + }, [message.hasUnreadMention, isVisible]); + const { transitionClassNames } = useShowTransitionDeprecated(isShown, undefined, noAppearanceAnimation, false); // No need for expensive global updates on users and chats, so we avoid them diff --git a/src/components/middle/message/Message.tsx b/src/components/middle/message/Message.tsx index d15bcc2005..1c8b11d52b 100644 --- a/src/components/middle/message/Message.tsx +++ b/src/components/middle/message/Message.tsx @@ -850,8 +850,17 @@ const Message: FC = ({ animateUnreadReaction({ messageIds: [messageId] }); } + let unreadMentionIds: number[] = []; if (message.hasUnreadMention) { - markMentionsRead({ messageIds: [messageId] }); + unreadMentionIds.push(message.id); + } + + if (album) { + unreadMentionIds = album.messages.filter((msg) => msg.hasUnreadMention).map((msg) => msg.id); + } + + if (unreadMentionIds.length) { + markMentionsRead({ messageIds: unreadMentionIds }); } }, [hasUnreadReaction, messageId, animateUnreadReaction, message.hasUnreadMention]);