From f903421c3fdf131d536ebe8336fe2e8fcd28daae Mon Sep 17 00:00:00 2001 From: Lambda Date: Sat, 31 May 2025 22:03:23 +0000 Subject: [PATCH] SSS: implement typing indications --- src/api/client_server/sync/msc4186.rs | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/api/client_server/sync/msc4186.rs b/src/api/client_server/sync/msc4186.rs index 9e021ef1..ab5fa762 100644 --- a/src/api/client_server/sync/msc4186.rs +++ b/src/api/client_server/sync/msc4186.rs @@ -573,6 +573,28 @@ pub(crate) async fn sync_events_v5_route( None }; + let typing = if body.extensions.typing.enabled == Some(true) { + let mut typing = BTreeMap::new(); + for room_id in todo_rooms.keys() { + if services().rooms.edus.typing.last_typing_update(room_id).await? + > globalsince + { + let event = + services().rooms.edus.typing.typings_all(room_id).await?; + + let Ok(event) = Raw::new(&event) else { + continue; + }; + typing.insert(room_id.clone(), event); + } + } + Some(sync_events::v5::response::Typing { + rooms: typing, + }) + } else { + None + }; + let mut rooms = BTreeMap::new(); for (room_id, todo_room) in todo_rooms { if let Some(room) = @@ -587,9 +609,7 @@ pub(crate) async fn sync_events_v5_route( e2ee: e2ee.unwrap_or_default(), account_data: account_data.unwrap_or_default(), receipts: receipts.unwrap_or_default(), - typing: sync_events::v5::response::Typing { - rooms: BTreeMap::new(), - }, + typing: typing.unwrap_or_default(), }; let extensions_empty = extensions