commit 9bfc8b7a4e0cca3cfb052750385f2005c7bc31d7 parent 242bc31d9d6bdcdc4455255412a6a35cec27b5ab Author: Torsten Grote <t@grobox.de> Date: Tue, 19 Sep 2023 17:55:24 +0200 [wallet] some fixes for NetworkManager Diffstat:
| M | 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 @@ -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<Boolean> = _networkStatus + private val _networkStatus: MutableLiveData<Boolean> + val networkStatus: LiveData<Boolean> 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 {