remove unnecessary loop/allocations in /joined_members

Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
strawberry 2024-08-30 19:52:55 -04:00
parent d68b71a0aa
commit 4797183b43

View file

@ -20,7 +20,8 @@ use ruma::{
error::ErrorKind, error::ErrorKind,
membership::{ membership::{
ban_user, forget_room, get_member_events, invite_user, join_room_by_id, join_room_by_id_or_alias, ban_user, forget_room, get_member_events, invite_user, join_room_by_id, join_room_by_id_or_alias,
joined_members, joined_rooms, kick_user, leave_room, unban_user, ThirdPartySigned, joined_members::{self, v3::RoomMember},
joined_rooms, kick_user, leave_room, unban_user, ThirdPartySigned,
}, },
}, },
federation::{self, membership::create_invite}, federation::{self, membership::create_invite},
@ -635,24 +636,22 @@ pub(crate) async fn joined_members_route(
)); ));
} }
let mut joined = BTreeMap::new(); let joined: BTreeMap<OwnedUserId, RoomMember> = services
for user_id in services
.rooms .rooms
.state_cache .state_cache
.room_members(&body.room_id) .room_members(&body.room_id)
.filter_map(Result::ok) .filter_map(|user| {
{ let user = user.ok()?;
let display_name = services.users.displayname(&user_id)?;
let avatar_url = services.users.avatar_url(&user_id)?;
joined.insert( Some((
user_id, user.clone(),
joined_members::v3::RoomMember { RoomMember {
display_name, display_name: services.users.displayname(&user).unwrap_or_default(),
avatar_url, avatar_url: services.users.avatar_url(&user).unwrap_or_default(),
}, },
); ))
} })
.collect();
Ok(joined_members::v3::Response { Ok(joined_members::v3::Response {
joined, joined,