diff --git a/matrix_sdk_base/src/store/sled_store/mod.rs b/matrix_sdk_base/src/store/sled_store/mod.rs index 441f63c7..e03e8731 100644 --- a/matrix_sdk_base/src/store/sled_store/mod.rs +++ b/matrix_sdk_base/src/store/sled_store/mod.rs @@ -771,7 +771,10 @@ impl SledStore { } async fn set_custom_value(&self, key: &[u8], value: Vec) -> Result>> { - Ok(self.custom.insert(key, value)?.map(|v| v.to_vec())) + let ret = self.custom.insert(key, value)?.map(|v| v.to_vec()); + self.inner.flush_async().await?; + + Ok(ret) } async fn remove_media_content(&self, request: &MediaRequest) -> Result<()> { @@ -959,7 +962,7 @@ mod test { }; use serde_json::json; - use super::{SledStore, StateChanges}; + use super::{Result, SledStore, StateChanges}; use crate::{ deserialized_responses::MemberEvent, media::{MediaFormat, MediaRequest, MediaThumbnailSize, MediaType}, @@ -1175,4 +1178,19 @@ mod test { assert!(store.get_media_content(&request_file).await.unwrap().is_none()); assert!(store.get_media_content(&request_thumbnail).await.unwrap().is_none()); } + + #[async_test] + async fn test_custom_storage() -> Result<()> { + let key = "my_key"; + let value = &[0, 1, 2, 3]; + let store = SledStore::open().unwrap(); + + store.set_custom_value(key.as_bytes(), value.to_vec()).await?; + + let read = store.get_custom_value(key.as_bytes()).await?; + + assert_eq!(Some(value.as_ref()), read.as_deref()); + + Ok(()) + } }