client: add store_room_state method
parent
9d09d19101
commit
0d0d8fca2d
|
@ -394,6 +394,17 @@ impl Client {
|
||||||
Ok(self.base_client.sync_with_state_store().await?)
|
Ok(self.base_client.sync_with_state_store().await?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// This allows `AsyncClient` to manually store `Room`
|
||||||
|
/// state with the provided `StateStore`.
|
||||||
|
///
|
||||||
|
/// Returns Ok when a successful `Room` store occurs.
|
||||||
|
pub async fn store_room_state(&self, room_id: &RoomId) -> Result<()> {
|
||||||
|
self.base_client
|
||||||
|
.store_room_state(room_id)
|
||||||
|
.await
|
||||||
|
.map_err(Into::into)
|
||||||
|
}
|
||||||
|
|
||||||
/// Login to the server.
|
/// Login to the server.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
|
|
@ -241,6 +241,19 @@ impl Client {
|
||||||
Ok(!self.needs_state_store_sync.load(Ordering::Relaxed))
|
Ok(!self.needs_state_store_sync.load(Ordering::Relaxed))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// When a client is provided the state store will load state from the `StateStore`.
|
||||||
|
///
|
||||||
|
/// Returns `true` when a state store sync has successfully completed.
|
||||||
|
pub async fn store_room_state(&self, room_id: &RoomId) -> Result<()> {
|
||||||
|
if let Some(store) = self.state_store.read().await.as_ref() {
|
||||||
|
if let Some(room) = self.get_joined_room(room_id).await {
|
||||||
|
let room = room.read().await;
|
||||||
|
store.store_room_state(room.deref()).await?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
/// Receive a login response and update the session of the client.
|
/// Receive a login response and update the session of the client.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
|
@ -619,7 +632,7 @@ impl Client {
|
||||||
// TODO do we want to move the rooms to the appropriate HashMaps when the corresponding
|
// TODO do we want to move the rooms to the appropriate HashMaps when the corresponding
|
||||||
// event comes in e.g. move a joined room to a left room when leave event comes?
|
// event comes in e.g. move a joined room to a left room when leave event comes?
|
||||||
|
|
||||||
// when events change state, updated signals to StateStore to update database
|
// when events change state, updated_* signals to StateStore to update database
|
||||||
let updated_joined = self.iter_joined_rooms(response).await?;
|
let updated_joined = self.iter_joined_rooms(response).await?;
|
||||||
let updated_invited = self.iter_invited_rooms(&response).await?;
|
let updated_invited = self.iter_invited_rooms(&response).await?;
|
||||||
let updated_left = self.iter_left_rooms(response).await?;
|
let updated_left = self.iter_left_rooms(response).await?;
|
||||||
|
|
Loading…
Reference in New Issue