Skip to main content

tuwunel_api/client/
mod.rs

1use ruma::UserId;
2use tuwunel_service::{Services, rooms::timeline::PdusIterItem};
3
4pub(super) mod account;
5pub(super) mod account_data;
6pub(super) mod admin;
7pub(super) mod alias;
8pub(super) mod appservice;
9pub(super) mod backup;
10pub(super) mod capabilities;
11pub(super) mod context;
12pub(super) mod dehydrated_device;
13pub(super) mod device;
14pub(super) mod directory;
15pub(super) mod events;
16pub(super) mod filter;
17pub(super) mod keys;
18pub(super) mod media;
19pub(super) mod media_legacy;
20pub(super) mod membership;
21pub(super) mod message;
22pub(super) mod openid;
23pub(super) mod presence;
24pub(super) mod profile;
25pub(super) mod push;
26pub(super) mod read_marker;
27pub(super) mod redact;
28pub(super) mod register;
29pub(super) mod relations;
30pub(super) mod rendezvous;
31pub(super) mod report;
32pub(super) mod room;
33pub(super) mod rtc;
34pub(super) mod search;
35pub(super) mod send;
36pub(super) mod session;
37pub(super) mod space;
38pub(super) mod state;
39pub(super) mod sync;
40pub(super) mod tag;
41pub(super) mod thirdparty;
42pub(super) mod threads;
43pub(super) mod to_device;
44pub(super) mod tuwunel;
45pub(super) mod typing;
46pub(super) mod unstable;
47pub(super) mod user_directory;
48pub(super) mod versions;
49pub(super) mod voip;
50pub(super) mod well_known;
51
52mod utils;
53
54pub(super) use account::*;
55pub(super) use account_data::*;
56pub(super) use admin::*;
57pub(super) use alias::*;
58pub(super) use appservice::*;
59pub(super) use backup::*;
60pub(super) use capabilities::*;
61pub(super) use context::*;
62pub(super) use dehydrated_device::*;
63pub(super) use device::*;
64pub(super) use directory::*;
65pub(super) use events::*;
66pub(super) use filter::*;
67pub(super) use keys::*;
68pub(super) use media::*;
69pub(super) use media_legacy::*;
70pub(super) use membership::*;
71pub(super) use message::*;
72pub(super) use openid::*;
73pub(super) use presence::*;
74pub(super) use profile::*;
75pub(super) use push::*;
76pub(super) use read_marker::*;
77pub(super) use redact::*;
78pub(super) use register::*;
79pub(super) use relations::*;
80pub(super) use rendezvous::*;
81pub(super) use report::*;
82pub(super) use room::*;
83pub(super) use rtc::*;
84pub(super) use search::*;
85pub(super) use send::*;
86pub(super) use session::*;
87pub(super) use space::*;
88pub(super) use state::*;
89pub(super) use sync::*;
90pub(super) use tag::*;
91pub(super) use thirdparty::*;
92pub(super) use threads::*;
93pub(super) use to_device::*;
94pub(super) use tuwunel::*;
95pub(super) use typing::*;
96pub(super) use unstable::*;
97pub(super) use user_directory::*;
98pub(super) use versions::*;
99pub(super) use voip::*;
100pub(super) use well_known::*;
101
102/// generated user access token length
103const TOKEN_LENGTH: usize = tuwunel_service::users::device::TOKEN_LENGTH;
104
105/// generated user session ID length
106const SESSION_ID_LENGTH: usize = tuwunel_service::uiaa::SESSION_ID_LENGTH;
107
108/// Keeps a timeline item only when the user may see its event.
109///
110/// The room's history visibility is read as it stood at that event rather than
111/// as it stands at the time of the request.
112#[inline]
113async fn visibility_filter(
114	services: &Services,
115	item: PdusIterItem,
116	user_id: &UserId,
117) -> Option<PdusIterItem> {
118	let (_, pdu) = &item;
119
120	services
121		.state_accessor
122		.user_can_see_event(user_id, pdu)
123		.await
124		.then_some(item)
125}