From 8709c6ba53de2033fff4ab012b84b75a26e3ab12 Mon Sep 17 00:00:00 2001 From: andrekir Date: Sun, 28 Jan 2024 07:18:44 -0300 Subject: [PATCH] refactor: improve `ConnectivityManager` extensions --- .../mesh/repository/network/ConnectivityManager.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/repository/network/ConnectivityManager.kt b/app/src/main/java/com/geeksville/mesh/repository/network/ConnectivityManager.kt index 913ee8638..2d868333f 100644 --- a/app/src/main/java/com/geeksville/mesh/repository/network/ConnectivityManager.kt +++ b/app/src/main/java/com/geeksville/mesh/repository/network/ConnectivityManager.kt @@ -6,18 +6,24 @@ import android.net.NetworkRequest import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map -internal fun ConnectivityManager.networkAvailable(): Flow = callbackFlow { +internal fun ConnectivityManager.networkAvailable(): Flow = + allNetworks().map { it.isNotEmpty() }.distinctUntilChanged() + +internal fun ConnectivityManager.allNetworks( + networkRequest: NetworkRequest = NetworkRequest.Builder().build(), +): Flow> = callbackFlow { val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { - trySend(allNetworks.isNotEmpty()) + trySend(allNetworks) } override fun onLost(network: Network) { - trySend(allNetworks.isNotEmpty()) + trySend(allNetworks) } } - val networkRequest = NetworkRequest.Builder().build() registerNetworkCallback(networkRequest, callback) awaitClose { unregisterNetworkCallback(callback) }