Skip to main content

tuwunel_api/client/sync/v5/extensions/
receipts.rs

1use 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}