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.flow.Flow
|
||||
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() {
|
||||
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) }
|
||||
|
|
Ładowanie…
Reference in New Issue