From ac51c1b9f62579672111603f71e3a0d5b6ef4df8 Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Sun, 28 Sep 2025 14:45:10 -0500 Subject: [PATCH] fix(service): clear nodeDB when device address changes (#3232) Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../com/geeksville/mesh/service/MeshService.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index 07a2c005b..05866290d 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -432,7 +432,6 @@ class MeshService : // private fun loadSettings() = serviceScope.handledLaunch { - discardNodeDB() // Get rid of any old state myNodeInfo = nodeRepository.myNodeInfo.value nodeDBbyNodeNum.putAll(nodeRepository.getNodeDBbyNum().first()) // Note: we do not haveNodeDB = true because that means we've got a valid db from a real @@ -2000,19 +1999,20 @@ class MeshService : fun clearDatabases() = serviceScope.handledLaunch { debug("Clearing nodeDB") + discardNodeDB() nodeRepository.clearNodeDB() } private fun updateLastAddress(deviceAddr: String?) { - debug("setDeviceAddress: Passing through device change to radio service: ${deviceAddr.anonymize}") - if (deviceAddr == meshPrefs.deviceAddress || deviceAddr == NO_DEVICE_SELECTED) { - debug("SetDeviceAddress: Device address is the none or same, ignoring") - return - } else { - debug("SetDeviceAddress: Device address changed from ${meshPrefs.deviceAddress} to $deviceAddr") + val currentAddr = meshPrefs.deviceAddress + debug("setDeviceAddress: received request to change to: ${deviceAddr.anonymize}") + if (deviceAddr != currentAddr) { + debug("SetDeviceAddress: Device address changed from ${currentAddr.anonymize} to ${deviceAddr.anonymize}") meshPrefs.deviceAddress = deviceAddr clearDatabases() clearNotifications() + } else { + debug("SetDeviceAddress: Device address is unchanged, ignoring.") } }