tuwunel_api/client/sync/v5/extensions/
receipts.rs1use ruma::api::client::sync::sync_events::v5::response::Receipts;
2
3use super::{Connection, Window, selector};
4use crate::client::sync::v5::range::Results;
5
6pub(super) fn collect_ranges(
7 conn: &Connection,
8 window: &Window,
9 ranges: &mut Results,
10) -> Receipts {
11 let implicit = conn
12 .extensions
13 .receipts
14 .lists
15 .as_deref()
16 .map(<[_]>::iter);
17
18 let explicit = conn
19 .extensions
20 .receipts
21 .rooms
22 .as_deref()
23 .map(<[_]>::iter);
24
25 let rooms = selector(conn, window, implicit, explicit)
26 .filter_map(|room_id| {
27 ranges
28 .take_receipts(room_id)
29 .map(|event| (room_id.to_owned(), event))
30 })
31 .collect();
32
33 Receipts { rooms }
34}