From a26b1c57220cfb1c0df3870a2f2b062f9e6dac19 Mon Sep 17 00:00:00 2001 From: strawberry Date: Wed, 11 Dec 2024 22:02:48 -0500 Subject: [PATCH] send private read receipt on sliding stink (sync) Signed-off-by: strawberry --- src/api/client/sync/v4.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/api/client/sync/v4.rs b/src/api/client/sync/v4.rs index 14d79c19..3480489d 100644 --- a/src/api/client/sync/v4.rs +++ b/src/api/client/sync/v4.rs @@ -490,7 +490,25 @@ pub(crate) async fn sync_events_v4_route( .await, ); - let vector: Vec<_> = services + let last_privateread_update = services + .rooms + .read_receipt + .last_privateread_update(sender_user, room_id) + .await > *roomsince; + + let private_read_event = if last_privateread_update { + services + .rooms + .read_receipt + .private_read_get(room_id, sender_user) + .await + .ok() + .map(|read_event| (sender_user.to_owned(), 0_u64, read_event)) + } else { + None + }; + + let mut vector: Vec<_> = services .rooms .read_receipt .readreceipts_since(room_id, *roomsince) @@ -504,6 +522,10 @@ pub(crate) async fn sync_events_v4_route( .collect() .await; + if let Some(private_read_event) = private_read_event { + vector.push(private_read_event); + } + let receipt_size = vector.len(); receipts .rooms