From 30d7fac92720571ae752de7dc64951a322ac26be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Thu, 23 Jan 2025 12:44:28 +0100 Subject: [PATCH] refactor(ui): Remove some unneeded references from the SyncServiceInner --- crates/matrix-sdk-ui/src/sync_service.rs | 43 +++++++++++++++--------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/crates/matrix-sdk-ui/src/sync_service.rs b/crates/matrix-sdk-ui/src/sync_service.rs index 4c7d6a29b..e54c3eee7 100644 --- a/crates/matrix-sdk-ui/src/sync_service.rs +++ b/crates/matrix-sdk-ui/src/sync_service.rs @@ -77,13 +77,23 @@ struct SyncTaskSupervisor { } impl SyncTaskSupervisor { - async fn new(inner: &SyncServiceInner) -> Self { + async fn new( + inner: &SyncServiceInner, + room_list_service: Arc, + encryption_sync_permit: Arc>, + ) -> Self { let (sender, receiver) = tokio::sync::mpsc::channel(16); - let (room_list_task, encryption_sync_task) = - Self::spawn_child_tasks(inner, sender.clone()).await; + let (room_list_task, encryption_sync_task) = Self::spawn_child_tasks( + inner, + room_list_service.clone(), + encryption_sync_permit, + sender.clone(), + ) + .await; let task = spawn(Self::spawn_supervisor_task( inner, + room_list_service, room_list_task, encryption_sync_task, receiver, @@ -98,12 +108,12 @@ impl SyncTaskSupervisor { /// other one too). fn spawn_supervisor_task( inner: &SyncServiceInner, + room_list_service: Arc, room_list_task: JoinHandle<()>, encryption_sync_task: JoinHandle<()>, mut receiver: Receiver, ) -> impl Future { let encryption_sync = inner.encryption_sync_service.clone(); - let room_list_service = inner.room_list_service.clone(); let state = inner.state.clone(); async move { @@ -168,14 +178,15 @@ impl SyncTaskSupervisor { async fn spawn_child_tasks( inner: &SyncServiceInner, + room_list_service: Arc, + encryption_sync_permit: Arc>, sender: Sender, ) -> (JoinHandle<()>, JoinHandle<()>) { // First, take care of the room list. - let room_list_task = - spawn(Self::room_list_sync_task(inner.room_list_service.clone(), sender.clone())); + let room_list_task = spawn(Self::room_list_sync_task(room_list_service, sender.clone())); // Then, take care of the encryption sync. - let sync_permit_guard = inner.encryption_sync_permit.clone().lock_owned().await; + let sync_permit_guard = encryption_sync_permit.clone().lock_owned().await; let encryption_sync_task = spawn(Self::encryption_sync_task( inner.encryption_sync_service.clone(), sender.clone(), @@ -308,10 +319,8 @@ impl SyncTaskSupervisor { } struct SyncServiceInner { - room_list_service: Arc, encryption_sync_service: Arc, state: SharedObservable, - encryption_sync_permit: Arc>, /// Supervisor task ensuring proper termination. /// /// This task is waiting for a [`TerminationReport`] from any of the other @@ -423,7 +432,14 @@ impl SyncService { State::Idle | State::Terminated | State::Error => { trace!("starting sync service"); - inner.supervisor = Some(SyncTaskSupervisor::new(&inner).await); + inner.supervisor = Some( + SyncTaskSupervisor::new( + &inner, + self.room_list_service.clone(), + self.encryption_sync_permit.clone(), + ) + .await, + ); inner.state.set(State::Running); } } @@ -557,15 +573,12 @@ impl SyncServiceBuilder { Ok(SyncService { state: state.clone(), - room_list_service: room_list_service.clone(), - encryption_sync_permit: encryption_sync_permit.clone(), - + room_list_service, + encryption_sync_permit, inner: Arc::new(AsyncMutex::new(SyncServiceInner { supervisor: None, - room_list_service, encryption_sync_service: encryption_sync, state, - encryption_sync_permit, })), }) }