mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
refactor: improve ConnectivityManager extensions
This commit is contained in:
parent
4a1a0dce76
commit
8709c6ba53
1 changed files with 10 additions and 4 deletions
|
|
@ -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) }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue