kopia lustrzana https://github.com/meshtastic/Meshtastic-Android
refactor: extract `ConnectivityManager` methods
rodzic
297a97738d
commit
f5dff210b0
|
@ -0,0 +1,24 @@
|
|||
package com.geeksville.mesh.repository.network
|
||||
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.Network
|
||||
import android.net.NetworkRequest
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.callbackFlow
|
||||
|
||||
internal fun ConnectivityManager.networkAvailable(): Flow<Boolean> = callbackFlow {
|
||||
val callback = object : ConnectivityManager.NetworkCallback() {
|
||||
override fun onAvailable(network: Network) {
|
||||
trySend(allNetworks.isNotEmpty())
|
||||
}
|
||||
|
||||
override fun onLost(network: Network) {
|
||||
trySend(allNetworks.isNotEmpty())
|
||||
}
|
||||
}
|
||||
val networkRequest = NetworkRequest.Builder().build()
|
||||
registerNetworkCallback(networkRequest, callback)
|
||||
|
||||
awaitClose { unregisterNetworkCallback(callback) }
|
||||
}
|
|
@ -1,19 +1,14 @@
|
|||
package com.geeksville.mesh.repository.network
|
||||
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.Network
|
||||
import android.net.NetworkRequest
|
||||
import android.net.nsd.NsdManager
|
||||
import android.net.nsd.NsdServiceInfo
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.coroutineScope
|
||||
import com.geeksville.mesh.android.Logging
|
||||
import com.geeksville.mesh.CoroutineDispatchers
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.callbackFlow
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
@ -27,23 +22,7 @@ class NetworkRepository @Inject constructor(
|
|||
private val connectivityManager: dagger.Lazy<ConnectivityManager>,
|
||||
) : Logging {
|
||||
|
||||
private val availableNetworks: HashSet<Network> = HashSet()
|
||||
val networkAvailable: Flow<Boolean> = callbackFlow {
|
||||
val callback = object : ConnectivityManager.NetworkCallback() {
|
||||
override fun onAvailable(network: Network) {
|
||||
availableNetworks.add(network)
|
||||
trySend(availableNetworks.isNotEmpty())
|
||||
}
|
||||
|
||||
override fun onLost(network: Network) {
|
||||
availableNetworks.remove(network)
|
||||
trySend(availableNetworks.isNotEmpty())
|
||||
}
|
||||
}
|
||||
val networkRequest = NetworkRequest.Builder().build()
|
||||
connectivityManager.get().registerNetworkCallback(networkRequest, callback)
|
||||
awaitClose { connectivityManager.get().unregisterNetworkCallback(callback) }
|
||||
}
|
||||
val networkAvailable get() = connectivityManager.get().networkAvailable()
|
||||
|
||||
private val _resolvedList = MutableStateFlow<List<NsdServiceInfo>>(emptyList())
|
||||
val resolvedList: StateFlow<List<NsdServiceInfo>> get() = _resolvedList
|
||||
|
|
Ładowanie…
Reference in New Issue