From 6ecf46abf7c1809bd793bcb4bd07be9bf0f14c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Thu, 21 May 2020 14:30:42 +0200 Subject: [PATCH] crypto: Mark tracked users as changed if a sync tells us so. --- matrix_sdk_base/Cargo.toml | 1 - matrix_sdk_crypto/src/machine.rs | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/matrix_sdk_base/Cargo.toml b/matrix_sdk_base/Cargo.toml index 2dea9b8b..001f2b06 100644 --- a/matrix_sdk_base/Cargo.toml +++ b/matrix_sdk_base/Cargo.toml @@ -35,7 +35,6 @@ features = ["sync", "fs"] [dev-dependencies] matrix-sdk-test = { version = "0.1.0", path = "../matrix_sdk_test" } http = "0.2.1" -dirs = "2.0.2" tracing-subscriber = "0.2.5" tempfile = "3.1.0" diff --git a/matrix_sdk_crypto/src/machine.rs b/matrix_sdk_crypto/src/machine.rs index b46ac957..fe90d175 100644 --- a/matrix_sdk_crypto/src/machine.rs +++ b/matrix_sdk_crypto/src/machine.rs @@ -13,7 +13,7 @@ // limitations under the License. use std::collections::{BTreeMap, HashMap, HashSet}; -use std::convert::TryInto; +use std::convert::{TryFrom, TryInto}; use std::mem; #[cfg(feature = "sqlite-cryptostore")] use std::path::Path; @@ -1404,6 +1404,20 @@ impl OlmMachine { let count: u64 = one_time_key_count.map_or(0, |c| (*c).into()); self.update_key_count(count); + if let Some(device_list) = &response.device_lists { + for user_id in &device_list.changed { + let user_id = if let Ok(u) = UserId::try_from(user_id.to_owned()) { + u + } else { + continue; + }; + + if let Err(e) = self.mark_user_as_changed(&user_id).await { + error!("Error marking a tracked user as changed {:?}", e); + } + } + } + for event_result in &mut response.to_device.events { let event = if let Ok(e) = event_result.deserialize() { e