From 9bfc8b7a4e0cca3cfb052750385f2005c7bc31d7 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 19 Sep 2023 17:55:24 +0200 Subject: [wallet] some fixes for NetworkManager --- wallet/src/main/java/net/taler/wallet/NetworkManager.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/wallet/src/main/java/net/taler/wallet/NetworkManager.kt b/wallet/src/main/java/net/taler/wallet/NetworkManager.kt index 7d803fc..064135b 100644 --- a/wallet/src/main/java/net/taler/wallet/NetworkManager.kt +++ b/wallet/src/main/java/net/taler/wallet/NetworkManager.kt @@ -30,12 +30,14 @@ import androidx.lifecycle.MutableLiveData class NetworkManager(context: Context) : ConnectivityManager.NetworkCallback() { private val connectivityManager: ConnectivityManager - private val _networkStatus = MutableLiveData(true) - val networkStatus: LiveData = _networkStatus + private val _networkStatus: MutableLiveData + val networkStatus: LiveData init { connectivityManager = context.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager connectivityManager.registerDefaultNetworkCallback(this) + _networkStatus = MutableLiveData(getCurrentStatus()) + networkStatus = _networkStatus } @UiThread @@ -46,7 +48,13 @@ class NetworkManager(context: Context) : ConnectivityManager.NetworkCallback() { override fun onLost(network: Network) { super.onLost(network) - _networkStatus.postValue(null) + _networkStatus.postValue(getCurrentStatus()) + } + + private fun getCurrentStatus(): Boolean { + return connectivityManager.activeNetwork?.let { network -> + connectivityManager.getNetworkCapabilities(network)?.isOnline() + } ?: false } private fun NetworkCapabilities.isOnline(): Boolean { -- cgit v1.2.3