chore(spaces): have SpaceRoom::new_from_known work with a reference and reduce the number of clones required.

This commit is contained in:
Stefan Ceriu
2025-09-12 09:01:17 +03:00
committed by Stefan Ceriu
parent 7a53615d80
commit 75a5c19f91
3 changed files with 16 additions and 16 deletions

View File

@@ -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)]
);
}
}

View File

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

View File

@@ -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
};