From 58683585cc494b2d2f596b44d76c0df1fc323c61 Mon Sep 17 00:00:00 2001 From: timokoesters Date: Mon, 25 May 2020 20:10:46 +0200 Subject: [PATCH] improvement: show more info in public rooms list --- src/client_server.rs | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/client_server.rs b/src/client_server.rs index 5641f01..cf858b4 100644 --- a/src/client_server.rs +++ b/src/client_server.rs @@ -1404,7 +1404,15 @@ pub async fn get_public_rooms_filtered_route( directory::PublicRoomsChunk { aliases: Vec::new(), - canonical_alias: None, + canonical_alias: state.get(&(EventType::RoomCanonicalAlias, "".to_owned())).and_then(|s| { + serde_json::from_value::< + EventJson, + >(s.content.clone()) + .unwrap() + .deserialize() + .unwrap() + .alias + }).map(|a| a.to_string()), name: state.get(&(EventType::RoomName, "".to_owned())).map(|s| { serde_json::from_value::>( s.content.clone(), @@ -1427,9 +1435,33 @@ pub async fn get_public_rooms_filtered_route( .unwrap() .topic }), - world_readable: false, - guest_can_join: true, - avatar_url: None, + world_readable: state.get(&(EventType::RoomHistoryVisibility, "".to_owned())).map_or(false, |s| { + serde_json::from_value::< + EventJson, + >(s.content.clone()) + .unwrap() + .deserialize() + .unwrap() + .history_visibility == history_visibility::HistoryVisibility::WorldReadable + }), + guest_can_join: state.get(&(EventType::RoomGuestAccess, "".to_owned())).map_or(false, |s| { + serde_json::from_value::< + EventJson, + >(s.content.clone()) + .unwrap() + .deserialize() + .unwrap() + .guest_access == guest_access::GuestAccess::CanJoin + }), + avatar_url: state.get(&(EventType::RoomAvatar, "".to_owned())).map(|s| { + serde_json::from_value::< + EventJson, + >(s.content.clone()) + .unwrap() + .deserialize() + .unwrap() + .url + }), } }) .collect::>();