Handle sync failure after successful password entry (#133)

This commit is contained in:
Ulyssa 2023-07-07 22:35:33 -07:00
parent 7b050f82aa
commit bb30cecc63
No known key found for this signature in database
GPG key ID: F2873CA2997B83C5
2 changed files with 24 additions and 20 deletions

View file

@ -17,7 +17,13 @@ use clap::Parser;
use tokio::sync::Mutex as AsyncMutex; use tokio::sync::Mutex as AsyncMutex;
use tracing_subscriber::FmtSubscriber; use tracing_subscriber::FmtSubscriber;
use matrix_sdk::ruma::OwnedUserId; use matrix_sdk::{
config::SyncSettings,
ruma::{
api::client::filter::{FilterDefinition, LazyLoadOptions, RoomEventFilter, RoomFilter},
OwnedUserId,
},
};
use modalkit::crossterm::{ use modalkit::crossterm::{
self, self,
@ -644,6 +650,20 @@ async fn login(worker: Requester, settings: &ApplicationSettings) -> IambResult<
} }
} }
// Perform an initial, lazily-loaded sync.
let mut room = RoomEventFilter::default();
room.lazy_load_options = LazyLoadOptions::Enabled { include_redundant_members: false };
let mut room_ev = RoomFilter::default();
room_ev.state = room;
let mut filter = FilterDefinition::default();
filter.room = room_ev;
let settings = SyncSettings::new().filter(filter.into());
worker.client.sync_once(settings).await.map_err(IambError::from)?;
Ok(()) Ok(())
} }

View file

@ -22,7 +22,6 @@ use matrix_sdk::{
room::{Invited, Messages, MessagesOptions, Room as MatrixRoom, RoomMember}, room::{Invited, Messages, MessagesOptions, Room as MatrixRoom, RoomMember},
ruma::{ ruma::{
api::client::{ api::client::{
filter::{FilterDefinition, LazyLoadOptions, RoomEventFilter, RoomFilter},
room::create_room::v3::{CreationContent, Request as CreateRoomRequest, RoomPreset}, room::create_room::v3::{CreationContent, Request as CreateRoomRequest, RoomPreset},
room::Visibility, room::Visibility,
space::get_hierarchy::v1::Request as SpaceHierarchyRequest, space::get_hierarchy::v1::Request as SpaceHierarchyRequest,
@ -1020,29 +1019,14 @@ impl ClientWorker {
}, },
} }
let handle = tokio::spawn(async move { self.sync_handle = tokio::spawn(async move {
loop { loop {
let settings = SyncSettings::default(); let settings = SyncSettings::default();
let _ = client.sync(settings).await; let _ = client.sync(settings).await;
} }
}); })
.into();
self.sync_handle = Some(handle);
// Perform an initial, lazily-loaded sync.
let mut room = RoomEventFilter::default();
room.lazy_load_options = LazyLoadOptions::Enabled { include_redundant_members: false };
let mut room_ev = RoomFilter::default();
room_ev.state = room;
let mut filter = FilterDefinition::default();
filter.room = room_ev;
let settings = SyncSettings::new().filter(filter.into());
self.client.sync_once(settings).await.map_err(IambError::from)?;
Ok(Some(InfoMessage::from("Successfully logged in!"))) Ok(Some(InfoMessage::from("Successfully logged in!")))
} }