diff --git a/crates/matrix-sdk-crypto/src/store/memorystore.rs b/crates/matrix-sdk-crypto/src/store/memorystore.rs index 8d7cdbb01..f75b2155f 100644 --- a/crates/matrix-sdk-crypto/src/store/memorystore.rs +++ b/crates/matrix-sdk-crypto/src/store/memorystore.rs @@ -25,7 +25,6 @@ use ruma::{ OwnedUserId, RoomId, TransactionId, UserId, }; use tokio::sync::{Mutex, RwLock}; -use tracing::warn; use super::{ caches::{DeviceStore, GroupSessionStore, SessionStore}, @@ -66,6 +65,7 @@ pub struct MemoryStore { secret_inbox: StdRwLock>>, backup_keys: RwLock, next_batch_token: RwLock>, + room_settings: StdRwLock>, } impl Default for MemoryStore { @@ -85,6 +85,7 @@ impl Default for MemoryStore { backup_keys: Default::default(), secret_inbox: Default::default(), next_batch_token: Default::default(), + room_settings: Default::default(), } } } @@ -213,6 +214,11 @@ impl CryptoStore for MemoryStore { *self.next_batch_token.write().await = Some(next_batch_token); } + if !changes.room_settings.is_empty() { + let mut settings = self.room_settings.write().unwrap(); + settings.extend(changes.room_settings); + } + Ok(()) } @@ -393,9 +399,8 @@ impl CryptoStore for MemoryStore { Ok(()) } - async fn get_room_settings(&self, _room_id: &RoomId) -> Result> { - warn!("Method not implemented"); - Ok(None) + async fn get_room_settings(&self, room_id: &RoomId) -> Result> { + Ok(self.room_settings.read().unwrap().get(room_id).cloned()) } async fn get_custom_value(&self, key: &str) -> Result>> {