From e04bf31faa60c67505cb885c65bd17bc003c2a9c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 20 Sep 2019 18:18:55 +0200 Subject: [PATCH] Fix wrong "no network" banner --- .../internal/network/NetworkConnectivityChecker.kt | 14 +++++++++++++- .../internal/session/sync/job/SyncThread.kt | 3 +-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkConnectivityChecker.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkConnectivityChecker.kt index 88229db325..be012dd308 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkConnectivityChecker.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkConnectivityChecker.kt @@ -20,6 +20,7 @@ import android.content.Context import com.novoda.merlin.Merlin import com.novoda.merlin.MerlinsBeard import im.vector.matrix.android.internal.di.MatrixScope +import im.vector.matrix.android.internal.util.BackgroundDetectionObserver import timber.log.Timber import java.util.* import javax.inject.Inject @@ -27,7 +28,9 @@ import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @MatrixScope -internal class NetworkConnectivityChecker @Inject constructor(context: Context) { +internal class NetworkConnectivityChecker @Inject constructor(context: Context, + backgroundDetectionObserver: BackgroundDetectionObserver) + : BackgroundDetectionObserver.Listener { private val merlin = Merlin.Builder() .withConnectableCallbacks() @@ -41,7 +44,12 @@ internal class NetworkConnectivityChecker @Inject constructor(context: Context) private set init { + backgroundDetectionObserver.register(this) + } + + override fun onMoveToForeground() { merlin.bind() + merlin.registerDisconnectable { if (hasInternetAccess) { Timber.v("On Disconnect") @@ -64,6 +72,10 @@ internal class NetworkConnectivityChecker @Inject constructor(context: Context) } } + override fun onMoveToBackground() { + merlin.unbind() + } + suspend fun waitUntilConnected() { if (hasInternetAccess) { return diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/job/SyncThread.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/job/SyncThread.kt index 1cb6575161..f0b33809a1 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/job/SyncThread.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/sync/job/SyncThread.kt @@ -30,7 +30,6 @@ import im.vector.matrix.android.internal.task.TaskExecutor import im.vector.matrix.android.internal.task.TaskThread import im.vector.matrix.android.internal.task.configureWith import im.vector.matrix.android.internal.util.BackgroundDetectionObserver -import kotlinx.coroutines.CancellationException import timber.log.Timber import java.net.SocketTimeoutException import java.util.concurrent.CountDownLatch @@ -140,7 +139,7 @@ internal class SyncThread @Inject constructor(private val syncTask: SyncTask, if (failure is Failure.NetworkConnection && failure.cause is SocketTimeoutException) { // Timeout are not critical Timber.v("Timeout") - } else if (failure is Failure.Unknown && failure.throwable is CancellationException) { + } else if (failure is Failure.Cancelled) { Timber.v("Cancelled") } else if (failure is Failure.ServerError && (failure.error.code == MatrixError.UNKNOWN_TOKEN || failure.error.code == MatrixError.MISSING_TOKEN)) {