From a0cb9cab8d0a1f313d5e0a0648ed8506f24465e9 Mon Sep 17 00:00:00 2001 From: Pavel Novikov <7zzzzzzz@mail.ru> Date: Fri, 8 May 2026 19:36:12 +0300 Subject: [PATCH 1/4] let full nodeId be --- lib/services/lora_companion_service.dart | 2 +- lib/services/upload_service.dart | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/services/lora_companion_service.dart b/lib/services/lora_companion_service.dart index ae9ef41..0c49b05 100644 --- a/lib/services/lora_companion_service.dart +++ b/lib/services/lora_companion_service.dart @@ -930,7 +930,7 @@ class LoRaCompanionService { if (completer != null && !completer.isCompleted) { // Add this response to the list _pingResponses[tag]?.add({ - 'nodeId': pubkeyShort, + 'nodeId': pubkey, 'snr': snr, 'rssi': rssi, 'node_type': nodeType, diff --git a/lib/services/upload_service.dart b/lib/services/upload_service.dart index fa62a48..3e25f7f 100644 --- a/lib/services/upload_service.dart +++ b/lib/services/upload_service.dart @@ -34,15 +34,16 @@ class UploadService { 'id': sample.id, 'nodeId': (sample.path == null || sample.path!.isEmpty) ? 'Unknown' - : (sample.path!.length > 8 ? sample.path!.substring(0, 8).toUpperCase() : sample.path!.toUpperCase()), + : (sample.path!.toUpperCase()), +/// : (sample.path!.length > 8 ? sample.path!.substring(0, 8).toUpperCase() : sample.path!.toUpperCase()), 'repeaterName': (() { final name = (sample.path != null && repeaterNames != null) ? repeaterNames![sample.path] : null; if (name != null && name.isNotEmpty) return name; if (sample.path == null || sample.path!.isEmpty) return 'Unknown'; - final short = sample.path!.length > 8 ? sample.path!.substring(0,8).toUpperCase() : sample.path!.toUpperCase(); - return short; +/// final short = sample.path!.length > 8 ? sample.path!.substring(0,8).toUpperCase() : sample.path!.toUpperCase(); + return sample.path!.toUpperCase(); })(), 'latitude': sample.position.latitude, 'longitude': sample.position.longitude, From 481c236a3bd5a39059d639b4acf52ec6fc091c50 Mon Sep 17 00:00:00 2001 From: Pavel Novikov <7zzzzzzz@mail.ru> Date: Fri, 8 May 2026 19:53:29 +0300 Subject: [PATCH 2/4] fix screen --- lib/screens/map_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart index 3ec6e90..9d7510a 100644 --- a/lib/screens/map_screen.dart +++ b/lib/screens/map_screen.dart @@ -2065,7 +2065,7 @@ $placemarks // Show result if (pingSuccess) { - _showSnackBar('✅ Ping heard by ${result.nodeId}'); + _showSnackBar('✅ Ping heard by ${result.nodeId!.length > 8 ? result.nodeId!.substring(0,8) : result.nodeId}'); } else if (result.status == PingStatus.timeout) { _showSnackBar('❌ No response - dead zone'); } else { From 25790b50acd3bed533c476080b63ac76ae678aa4 Mon Sep 17 00:00:00 2001 From: Pavel Novikov <7zzzzzzz@mail.ru> Date: Sat, 9 May 2026 00:32:44 +0300 Subject: [PATCH 3/4] fix repeater name for sample --- lib/screens/map_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/map_screen.dart b/lib/screens/map_screen.dart index 9d7510a..82a6e08 100644 --- a/lib/screens/map_screen.dart +++ b/lib/screens/map_screen.dart @@ -3791,7 +3791,7 @@ $placemarks // Fall back to checking LoRa service's contact cache final loraRepeater = _locationService.loraCompanion.getRepeaterLocation(fullId!); - return loraRepeater?.name ?? fullId; // Return full ID if no name + return loraRepeater?.name ?? null; // Return full ID if no name } void _showSampleInfo(Sample sample) { From 9f2f4c057be18a4a8350d1f5d73a21792fe6014c Mon Sep 17 00:00:00 2001 From: Pavel Novikov <7zzzzzzz@mail.ru> Date: Sun, 10 May 2026 11:57:29 +0300 Subject: [PATCH 4/4] fix lines from repeaters to coverage tiles --- lib/services/aggregation_service.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/services/aggregation_service.dart b/lib/services/aggregation_service.dart index 0690587..d19352d 100644 --- a/lib/services/aggregation_service.dart +++ b/lib/services/aggregation_service.dart @@ -140,7 +140,8 @@ class AggregationService { for (final coverage in hashToCoverage.values) { // Only create edges for repeaters that actually responded in this coverage area for (final repeaterId in coverage.repeaters) { - final repeaterData = idToRepeaters[repeaterId]; + final shortRepeaterId = repeaterId.length >= 8 ? repeaterId.substring(0, 8) : repeaterId; + final repeaterData = idToRepeaters[shortRepeaterId]; if (repeaterData != null) { final repeater = repeaterData['repeater'] as Repeater; // Skip repeaters with location set to 0,0 (invalid/unknown location)