|
|
|
|
@ -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 { |
|
|
|
|
|