Repository navigation
Conversation
The backend leaves disabled channels out of grouped queries. A channel update or partial update that disables a listed channel now removes it, re-enabling it adds it back, and events for a disabled channel no longer add it. The grouped checks read the typed `Channel.disabled`.
…the server A new message shows a hidden channel again only when it is a regular message or a reply that is not shadowed, has no campaign id, and was not sent in a blocked channel or by a blocked user. The channel state (both channel logics), the stored channel and grouped lists follow the same rule.
The channels in notification.message_new, channel.updated, channel.updated_by_user and both truncated events are shared by all members, so they carry no hidden value. The stored hidden state is now kept, so a later message that does not un-hide the channel keeps it hidden. The stored blocked state was already kept.
…hout watch A partial update that moves a channel into a grouped list queried without watch now adds the stored copy with the update applied, instead of watching the channel. A channel with no local copy is skipped and shows when its page loads.
A channel that an event adds to a list without active state is now added like a channel from a query result: its state is created and the query is stored, so later events and restarts keep it up to date. A channel with active state is still only tracked, so a stored copy does not replace its live state.
The backend does not count hidden or disabled channels in grouped unread counts, so a group change of such a channel no longer moves a badge.
…the event ChannelPartialUpdateResponse is regenerated with last_message_at, and a partial update keeps the later of the local and the event value, in the stored channel and in the channel state. A stored channel that is not in the list is checked against the cutoff when the event carries its last message time; without it, only the group is checked, as before.
|
@CodeRabbit review |
PR checklist ✅All required conditions are satisfied:
🎉 Great job! This PR is ready for review. |
SDK Size Comparison 📏
|
|
✅ Action performedReview finished.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to
|



Goal
Closes AND-1672
Ports the grouped list event handling fixes from #6855 (
v6) todevelop.Implementation
Channel.disabled.notification.message_new, channel updates and truncations keep the storedhiddenstate, since their channels carry no state of the current user.blockedwas already kept.watchno longer watches a partially updated channel. It adds the stored copy with the update applied, or skips a channel it has no local copy of.ChannelPartialUpdateResponseis regenerated withlast_message_at, from the head of GetStream/chat#18902, which is not merged yet. A partial update keeps the later of the local and the event value, in the stored channel and in the channel state. A channel that is not in the list is checked against the cutoff when it has a local copy and the event carrieslast_message_at; otherwise only its group is checked.Testing
Manual, on a grouped channel list, changing channels from another client or the dashboard:
watch, partially update a channel so it moves into the group. A channel that was never loaded is not watched and shows after the next refresh. A channel stored locally appears without a watch request.Validation:
./gradlew spotlessCheck detekt apiCheck testDebugUnitTestpasses, after a rebase on the latestdevelop.Summary by CodeRabbit