fix: prevent MLS group read receipts - WPB-27764 - #5124
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates WireDataModel’s read-confirmation eligibility to ensure MLS group conversations never request/signal read receipts, even for previously persisted messages that already have expectsReadConfirmation set, while keeping existing behavior for mixed/proteus groups and one-to-ones.
Changes:
- Block read confirmation for
.groupconversations whenconversation.messageProtocol == .mls. - Add regression tests covering MLS-group (no read confirmation) and mixed-group (still needs read confirmation) scenarios.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| wire-ios-data-model/Source/Model/Message/ZMOTRMessage+Confirmations.swift | Adds an MLS protocol gate to the group read-confirmation eligibility check. |
| wire-ios-data-model/Tests/Model/Messages/ZMMessageTests+Confirmation.swift | Adds regression tests verifying MLS groups don’t need read confirmation while mixed groups still do. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Test Results 1 files 247 suites 4m 5s ⏱️ For more details on these failures, see this check. Results for commit 30b7174. Summary: workflow run #31685765991 |
Summary
Why
MLS group read receipts require targeted messages, which this client version does not support. Relying only on the backend receipt mode can allow older messages that already expect confirmation to produce untargeted read receipts after migration.
User impact
iOS no longer sends read receipts after a group conversation migrates to MLS, including for previously stored messages whose confirmation flag is already set.
Validation
The focused WireDataModel confirmation suite passes with 22 tests and no failures.
WPB-27764