Manuelle Baka-Anmeldung übernimmt das Passwort jetzt dauerhaft; Auto-Login-Fehler werden geloggt

Nach erfolgreichem manuellem Login im "Baka-Konto"-Dialog wird das neue
Passwort jetzt zusätzlich in NavidromeService persistiert (dafür ergänzt:
öffentlicher serverUrl-Getter) — vorher schrieb der Dialog es nur ins
BakaAuth-Token, nie zurück in die lokale Navidrome-Ablage, aus der
autoAnmelden() sich beim nächsten App-Start bedient. Ohne diesen Fix kam
der Auto-Login-Fehler nach Ablauf des 7-Tage-Tokens garantiert wieder.

Zusätzlich hält BakaAuth.letzterAutoLoginFehler jetzt den Fehlertext des
letzten Auto-Login-Versuchs fest, statt ihn zu verwerfen — bisher war aus
der App nicht diagnostizierbar, woran ein Auto-Login scheiterte.
This commit is contained in:
Hermes (Server)
2026-08-29 12:38:20 +02:00
parent 609ca37ede
commit 196303145a
6 changed files with 101 additions and 1 deletions
+13 -1
View File
@@ -54,6 +54,10 @@ class BakaAuth extends ChangeNotifier {
/// lösen beim App-Start gleichzeitig autoAnmelden aus).
Future<void>? _laufenderAutoLogin;
/// Fehlertext des letzten automatischen Anmeldeversuchs — für Diagnose,
/// da autoAnmelden() (anders als anmelden()) keinen Rückgabewert hat.
String? letzterAutoLoginFehler;
bool get istAngemeldet => _token != null && _token!.isNotEmpty;
String get benutzer => _benutzer;
@@ -114,11 +118,19 @@ class BakaAuth extends ChangeNotifier {
/// authentifizierten Aufruf ohnehin automatisch.
Future<void> autoAnmelden(String benutzer, String passwort) async {
if (istAngemeldet || benutzer.isEmpty || passwort.isEmpty) return;
_laufenderAutoLogin ??= anmelden(benutzer, passwort)
_laufenderAutoLogin ??= _autoAnmeldenIntern(benutzer, passwort)
.whenComplete(() => _laufenderAutoLogin = null);
await _laufenderAutoLogin;
}
Future<void> _autoAnmeldenIntern(String benutzer, String passwort) async {
final fehler = await anmelden(benutzer, passwort);
letzterAutoLoginFehler = fehler;
if (fehler != null) {
debugPrint('Auto-Anmeldung fehlgeschlagen: $fehler');
}
}
Future<void> abmelden() async {
_token = null;
_benutzer = '';