SSS: Fix room names

This commit is contained in:
Lambda 2025-05-20 17:02:22 +00:00
parent 166a269034
commit a2bbfd1242

View file

@ -11,8 +11,9 @@ use std::{
use ruma::{ use ruma::{
api::client::{ api::client::{
sync::sync_events::{ sync::sync_events::{
self, v5::request::ListFilters, DeviceLists, self,
UnreadNotificationsCount, v5::{request::ListFilters, response::Hero},
DeviceLists, UnreadNotificationsCount,
}, },
uiaa::UiaaResponse, uiaa::UiaaResponse,
}, },
@ -933,8 +934,9 @@ fn process_room(
.collect() .collect()
}; };
// Heroes let name = services().rooms.state_accessor.get_name(room_id)?;
let heroes = services() let heroes = name.is_none().then(|| {
services()
.rooms .rooms
.state_cache .state_cache
.room_members(room_id) .room_members(room_id)
@ -947,41 +949,22 @@ fn process_room(
.get_member(room_id, &member) .get_member(room_id, &member)
.ok() .ok()
.flatten() .flatten()
.map(|memberevent| { .map(|memberevent| Hero {
( user_id: member,
memberevent name: memberevent.displayname,
.displayname avatar: memberevent.avatar_url,
.unwrap_or_else(|| member.to_string()),
memberevent.avatar_url,
)
}) })
}) })
.take(5) .take(5)
.collect::<Vec<_>>();
let name = match &*heroes {
[] => None,
[(only, _)] => Some(only.clone()),
[firsts @ .., (last, _)] => Some({
let firsts = firsts
.iter()
.map(|(name, _)| name.clone())
.collect::<Vec<_>>() .collect::<Vec<_>>()
.join(", "); });
format!("{firsts} and {last}")
}),
};
let room = sync_events::v5::response::Room { let room = sync_events::v5::response::Room {
name: services().rooms.state_accessor.get_name(room_id)?.or(name), name,
avatar: if let [(_name, Some(avatar))] = &*heroes { avatar: match services().rooms.state_accessor.get_avatar(room_id)? {
JsOption::Some(avatar.clone())
} else {
match services().rooms.state_accessor.get_avatar(room_id)? {
JsOption::Some(avatar) => JsOption::from_option(avatar.url), JsOption::Some(avatar) => JsOption::from_option(avatar.url),
JsOption::Null => JsOption::Null, JsOption::Null => JsOption::Null,
JsOption::Undefined => JsOption::Undefined, JsOption::Undefined => JsOption::Undefined,
}
}, },
initial: Some(todo_room.roomsince == 0), initial: Some(todo_room.roomsince == 0),
is_dm: None, is_dm: None,
@ -1028,8 +1011,7 @@ fn process_room(
num_live: None, num_live: None,
// TODO // TODO
bump_stamp: None, bump_stamp: None,
// TODO heroes,
heroes: None,
}; };
trace!(?room, "Built room data"); trace!(?room, "Built room data");