From 54016b1d65ebf74ee7d64d0a5f4b65ac42beb932 Mon Sep 17 00:00:00 2001 From: Strycher Date: Wed, 17 Jun 2026 22:59:41 -0400 Subject: [PATCH] fix(#33): make signal indicator tappable when gray, explain no-neighbors state --- lib/l10n/app_en.arb | 1 + lib/l10n/app_localizations.dart | 6 ++++ lib/l10n/app_localizations_bg.dart | 4 +++ lib/l10n/app_localizations_de.dart | 4 +++ lib/l10n/app_localizations_en.dart | 4 +++ lib/l10n/app_localizations_es.dart | 4 +++ lib/l10n/app_localizations_fr.dart | 4 +++ lib/l10n/app_localizations_hu.dart | 4 +++ lib/l10n/app_localizations_it.dart | 4 +++ lib/l10n/app_localizations_ja.dart | 4 +++ lib/l10n/app_localizations_ko.dart | 4 +++ lib/l10n/app_localizations_nl.dart | 4 +++ lib/l10n/app_localizations_pl.dart | 4 +++ lib/l10n/app_localizations_pt.dart | 4 +++ lib/l10n/app_localizations_ru.dart | 4 +++ lib/l10n/app_localizations_sk.dart | 4 +++ lib/l10n/app_localizations_sl.dart | 4 +++ lib/l10n/app_localizations_sv.dart | 4 +++ lib/l10n/app_localizations_uk.dart | 4 +++ lib/l10n/app_localizations_zh.dart | 4 +++ lib/widgets/snr_indicator.dart | 14 ++++++-- untranslated.json | 51 ++++++++++++++++++++---------- 22 files changed, 124 insertions(+), 20 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index dff2266..341ffef 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -2321,6 +2321,7 @@ "settings_gpxExportShareText": "Map data exported from meshcore-open", "settings_gpxExportShareSubject": "meshcore-open GPX map data export", "snrIndicator_nearByRepeaters": "Nearby Repeaters", + "snrIndicator_noNeighbors": "No neighbors heard currently — messages still broadcast and route.", "snrIndicator_lastSeen": "Last seen", "contactsSettings_title": "Contacts settings", "contactsSettings_autoAddTitle": "Automatic Discovery", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index dac340a..8dc8f4b 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -7066,6 +7066,12 @@ abstract class AppLocalizations { /// **'Nearby Repeaters'** String get snrIndicator_nearByRepeaters; + /// No description provided for @snrIndicator_noNeighbors. + /// + /// In en, this message translates to: + /// **'No neighbors heard currently — messages still broadcast and route.'** + String get snrIndicator_noNeighbors; + /// No description provided for @snrIndicator_lastSeen. /// /// In en, this message translates to: diff --git a/lib/l10n/app_localizations_bg.dart b/lib/l10n/app_localizations_bg.dart index c0027c0..0109048 100644 --- a/lib/l10n/app_localizations_bg.dart +++ b/lib/l10n/app_localizations_bg.dart @@ -4126,6 +4126,10 @@ class AppLocalizationsBg extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Близки повтарящи се устройства'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Последно видян'; diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index fb42c48..6e9a761 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -4140,6 +4140,10 @@ class AppLocalizationsDe extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'In der Nähe befindliche Repeater'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Zuletzt gesehen'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 39da33b..ddf0eae 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -4057,6 +4057,10 @@ class AppLocalizationsEn extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Nearby Repeaters'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Last seen'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index fd0b508..e30c11a 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -4126,6 +4126,10 @@ class AppLocalizationsEs extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Repetidores cercanos'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Visto por última vez'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index b20a851..547027b 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -4155,6 +4155,10 @@ class AppLocalizationsFr extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Répéteurs à proximité'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Dernière fois vu'; diff --git a/lib/l10n/app_localizations_hu.dart b/lib/l10n/app_localizations_hu.dart index 9b02888..2965208 100644 --- a/lib/l10n/app_localizations_hu.dart +++ b/lib/l10n/app_localizations_hu.dart @@ -4145,6 +4145,10 @@ class AppLocalizationsHu extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Helyszíni erősítők'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Utoljára, amikor látták'; diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index c0cb5f2..9d62aa5 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -4134,6 +4134,10 @@ class AppLocalizationsIt extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Ripetitori vicini'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Ultimo accesso'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 3dabf05..4828824 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -3920,6 +3920,10 @@ class AppLocalizationsJa extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => '近くの電波中継局'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => '最後に確認された場所'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index ce97809..dba63f6 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -3921,6 +3921,10 @@ class AppLocalizationsKo extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => '주변의 중계기'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => '마지막으로 목격'; diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index 30ef092..72e540b 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -4112,6 +4112,10 @@ class AppLocalizationsNl extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Nabije herhalingseenheden'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Laatst gezien'; diff --git a/lib/l10n/app_localizations_pl.dart b/lib/l10n/app_localizations_pl.dart index 8c30614..3c4c6cb 100644 --- a/lib/l10n/app_localizations_pl.dart +++ b/lib/l10n/app_localizations_pl.dart @@ -4150,6 +4150,10 @@ class AppLocalizationsPl extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Pobliskie przekaźniki'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Ostatnio widziany'; diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 5bc1cfe..99d02cf 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -4123,6 +4123,10 @@ class AppLocalizationsPt extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Repetidores Próximos'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Visto pela última vez'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index a8b59b5..33e38b6 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -4141,6 +4141,10 @@ class AppLocalizationsRu extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Ближайшие ретрансляторы'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Последний раз видели'; diff --git a/lib/l10n/app_localizations_sk.dart b/lib/l10n/app_localizations_sk.dart index 69dadb3..e1cc5e0 100644 --- a/lib/l10n/app_localizations_sk.dart +++ b/lib/l10n/app_localizations_sk.dart @@ -4109,6 +4109,10 @@ class AppLocalizationsSk extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Miestne opakovače'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Naposledy videný'; diff --git a/lib/l10n/app_localizations_sl.dart b/lib/l10n/app_localizations_sl.dart index 1dfaef7..ea3686b 100644 --- a/lib/l10n/app_localizations_sl.dart +++ b/lib/l10n/app_localizations_sl.dart @@ -4106,6 +4106,10 @@ class AppLocalizationsSl extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Bližnji ponovitelji'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Zadnjič videno'; diff --git a/lib/l10n/app_localizations_sv.dart b/lib/l10n/app_localizations_sv.dart index c89f1d7..ffd28a4 100644 --- a/lib/l10n/app_localizations_sv.dart +++ b/lib/l10n/app_localizations_sv.dart @@ -4079,6 +4079,10 @@ class AppLocalizationsSv extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Närliggande uppreparstationer'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Senast sedd'; diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index fcbfdd3..821e4a6 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -4140,6 +4140,10 @@ class AppLocalizationsUk extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => 'Найближчі ретранслятори'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => 'Останній раз бачили'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index 9c93a96..d01ae3c 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -3801,6 +3801,10 @@ class AppLocalizationsZh extends AppLocalizations { @override String get snrIndicator_nearByRepeaters => '附近的重复器'; + @override + String get snrIndicator_noNeighbors => + 'No neighbors heard currently — messages still broadcast and route.'; + @override String get snrIndicator_lastSeen => '最近访问'; diff --git a/lib/widgets/snr_indicator.dart b/lib/widgets/snr_indicator.dart index 99f2053..631d459 100644 --- a/lib/widgets/snr_indicator.dart +++ b/lib/widgets/snr_indicator.dart @@ -4,6 +4,7 @@ import 'package:latlong2/latlong.dart'; import '../connector/meshcore_connector.dart'; import '../connector/meshcore_protocol.dart'; import '../l10n/l10n.dart'; +import '../helpers/snack_bar_builder.dart'; import '../models/contact.dart'; import 'signal_ui.dart'; @@ -146,9 +147,16 @@ class _SNRIndicatorState extends State { return ConstrainedBox( constraints: const BoxConstraints(minWidth: 40, minHeight: 40), child: InkWell( - onTap: directRepeater != null - ? () => _showFullPathDialog(context, directBestRepeaters) - : null, + onTap: () { + if (directRepeater != null) { + _showFullPathDialog(context, directBestRepeaters); + } else { + showDismissibleSnackBar( + context, + content: Text(context.l10n.snrIndicator_noNeighbors), + ); + } + }, borderRadius: BorderRadius.circular(8), child: Padding( padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 8), diff --git a/untranslated.json b/untranslated.json index 1818f0c..8da0aa2 100644 --- a/untranslated.json +++ b/untranslated.json @@ -1,86 +1,103 @@ { "bg": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "de": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "es": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "fr": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "hu": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "it": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "ja": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "ko": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "nl": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "pl": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "pt": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "ru": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "sk": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "sl": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "sv": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "uk": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ], "zh": [ "settings_messageSettings", - "settings_messageSettingsSubtitle" + "settings_messageSettingsSubtitle", + "snrIndicator_noNeighbors" ] }