Repository navigation
Fix manual "mark as unread" being immediately cleared on iPad - #6377
Open
feather2222 wants to merge 1 commit into
Open
feather2222 wants to merge 1 commit into
feather2222 wants to merge 1 commit into
Conversation
On iPad, the conversation stays visible in the split view while the chat list is shown. markVisibleMessagesAsRead is called repeatedly by readTimer while the conversation is open, and it unconditionally cleared the manually-set unread flag, so marking an open conversation as unread had no visible effect. Only clear the manual unread flag when the conversation appears (viewDidAppear), not on every timer tick. Fixes signalapp#6373
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #6373
Root cause
On iPad, the conversation remains visible in the split view while the chat list is still accessible.
markVisibleMessagesAsReadis invoked repeatedly byreadTimerwhile a conversation is open, and it unconditionally calledclearThreadUnreadFlagIfNecessary(). As a result, marking the currently-open conversation as unread had no visible effect — the flag was cleared again within seconds.Fix
Only clear the manually-set unread flag when the conversation appears (
viewDidAppear), not on every read-timer tick. Messages are still marked as read while the conversation is visible, exactly as before.Testing
Reproduced on iPad simulator (iOS 26.2) before the fix — marking an open chat as unread, the unread indicator never appeared:
【
】
】
【
After the fix — the unread indicator appears and stays while the chat is open, and clears normally after leaving and re-entering the chat:
【
】
Regression check on iPhone simulator: mark-as-unread and normal read behavior unchanged.