v2.52.1 — F2: YT-Links nur als Server-Fallback
## YT-Quell-URL (Server ist die Quelle) - cloud_service.ytUrlSetzen(): POST /api/v1/cloud/yt-url (per-User UPDATE user_songs.yt_url) - musik_scanner._sucheYtUrls(): durchsucht NUR Songs mit cloud_id, die auf dem Server noch keine yt_url haben; Treffer werden auf den Server hochgeladen statt lokal gespeichert - db_helper: ytUrlAktualisieren/songsOhneYtUrl entfernt, songsMitCloudId() ergänzt - download_service: yt_url wird beim Download nicht mehr lokal persistiert ## Fallback-Kette reDownload (korrupte/fehlende Datei) - 1) Server-Download via cloud_id + Magic-Byte-Check (primäre Quelle) - 2) Server-ytUrl (aus listSongs) → yt-proxy als letzte Chance - 3) Legacy: lokal gespeicherte ytUrl (Bestandsdaten vor v2.52) - song_tile: „Neu laden“ erscheint bei istKorrupt && (cloudId != null || ytUrl != null) - 3 neue Tests (ytUrlSetzen: ok/error/401) → 111 Tests grün, analyze 0 Issues
This commit is contained in:
@@ -71,8 +71,10 @@ class SongTile extends StatelessWidget {
|
||||
trailing: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
// ── Korrupt mit ytUrl: 🔄 Neu laden ──
|
||||
if (song.istKorrupt && song.ytUrl != null && onErneutHerunterladen != null)
|
||||
// ── Korrupt: 🔄 Neu laden (Server-Quelle via cloud_id oder Legacy-ytUrl) ──
|
||||
if (song.istKorrupt &&
|
||||
(song.cloudId != null || song.ytUrl != null) &&
|
||||
onErneutHerunterladen != null)
|
||||
InkWell(
|
||||
borderRadius: BorderRadius.circular(50),
|
||||
onTap: () => onErneutHerunterladen!(song),
|
||||
@@ -231,8 +233,8 @@ class SongTile extends StatelessWidget {
|
||||
onFavoriteToggle(song);
|
||||
},
|
||||
),
|
||||
// ⬇️ Download – nur wenn eine YouTube-Quell-URL existiert
|
||||
if (song.ytUrl != null && onErneutHerunterladen != null)
|
||||
// ⬇️ Neu laden – wenn Server-Quelle (cloud_id) oder Legacy-ytUrl existiert
|
||||
if ((song.cloudId != null || song.ytUrl != null) && onErneutHerunterladen != null)
|
||||
ListTile(
|
||||
leading: const Icon(Icons.download, color: MeloTheme.rot, size: 20),
|
||||
title: Text(
|
||||
|
||||
Reference in New Issue
Block a user