fix(app): say it out loud when wake-ups do not work

Registration failures from the distributor were swallowed, so push looked
enabled while nothing arrived. Without wake-ups Android suspends the app
and messages only show up once the user opens it — which looks like broken
delivery even though the relay has them queued.

The failure is now remembered and surfaced in Settings, and the chat list
carries a dismissible line explaining the state.
This commit is contained in:
Julius Joska
2026-08-13 12:23:30 +02:00
parent 9985b79aa6
commit 923a6a01bd
18 changed files with 305 additions and 10 deletions
+12
View File
@@ -1295,6 +1295,18 @@
}
}
},
"pushHintOff": "Zprávy ti přijdou, až Šepot otevřeš — budíčky nejsou nastavené.",
"@pushHintOff": {
"description": "Proužek nad seznamem chatů, když push není vůbec zapnutý."
},
"pushHintFailed": "Budíčky nefungují, zprávy uvidíš až po otevření Šepotu.",
"@pushHintFailed": {
"description": "Proužek nad seznamem chatů, když distributor registraci odmítl."
},
"pushRegistrationFailed": "Budíčky nechodí — distributor registraci odmítl. Zkus push vypnout a znovu zapnout.",
"@pushRegistrationFailed": {
"description": "Podtitulek dlaždice Push v Nastavení, když distributor odmítl registraci. Bez téhle hlášky uživatel vidí push jako zapnutý, ale zprávy mu chodí až po otevření appky."
},
"pushNoDistributorTitle": "Žádný distributor",
"@pushNoDistributorTitle": {
"description": "Titulek AlertDialog, když v systému není nainstalovaný žádný UnifiedPush distributor"
+3
View File
@@ -271,6 +271,9 @@
"pushModeFcm": "Google (FCM)",
"pushModeFcmDesc": "Zuverlässig ohne zusätzliche App. Der Push-Token des Geräts geht an Google; der Inhalt der Nachrichten nie.",
"pushSetupFailed": "Einrichtung der Push-Benachrichtigungen fehlgeschlagen: {error}",
"pushHintOff": "Nachrichten kommen erst an, wenn du Šepot öffnest — keine Weckrufe eingerichtet.",
"pushHintFailed": "Weckrufe funktionieren nicht; Nachrichten siehst du erst beim Öffnen von Šepot.",
"pushRegistrationFailed": "Es kommen keine Weckrufe an — der Distributor hat die Registrierung abgelehnt. Schalte Push aus und wieder ein.",
"pushNoDistributorTitle": "Kein Distributor",
"pushNoDistributorBody": "Für Google-freie Benachrichtigungen installiere einen UnifiedPush-Distributor, z. B. ntfy (F-Droid oder Play). Aktiviere Push danach erneut.",
"commonOk": "OK",
+3
View File
@@ -271,6 +271,9 @@
"pushModeFcm": "Google (FCM)",
"pushModeFcmDesc": "Reliable without an extra app. The device push token goes to Google; message content never does.",
"pushSetupFailed": "Setting up push failed: {error}",
"pushHintOff": "Messages arrive only when you open Šepot — wake-ups aren’t set up.",
"pushHintFailed": "Wake-ups aren’t working; you’ll see messages only after opening Šepot.",
"pushRegistrationFailed": "Wake-ups aren’t arriving — the distributor refused registration. Try turning push off and on again.",
"pushNoDistributorTitle": "No distributor",
"pushNoDistributorBody": "For de-Googled notifications, install a UnifiedPush distributor such as ntfy (F-Droid or Play). Then turn push on again.",
"commonOk": "OK",
+3
View File
@@ -271,6 +271,9 @@
"pushModeFcm": "Google (FCM)",
"pushModeFcmDesc": "Affidabile senza altre app. Il token push del dispositivo va a Google; il contenuto dei messaggi mai.",
"pushSetupFailed": "Configurazione delle notifiche push non riuscita: {error}",
"pushHintOff": "I messaggi arrivano solo quando apri Šepot — le notifiche non sono configurate.",
"pushHintFailed": "Le notifiche non funzionano: vedrai i messaggi solo aprendo Šepot.",
"pushRegistrationFailed": "Le notifiche non arrivano — il distributore ha rifiutato la registrazione. Prova a disattivare e riattivare il push.",
"pushNoDistributorTitle": "Nessun distributore",
"pushNoDistributorBody": "Per notifiche senza Google installa un distributore UnifiedPush, ad es. ntfy (F-Droid o Play). Poi riattiva le notifiche push.",
"commonOk": "OK",
+3
View File
@@ -271,6 +271,9 @@
"pushModeFcm": "Google (FCM)",
"pushModeFcmDesc": "Надёжно и без дополнительных приложений. Push-токен устройства передаётся Google; содержимое сообщений — никогда.",
"pushSetupFailed": "Не удалось настроить push: {error}",
"pushHintOff": "Сообщения придут, только когда откроешь Šepot — сигналы не настроены.",
"pushHintFailed": "Сигналы не работают: сообщения увидишь только после открытия Šepot.",
"pushRegistrationFailed": "Сигналы не приходят — дистрибьютор отклонил регистрацию. Попробуй выключить и снова включить push.",
"pushNoDistributorTitle": "Нет дистрибьютора",
"pushNoDistributorBody": "Для уведомлений без сервисов Google установите дистрибьютор UnifiedPush, например ntfy (F-Droid или Play). Затем включите push снова.",
"commonOk": "OK",
@@ -1730,6 +1730,24 @@ abstract class AppLocalizations {
/// **'Nastavení pushů selhalo: {error}'**
String pushSetupFailed(String error);
/// Proužek nad seznamem chatů, když push není vůbec zapnutý.
///
/// In cs, this message translates to:
/// **'Zprávy ti přijdou, až Šepot otevřeš — budíčky nejsou nastavené.'**
String get pushHintOff;
/// Proužek nad seznamem chatů, když distributor registraci odmítl.
///
/// In cs, this message translates to:
/// **'Budíčky nefungují, zprávy uvidíš až po otevření Šepotu.'**
String get pushHintFailed;
/// Podtitulek dlaždice Push v Nastavení, když distributor odmítl registraci. Bez téhle hlášky uživatel vidí push jako zapnutý, ale zprávy mu chodí až po otevření appky.
///
/// In cs, this message translates to:
/// **'Budíčky nechodí — distributor registraci odmítl. Zkus push vypnout a znovu zapnout.'**
String get pushRegistrationFailed;
/// Titulek AlertDialog, když v systému není nainstalovaný žádný UnifiedPush distributor
///
/// In cs, this message translates to:
@@ -961,6 +961,18 @@ class AppLocalizationsCs extends AppLocalizations {
return 'Nastavení pushů selhalo: $error';
}
@override
String get pushHintOff =>
'Zprávy ti přijdou, až Šepot otevřeš — budíčky nejsou nastavené.';
@override
String get pushHintFailed =>
'Budíčky nefungují, zprávy uvidíš až po otevření Šepotu.';
@override
String get pushRegistrationFailed =>
'Budíčky nechodí — distributor registraci odmítl. Zkus push vypnout a znovu zapnout.';
@override
String get pushNoDistributorTitle => 'Žádný distributor';
@@ -980,6 +980,18 @@ class AppLocalizationsDe extends AppLocalizations {
return 'Einrichtung der Push-Benachrichtigungen fehlgeschlagen: $error';
}
@override
String get pushHintOff =>
'Nachrichten kommen erst an, wenn du Šepot öffnest — keine Weckrufe eingerichtet.';
@override
String get pushHintFailed =>
'Weckrufe funktionieren nicht; Nachrichten siehst du erst beim Öffnen von Šepot.';
@override
String get pushRegistrationFailed =>
'Es kommen keine Weckrufe an — der Distributor hat die Registrierung abgelehnt. Schalte Push aus und wieder ein.';
@override
String get pushNoDistributorTitle => 'Kein Distributor';
@@ -959,6 +959,18 @@ class AppLocalizationsEn extends AppLocalizations {
return 'Setting up push failed: $error';
}
@override
String get pushHintOff =>
'Messages arrive only when you open Šepot — wake-ups aren’t set up.';
@override
String get pushHintFailed =>
'Wake-ups aren’t working; you’ll see messages only after opening Šepot.';
@override
String get pushRegistrationFailed =>
'Wake-ups aren’t arriving — the distributor refused registration. Try turning push off and on again.';
@override
String get pushNoDistributorTitle => 'No distributor';
@@ -969,6 +969,18 @@ class AppLocalizationsIt extends AppLocalizations {
return 'Configurazione delle notifiche push non riuscita: $error';
}
@override
String get pushHintOff =>
'I messaggi arrivano solo quando apri Šepot — le notifiche non sono configurate.';
@override
String get pushHintFailed =>
'Le notifiche non funzionano: vedrai i messaggi solo aprendo Šepot.';
@override
String get pushRegistrationFailed =>
'Le notifiche non arrivano — il distributore ha rifiutato la registrazione. Prova a disattivare e riattivare il push.';
@override
String get pushNoDistributorTitle => 'Nessun distributore';
@@ -976,6 +976,18 @@ class AppLocalizationsRu extends AppLocalizations {
return 'Не удалось настроить push: $error';
}
@override
String get pushHintOff =>
'Сообщения придут, только когда откроешь Šepot — сигналы не настроены.';
@override
String get pushHintFailed =>
'Сигналы не работают: сообщения увидишь только после открытия Šepot.';
@override
String get pushRegistrationFailed =>
'Сигналы не приходят — дистрибьютор отклонил регистрацию. Попробуй выключить и снова включить push.';
@override
String get pushNoDistributorTitle => 'Нет дистрибьютора';