taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

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:
Mwallet/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 {