fix: animated day header shows wrong date while scrolling (#2709)#2746
Merged
Conversation
The floating day header picked its date with a different threshold (`day.y + day.height - containerHeight - dayBottomMargin`) than the one that drives its vertical position (`currentDayPosition`, which uses `day.y + day.height`). The mismatch made the displayed date switch at a different scroll point than the header's visual transition, so it could show the adjacent day's date (e.g. the previous day) for the group in view. Align the date selection with the position logic: same `day.y + day.height` threshold and the same last-item fallback.
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 #2709
Problem
While scrolling a chat with messages across multiple days, the floating animated day header could show the wrong date (e.g. the previous day) for the message group in view, even though the inline day separators were correct.
Root cause
The header's date was selected with a different threshold than its position:
currentDayPosition):dayPosition = day.y + day.heightcreatedAtDate):dayPosition = day.y + day.height − containerHeight − dayBottomMarginSo the date switched at a different scroll point than the header's visual transition → off-by-one-day mismatch.
Fix
Align the date selection with the position logic - same
day.y + day.heightthreshold and same last-item fallback.Validation (Android simulator, multi-day chat)
tsc,eslint,buildpass locally; CI (Node 22 & 24) gates this PR.