mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-06-28 05:07:31 +10:00
add auto clock synchronization setting after repeater login
Introduced a new setting for automatic clock synchronization after a successful repeater login. Added localization support for the new feature in multiple languages (Bulgarian, German, English, Spanish, French, Hungarian, Italian, Japanese, Korean, Dutch, Polish, Portuguese, Russian, Slovak, Slovenian, Swedish, Ukrainian, Chinese). Implemented storage service methods to manage the new setting. Updated the repeater settings screen to include a toggle for the new feature. Enhanced the repeater login dialog to trigger clock synchronization automatically if the setting is enabled.
This commit is contained in:
+9
-1
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingHidePin": "Скриване на PIN кода",
|
"scanner_linuxPairingHidePin": "Скриване на PIN кода",
|
||||||
"scanner_linuxPairingShowPin": "Покажи PIN",
|
"scanner_linuxPairingShowPin": "Покажи PIN",
|
||||||
"repeater_cliQuickClockSync": "Синхронизация на часовника",
|
"repeater_cliQuickClockSync": "Синхронизация на часовника",
|
||||||
"repeater_cliQuickDiscovery": "Открий Съседи"
|
"repeater_cliQuickDiscovery": "Открий Съседи",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Автоматично изпращайте съобщение \"синхронизиране на часовника\" след успешно влизане.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Синхронизиране на часовника след влизане"
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -2089,5 +2089,13 @@
|
|||||||
"scanner_linuxPairingPinTitle": "Bluetooth-Paarungs-PIN",
|
"scanner_linuxPairingPinTitle": "Bluetooth-Paarungs-PIN",
|
||||||
"scanner_linuxPairingPinPrompt": "Geben Sie die PIN für {deviceName} ein (leer lassen, falls keine).",
|
"scanner_linuxPairingPinPrompt": "Geben Sie die PIN für {deviceName} ein (leer lassen, falls keine).",
|
||||||
"repeater_cliQuickClockSync": "Uhr Synchronisieren",
|
"repeater_cliQuickClockSync": "Uhr Synchronisieren",
|
||||||
"repeater_cliQuickDiscovery": "Entdecke Nachbarn"
|
"repeater_cliQuickDiscovery": "Entdecke Nachbarn",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLogin": "Uhrzeit-Synchronisation nach dem Anmelden",
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Automatisch \"Uhrzeit-Synchronisierung\" nach erfolgreicher Anmeldung senden."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1116,6 +1116,14 @@
|
|||||||
"repeater_neighborsSubtitle": "View zero hop neighbors.",
|
"repeater_neighborsSubtitle": "View zero hop neighbors.",
|
||||||
"repeater_settings": "Settings",
|
"repeater_settings": "Settings",
|
||||||
"repeater_settingsSubtitle": "Configure repeater parameters",
|
"repeater_settingsSubtitle": "Configure repeater parameters",
|
||||||
|
"repeater_clockSyncAfterLogin": "Clock sync after login",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Automatically send \"clock sync\" after a successful login",
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
"repeater_statusTitle": "Repeater Status",
|
"repeater_statusTitle": "Repeater Status",
|
||||||
"repeater_routingMode": "Routing mode",
|
"repeater_routingMode": "Routing mode",
|
||||||
"repeater_autoUseSavedPath": "Auto (use saved path)",
|
"repeater_autoUseSavedPath": "Auto (use saved path)",
|
||||||
|
|||||||
+9
-1
@@ -2089,5 +2089,13 @@
|
|||||||
"translation_translationOptions": "Opciones de traducción",
|
"translation_translationOptions": "Opciones de traducción",
|
||||||
"translation_systemLanguage": "Idioma del sistema",
|
"translation_systemLanguage": "Idioma del sistema",
|
||||||
"repeater_cliQuickDiscovery": "Descubrir Vecinos",
|
"repeater_cliQuickDiscovery": "Descubrir Vecinos",
|
||||||
"repeater_cliQuickClockSync": "Sincronización del reloj"
|
"repeater_cliQuickClockSync": "Sincronización del reloj",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Enviar automáticamente la función de \"sincronización de reloj\" después de un inicio de sesión exitoso.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Sincronización del reloj después de iniciar sesión"
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingPinPrompt": "Entrez le code PIN pour {deviceName} (laissez vide si nécessaire).",
|
"scanner_linuxPairingPinPrompt": "Entrez le code PIN pour {deviceName} (laissez vide si nécessaire).",
|
||||||
"scanner_linuxPairingShowPin": "Afficher le code PIN",
|
"scanner_linuxPairingShowPin": "Afficher le code PIN",
|
||||||
"repeater_cliQuickClockSync": "Synchronisation de l'horloge",
|
"repeater_cliQuickClockSync": "Synchronisation de l'horloge",
|
||||||
"repeater_cliQuickDiscovery": "Découvrir les voisins"
|
"repeater_cliQuickDiscovery": "Découvrir les voisins",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Envoyer automatiquement une notification \"synchronisation de l'heure\" après une connexion réussie.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Synchronisation de l'horloge après la connexion"
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-3
@@ -2081,7 +2081,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scanner_linuxPairingShowPin": "Megjelenítse a PIN-kódot",
|
"scanner_linuxPairingShowPin": "Megjelenítse a PIN-kódot",
|
||||||
"scanner_linuxPairingPinPrompt": "Adja meg a PIN kódot a {deviceName} számára (hagyja üresen, ha nincs).",
|
"scanner_linuxPairingPinPrompt": "Adja meg a(z) {deviceName} PIN-kódját (hagyja üresen, ha nincs).",
|
||||||
"scanner_linuxPairingHidePin": "Rejtse el a PIN-kódot",
|
"scanner_linuxPairingHidePin": "Rejtse el a PIN-kódot",
|
||||||
"scanner_linuxPairingPinTitle": "Bluetooth párosítási PIN",
|
"scanner_linuxPairingPinTitle": "Bluetooth párosítási PIN",
|
||||||
"@translation_translateTo": {
|
"@translation_translateTo": {
|
||||||
@@ -2098,7 +2098,14 @@
|
|||||||
"translation_translateTo": "Fordítás {language}-ra",
|
"translation_translateTo": "Fordítás {language}-ra",
|
||||||
"translation_translationOptions": "Fordítási lehetőségek",
|
"translation_translationOptions": "Fordítási lehetőségek",
|
||||||
"translation_systemLanguage": "Rendszer nyelvé",
|
"translation_systemLanguage": "Rendszer nyelvé",
|
||||||
"scanner_linuxPairingPinPrompt": "Adja meg a(z) {deviceName} PIN-kódját (hagyja üresen, ha nincs).",
|
|
||||||
"repeater_cliQuickClockSync": "Óra szinkronizálás",
|
"repeater_cliQuickClockSync": "Óra szinkronizálás",
|
||||||
"repeater_cliQuickDiscovery": "Fedezd fel a szomszédokat"
|
"repeater_cliQuickDiscovery": "Fedezd fel a szomszédokat",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Automatikusan küldje el a \"óra szinkronizálás\" üzenetet a sikeres bejelentkezés után.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Óra szinkronizálás bejelentkezés után"
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingPinTitle": "PIN per l'accoppiamento Bluetooth",
|
"scanner_linuxPairingPinTitle": "PIN per l'accoppiamento Bluetooth",
|
||||||
"scanner_linuxPairingHidePin": "Nascondi il PIN",
|
"scanner_linuxPairingHidePin": "Nascondi il PIN",
|
||||||
"repeater_cliQuickClockSync": "Sincronizzazione dell'orologio",
|
"repeater_cliQuickClockSync": "Sincronizzazione dell'orologio",
|
||||||
"repeater_cliQuickDiscovery": "Scopri i Vicini"
|
"repeater_cliQuickDiscovery": "Scopri i Vicini",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Invia automaticamente il comando \"sincronizzazione dell'orologio\" dopo un login riuscito.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Sincronizzazione dell'orologio dopo il login"
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -2099,5 +2099,13 @@
|
|||||||
"scanner_linuxPairingPinTitle": "Bluetooth ペアリング PIN",
|
"scanner_linuxPairingPinTitle": "Bluetooth ペアリング PIN",
|
||||||
"scanner_linuxPairingPinPrompt": "{deviceName}のPINを入力してください(なしの場合は空欄のまま)。",
|
"scanner_linuxPairingPinPrompt": "{deviceName}のPINを入力してください(なしの場合は空欄のまま)。",
|
||||||
"repeater_cliQuickClockSync": "クロック同期",
|
"repeater_cliQuickClockSync": "クロック同期",
|
||||||
"repeater_cliQuickDiscovery": "近隣を発見する"
|
"repeater_cliQuickDiscovery": "近隣を発見する",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLogin": "ログイン後、時計の時刻を同期する",
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "ログインが成功した場合、自動的に「時刻同期」を送信する。"
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -2099,5 +2099,13 @@
|
|||||||
"translation_translationOptions": "번역 옵션",
|
"translation_translationOptions": "번역 옵션",
|
||||||
"translation_systemLanguage": "시스템 언어",
|
"translation_systemLanguage": "시스템 언어",
|
||||||
"repeater_cliQuickClockSync": "시계 동기화",
|
"repeater_cliQuickClockSync": "시계 동기화",
|
||||||
"repeater_cliQuickDiscovery": "이웃 발견하기"
|
"repeater_cliQuickDiscovery": "이웃 발견하기",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLogin": "로그인 후 시계 동기화",
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "성공적인 로그인 후, 자동으로 \"시간 동기화\"를 전송합니다."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3675,6 +3675,18 @@ abstract class AppLocalizations {
|
|||||||
/// **'Configure repeater parameters'**
|
/// **'Configure repeater parameters'**
|
||||||
String get repeater_settingsSubtitle;
|
String get repeater_settingsSubtitle;
|
||||||
|
|
||||||
|
/// Repeater setting: auto sync device clock after successful login
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Clock sync after login'**
|
||||||
|
String get repeater_clockSyncAfterLogin;
|
||||||
|
|
||||||
|
/// Repeater setting subtitle: describes the clock sync after login behavior
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Automatically send \"clock sync\" after a successful login'**
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle;
|
||||||
|
|
||||||
/// No description provided for @repeater_statusTitle.
|
/// No description provided for @repeater_statusTitle.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
|
|||||||
@@ -2056,6 +2056,14 @@ class AppLocalizationsBg extends AppLocalizations {
|
|||||||
String get repeater_settingsSubtitle =>
|
String get repeater_settingsSubtitle =>
|
||||||
'Конфигурирайте параметрите на репитера';
|
'Конфигурирайте параметрите на репитера';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Синхронизиране на часовника след влизане';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Автоматично изпращайте съобщение \"синхронизиране на часовника\" след успешно влизане.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Статус на повтарянето';
|
String get repeater_statusTitle => 'Статус на повтарянето';
|
||||||
|
|
||||||
|
|||||||
@@ -2052,6 +2052,14 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Repeater-parameter konfigurieren';
|
String get repeater_settingsSubtitle => 'Repeater-parameter konfigurieren';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Uhrzeit-Synchronisation nach dem Anmelden';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Automatisch \"Uhrzeit-Synchronisierung\" nach erfolgreicher Anmeldung senden.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Repeaterstatus';
|
String get repeater_statusTitle => 'Repeaterstatus';
|
||||||
|
|
||||||
|
|||||||
@@ -2014,6 +2014,13 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Configure repeater parameters';
|
String get repeater_settingsSubtitle => 'Configure repeater parameters';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin => 'Clock sync after login';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Automatically send \"clock sync\" after a successful login';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Repeater Status';
|
String get repeater_statusTitle => 'Repeater Status';
|
||||||
|
|
||||||
|
|||||||
@@ -2050,6 +2050,14 @@ class AppLocalizationsEs extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Configurar parámetros del repetidor';
|
String get repeater_settingsSubtitle => 'Configurar parámetros del repetidor';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Sincronización del reloj después de iniciar sesión';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Enviar automáticamente la función de \"sincronización de reloj\" después de un inicio de sesión exitoso.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Estado del Repetidor';
|
String get repeater_statusTitle => 'Estado del Repetidor';
|
||||||
|
|
||||||
|
|||||||
@@ -2062,6 +2062,14 @@ class AppLocalizationsFr extends AppLocalizations {
|
|||||||
String get repeater_settingsSubtitle =>
|
String get repeater_settingsSubtitle =>
|
||||||
'Configurer les paramètres du répéteur';
|
'Configurer les paramètres du répéteur';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Synchronisation de l\'horloge après la connexion';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Envoyer automatiquement une notification \"synchronisation de l\'heure\" après une connexion réussie.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'État du répéteur';
|
String get repeater_statusTitle => 'État du répéteur';
|
||||||
|
|
||||||
|
|||||||
@@ -2066,6 +2066,14 @@ class AppLocalizationsHu extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Állítsa be a repeater paramétereket';
|
String get repeater_settingsSubtitle => 'Állítsa be a repeater paramétereket';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Óra szinkronizálás bejelentkezés után';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Automatikusan küldje el a \"óra szinkronizálás\" üzenetet a sikeres bejelentkezés után.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Adatkapcsolódás állapot';
|
String get repeater_statusTitle => 'Adatkapcsolódás állapot';
|
||||||
|
|
||||||
|
|||||||
@@ -2053,6 +2053,14 @@ class AppLocalizationsIt extends AppLocalizations {
|
|||||||
String get repeater_settingsSubtitle =>
|
String get repeater_settingsSubtitle =>
|
||||||
'Configura i parametri del ripetitore';
|
'Configura i parametri del ripetitore';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Sincronizzazione dell\'orologio dopo il login';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Invia automaticamente il comando \"sincronizzazione dell\'orologio\" dopo un login riuscito.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Stato del Ripetitore';
|
String get repeater_statusTitle => 'Stato del Ripetitore';
|
||||||
|
|
||||||
|
|||||||
@@ -1965,6 +1965,13 @@ class AppLocalizationsJa extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'リピーターのパラメータを設定する';
|
String get repeater_settingsSubtitle => 'リピーターのパラメータを設定する';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin => 'ログイン後、時計の時刻を同期する';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'ログインが成功した場合、自動的に「時刻同期」を送信する。';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => '再送ステータス';
|
String get repeater_statusTitle => '再送ステータス';
|
||||||
|
|
||||||
|
|||||||
@@ -1962,6 +1962,13 @@ class AppLocalizationsKo extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => '리피터 파라미터 설정';
|
String get repeater_settingsSubtitle => '리피터 파라미터 설정';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin => '로그인 후 시계 동기화';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'성공적인 로그인 후, 자동으로 \"시간 동기화\"를 전송합니다.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => '반복 장치 상태';
|
String get repeater_statusTitle => '반복 장치 상태';
|
||||||
|
|
||||||
|
|||||||
@@ -2038,6 +2038,14 @@ class AppLocalizationsNl extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Configureer repeaterparameters';
|
String get repeater_settingsSubtitle => 'Configureer repeaterparameters';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Na het inloggen, klok synchroniseren';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Automatisch een \"klok synchroniseren\" bericht versturen na een succesvolle inlog.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Status repeater';
|
String get repeater_statusTitle => 'Status repeater';
|
||||||
|
|
||||||
|
|||||||
@@ -2066,6 +2066,14 @@ class AppLocalizationsPl extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Skonfiguruj parametry przekaźnika';
|
String get repeater_settingsSubtitle => 'Skonfiguruj parametry przekaźnika';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Synchronizacja zegara po zalogowaniu';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Automatycznie wysyłaj powiadomienie \"synchronizacja zegara\" po pomyślnym zalogowaniu.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Status przekaźnika';
|
String get repeater_statusTitle => 'Status przekaźnika';
|
||||||
|
|
||||||
|
|||||||
@@ -2050,6 +2050,14 @@ class AppLocalizationsPt extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Configurar parâmetros do repetidor';
|
String get repeater_settingsSubtitle => 'Configurar parâmetros do repetidor';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Sincronização do relógio após o login';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Enviar automaticamente a sincronização do \"relógio\" após um login bem-sucedido.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Status do Repetidor';
|
String get repeater_statusTitle => 'Status do Repetidor';
|
||||||
|
|
||||||
|
|||||||
@@ -2054,6 +2054,14 @@ class AppLocalizationsRu extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Настройка параметров репитера';
|
String get repeater_settingsSubtitle => 'Настройка параметров репитера';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Синхронизация часов после входа в систему';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Автоматически отправлять сообщение \"синхронизация времени\" после успешной авторизации.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Статус репитера';
|
String get repeater_statusTitle => 'Статус репитера';
|
||||||
|
|
||||||
|
|||||||
@@ -2039,6 +2039,14 @@ class AppLocalizationsSk extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Konfigurujte parametre opakovača';
|
String get repeater_settingsSubtitle => 'Konfigurujte parametre opakovača';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Synchronizácia hodiniek po prihlávení';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Automaticky posielajte notifikáciu \"synchronizácia času\" po úspešnom prihládení.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Status opakého zboru';
|
String get repeater_statusTitle => 'Status opakého zboru';
|
||||||
|
|
||||||
|
|||||||
@@ -2038,6 +2038,13 @@ class AppLocalizationsSl extends AppLocalizations {
|
|||||||
String get repeater_settingsSubtitle =>
|
String get repeater_settingsSubtitle =>
|
||||||
'Konfigurirajte parametre ponovitelja';
|
'Konfigurirajte parametre ponovitelja';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin => 'Sinhronizacija ure po prijavi';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Samodejno po uspešnem vstopu pošljite obvestilo o sinhronizaciji časa.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Status ponovitelja';
|
String get repeater_statusTitle => 'Status ponovitelja';
|
||||||
|
|
||||||
|
|||||||
@@ -2025,6 +2025,14 @@ class AppLocalizationsSv extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Konfigurera återspolarparametrar';
|
String get repeater_settingsSubtitle => 'Konfigurera återspolarparametrar';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin =>
|
||||||
|
'Synkronisera klockan efter inloggning';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Automatiskt skicka \"klocksynkronisering\" efter en lyckad inloggning.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Återspelsstatus';
|
String get repeater_statusTitle => 'Återspelsstatus';
|
||||||
|
|
||||||
|
|||||||
@@ -2050,6 +2050,13 @@ class AppLocalizationsUk extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => 'Налаштувати параметри ретранслятора';
|
String get repeater_settingsSubtitle => 'Налаштувати параметри ретранслятора';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin => 'Синхронізація годин після входу';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle =>
|
||||||
|
'Автоматично надсилати повідомлення \"синхронізація годин\" після успішного входу.';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => 'Статус ретранслятора';
|
String get repeater_statusTitle => 'Статус ретранслятора';
|
||||||
|
|
||||||
|
|||||||
@@ -1923,6 +1923,12 @@ class AppLocalizationsZh extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get repeater_settingsSubtitle => '配置转发节点参数';
|
String get repeater_settingsSubtitle => '配置转发节点参数';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLogin => '登录后,自动同步时钟';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get repeater_clockSyncAfterLoginSubtitle => '在成功登录后,自动发送“时钟同步”指令。';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get repeater_statusTitle => '转发节点状态';
|
String get repeater_statusTitle => '转发节点状态';
|
||||||
|
|
||||||
|
|||||||
+9
-1
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingPinPrompt": "Voer PIN in voor {deviceName} (laat leeg als er geen is).",
|
"scanner_linuxPairingPinPrompt": "Voer PIN in voor {deviceName} (laat leeg als er geen is).",
|
||||||
"scanner_linuxPairingPinTitle": "Bluetooth‑koppelings‑PIN",
|
"scanner_linuxPairingPinTitle": "Bluetooth‑koppelings‑PIN",
|
||||||
"repeater_cliQuickDiscovery": "Ontdek Buren",
|
"repeater_cliQuickDiscovery": "Ontdek Buren",
|
||||||
"repeater_cliQuickClockSync": "Kloksynchronisatie"
|
"repeater_cliQuickClockSync": "Kloksynchronisatie",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Automatisch een \"klok synchroniseren\" bericht versturen na een succesvolle inlog.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Na het inloggen, klok synchroniseren"
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-2
@@ -2099,5 +2099,13 @@
|
|||||||
"scanner_linuxPairingPinPrompt": "Wprowadź kod PIN dla {deviceName} (pozostaw puste, jeśli brak).",
|
"scanner_linuxPairingPinPrompt": "Wprowadź kod PIN dla {deviceName} (pozostaw puste, jeśli brak).",
|
||||||
"scanner_linuxPairingPinTitle": "Kod PIN parowania Bluetooth",
|
"scanner_linuxPairingPinTitle": "Kod PIN parowania Bluetooth",
|
||||||
"repeater_cliQuickClockSync": "Synchronizacja zegara",
|
"repeater_cliQuickClockSync": "Synchronizacja zegara",
|
||||||
"repeater_cliQuickDiscovery": "Odkryj Sąsiadów"
|
"repeater_cliQuickDiscovery": "Odkryj Sąsiadów",
|
||||||
}
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLogin": "Synchronizacja zegara po zalogowaniu",
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Automatycznie wysyłaj powiadomienie \"synchronizacja zegara\" po pomyślnym zalogowaniu."
|
||||||
|
}
|
||||||
|
|||||||
+9
-1
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingPinPrompt": "Insira o PIN para {deviceName} (deixe em branco se não houver).",
|
"scanner_linuxPairingPinPrompt": "Insira o PIN para {deviceName} (deixe em branco se não houver).",
|
||||||
"scanner_linuxPairingPinTitle": "PIN de emparelhamento Bluetooth",
|
"scanner_linuxPairingPinTitle": "PIN de emparelhamento Bluetooth",
|
||||||
"repeater_cliQuickClockSync": "Sincronização do Relógio",
|
"repeater_cliQuickClockSync": "Sincronização do Relógio",
|
||||||
"repeater_cliQuickDiscovery": "Descobrir Vizinhos"
|
"repeater_cliQuickDiscovery": "Descobrir Vizinhos",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Enviar automaticamente a sincronização do \"relógio\" após um login bem-sucedido.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Sincronização do relógio após o login"
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-2
@@ -1301,5 +1301,13 @@
|
|||||||
"scanner_linuxPairingHidePin": "Скрыть PIN",
|
"scanner_linuxPairingHidePin": "Скрыть PIN",
|
||||||
"scanner_linuxPairingPinTitle": "PIN‑код сопряжения Bluetooth",
|
"scanner_linuxPairingPinTitle": "PIN‑код сопряжения Bluetooth",
|
||||||
"repeater_cliQuickDiscovery": "Обнаружить Соседей",
|
"repeater_cliQuickDiscovery": "Обнаружить Соседей",
|
||||||
"repeater_cliQuickClockSync": "Синхронизация часов"
|
"repeater_cliQuickClockSync": "Синхронизация часов",
|
||||||
}
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLogin": "Синхронизация часов после входа в систему",
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Автоматически отправлять сообщение \"синхронизация времени\" после успешной авторизации."
|
||||||
|
}
|
||||||
|
|||||||
+9
-1
@@ -2061,5 +2061,13 @@
|
|||||||
"translation_translationOptions": "Možnosti prekladania",
|
"translation_translationOptions": "Možnosti prekladania",
|
||||||
"translation_systemLanguage": "Jazyk systému",
|
"translation_systemLanguage": "Jazyk systému",
|
||||||
"repeater_cliQuickClockSync": "Synchronizácia hodin",
|
"repeater_cliQuickClockSync": "Synchronizácia hodin",
|
||||||
"repeater_cliQuickDiscovery": "Objaviť susedov"
|
"repeater_cliQuickDiscovery": "Objaviť susedov",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLogin": "Synchronizácia hodiniek po prihlávení",
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Automaticky posielajte notifikáciu \"synchronizácia času\" po úspešnom prihládení."
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingPinPrompt": "Vnesite PIN za {deviceName} (pustite prazno, če ga ni).",
|
"scanner_linuxPairingPinPrompt": "Vnesite PIN za {deviceName} (pustite prazno, če ga ni).",
|
||||||
"scanner_linuxPairingPinTitle": "Bluetooth PIN za seznanjanje",
|
"scanner_linuxPairingPinTitle": "Bluetooth PIN za seznanjanje",
|
||||||
"repeater_cliQuickDiscovery": "Odkrijte sosede",
|
"repeater_cliQuickDiscovery": "Odkrijte sosede",
|
||||||
"repeater_cliQuickClockSync": "Usklajevanje ure"
|
"repeater_cliQuickClockSync": "Usklajevanje ure",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Samodejno po uspešnem vstopu pošljite obvestilo o sinhronizaciji časa.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Sinhronizacija ure po prijavi"
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-2
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingPinPrompt": "Ange PIN för {deviceName} (lämna tomt om ingen).",
|
"scanner_linuxPairingPinPrompt": "Ange PIN för {deviceName} (lämna tomt om ingen).",
|
||||||
"scanner_linuxPairingHidePin": "Dölj PIN",
|
"scanner_linuxPairingHidePin": "Dölj PIN",
|
||||||
"repeater_cliQuickDiscovery": "Upptäck grannar",
|
"repeater_cliQuickDiscovery": "Upptäck grannar",
|
||||||
"repeater_cliQuickClockSync": "Synkronisera klocka"
|
"repeater_cliQuickClockSync": "Synkronisera klocka",
|
||||||
}
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Automatiskt skicka \"klocksynkronisering\" efter en lyckad inloggning.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Synkronisera klockan efter inloggning"
|
||||||
|
}
|
||||||
|
|||||||
+10
-2
@@ -2061,5 +2061,13 @@
|
|||||||
"scanner_linuxPairingPinPrompt": "Введіть PIN для {deviceName} (залиште порожнім, якщо його немає).",
|
"scanner_linuxPairingPinPrompt": "Введіть PIN для {deviceName} (залиште порожнім, якщо його немає).",
|
||||||
"scanner_linuxPairingHidePin": "Приховати PIN",
|
"scanner_linuxPairingHidePin": "Приховати PIN",
|
||||||
"repeater_cliQuickClockSync": "Синхронізація годинника",
|
"repeater_cliQuickClockSync": "Синхронізація годинника",
|
||||||
"repeater_cliQuickDiscovery": "Відкрити сусідів"
|
"repeater_cliQuickDiscovery": "Відкрити сусідів",
|
||||||
}
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "Автоматично надсилати повідомлення \"синхронізація годин\" після успішного входу.",
|
||||||
|
"repeater_clockSyncAfterLogin": "Синхронізація годин після входу"
|
||||||
|
}
|
||||||
|
|||||||
+9
-1
@@ -2066,5 +2066,13 @@
|
|||||||
"translation_translationOptions": "翻译选项",
|
"translation_translationOptions": "翻译选项",
|
||||||
"translation_systemLanguage": "系统语言",
|
"translation_systemLanguage": "系统语言",
|
||||||
"repeater_cliQuickDiscovery": "发现邻居",
|
"repeater_cliQuickDiscovery": "发现邻居",
|
||||||
"repeater_cliQuickClockSync": "同步时钟"
|
"repeater_cliQuickClockSync": "同步时钟",
|
||||||
|
"@repeater_clockSyncAfterLogin": {
|
||||||
|
"description": "Repeater setting: auto sync device clock after successful login"
|
||||||
|
},
|
||||||
|
"@repeater_clockSyncAfterLoginSubtitle": {
|
||||||
|
"description": "Repeater setting subtitle: describes the clock sync after login behavior"
|
||||||
|
},
|
||||||
|
"repeater_clockSyncAfterLogin": "登录后,自动同步时钟",
|
||||||
|
"repeater_clockSyncAfterLoginSubtitle": "在成功登录后,自动发送“时钟同步”指令。"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import '../connector/meshcore_connector.dart';
|
|||||||
import '../connector/meshcore_protocol.dart';
|
import '../connector/meshcore_protocol.dart';
|
||||||
import '../services/app_debug_log_service.dart';
|
import '../services/app_debug_log_service.dart';
|
||||||
import '../services/repeater_command_service.dart';
|
import '../services/repeater_command_service.dart';
|
||||||
|
import '../services/storage_service.dart';
|
||||||
import '../widgets/path_management_dialog.dart';
|
import '../widgets/path_management_dialog.dart';
|
||||||
|
|
||||||
class RepeaterSettingsScreen extends StatefulWidget {
|
class RepeaterSettingsScreen extends StatefulWidget {
|
||||||
@@ -25,6 +26,8 @@ class RepeaterSettingsScreen extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _RepeaterSettingsScreenState extends State<RepeaterSettingsScreen> {
|
class _RepeaterSettingsScreenState extends State<RepeaterSettingsScreen> {
|
||||||
|
final StorageService _storage = StorageService();
|
||||||
|
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
bool _hasChanges = false;
|
bool _hasChanges = false;
|
||||||
bool _refreshingBasic = false;
|
bool _refreshingBasic = false;
|
||||||
@@ -59,6 +62,7 @@ class _RepeaterSettingsScreenState extends State<RepeaterSettingsScreen> {
|
|||||||
bool _repeatEnabled = true;
|
bool _repeatEnabled = true;
|
||||||
bool _allowReadOnly = true;
|
bool _allowReadOnly = true;
|
||||||
bool _privacyMode = false;
|
bool _privacyMode = false;
|
||||||
|
bool _autoClockSyncAfterLogin = false;
|
||||||
|
|
||||||
// Advertisement settings
|
// Advertisement settings
|
||||||
bool _advertEnable = true;
|
bool _advertEnable = true;
|
||||||
@@ -566,6 +570,15 @@ class _RepeaterSettingsScreenState extends State<RepeaterSettingsScreen> {
|
|||||||
_lonController.text = widget.repeater.longitude?.toString() ?? '';
|
_lonController.text = widget.repeater.longitude?.toString() ?? '';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
final autoClockSync = await _storage
|
||||||
|
.getRepeaterAutoClockSyncAfterLoginEnabled(
|
||||||
|
widget.repeater.publicKeyHex,
|
||||||
|
);
|
||||||
|
if (!mounted) return;
|
||||||
|
setState(() {
|
||||||
|
_autoClockSyncAfterLogin = autoClockSync;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _saveSettings() async {
|
Future<void> _saveSettings() async {
|
||||||
@@ -1139,6 +1152,21 @@ class _RepeaterSettingsScreenState extends State<RepeaterSettingsScreen> {
|
|||||||
onRefresh: _refreshAllowReadOnly,
|
onRefresh: _refreshAllowReadOnly,
|
||||||
refreshTooltip: l10n.repeater_refreshGuestAccess,
|
refreshTooltip: l10n.repeater_refreshGuestAccess,
|
||||||
),
|
),
|
||||||
|
SwitchListTile(
|
||||||
|
title: Text(l10n.repeater_clockSyncAfterLogin),
|
||||||
|
subtitle: Text(l10n.repeater_clockSyncAfterLoginSubtitle),
|
||||||
|
value: _autoClockSyncAfterLogin,
|
||||||
|
onChanged: (value) async {
|
||||||
|
setState(() {
|
||||||
|
_autoClockSyncAfterLogin = value;
|
||||||
|
});
|
||||||
|
await _storage.setRepeaterAutoClockSyncAfterLoginEnabled(
|
||||||
|
widget.repeater.publicKeyHex,
|
||||||
|
value,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
contentPadding: EdgeInsets.zero,
|
||||||
|
),
|
||||||
// Privacy mode - hidden until fully implemented
|
// Privacy mode - hidden until fully implemented
|
||||||
// _buildFeatureToggleRow(
|
// _buildFeatureToggleRow(
|
||||||
// title: l10n.repeater_privacyMode,
|
// title: l10n.repeater_privacyMode,
|
||||||
|
|||||||
@@ -7,8 +7,42 @@ class StorageService {
|
|||||||
static const String _pathHistoryPrefix = 'path_history_';
|
static const String _pathHistoryPrefix = 'path_history_';
|
||||||
static const String _pendingMessagesKey = 'pending_messages';
|
static const String _pendingMessagesKey = 'pending_messages';
|
||||||
static const String _repeaterPasswordsKey = 'repeater_passwords';
|
static const String _repeaterPasswordsKey = 'repeater_passwords';
|
||||||
|
static const String _repeaterAutoClockSyncAfterLoginKey =
|
||||||
|
'repeater_auto_clock_sync_after_login';
|
||||||
static const String _deliveryObservationsKey = 'delivery_observations';
|
static const String _deliveryObservationsKey = 'delivery_observations';
|
||||||
|
|
||||||
|
Future<Map<String, bool>> _loadRepeaterAutoClockSyncAfterLogin() async {
|
||||||
|
final prefs = PrefsManager.instance;
|
||||||
|
final jsonStr = prefs.getString(_repeaterAutoClockSyncAfterLoginKey);
|
||||||
|
|
||||||
|
if (jsonStr == null) return {};
|
||||||
|
|
||||||
|
try {
|
||||||
|
final json = jsonDecode(jsonStr) as Map<String, dynamic>;
|
||||||
|
return json.map((key, value) => MapEntry(key, value == true));
|
||||||
|
} catch (e) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> getRepeaterAutoClockSyncAfterLoginEnabled(
|
||||||
|
String repeaterPubKeyHex,
|
||||||
|
) async {
|
||||||
|
final settings = await _loadRepeaterAutoClockSyncAfterLogin();
|
||||||
|
return settings[repeaterPubKeyHex] ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> setRepeaterAutoClockSyncAfterLoginEnabled(
|
||||||
|
String repeaterPubKeyHex,
|
||||||
|
bool enabled,
|
||||||
|
) async {
|
||||||
|
final prefs = PrefsManager.instance;
|
||||||
|
final settings = await _loadRepeaterAutoClockSyncAfterLogin();
|
||||||
|
settings[repeaterPubKeyHex] = enabled;
|
||||||
|
final jsonStr = jsonEncode(settings);
|
||||||
|
await prefs.setString(_repeaterAutoClockSyncAfterLoginKey, jsonStr);
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> savePathHistory(
|
Future<void> savePathHistory(
|
||||||
String contactPubKeyHex,
|
String contactPubKeyHex,
|
||||||
ContactPathHistory history,
|
ContactPathHistory history,
|
||||||
|
|||||||
@@ -187,6 +187,29 @@ class _RepeaterLoginDialogState extends State<RepeaterLoginDialog> {
|
|||||||
await _storage.removeRepeaterPassword(widget.repeater.publicKeyHex);
|
await _storage.removeRepeaterPassword(widget.repeater.publicKeyHex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final autoClockSync = await _storage
|
||||||
|
.getRepeaterAutoClockSyncAfterLoginEnabled(
|
||||||
|
widget.repeater.publicKeyHex,
|
||||||
|
);
|
||||||
|
if (autoClockSync) {
|
||||||
|
try {
|
||||||
|
final timestampSeconds =
|
||||||
|
DateTime.now().millisecondsSinceEpoch ~/ 1000;
|
||||||
|
await _connector.sendFrame(
|
||||||
|
buildSendCliCommandFrame(
|
||||||
|
repeater.publicKey,
|
||||||
|
'clock sync',
|
||||||
|
timestampSeconds: timestampSeconds,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
appLogger.warn(
|
||||||
|
'Auto clock sync failed for ${repeater.name}: $e',
|
||||||
|
tag: 'RepeaterLogin',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
Navigator.pop(context, password);
|
Navigator.pop(context, password);
|
||||||
Future.microtask(() => widget.onLogin(password));
|
Future.microtask(() => widget.onLogin(password));
|
||||||
|
|||||||
Reference in New Issue
Block a user