From 33ba517fe0bdb2e92ae1595b8b3c7393bc08c007 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 c4fd20faf4cf7c19ce381e85cbb9b6e78e8705f2 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() } }