From acf7e4655b1c4a6bd71a5d4fadb564ba0171569b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 19 Dec 2024 11:14:36 +0100 Subject: [PATCH 1/2] Always attempt to start the sync when starting the application. --- .../kotlin/io/element/android/appnav/LoggedInFlowNode.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 940e576a30..5d52e7780d 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -84,6 +84,7 @@ import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyn import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.flow.collectIndexed import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.launchIn @@ -196,9 +197,9 @@ class LoggedInFlowNode @AssistedInject constructor( ) { syncState, networkStatus -> Pair(syncState, networkStatus) } - .collect { (syncState, networkStatus) -> - Timber.d("Sync state: $syncState, network status: $networkStatus") - if (syncState != SyncState.Running && networkStatus == NetworkStatus.Online) { + .collectIndexed { index, (syncState, networkStatus) -> + Timber.d("Sync state: $syncState, network status: $networkStatus, index: $index") + if (syncState != SyncState.Running && (index == 0 || networkStatus == NetworkStatus.Online)) { syncService.startSync() } } From 4c63d892ac63275dd9393870136109ebe91c329c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 19 Dec 2024 13:44:19 +0100 Subject: [PATCH 2/2] Start sync faster --- .../io/element/android/appnav/LoggedInFlowNode.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 5d52e7780d..93fc8bd06e 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -84,11 +84,11 @@ import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyn import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.FlowPreview -import kotlinx.coroutines.flow.collectIndexed import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.launch import kotlinx.parcelize.Parcelize import timber.log.Timber @@ -197,9 +197,13 @@ class LoggedInFlowNode @AssistedInject constructor( ) { syncState, networkStatus -> Pair(syncState, networkStatus) } - .collectIndexed { index, (syncState, networkStatus) -> - Timber.d("Sync state: $syncState, network status: $networkStatus, index: $index") - if (syncState != SyncState.Running && (index == 0 || networkStatus == NetworkStatus.Online)) { + .onStart { + // Temporary fix to ensure that the sync is started even if the networkStatus is offline. + syncService.startSync() + } + .collect { (syncState, networkStatus) -> + Timber.d("Sync state: $syncState, network status: $networkStatus") + if (syncState != SyncState.Running && networkStatus == NetworkStatus.Online) { syncService.startSync() } }