UX-Simulation, Teil 2: Player-Feinschliff, Downloads, Einstellungen
Zweiter Block aus der UX-Simulation (39 Funde insgesamt): - Songtext-Icon deaktiviert statt totem Knopf, wenn kein Ziel bekannt ist - Sleep-Timer-Restzeit jetzt auch im Sheet sichtbar, nicht nur im Tooltip - Drag-Handle in der Warteschlange, Wisch-nach-unten schließt den Vollbild-Player - Fehlender Tooltip am Songtext-Sheet-Schließen-Knopf ergänzt - YouTube-Download: Zeitüberschreitung meldet sich anders als toter Server - Server-Tab zeigte beim Öffnen kurz fälschlich "nicht verbunden" - Einstellungen: Favoriten-/Playlisten-Sync von "Speicher" zu "Musikserver" verschoben, Navidrome-Eintrag erklärt jetzt seinen Zweck - Kommentar in geteilte_adresse.dart korrigiert (Verhalten unverändert, dafür gibt es einen Test) Bewusst zurückgestellt: ServerFavoriteButton bleibt lokal-only (dokumentierte Architektur-Entscheidung, siehe G3 im UX-Review), Live-Wischgeste am Mini-Player, YouTube-Download-Abbrechen, Download-Badge im inaktiven Unterreiter, Versionsnummer (neue Abhängigkeit nötig). 539 Tests grün (vorher 537), flutter analyze ohne Befund.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
@@ -88,6 +89,12 @@ class YtDownloadService extends ChangeNotifier {
|
||||
body: jsonEncode({'url': url, 'cookies': cookies}),
|
||||
)
|
||||
.timeout(const Duration(seconds: 180));
|
||||
} on TimeoutException {
|
||||
// Anders als bei einem Verbindungsfehler ist der Proxy hier vermutlich
|
||||
// erreichbar, arbeitet nur noch — "nicht erreichbar" würde in die
|
||||
// Irre führen.
|
||||
_scheitere('Der Server braucht zu lange — bitte später erneut versuchen');
|
||||
return null;
|
||||
} catch (e) {
|
||||
debugPrint('YT-Proxy nicht erreichbar: $e');
|
||||
_scheitere('Proxy nicht erreichbar');
|
||||
@@ -125,6 +132,12 @@ class YtDownloadService extends ChangeNotifier {
|
||||
return null;
|
||||
}
|
||||
await datei.writeAsBytes(mp3.bodyBytes);
|
||||
} on TimeoutException {
|
||||
if (await datei.exists()) {
|
||||
await datei.delete();
|
||||
}
|
||||
_scheitere('Der Server braucht zu lange — bitte später erneut versuchen');
|
||||
return null;
|
||||
} catch (e) {
|
||||
debugPrint('MP3-Abruf fehlgeschlagen: $e');
|
||||
// Halbe Dateien nicht liegen lassen — sonst taucht Müll in der
|
||||
|
||||
Reference in New Issue
Block a user