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
|
package com.geeksville.mesh.repository.network
|
||||||
|
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
import android.net.Network
|
|
||||||
import android.net.NetworkRequest
|
|
||||||
import android.net.nsd.NsdManager
|
import android.net.nsd.NsdManager
|
||||||
import android.net.nsd.NsdServiceInfo
|
import android.net.nsd.NsdServiceInfo
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.coroutineScope
|
import androidx.lifecycle.coroutineScope
|
||||||
import com.geeksville.mesh.android.Logging
|
import com.geeksville.mesh.android.Logging
|
||||||
import com.geeksville.mesh.CoroutineDispatchers
|
import com.geeksville.mesh.CoroutineDispatchers
|
||||||
import kotlinx.coroutines.channels.awaitClose
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.callbackFlow
|
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -27,23 +22,7 @@ class NetworkRepository @Inject constructor(
|
||||||
private val connectivityManager: dagger.Lazy<ConnectivityManager>,
|
private val connectivityManager: dagger.Lazy<ConnectivityManager>,
|
||||||
) : Logging {
|
) : Logging {
|
||||||
|
|
||||||
private val availableNetworks: HashSet<Network> = HashSet()
|
val networkAvailable get() = connectivityManager.get().networkAvailable()
|
||||||
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) }
|
|
||||||
}
|
|
||||||
|
|
||||||
private val _resolvedList = MutableStateFlow<List<NsdServiceInfo>>(emptyList())
|
private val _resolvedList = MutableStateFlow<List<NsdServiceInfo>>(emptyList())
|
||||||
val resolvedList: StateFlow<List<NsdServiceInfo>> get() = _resolvedList
|
val resolvedList: StateFlow<List<NsdServiceInfo>> get() = _resolvedList
|
||||||
|
|
Ładowanie…
Reference in New Issue