From 3bcc92e357d84792dabb30702471390fdff30b10 Mon Sep 17 00:00:00 2001 From: Dane Date: Wed, 28 Jan 2026 15:20:34 +1100 Subject: [PATCH 1/2] add filtering back in to prevent popups. --- .../mesh/service/MeshNeighborInfoHandler.kt | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt b/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt index 6d2c7c4e38..2df10f2cae 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt @@ -61,29 +61,42 @@ constructor( val requestId = packet.decoded.requestId val start = commandSender.neighborInfoStartTimes.remove(requestId) - val neighbors = - ni.neighborsList.joinToString("\n") { n -> - val node = nodeManager.nodeDBbyNodeNum[n.nodeId] - val name = node?.let { "${it.longName} (${it.shortName})" } ?: getString(Res.string.unknown_username) - "• $name (SNR: ${n.snr})" - } + // Only show response if packet is addressed to us and we sent a request in the last 3 minutes + val myNodeNum = nodeManager.myNodeNum + val isAddressedToUs = packet.to == myNodeNum + val isRecentRequest = start != null && (System.currentTimeMillis() - start) < NEIGHBOR_RQ_COOLDOWN - val formatted = "Neighbors of ${nodeManager.nodeDBbyNodeNum[packet.from]?.longName ?: "Unknown"}:\n$neighbors" + if (isAddressedToUs && isRecentRequest) { + val neighbors = + ni.neighborsList.joinToString("\n") { n -> + val node = nodeManager.nodeDBbyNodeNum[n.nodeId] + val name = node?.let { "${it.longName} (${it.shortName})" } ?: getString(Res.string.unknown_username) + "• $name (SNR: ${n.snr})" + } - val responseText = - if (start != null) { - val elapsedMs = System.currentTimeMillis() - start - val seconds = elapsedMs / MILLIS_PER_SECOND - Logger.i { "Neighbor info $requestId complete in $seconds s" } - String.format(Locale.US, "%s\n\nDuration: %.1f s", formatted, seconds) - } else { - formatted - } + val formatted = "Neighbors of ${nodeManager.nodeDBbyNodeNum[packet.from]?.longName ?: "Unknown"}:\n$neighbors" + + val responseText = + if (start != null) { + val elapsedMs = System.currentTimeMillis() - start + val seconds = elapsedMs / MILLIS_PER_SECOND + Logger.i { "Neighbor info $requestId complete in $seconds s" } + String.format(Locale.US, "%s\n\nDuration: %.1f s", formatted, seconds) + } else { + formatted + } - serviceRepository.setNeighborInfoResponse(responseText) + serviceRepository.setNeighborInfoResponse(responseText) + } else { + Logger.d { + "Neighbor info response filtered: isAddressedToUs=$isAddressedToUs, isRecentRequest=$isRecentRequest" + } + } } companion object { private const val MILLIS_PER_SECOND = 1000.0 + // Only show neighbor info responses for requests sent in the last 3 minutes + private const val NEIGHBOR_RQ_COOLDOWN = 3 * 60 * 1000L // 3 minutes in milliseconds } } From bc1c446e00c5fcbecb1b3ecac01dce27489e22c4 Mon Sep 17 00:00:00 2001 From: Dane Date: Wed, 28 Jan 2026 18:30:27 +1100 Subject: [PATCH 2/2] linter. --- .../com/geeksville/mesh/service/MeshNeighborInfoHandler.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt b/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt index 2df10f2cae..313a789788 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshNeighborInfoHandler.kt @@ -70,11 +70,13 @@ constructor( val neighbors = ni.neighborsList.joinToString("\n") { n -> val node = nodeManager.nodeDBbyNodeNum[n.nodeId] - val name = node?.let { "${it.longName} (${it.shortName})" } ?: getString(Res.string.unknown_username) + val name = + node?.let { "${it.longName} (${it.shortName})" } ?: getString(Res.string.unknown_username) "• $name (SNR: ${n.snr})" } - val formatted = "Neighbors of ${nodeManager.nodeDBbyNodeNum[packet.from]?.longName ?: "Unknown"}:\n$neighbors" + val formatted = + "Neighbors of ${nodeManager.nodeDBbyNodeNum[packet.from]?.longName ?: "Unknown"}:\n$neighbors" val responseText = if (start != null) { @@ -96,6 +98,7 @@ constructor( companion object { private const val MILLIS_PER_SECOND = 1000.0 + // Only show neighbor info responses for requests sent in the last 3 minutes private const val NEIGHBOR_RQ_COOLDOWN = 3 * 60 * 1000L // 3 minutes in milliseconds }