filter: apply to all sync requests

This commit is contained in:
Alexandre Franke 2021-04-14 19:05:19 +02:00
parent 1aff564e7c
commit 2bf5b1a5d5
1 changed files with 23 additions and 27 deletions

View File

@ -64,13 +64,10 @@ pub async fn sync(
since: Option<String>,
number_tries: u32,
) -> Result<SyncResponse, SyncError> {
let initial = since.is_none();
let timeline_not_types = [String::from("m.call.*")];
let timeline_types = [String::from("m.room.message"), String::from("m.sticker")];
let state_types = [String::from("m.room.*")];
let sync_settings = if !initial {
SyncSettings::new().timeout(Duration::from_secs(30))
} else {
// Don't filter event fields, it breaks deserialization.
// Clearly the Matrix API is very static-typing-unfriendly right now.
let filter = assign!(FilterDefinition::empty(), {
@ -95,12 +92,11 @@ pub async fn sync(
}),
});
SyncSettings::new().filter(Filter::FilterDefinition(filter))
};
let sync_settings = SyncSettings::new().filter(Filter::FilterDefinition(filter));
let sync_settings = match since.clone() {
Some(sync_token) => sync_settings.token(sync_token),
None => sync_settings,
None => sync_settings.timeout(Duration::from_secs(30)),
};
match session_client.sync_once(sync_settings).await {