From 442103a37ede6f5f130de0dbf3e66fbd5596b09f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Wed, 27 Jan 2021 11:55:50 +0100 Subject: [PATCH] base: Store the display names in the memory store as well --- matrix_sdk_base/src/store/memory_store.rs | 24 +++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/matrix_sdk_base/src/store/memory_store.rs b/matrix_sdk_base/src/store/memory_store.rs index 2653eb55..9edd49c6 100644 --- a/matrix_sdk_base/src/store/memory_store.rs +++ b/matrix_sdk_base/src/store/memory_store.rs @@ -42,6 +42,7 @@ pub struct MemoryStore { account_data: Arc>, members: Arc>>, profiles: Arc>>, + display_names: Arc>>>, joined_user_ids: Arc>>, invited_user_ids: Arc>>, room_info: Arc>, @@ -64,6 +65,7 @@ impl MemoryStore { account_data: DashMap::new().into(), members: DashMap::new().into(), profiles: DashMap::new().into(), + display_names: DashMap::new().into(), joined_user_ids: DashMap::new().into(), invited_user_ids: DashMap::new().into(), room_info: DashMap::new().into(), @@ -149,6 +151,15 @@ impl MemoryStore { } } + for (room, map) in &changes.ambiguity_maps { + for (display_name, display_names) in map { + self.display_names + .entry(room.clone()) + .or_insert_with(DashMap::new) + .insert(display_name.clone(), display_names.clone()); + } + } + for (event_type, event) in &changes.account_data { self.account_data .insert(event_type.to_string(), event.clone()); @@ -349,7 +360,16 @@ impl StateStore for MemoryStore { Ok(self.get_stripped_room_infos()) } - async fn get_users_with_display_name(&self, _: &RoomId, _: &str) -> Result> { - Ok(BTreeSet::new()) + async fn get_users_with_display_name( + &self, + room_id: &RoomId, + display_name: &str, + ) -> Result> { + #[allow(clippy::map_clone)] + Ok(self + .display_names + .get(room_id) + .and_then(|d| d.get(display_name).map(|d| d.clone())) + .unwrap_or_default()) } }