From b93eb0e31827b9fc3e4bea09176e16e1ac33e16f Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Tue, 9 Jun 2020 16:11:41 +0200 Subject: [PATCH] Make Room::member_display_name return MXID as fallback. If there is no display name set. This means the method can now always return something so there is no need to wrap in an `Option`. --- matrix_sdk_base/src/models/room.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/matrix_sdk_base/src/models/room.rs b/matrix_sdk_base/src/models/room.rs index 7fdedd76..7c2a0cf6 100644 --- a/matrix_sdk_base/src/models/room.rs +++ b/matrix_sdk_base/src/models/room.rs @@ -304,15 +304,17 @@ impl Room { /// Get the disambiguated display name for a member of this room. /// + /// If a user has no display name set, returns the MXID as a fallback. + /// /// When displaying a room member's display name, clients *must* use this method to obtain the /// name instead of displaying the `RoomMember::display_name` directly. This is because /// multiple users can share the same display name in which case the display name has to be /// disambiguated. - pub fn member_display_name<'a>(&'a self, id: &UserId) -> Option> { + pub fn member_display_name<'a>(&'a self, id: &'a UserId) -> Cow<'a, str> { self.disambiguated_display_names .get(id) .map(|s| s.as_str().into()) - .or_else(|| { + .unwrap_or_else(|| { self.members.get(id).map(|member| { member .display_name @@ -320,7 +322,7 @@ impl Room { .map(|s| s.to_string()) .unwrap_or_else(|| format!("{}", member.user_id)) .into() - }) + }).unwrap_or(id.as_ref().into()) }) } @@ -765,7 +767,7 @@ mod test { { let room = client.get_joined_room(&room_id).await.unwrap(); let room = room.read().await; - let display_name1 = room.member_display_name(&user_id1).unwrap(); + let display_name1 = room.member_display_name(&user_id1); assert_eq!("example", display_name1); } @@ -780,8 +782,8 @@ mod test { { let room = client.get_joined_room(&room_id).await.unwrap(); let room = room.read().await; - let display_name1 = room.member_display_name(&user_id1).unwrap(); - let display_name2 = room.member_display_name(&user_id2).unwrap(); + let display_name1 = room.member_display_name(&user_id1); + let display_name2 = room.member_display_name(&user_id2); assert_eq!(format!("example ({})", user_id1), display_name1); assert_eq!(format!("example ({})", user_id2), display_name2);