Repository navigation
fix(ui): keep the footer of a sent message before a failed one - #3122
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## test/e2e-native-parity #3122 +/- ##
=======================================================
Coverage 80.28% 80.28%
=======================================================
Files 455 455
Lines 29614 29616 +2
=======================================================
+ Hits 23775 23777 +2
Misses 5839 5839 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
| if (neighbor == null) return true; | ||
| if (message.user?.id != neighbor.user?.id) return true; | ||
| if (neighbor.isSystem || neighbor.isEphemeral || neighbor.isError) return true; | ||
| if (message.state.isFailed != neighbor.state.isFailed) return true; |
There was a problem hiding this comment.
nit: isFailed also covers updatingFailed / deletingFailed, so an edit that fails mid-group splits the group too. That seems right, since the error badge shows for those as well, but the CHANGELOG says "failed to send". Either widen the wording ("a message that failed…") or narrow the check to isSendingFailed.
There was a problem hiding this comment.
Kept isFailed: a failed edit or delete shows the same error badge, so it should end the group too. I widened the CHANGELOG in 7d2eb1b instead: "Fixed a message that failed to send, update or delete hiding the timestamp and delivery status of the message before it."
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vTgFwqhUc2wKCWrw635yC
What
A message that failed was grouped with the sent message before it, so only the failed one kept a footer and the sent message lost its timestamp and delivery status. Nothing in the list said which of your messages went through.
StreamMessageListViewnow starts a new group where only one of two neighbouring messages failed, for both the stack position and the spacing. Consecutive failed messages still group together, and a failed message that is resent groups with the sent ones again. WhatsApp, Telegram and iMessage all keep the status of the last delivered message visible next to a failed one.This also enables "delivery status is shown for the previous message when a new message fails to be sent" in
message_delivery_status_test.dart.Fixes FLU-1090.
Stacked on #3105 (the e2e suite); GitHub retargets it to
masteronce that merges.Verification
message_list_failed_message_grouping_test.dart:Removing the boundary, removing the spacing check, or splitting at every failed message each fails one of these.
The message list and message widget suites pass; only the local macOS goldens fail.
Android emulator: sent five messages, went offline and sent two more. The fifth sent message keeps "✓ 2:18 AM" and the two failed ones form their own group. After reconnecting, both are resent and show as sent.
e2e: the test is un-skipped and runs in this PR's E2E workflow.
v11: see the "Merging master into v11" comment on FLU-1090.
🤖 Generated with Claude Code