From bb30cecc63dbf96db785ffdcf30ed12e59b33b60 Mon Sep 17 00:00:00 2001 From: Ulyssa Date: Fri, 7 Jul 2023 22:35:33 -0700 Subject: [PATCH] Handle sync failure after successful password entry (#133) --- src/main.rs | 22 +++++++++++++++++++++- src/worker.rs | 22 +++------------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index 762209c..f0ff5df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,7 +17,13 @@ use clap::Parser; use tokio::sync::Mutex as AsyncMutex; 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::{ 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(()) } diff --git a/src/worker.rs b/src/worker.rs index 6cd13d4..2141d15 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -22,7 +22,6 @@ use matrix_sdk::{ room::{Invited, Messages, MessagesOptions, Room as MatrixRoom, RoomMember}, ruma::{ api::client::{ - filter::{FilterDefinition, LazyLoadOptions, RoomEventFilter, RoomFilter}, room::create_room::v3::{CreationContent, Request as CreateRoomRequest, RoomPreset}, room::Visibility, 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 { let settings = SyncSettings::default(); let _ = client.sync(settings).await; } - }); - - 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)?; + }) + .into(); Ok(Some(InfoMessage::from("Successfully logged in!"))) }