base: Always store the new sync token, even if nothing changed in the rooms.
parent
993dc8264a
commit
8a401d23e2
|
@ -647,6 +647,10 @@ impl BaseClient {
|
||||||
let mut olm = self.olm.lock().await;
|
let mut olm = self.olm.lock().await;
|
||||||
|
|
||||||
if let Some(o) = &mut *olm {
|
if let Some(o) = &mut *olm {
|
||||||
|
// Let the crypto machine handle the sync response, this
|
||||||
|
// decryptes to-device events, but leaves room events alone.
|
||||||
|
// This makes sure that we have the deryption keys for the room
|
||||||
|
// events at hand.
|
||||||
o.receive_sync_response(response).await;
|
o.receive_sync_response(response).await;
|
||||||
|
|
||||||
// TODO once the base client deals with callbacks move this into the
|
// TODO once the base client deals with callbacks move this into the
|
||||||
|
@ -667,18 +671,20 @@ impl BaseClient {
|
||||||
// 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?;
|
self.iter_joined_rooms(response).await?;
|
||||||
let updated_invited = self.iter_invited_rooms(&response).await?;
|
self.iter_invited_rooms(&response).await?;
|
||||||
let updated_left = self.iter_left_rooms(response).await?;
|
self.iter_left_rooms(response).await?;
|
||||||
|
|
||||||
if updated_joined || updated_invited || updated_left {
|
let store = self.state_store.read().await;
|
||||||
let store = self.state_store.read().await;
|
|
||||||
|
|
||||||
if let Some(store) = store.as_ref() {
|
// Store now the new sync token an other client specific state. Since we
|
||||||
let state = ClientState::from_base_client(&self).await;
|
// know the sync token changed we can assume that this needs to be done
|
||||||
store.store_client_state(state).await?;
|
// always.
|
||||||
}
|
if let Some(store) = store.as_ref() {
|
||||||
|
let state = ClientState::from_base_client(&self).await;
|
||||||
|
store.store_client_state(state).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue