v2.51.4 — Review-Fix MED-2: „Trennen“ (Musikserver) persistiert jetzt
## MED-2 (navidrome_service.dart + home_screen.dart) - Neues NavidromeService.loescheZugangsdaten(): löscht In-Memory-Zustand UND persistierte Credentials (SharedPreferences navidrome_url/user + SecureStorage navidrome_pass) - _zeigeServerBrowser() ist async und ruft loescheZugangsdaten() beim Trennen auf — Chip bleibt nach App-Neustart rot statt wieder grün
This commit is contained in:
@@ -217,12 +217,13 @@ class _MeloHomeState extends State<MeloHome> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _zeigeServerBrowser() {
|
Future<void> _zeigeServerBrowser() async {
|
||||||
if (_vm.navidrome.istVerbunden) {
|
if (_vm.navidrome.istVerbunden) {
|
||||||
// Abmelden
|
// Trennen: auch gespeicherte Zugangsdaten löschen (SharedPreferences +
|
||||||
_vm.navidrome.setCredentials('', '', '');
|
// SecureStorage) — sonst ist der Chip nach App-Neustart wieder grün.
|
||||||
|
await _vm.navidrome.loescheZugangsdaten();
|
||||||
_vm.navidromeAlben.clear();
|
_vm.navidromeAlben.clear();
|
||||||
setState(() {});
|
if (mounted) setState(() {});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Verbinden: einfacher Login-Dialog
|
// Verbinden: einfacher Login-Dialog
|
||||||
|
|||||||
@@ -111,6 +111,26 @@ class NavidromeService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Trennt die Verbindung dauerhaft: In-Memory-Zustand UND persistierte
|
||||||
|
/// Zugangsdaten (SharedPreferences + SecureStorage) werden gelöscht.
|
||||||
|
/// Sonst lädt `ladeGespeicherteZugangsdaten()` beim nächsten App-Start
|
||||||
|
/// die alten Daten wieder und der Musikserver-Chip wäre wieder grün.
|
||||||
|
Future<void> loescheZugangsdaten() async {
|
||||||
|
_serverUrl = '';
|
||||||
|
_user = '';
|
||||||
|
_password = '';
|
||||||
|
_salt = '';
|
||||||
|
_token = null;
|
||||||
|
try {
|
||||||
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
await prefs.remove('navidrome_url');
|
||||||
|
await prefs.remove('navidrome_user');
|
||||||
|
await _secure.delete(key: 'navidrome_pass');
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('Fehler beim Löschen der Navidrome-Zugangsdaten: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool get istVerbunden => _serverUrl.isNotEmpty && _user.isNotEmpty;
|
bool get istVerbunden => _serverUrl.isNotEmpty && _user.isNotEmpty;
|
||||||
|
|
||||||
Uri _uri(String endpoint, [Map<String, String>? extra]) {
|
Uri _uri(String endpoint, [Map<String, String>? extra]) {
|
||||||
|
|||||||
Reference in New Issue
Block a user