From 99ff3286773c2cbf88dc090f060664746fc5c99c Mon Sep 17 00:00:00 2001 From: James Rich Date: Mon, 18 May 2026 07:04:53 -0500 Subject: [PATCH] fix(discovery): unregister packet collector on success, use string resources in settings - Fix resource leak: collectorRegistry.collector was never cleared in the successful scan completion path (only in stop/abort paths) - Replace hardcoded 'Local Mesh Discovery' strings in both Settings screens with stringResource(Res.string.discovery_local_mesh) - Add missing explicit imports for the CMP string accessor - Remove redundant .gitkeep files from directories with content Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../kotlin/org/meshtastic/feature/discovery/.gitkeep | 0 .../meshtastic/feature/discovery/DiscoveryScanEngine.kt | 3 ++- .../kotlin/org/meshtastic/feature/discovery/.gitkeep | 0 .../kotlin/org/meshtastic/feature/discovery/.gitkeep | 0 .../org/meshtastic/feature/settings/SettingsScreen.kt | 8 ++++++-- .../meshtastic/feature/settings/DesktopSettingsScreen.kt | 8 ++++++-- 6 files changed, 14 insertions(+), 5 deletions(-) delete mode 100644 feature/discovery/src/androidMain/kotlin/org/meshtastic/feature/discovery/.gitkeep delete mode 100644 feature/discovery/src/commonTest/kotlin/org/meshtastic/feature/discovery/.gitkeep delete mode 100644 feature/discovery/src/jvmMain/kotlin/org/meshtastic/feature/discovery/.gitkeep diff --git a/feature/discovery/src/androidMain/kotlin/org/meshtastic/feature/discovery/.gitkeep b/feature/discovery/src/androidMain/kotlin/org/meshtastic/feature/discovery/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/feature/discovery/src/commonMain/kotlin/org/meshtastic/feature/discovery/DiscoveryScanEngine.kt b/feature/discovery/src/commonMain/kotlin/org/meshtastic/feature/discovery/DiscoveryScanEngine.kt index 0687be283..ee08e32a6 100644 --- a/feature/discovery/src/commonMain/kotlin/org/meshtastic/feature/discovery/DiscoveryScanEngine.kt +++ b/feature/discovery/src/commonMain/kotlin/org/meshtastic/feature/discovery/DiscoveryScanEngine.kt @@ -307,7 +307,8 @@ class DiscoveryScanEngine( persistCurrentDwellResults() } - // All presets scanned + // All presets scanned — unregister packet collector before analysis + collectorRegistry.collector = null _scanState.value = DiscoveryScanState.Analysis restoreHomePreset() generateAiSummaries() diff --git a/feature/discovery/src/commonTest/kotlin/org/meshtastic/feature/discovery/.gitkeep b/feature/discovery/src/commonTest/kotlin/org/meshtastic/feature/discovery/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/feature/discovery/src/jvmMain/kotlin/org/meshtastic/feature/discovery/.gitkeep b/feature/discovery/src/jvmMain/kotlin/org/meshtastic/feature/discovery/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/SettingsScreen.kt b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/SettingsScreen.kt index e02c61833..8825a2dcf 100644 --- a/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/SettingsScreen.kt +++ b/feature/settings/src/androidMain/kotlin/org/meshtastic/feature/settings/SettingsScreen.kt @@ -46,6 +46,7 @@ import org.meshtastic.core.navigation.SettingsRoute import org.meshtastic.core.navigation.WifiProvisionRoute import org.meshtastic.core.resources.Res import org.meshtastic.core.resources.bottom_nav_settings +import org.meshtastic.core.resources.discovery_local_mesh import org.meshtastic.core.resources.export_configuration import org.meshtastic.core.resources.filter_settings import org.meshtastic.core.resources.help_and_documentation @@ -242,8 +243,11 @@ fun SettingsScreen( onShowThemePicker = { showThemePickerDialog = true }, ) - ExpressiveSection(title = "Local Mesh Discovery") { - ListItem(text = "Local Mesh Discovery", leadingIcon = MeshtasticIcons.PermScanWifi) { + ExpressiveSection(title = stringResource(Res.string.discovery_local_mesh)) { + ListItem( + text = stringResource(Res.string.discovery_local_mesh), + leadingIcon = MeshtasticIcons.PermScanWifi, + ) { onNavigate(DiscoveryRoute.DiscoveryGraph) } } diff --git a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt index 349c5a717..3714dc672 100644 --- a/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt +++ b/feature/settings/src/jvmMain/kotlin/org/meshtastic/feature/settings/DesktopSettingsScreen.kt @@ -49,6 +49,7 @@ import org.meshtastic.core.resources.app_version import org.meshtastic.core.resources.bottom_nav_settings import org.meshtastic.core.resources.device_db_cache_limit import org.meshtastic.core.resources.device_db_cache_limit_summary +import org.meshtastic.core.resources.discovery_local_mesh import org.meshtastic.core.resources.help_and_documentation import org.meshtastic.core.resources.info import org.meshtastic.core.resources.modules_already_unlocked @@ -204,8 +205,11 @@ fun DesktopSettingsScreen( ) } - ExpressiveSection(title = "Local Mesh Discovery") { - ListItem(text = "Local Mesh Discovery", leadingIcon = MeshtasticIcons.PermScanWifi) { + ExpressiveSection(title = stringResource(Res.string.discovery_local_mesh)) { + ListItem( + text = stringResource(Res.string.discovery_local_mesh), + leadingIcon = MeshtasticIcons.PermScanWifi, + ) { onNavigate(DiscoveryRoute.DiscoveryGraph) } }