fix(backend): Metadaten-Edit trifft nicht mehr die falsche Datei
Findet das Backend die von Navidrome gemeldete Datei nicht am angegebenen Pfad (Subsonic liefert oft einen aus Tags gebauten virtuellen Pfad), sucht es ueber Dateiname bzw. Kuenstler+Titel weiter. Liegt derselbe Song mehrfach auf der Platte, konnte das die falsche Kopie treffen: die wurde getaggt, der bearbeitete Song blieb unveraendert — die Aenderung "sprang zurueck". Das erklaert, warum es bei Songs ohne Dublette immer ging und bei anderen nie. Der ueber Aehnlichkeit gefundene Kandidat wird jetzt per ffprobe gegen die Tags geprueft, die Navidrome fuer diesen Song meldet, und bei Widerspruch mit 409 und erklaerender Meldung abgebrochen statt geraten. Zusaetzlich melden uebersprungene Umbenennungen und Verschiebungen sich als Warnung, statt stumm zu bleiben; die Antwort nennt den tatsaechlich bearbeiteten Pfad, der Editor zeigt beides an. Ausserdem: -dontwarn org.slf4j.** — der Release-APK-Build brach seit laengerem an R8 ab (Ktors Logging referenziert den slf4j-1.x-Binder, den es auf Android nicht gibt). Vorbestehend, mit HEAD~1 verifiziert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
aae358c4c7
commit
f62b248bb6
4 files changed
+86
-8
No files matched your search
+10
-2
@@ -281,10 +281,18 @@ export async function saveMetadata() {
|
||||
});
|
||||
const d = await r.json();
|
||||
if (!r.ok) throw new Error(d.error || `HTTP ${r.status}`);
|
||||
status.textContent = '✅ Gespeichert! Navidrome scannt…';
|
||||
toast('✅ Metadaten gespeichert');
|
||||
invalidateRomajiIndex();
|
||||
invalidateApiCache('getArtists');
|
||||
// Warnungen des Backends (Dublette am Zielnamen, nicht verschoben, …) sichtbar machen und das
|
||||
// Fenster offen lassen — sonst sieht es nach "gespeichert" aus, obwohl die Datei liegen blieb.
|
||||
if (d.warnings?.length) {
|
||||
status.innerHTML = '⚠ Gespeichert, aber: ' + d.warnings.map(esc).join('<br>⚠ ') +
|
||||
'<br><span style="color:var(--text3)">Datei: ' + esc(d.file || '?') + '</span>';
|
||||
toast('⚠ Gespeichert — mit Hinweisen, siehe Fenster');
|
||||
return;
|
||||
}
|
||||
status.textContent = '✅ Gespeichert! Navidrome scannt…';
|
||||
toast('✅ Metadaten gespeichert');
|
||||
setTimeout(() => { _leaveEditMode(); closeInfoModal(); }, 1500);
|
||||
} catch (e) {
|
||||
status.textContent = '❌ Fehler: ' + e.message;
|
||||
|
||||
Reference in new issue
Block a user