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:
@@ -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 = '';
|
||||
|
||||
@@ -145,6 +145,7 @@ class NavidromeService {
|
||||
/// Zugangsdaten.
|
||||
String get benutzer => _user;
|
||||
String get passwort => _password;
|
||||
String get serverUrl => _serverUrl;
|
||||
|
||||
/// Dekodiert eine Subsonic-JSON-Antwort und wirft [NavidromeException],
|
||||
/// wenn der Server `status:"failed"` meldet (z. B. falsches Passwort) —
|
||||
|
||||
Reference in New Issue
Block a user