mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-06-14 03:14:22 -04:00
chore(spaces): have SpaceRoom::new_from_known work with a reference and reduce the number of clones required.
This commit is contained in:
committed by
Stefan Ceriu
parent
7a53615d80
commit
75a5c19f91
@@ -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)]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user