From 75a5c19f919abcae32f68e46e993685aa751b52e Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Fri, 12 Sep 2025 09:01:17 +0300 Subject: [PATCH] chore(spaces): have `SpaceRoom::new_from_known` work with a reference and reduce the number of clones required. --- crates/matrix-sdk-ui/src/spaces/mod.rs | 21 +++++++++----------- crates/matrix-sdk-ui/src/spaces/room.rs | 2 +- crates/matrix-sdk-ui/src/spaces/room_list.rs | 9 ++++++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/crates/matrix-sdk-ui/src/spaces/mod.rs b/crates/matrix-sdk-ui/src/spaces/mod.rs index f7e661bad..d6d43db64 100644 --- a/crates/matrix-sdk-ui/src/spaces/mod.rs +++ b/crates/matrix-sdk-ui/src/spaces/mod.rs @@ -236,10 +236,7 @@ impl SpaceService { let room_id = room.room_id(); if root_nodes.contains(&room_id) { - Some(SpaceRoom::new_from_known( - room.clone(), - graph.children_of(room_id).len() as u64, - )) + Some(SpaceRoom::new_from_known(room, graph.children_of(room_id).len() as u64)) } else { None } @@ -408,12 +405,12 @@ mod tests { assert_eq!( initial_values, - vec![SpaceRoom::new_from_known(client.get_room(first_space_id).unwrap(), 0)].into() + vec![SpaceRoom::new_from_known(&client.get_room(first_space_id).unwrap(), 0)].into() ); assert_eq!( space_service.joined_spaces().await, - vec![SpaceRoom::new_from_known(client.get_room(first_space_id).unwrap(), 0)] + vec![SpaceRoom::new_from_known(&client.get_room(first_space_id).unwrap(), 0)] ); // And the stream is still pending as the initial values were @@ -442,8 +439,8 @@ mod tests { assert_eq!( space_service.joined_spaces().await, vec![ - SpaceRoom::new_from_known(client.get_room(first_space_id).unwrap(), 0), - SpaceRoom::new_from_known(client.get_room(second_space_id).unwrap(), 1) + SpaceRoom::new_from_known(&client.get_room(first_space_id).unwrap(), 0), + SpaceRoom::new_from_known(&client.get_room(second_space_id).unwrap(), 1) ] ); @@ -453,8 +450,8 @@ mod tests { VectorDiff::Clear, VectorDiff::Append { values: vec![ - SpaceRoom::new_from_known(client.get_room(first_space_id).unwrap(), 0), - SpaceRoom::new_from_known(client.get_room(second_space_id).unwrap(), 1) + SpaceRoom::new_from_known(&client.get_room(first_space_id).unwrap(), 0), + SpaceRoom::new_from_known(&client.get_room(second_space_id).unwrap(), 1) ] .into() }, @@ -470,7 +467,7 @@ mod tests { VectorDiff::Clear, VectorDiff::Append { values: vec![SpaceRoom::new_from_known( - client.get_room(first_space_id).unwrap(), + &client.get_room(first_space_id).unwrap(), 0 )] .into() @@ -491,7 +488,7 @@ mod tests { assert_pending!(joined_spaces_subscriber); assert_eq!( space_service.joined_spaces().await, - vec![SpaceRoom::new_from_known(client.get_room(first_space_id).unwrap(), 0)] + vec![SpaceRoom::new_from_known(&client.get_room(first_space_id).unwrap(), 0)] ); } } diff --git a/crates/matrix-sdk-ui/src/spaces/room.rs b/crates/matrix-sdk-ui/src/spaces/room.rs index 74e797195..e76f613f1 100644 --- a/crates/matrix-sdk-ui/src/spaces/room.rs +++ b/crates/matrix-sdk-ui/src/spaces/room.rs @@ -84,7 +84,7 @@ impl SpaceRoom { } /// Build a `SpaceRoom` from a room already known to this client. - pub(crate) fn new_from_known(known_room: Room, children_count: u64) -> Self { + pub(crate) fn new_from_known(known_room: &Room, children_count: u64) -> Self { let room_info = known_room.clone_info(); Self { diff --git a/crates/matrix-sdk-ui/src/spaces/room_list.rs b/crates/matrix-sdk-ui/src/spaces/room_list.rs index 6a6612c23..e2c844f8f 100644 --- a/crates/matrix-sdk-ui/src/spaces/room_list.rs +++ b/crates/matrix-sdk-ui/src/spaces/room_list.rs @@ -142,11 +142,14 @@ impl SpaceRoomList { .clone() .iter() .find_position(|room| &room.room_id == updated_room_id) - && let Some(update_room) = client.get_room(updated_room_id) + && let Some(updated_room) = client.get_room(updated_room_id) { mutable_rooms.set( position, - SpaceRoom::new_from_known(update_room, room.children_count), + SpaceRoom::new_from_known( + &updated_room, + room.children_count, + ), ); } }) @@ -165,7 +168,7 @@ impl SpaceRoomList { .await .map_or(0, |c| c.len() as u64); - Some(SpaceRoom::new_from_known(parent, children_count)) + Some(SpaceRoom::new_from_known(&parent, children_count)) } else { None };