From 9583982e3f488c8c12d0ef1ff7520de4c157993c Mon Sep 17 00:00:00 2001 From: andrekir Date: Wed, 27 Dec 2023 19:49:09 -0300 Subject: [PATCH] fix: network discovery list remove method --- .../mesh/repository/network/NetworkRepository.kt | 16 +++++++--------- .../mesh/repository/network/NsdManager.kt | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/repository/network/NetworkRepository.kt b/app/src/main/java/com/geeksville/mesh/repository/network/NetworkRepository.kt index 4e9b859ea..312777dc3 100644 --- a/app/src/main/java/com/geeksville/mesh/repository/network/NetworkRepository.kt +++ b/app/src/main/java/com/geeksville/mesh/repository/network/NetworkRepository.kt @@ -14,7 +14,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.callbackFlow -import kotlinx.coroutines.flow.update +import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import javax.inject.Inject import javax.inject.Singleton @@ -32,12 +32,12 @@ class NetworkRepository @Inject constructor( val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { availableNetworks.add(network) - trySend(availableNetworks.isNotEmpty()).isSuccess + trySend(availableNetworks.isNotEmpty()) } override fun onLost(network: Network) { availableNetworks.remove(network) - trySend(availableNetworks.isNotEmpty()).isSuccess + trySend(availableNetworks.isNotEmpty()) } } val networkRequest = NetworkRequest.Builder().build() @@ -51,12 +51,10 @@ class NetworkRepository @Inject constructor( init { processLifecycle.coroutineScope.launch(dispatchers.default) { nsdManagerLazy.get()?.let { manager -> - manager.discoverServices(SERVICE_TYPE).collect { serviceList -> - _resolvedList.update { - serviceList - .filter { it.serviceName == SERVICE_NAME } - .mapNotNull { manager.resolveService(it) } - } + manager.discoverServices(SERVICE_TYPE).collectLatest { serviceList -> + _resolvedList.value = serviceList + .filter { it.serviceName.contains(SERVICE_NAME) } + .mapNotNull { manager.resolveService(it) } } } } diff --git a/app/src/main/java/com/geeksville/mesh/repository/network/NsdManager.kt b/app/src/main/java/com/geeksville/mesh/repository/network/NsdManager.kt index c68a9104d..6e68a0cb7 100644 --- a/app/src/main/java/com/geeksville/mesh/repository/network/NsdManager.kt +++ b/app/src/main/java/com/geeksville/mesh/repository/network/NsdManager.kt @@ -36,7 +36,7 @@ internal fun NsdManager.discoverServices( } override fun onServiceLost(serviceInfo: NsdServiceInfo) { - serviceList -= serviceInfo + serviceList.removeAll { it.serviceName == serviceInfo.serviceName } trySend(serviceList) } }