From bad1c683f80cf84d4fc9fb401e8b9fc2a20475ed Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 14 Apr 2025 17:56:38 +0200 Subject: [PATCH] chore(base): Rename fields of `RoomUpdate`. This patch renames the fields in `RoomUpdate`: `join` becomes `joined`, `leave` becomes `left`, `invite` becomes `invited`, to match their associate type. --- crates/matrix-sdk-base/src/client.rs | 6 +-- crates/matrix-sdk-base/src/sliding_sync.rs | 52 +++++++++---------- crates/matrix-sdk-base/src/sync.rs | 18 +++---- crates/matrix-sdk/src/client/mod.rs | 6 +-- crates/matrix-sdk/src/event_cache/mod.rs | 8 +-- crates/matrix-sdk/src/sliding_sync/client.rs | 2 +- crates/matrix-sdk/src/sliding_sync/mod.rs | 6 +-- crates/matrix-sdk/src/sync.rs | 6 +-- crates/matrix-sdk/tests/integration/client.rs | 26 +++++----- .../tests/sliding_sync/notification_client.rs | 4 +- 10 files changed, 67 insertions(+), 67 deletions(-) diff --git a/crates/matrix-sdk-base/src/client.rs b/crates/matrix-sdk-base/src/client.rs index 0e0ffb648..9fcecf169 100644 --- a/crates/matrix-sdk-base/src/client.rs +++ b/crates/matrix-sdk-base/src/client.rs @@ -563,7 +563,7 @@ impl BaseClient { ) .await?; - new_rooms.join.insert(room_id, joined_room_update); + new_rooms.joined.insert(room_id, joined_room_update); } for (room_id, left_room) in response.rooms.leave { @@ -589,7 +589,7 @@ impl BaseClient { ) .await?; - new_rooms.leave.insert(room_id, left_room_update); + new_rooms.left.insert(room_id, left_room_update); } for (room_id, invited_room) in response.rooms.invite { @@ -607,7 +607,7 @@ impl BaseClient { ) .await?; - new_rooms.invite.insert(room_id, invited_room_update); + new_rooms.invited.insert(room_id, invited_room_update); } for (room_id, knocked_room) in response.rooms.knock { diff --git a/crates/matrix-sdk-base/src/sliding_sync.rs b/crates/matrix-sdk-base/src/sliding_sync.rs index 2879242a1..cc193888e 100644 --- a/crates/matrix-sdk-base/src/sliding_sync.rs +++ b/crates/matrix-sdk-base/src/sliding_sync.rs @@ -181,13 +181,13 @@ impl BaseClient { match room_update { RoomUpdateKind::Joined(joined_room_update) => { - room_updates.join.insert(room_id, joined_room_update); + room_updates.joined.insert(room_id, joined_room_update); } RoomUpdateKind::Left(left_room_update) => { - room_updates.leave.insert(room_id, left_room_update); + room_updates.left.insert(room_id, left_room_update); } RoomUpdateKind::Invited(invited_room_update) => { - room_updates.invite.insert(room_id, invited_room_update); + room_updates.invited.insert(room_id, invited_room_update); } RoomUpdateKind::Knocked(knocked_room_update) => { room_updates.knocked.insert(room_id, knocked_room_update); @@ -204,7 +204,7 @@ impl BaseClient { // We assume this can only happen in joined rooms, or something's very wrong. room_updates - .join + .joined .entry(room_id.to_owned()) .or_insert_with(JoinedRoomUpdate::default) .ephemeral @@ -214,7 +214,7 @@ impl BaseClient { for (room_id, raw) in &extensions.typing.rooms { // We assume this can only happen in joined rooms, or something's very wrong. room_updates - .join + .joined .entry(room_id.to_owned()) .or_insert_with(JoinedRoomUpdate::default) .ephemeral @@ -228,13 +228,13 @@ impl BaseClient { if let Some(room) = self.state_store.room(room_id) { match room.state() { RoomState::Joined => room_updates - .join + .joined .entry(room_id.to_owned()) .or_insert_with(JoinedRoomUpdate::default) .account_data .append(&mut raw.to_vec()), RoomState::Left | RoomState::Banned => room_updates - .leave + .left .entry(room_id.to_owned()) .or_insert_with(LeftRoomUpdate::default) .account_data @@ -248,7 +248,7 @@ impl BaseClient { // receipt. Update the read receipt accordingly. let user_id = &self.session_meta().expect("logged in user").user_id; - for (room_id, joined_room_update) in &mut room_updates.join { + for (room_id, joined_room_update) in &mut room_updates.joined { if let Some(mut room_info) = context .state_changes .room_infos @@ -380,7 +380,7 @@ mod tests { .expect("Failed to process sync"); // Check it's present in the response. - let room = sync_response.rooms.join.get(room_id).unwrap(); + let room = sync_response.rooms.joined.get(room_id).unwrap(); assert_eq!(room.unread_notifications, count.clone().into()); // Check it's been updated in the store. @@ -421,9 +421,9 @@ mod tests { assert_eq!(client_room.state(), RoomState::Joined); // And it is added to the list of joined rooms only. - assert!(sync_resp.rooms.join.contains_key(room_id)); - assert!(!sync_resp.rooms.leave.contains_key(room_id)); - assert!(!sync_resp.rooms.invite.contains_key(room_id)); + assert!(sync_resp.rooms.joined.contains_key(room_id)); + assert!(!sync_resp.rooms.left.contains_key(room_id)); + assert!(!sync_resp.rooms.invited.contains_key(room_id)); } #[async_test] @@ -449,9 +449,9 @@ mod tests { assert_eq!(client_room.state(), RoomState::Joined); // And it is added to the list of joined rooms only. - assert!(sync_resp.rooms.join.contains_key(room_id)); - assert!(!sync_resp.rooms.leave.contains_key(room_id)); - assert!(!sync_resp.rooms.invite.contains_key(room_id)); + assert!(sync_resp.rooms.joined.contains_key(room_id)); + assert!(!sync_resp.rooms.left.contains_key(room_id)); + assert!(!sync_resp.rooms.invited.contains_key(room_id)); assert!(!sync_resp.rooms.knocked.contains_key(room_id)); } @@ -509,9 +509,9 @@ mod tests { assert_eq!(client_room.state(), RoomState::Invited); // And it is added to the list of invited rooms only. - assert!(!sync_resp.rooms.join.contains_key(room_id)); - assert!(!sync_resp.rooms.leave.contains_key(room_id)); - assert!(sync_resp.rooms.invite.contains_key(room_id)); + assert!(!sync_resp.rooms.joined.contains_key(room_id)); + assert!(!sync_resp.rooms.left.contains_key(room_id)); + assert!(sync_resp.rooms.invited.contains_key(room_id)); assert!(!sync_resp.rooms.knocked.contains_key(room_id)); } @@ -655,9 +655,9 @@ mod tests { assert_eq!(client.get_room(room_id).unwrap().state(), RoomState::Left); // And it is added to the list of left rooms only. - assert!(!sync_resp.rooms.join.contains_key(room_id)); - assert!(sync_resp.rooms.leave.contains_key(room_id)); - assert!(!sync_resp.rooms.invite.contains_key(room_id)); + assert!(!sync_resp.rooms.joined.contains_key(room_id)); + assert!(sync_resp.rooms.left.contains_key(room_id)); + assert!(!sync_resp.rooms.invited.contains_key(room_id)); assert!(!sync_resp.rooms.knocked.contains_key(room_id)); } @@ -706,9 +706,9 @@ mod tests { } // And it is added to the list of left rooms only. - assert!(!sync_resp.rooms.join.contains_key(room_id)); - assert!(sync_resp.rooms.leave.contains_key(room_id)); - assert!(!sync_resp.rooms.invite.contains_key(room_id)); + assert!(!sync_resp.rooms.joined.contains_key(room_id)); + assert!(sync_resp.rooms.left.contains_key(room_id)); + assert!(!sync_resp.rooms.invited.contains_key(room_id)); assert!(!sync_resp.rooms.knocked.contains_key(room_id)); } } @@ -1021,8 +1021,8 @@ mod tests { assert_eq!(client_room.state(), RoomState::Invited); // And it is added to the list of invited rooms, not the joined ones - assert!(!sync_resp.rooms.invite[room_id].invite_state.is_empty()); - assert!(!sync_resp.rooms.join.contains_key(room_id)); + assert!(!sync_resp.rooms.invited[room_id].invite_state.is_empty()); + assert!(!sync_resp.rooms.joined.contains_key(room_id)); } #[async_test] diff --git a/crates/matrix-sdk-base/src/sync.rs b/crates/matrix-sdk-base/src/sync.rs index 64f529720..3d220b5d5 100644 --- a/crates/matrix-sdk-base/src/sync.rs +++ b/crates/matrix-sdk-base/src/sync.rs @@ -72,11 +72,11 @@ impl fmt::Debug for SyncResponse { #[derive(Clone, Default)] pub struct RoomUpdates { /// The rooms that the user has left or been banned from. - pub leave: BTreeMap, + pub left: BTreeMap, /// The rooms that the user has joined. - pub join: BTreeMap, + pub joined: BTreeMap, /// The rooms that the user has been invited to. - pub invite: BTreeMap, + pub invited: BTreeMap, /// The rooms that the user has knocked on. pub knocked: BTreeMap, } @@ -87,10 +87,10 @@ impl RoomUpdates { /// This will only fill the in-memory caches, not save the info on disk. pub(crate) async fn update_in_memory_caches(&self, store: &BaseStateStore) { for room in self - .leave + .left .keys() - .chain(self.join.keys()) - .chain(self.invite.keys()) + .chain(self.joined.keys()) + .chain(self.invited.keys()) .chain(self.knocked.keys()) .filter_map(|room_id| store.room(room_id)) { @@ -103,9 +103,9 @@ impl RoomUpdates { impl fmt::Debug for RoomUpdates { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_struct("RoomUpdates") - .field("leave", &self.leave) - .field("join", &self.join) - .field("invite", &DebugInvitedRoomUpdates(&self.invite)) + .field("leave", &self.left) + .field("join", &self.joined) + .field("invite", &DebugInvitedRoomUpdates(&self.invited)) .field("knocked", &DebugKnockedRoomUpdates(&self.knocked)) .finish() } diff --git a/crates/matrix-sdk/src/client/mod.rs b/crates/matrix-sdk/src/client/mod.rs index fc4d0c13c..0c9b5050f 100644 --- a/crates/matrix-sdk/src/client/mod.rs +++ b/crates/matrix-sdk/src/client/mod.rs @@ -2203,7 +2203,7 @@ impl Client { /// client /// .sync_with_callback(sync_settings, |response| async move { /// let channel = sync_channel; - /// for (room_id, room) in response.rooms.join { + /// for (room_id, room) in response.rooms.joined { /// for event in room.timeline.events { /// channel.send(event).await.unwrap(); /// } @@ -2283,7 +2283,7 @@ impl Client { /// .sync_with_result_callback(sync_settings, |response| async move { /// let channel = sync_channel; /// let sync_response = response?; - /// for (room_id, room) in sync_response.rooms.join { + /// for (room_id, room) in sync_response.rooms.joined { /// for event in room.timeline.events { /// channel.send(event).await.unwrap(); /// } @@ -2356,7 +2356,7 @@ impl Client { /// Box::pin(client.sync_stream(SyncSettings::default()).await); /// /// while let Some(Ok(response)) = sync_stream.next().await { - /// for room in response.rooms.join.values() { + /// for room in response.rooms.joined.values() { /// for e in &room.timeline.events { /// if let Ok(event) = e.raw().deserialize() { /// println!("Received event {:?}", event); diff --git a/crates/matrix-sdk/src/event_cache/mod.rs b/crates/matrix-sdk/src/event_cache/mod.rs index 354649179..2a4238e6d 100644 --- a/crates/matrix-sdk/src/event_cache/mod.rs +++ b/crates/matrix-sdk/src/event_cache/mod.rs @@ -538,7 +538,7 @@ impl EventCacheInner { let _lock = self.multiple_room_updates_lock.lock().await; // Left rooms. - for (room_id, left_room_update) in updates.leave { + for (room_id, left_room_update) in updates.left { let room = self.for_room(&room_id).await?; if let Err(err) = @@ -550,7 +550,7 @@ impl EventCacheInner { } // Joined rooms. - for (room_id, joined_room_update) in updates.join { + for (room_id, joined_room_update) in updates.joined { let room = self.for_room(&room_id).await?; if let Err(err) = @@ -810,8 +810,8 @@ mod tests { }; let mut updates = RoomUpdates::default(); - updates.join.insert(room_id1.to_owned(), joined_room_update1); - updates.join.insert(room_id2.to_owned(), joined_room_update2); + updates.joined.insert(room_id1.to_owned(), joined_room_update1); + updates.joined.insert(room_id2.to_owned(), joined_room_update2); // Have the event cache handle them. event_cache.inner.handle_room_updates(updates).await.unwrap(); diff --git a/crates/matrix-sdk/src/sliding_sync/client.rs b/crates/matrix-sdk/src/sliding_sync/client.rs index e7200dd37..c184770a2 100644 --- a/crates/matrix-sdk/src/sliding_sync/client.rs +++ b/crates/matrix-sdk/src/sliding_sync/client.rs @@ -248,7 +248,7 @@ impl<'a> SlidingSyncResponseProcessor<'a> { /// /// This will only fill the in-memory caches, not save the info on disk. async fn update_in_memory_caches(client: &Client, response: &SyncResponse) -> Result<()> { - for room_id in response.rooms.join.keys() { + for room_id in response.rooms.joined.keys() { let Some(room) = client.get_room(room_id) else { error!(room_id = ?room_id, "Cannot post process a room in sliding sync because it is missing"); continue; diff --git a/crates/matrix-sdk/src/sliding_sync/mod.rs b/crates/matrix-sdk/src/sliding_sync/mod.rs index c1006d06e..e74ad81f8 100644 --- a/crates/matrix-sdk/src/sliding_sync/mod.rs +++ b/crates/matrix-sdk/src/sliding_sync/mod.rs @@ -321,14 +321,14 @@ impl SlidingSync { let updated_rooms = { let mut rooms_map = self.inner.rooms.write().await; - let mut updated_rooms = Vec::with_capacity(sync_response.rooms.join.len()); + let mut updated_rooms = Vec::with_capacity(sync_response.rooms.joined.len()); for (room_id, mut room_data) in sliding_sync_response.rooms.into_iter() { // `sync_response` contains the rooms with decrypted events if any, so look at // the timeline events here first if the room exists. // Otherwise, let's look at the timeline inside the `sliding_sync_response`. let timeline = - if let Some(joined_room) = sync_response.rooms.join.remove(&room_id) { + if let Some(joined_room) = sync_response.rooms.joined.remove(&room_id) { joined_room.timeline.events } else { room_data.timeline.drain(..).map(TimelineEvent::new).collect() @@ -363,7 +363,7 @@ impl SlidingSync { // Since we've removed rooms that were in the room subsection from // `sync_response.rooms.join`, the remaining ones aren't already present in // `updated_rooms` and wouldn't cause any duplicates. - updated_rooms.extend(sync_response.rooms.join.keys().cloned()); + updated_rooms.extend(sync_response.rooms.joined.keys().cloned()); updated_rooms }; diff --git a/crates/matrix-sdk/src/sync.rs b/crates/matrix-sdk/src/sync.rs index 61f54ccfe..2c97714b3 100644 --- a/crates/matrix-sdk/src/sync.rs +++ b/crates/matrix-sdk/src/sync.rs @@ -178,7 +178,7 @@ impl Client { // Ignore errors when there are no receivers. let _ = self.inner.room_updates_sender.send(rooms.clone()); - for (room_id, room_info) in &rooms.join { + for (room_id, room_info) in &rooms.joined { let Some(room) = self.get_room(room_id) else { error!(?room_id, "Can't call event handler, room not found"); continue; @@ -207,7 +207,7 @@ impl Client { self.handle_sync_events(HandlerKind::EphemeralRoomData, room, ephemeral).await?; } - for (room_id, room_info) in &rooms.leave { + for (room_id, room_info) in &rooms.left { let Some(room) = self.get_room(room_id) else { error!(?room_id, "Can't call event handler, room not found"); continue; @@ -226,7 +226,7 @@ impl Client { self.handle_sync_timeline_events(room, &timeline.events).await?; } - for (room_id, room_info) in &rooms.invite { + for (room_id, room_info) in &rooms.invited { let Some(room) = self.get_room(room_id) else { error!(?room_id, "Can't call event handler, room not found"); continue; diff --git a/crates/matrix-sdk/tests/integration/client.rs b/crates/matrix-sdk/tests/integration/client.rs index e58f0d9f7..91a967ed4 100644 --- a/crates/matrix-sdk/tests/integration/client.rs +++ b/crates/matrix-sdk/tests/integration/client.rs @@ -349,13 +349,13 @@ async fn test_subscribe_all_room_updates() { client.sync_once(sync_settings).await.unwrap(); let room_updates = rx.recv().now_or_never().unwrap().unwrap(); - assert_let!(RoomUpdates { leave, join, invite, knocked } = room_updates); + assert_let!(RoomUpdates { left, joined, invited, knocked } = room_updates); // Check the left room updates. { - assert_eq!(leave.len(), 1); + assert_eq!(left.len(), 1); - let (room_id, update) = leave.iter().next().unwrap(); + let (room_id, update) = left.iter().next().unwrap(); assert_eq!(room_id, *MIXED_LEFT_ROOM_ID); assert!(update.state.is_empty()); @@ -365,9 +365,9 @@ async fn test_subscribe_all_room_updates() { // Check the joined room updates. { - assert_eq!(join.len(), 1); + assert_eq!(joined.len(), 1); - let (room_id, update) = join.iter().next().unwrap(); + let (room_id, update) = joined.iter().next().unwrap(); assert_eq!(room_id, *MIXED_JOINED_ROOM_ID); @@ -385,9 +385,9 @@ async fn test_subscribe_all_room_updates() { // Check the invited room updates. { - assert_eq!(invite.len(), 1); + assert_eq!(invited.len(), 1); - let (room_id, update) = invite.iter().next().unwrap(); + let (room_id, update) = invited.iter().next().unwrap(); assert_eq!(room_id, *MIXED_INVITED_ROOM_ID); assert_eq!(update.invite_state.events.len(), 2); @@ -938,7 +938,7 @@ async fn test_test_ambiguity_changes() { let room = client.get_room(&DEFAULT_TEST_ROOM_ID).unwrap(); - let changes = &response.rooms.join.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; + let changes = &response.rooms.joined.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; // A new member always triggers an ambiguity change. let example_change = changes.get(event_id!("$151800140517rfvjc:localhost")).unwrap(); @@ -1009,7 +1009,7 @@ async fn test_test_ambiguity_changes() { let response = client.sync_once(SyncSettings::default()).await.unwrap(); server.reset().await; - let changes = &response.rooms.join.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; + let changes = &response.rooms.joined.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; // First joined member made both members ambiguous. let example_2_change = changes.get(example_2_rename_1_event_id).unwrap(); @@ -1068,7 +1068,7 @@ async fn test_test_ambiguity_changes() { let response = client.sync_once(SyncSettings::default()).await.unwrap(); server.reset().await; - let changes = &response.rooms.join.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; + let changes = &response.rooms.joined.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; // example 2 is not ambiguous anymore. let example_2_change = changes.get(example_2_rename_2_event_id).unwrap(); @@ -1114,7 +1114,7 @@ async fn test_test_ambiguity_changes() { let response = client.sync_once(SyncSettings::default()).await.unwrap(); server.reset().await; - let changes = &response.rooms.join.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; + let changes = &response.rooms.joined.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; // example 3 is now ambiguous with example 2, not example. let example_3_change = changes.get(example_3_rename_event_id).unwrap(); @@ -1160,7 +1160,7 @@ async fn test_test_ambiguity_changes() { let response = client.sync_once(SyncSettings::default()).await.unwrap(); server.reset().await; - let changes = &response.rooms.join.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; + let changes = &response.rooms.joined.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes; // name change, even if still not ambiguous, triggers ambiguity change. let example_change = changes.get(example_rename_event_id).unwrap(); @@ -1207,7 +1207,7 @@ async fn test_test_ambiguity_changes() { server.reset().await; // Avatar change does not trigger ambiguity change. - assert!(response.rooms.join.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes.is_empty()); + assert!(response.rooms.joined.get(*DEFAULT_TEST_ROOM_ID).unwrap().ambiguity_changes.is_empty()); let changes = assert_next_matches!(updates, Ok(RoomUpdate::Joined { updates, .. }) => updates.ambiguity_changes); assert!(changes.is_empty()); diff --git a/testing/matrix-sdk-integration-testing/src/tests/sliding_sync/notification_client.rs b/testing/matrix-sdk-integration-testing/src/tests/sliding_sync/notification_client.rs index a83555245..c036fd480 100644 --- a/testing/matrix-sdk-integration-testing/src/tests/sliding_sync/notification_client.rs +++ b/testing/matrix-sdk-integration-testing/src/tests/sliding_sync/notification_client.rs @@ -61,7 +61,7 @@ async fn test_notification() -> Result<()> { let bob_invite_response = bob.sync_once(Default::default()).await?; let sync_token = bob_invite_response.next_batch; - let mut invited_rooms = bob_invite_response.rooms.invite; + let mut invited_rooms = bob_invite_response.rooms.invited; assert_eq!(invited_rooms.len(), 1, "must be only one invitation"); @@ -145,7 +145,7 @@ async fn test_notification() -> Result<()> { // In this sync, Bob receives the message from Alice. let bob_response = bob.sync_once(SyncSettings::default().token(sync_token)).await?; - let mut joined_rooms = bob_response.rooms.join.into_iter(); + let mut joined_rooms = bob_response.rooms.joined.into_iter(); let (_, bob_room) = joined_rooms.next().expect("must have joined one room"); assert!(joined_rooms.next().is_none(), "no more joined rooms: {joined_rooms:#?}");