From e0d3d12654c388768a6fb7ef29ac9c597ef835b1 Mon Sep 17 00:00:00 2001 From: Jade Ellis Date: Sun, 8 Nov 2026 20:18:16 +0000 Subject: [PATCH] fix(sync/v3): Pack room receipts into single m.receipt event --- src/api/client/sync/v3/joined.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/api/client/sync/v3/joined.rs b/src/api/client/sync/v3/joined.rs index d2e8a8909..b47753518 100644 --- a/src/api/client/sync/v3/joined.rs +++ b/src/api/client/sync/v3/joined.rs @@ -15,7 +15,7 @@ use conduwuit::{ }, warn, }; -use conduwuit_service::Services; +use conduwuit_service::{Services, rooms::read_receipt::pack_receipts}; use futures::{ FutureExt, StreamExt, TryFutureExt, future::{OptionFuture, join, join3, join4, try_join, try_join3}, @@ -243,9 +243,14 @@ async fn build_ephemeral( let (receipt_events, typing_event, private_read_event) = join3(receipt_events, typing_event, private_read_event).await; - let mut edus = receipt_events; + let mut all_receipts = receipt_events; + all_receipts.extend(private_read_event); + + let mut edus = Vec::new(); + if !all_receipts.is_empty() { + edus.push(pack_receipts(all_receipts.into_iter()).cast()); + } edus.extend(typing_event); - edus.extend(private_read_event); Ok(assign!(Ephemeral::new(), { events: edus })) }