kopia lustrzana https://github.com/meshtastic/Meshtastic-Android
refactor: improve `ConnectivityManager` extensions
rodzic
4a1a0dce76
commit
8709c6ba53
|
@ -6,18 +6,24 @@ import android.net.NetworkRequest
|
||||||
import kotlinx.coroutines.channels.awaitClose
|
import kotlinx.coroutines.channels.awaitClose
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.callbackFlow
|
import kotlinx.coroutines.flow.callbackFlow
|
||||||
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
|
import kotlinx.coroutines.flow.map
|
||||||
|
|
||||||
internal fun ConnectivityManager.networkAvailable(): Flow<Boolean> = callbackFlow {
|
internal fun ConnectivityManager.networkAvailable(): Flow<Boolean> =
|
||||||
|
allNetworks().map { it.isNotEmpty() }.distinctUntilChanged()
|
||||||
|
|
||||||
|
internal fun ConnectivityManager.allNetworks(
|
||||||
|
networkRequest: NetworkRequest = NetworkRequest.Builder().build(),
|
||||||
|
): Flow<Array<Network>> = callbackFlow {
|
||||||
val callback = object : ConnectivityManager.NetworkCallback() {
|
val callback = object : ConnectivityManager.NetworkCallback() {
|
||||||
override fun onAvailable(network: Network) {
|
override fun onAvailable(network: Network) {
|
||||||
trySend(allNetworks.isNotEmpty())
|
trySend(allNetworks)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onLost(network: Network) {
|
override fun onLost(network: Network) {
|
||||||
trySend(allNetworks.isNotEmpty())
|
trySend(allNetworks)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val networkRequest = NetworkRequest.Builder().build()
|
|
||||||
registerNetworkCallback(networkRequest, callback)
|
registerNetworkCallback(networkRequest, callback)
|
||||||
|
|
||||||
awaitClose { unregisterNetworkCallback(callback) }
|
awaitClose { unregisterNetworkCallback(callback) }
|
||||||
|
|
Ładowanie…
Reference in New Issue