From 0542e3d83d5d808c9bdb9ee3f2d389517300b6b6 Mon Sep 17 00:00:00 2001 From: Black Hat Date: Thu, 16 Jul 2020 03:49:46 -0700 Subject: [PATCH] Client::sync(): expose sync filter --- matrix_sdk/src/client.rs | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/matrix_sdk/src/client.rs b/matrix_sdk/src/client.rs index af962e7a..6dc6402b 100644 --- a/matrix_sdk/src/client.rs +++ b/matrix_sdk/src/client.rs @@ -1220,9 +1220,13 @@ impl Client { /// /// * `sync_settings` - Settings for the sync call. #[instrument] - pub async fn sync(&self, sync_settings: SyncSettings) -> Result { + pub async fn sync( + &self, + sync_settings: SyncSettings, + filter: Option, + ) -> Result { let request = sync_events::Request { - filter: None, + filter, since: sync_settings.token, full_state: sync_settings.full_state, set_presence: sync_events::SetPresence::Online, @@ -1297,6 +1301,7 @@ impl Client { pub async fn sync_forever( &self, sync_settings: SyncSettings, + filter: Option, callback: impl Fn(sync_events::Response) -> C, ) where C: Future, @@ -1309,7 +1314,7 @@ impl Client { } loop { - let response = self.sync(sync_settings.clone()).await; + let response = self.sync(sync_settings.clone(), None).await; let response = match response { Ok(r) => r, @@ -1561,7 +1566,7 @@ mod test { let room = client.get_joined_room(&room_id).await; assert!(room.is_none()); - client.sync(SyncSettings::default()).await.unwrap(); + client.sync(SyncSettings::default(), None).await.unwrap(); let room = client.get_left_room(&room_id).await; assert!(room.is_none()); @@ -1576,7 +1581,7 @@ mod test { joined_client.restore_login(session).await.unwrap(); // joined room reloaded from state store - joined_client.sync(SyncSettings::default()).await.unwrap(); + joined_client.sync(SyncSettings::default(), None).await.unwrap(); let room = joined_client.get_joined_room(&room_id).await; assert!(room.is_some()); @@ -1588,7 +1593,7 @@ mod test { .with_body(test_json::LEAVE_SYNC_EVENT.to_string()) .create(); - joined_client.sync(SyncSettings::default()).await.unwrap(); + joined_client.sync(SyncSettings::default(), None).await.unwrap(); let room = joined_client.get_joined_room(&room_id).await; assert!(room.is_none()); @@ -1620,7 +1625,7 @@ mod test { let sync_settings = SyncSettings::new().timeout(Duration::from_millis(3000)); - let _response = client.sync(sync_settings).await.unwrap(); + let _response = client.sync(sync_settings, None).await.unwrap(); // let bc = &client.base_client; // let ignored_users = bc.ignored_users.read().await; @@ -2243,7 +2248,7 @@ mod test { let sync_settings = SyncSettings::new().timeout(Duration::from_millis(3000)); - let _response = client.sync(sync_settings).await.unwrap(); + let _response = client.sync(sync_settings, None).await.unwrap(); let rooms_lock = &client.base_client.joined_rooms(); let rooms = rooms_lock.read().await; @@ -2279,7 +2284,7 @@ mod test { client.restore_login(session).await.unwrap(); let sync_settings = SyncSettings::new().timeout(Duration::from_millis(3000)); - let _response = client.sync(sync_settings).await.unwrap(); + let _response = client.sync(sync_settings, None).await.unwrap(); let mut room_names = vec![]; for room in client.joined_rooms().read().await.values() { @@ -2311,7 +2316,7 @@ mod test { .with_body(test_json::INVITE_SYNC.to_string()) .create(); - let _response = client.sync(SyncSettings::default()).await.unwrap(); + let _response = client.sync(SyncSettings::default(), None).await.unwrap(); assert!(client.joined_rooms().read().await.is_empty()); assert!(client.left_rooms().read().await.is_empty()); @@ -2345,7 +2350,7 @@ mod test { .with_body(test_json::LEAVE_SYNC.to_string()) .create(); - let _response = client.sync(SyncSettings::default()).await.unwrap(); + let _response = client.sync(SyncSettings::default(), None).await.unwrap(); assert!(client.joined_rooms().read().await.is_empty()); assert!(!client.left_rooms().read().await.is_empty()); @@ -2389,14 +2394,14 @@ mod test { let sync_settings = SyncSettings::new().timeout(std::time::Duration::from_millis(3000)); // gather state to save to the db, the first time through loading will be skipped - let _ = client.sync(sync_settings.clone()).await.unwrap(); + let _ = client.sync(sync_settings.clone(), None).await.unwrap(); // now syncing the client will update from the state store let config = ClientConfig::default().state_store(Box::new(JsonStore::open(dir.path()).unwrap())); let client = Client::new_with_config(homeserver, config).unwrap(); client.restore_login(session.clone()).await.unwrap(); - client.sync(sync_settings).await.unwrap(); + client.sync(sync_settings, None).await.unwrap(); let base_client = &client.base_client; @@ -2457,7 +2462,7 @@ mod test { let sync_settings = SyncSettings::new().timeout(Duration::from_millis(3000)); - let response = client.sync(sync_settings).await.unwrap(); + let response = client.sync(sync_settings, None).await.unwrap(); assert_ne!(response.next_batch, ""); @@ -2487,7 +2492,7 @@ mod test { let sync_settings = SyncSettings::new().timeout(Duration::from_millis(3000)); - let _response = client.sync(sync_settings).await.unwrap(); + let _response = client.sync(sync_settings, None).await.unwrap(); let mut names = vec![]; for r in client.joined_rooms().read().await.values() {