fix: invalidate sort caches after metadata save, remove sort-debug logs

After saving sort tags via the metadata editor, invalidate _artistSortMap
and the apiCached getArtists entry so the updated Navidrome sortName values
are picked up on the next page visit without a hard refresh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-06-08 23:34:12 +02:00
1 parent 85f8d758a5
commit 59adee60d5
3 files changed
+4 -6

No files matched your search

+1 -3
View File
@@ -133,12 +133,10 @@ export async function ensureArtistSortMap() {
_artistSortFetch = apiCached('getArtists')
.then(r => {
const all = (r?.artists?.index || []).flatMap(i => i.artist || []);
console.log('[sort-debug] getArtists sample (first 3):', all.slice(0,3).map(a => ({ id: a.id, name: a.name, sortName: a.sortName })));
cacheArtistSortNames(all);
console.log('[sort-debug] _artistSortMap size:', _artistSortMap?.size);
_artistSortFetch = null;
})
.catch(e => { console.warn('[sort-debug] ensureArtistSortMap error:', e); _artistSortFetch = null; });
.catch(e => { console.warn('ensureArtistSortMap error:', e); _artistSortFetch = null; });
return _artistSortFetch;
}
+3 -1
View File
@@ -1,6 +1,6 @@
import { S } from '../state.js';
import { esc, formatDur, toast } from '../utils.js';
import { api, coverUrl, fetchRomajiIndex, romajiLookup, getRomajiOverrides } from '../api.js';
import { api, coverUrl, fetchRomajiIndex, romajiLookup, getRomajiOverrides, invalidateRomajiIndex, invalidateApiCache } from '../api.js';
// Circular — safe (only used inside function bodies)
import { loadPlaylists, loadPlaylistDetail } from '../views/views.js';
import { showConfirm } from './modals.js';
@@ -270,6 +270,8 @@ export async function saveMetadata() {
if (!r.ok) throw new Error(d.error || `HTTP ${r.status}`);
status.textContent = '✅ Gespeichert! Navidrome scannt…';
toast('✅ Metadaten gespeichert');
invalidateRomajiIndex();
invalidateApiCache('getArtists');
setTimeout(() => { _leaveEditMode(); closeInfoModal(); }, 1500);
} catch (e) {
status.textContent = '❌ Fehler: ' + e.message;
-2
View File
@@ -396,8 +396,6 @@ export async function loadAlbumDetail(album) {
const songs = r.album?.song || [];
const totalMin = Math.round(songs.reduce((s,t) => s+(t.duration||0), 0) / 60);
document.getElementById('album-detail-stats').textContent = `${songs.length} Titel · ${r.album.year||''} · ${totalMin} Min.`;
console.log('[sort-debug] r.album full:', JSON.stringify(r.album));
if (songs[0]) console.log('[sort-debug] songs[0] full:', JSON.stringify(songs[0]));
// r.album has sortName (album sort tag) — use it; nav album may not have sortName
document.getElementById('album-detail-name').textContent = dispAlbumName(r.album);
if (songs[0]) {