diff --git a/src/api.js b/src/api.js index d19efc3..ceb0789 100644 --- a/src/api.js +++ b/src/api.js @@ -213,12 +213,12 @@ export function dispArtist(s) { if (st && !_isJp(st)) return st; return romajiLookup(s.id)?.artistRomaji || s.artist || ''; } +// Songs don't carry album sort — Navidrome only puts sortName on album objects. +// Check the override list, then return the raw album name. export function dispAlbum(s) { if (!S.cfg.showRomaji) return s.album || ''; const ov = getRomajiOverrides(); if (s.album && ov[s.album]) return ov[s.album]; - const st = s.sortAlbum || s.albumSort; - if (st && !_isJp(st)) return st; return s.album || ''; } // Returns [{name, id}] like parseArtists but with romaji display names when showRomaji is on. diff --git a/src/views/detail.js b/src/views/detail.js index b82ee8c..ed5a2fa 100644 --- a/src/views/detail.js +++ b/src/views/detail.js @@ -1,6 +1,6 @@ import { S } from '../state.js'; import { esc, toast } from '../utils.js'; -import { api, coverUrl, itunesSearch, itunesLookupAlbum, itunesLookupArtistSongs, itunesLookupArtistAlbums, fetchRomajiIndex, dispArtistById, dispAlbumName, dispAlbum, cacheArtistSortNames } from '../api.js'; +import { api, coverUrl, itunesSearch, itunesLookupAlbum, itunesLookupArtistSongs, itunesLookupArtistAlbums, fetchRomajiIndex, dispArtistById, dispAlbumName, cacheArtistSortNames } from '../api.js'; import { makeCard, makeAlbumCard, makeGlobalTrackItem, makeSongItem } from '../ui/components.js'; import { playQueue, dlSongLocal, toggleStar, parseArtists } from '../player/player.js'; import { showCtxMenu, openDlModal } from '../ui/ui.js'; @@ -395,11 +395,9 @@ 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.`; + // 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]) { - const s0 = songs[0]; - console.log('[sort-debug] song[0] ALL sort keys:', Object.fromEntries(Object.entries(s0).filter(([k]) => k.toLowerCase().includes('sort')))); - console.log('[sort-debug] r.album ALL sort keys:', Object.fromEntries(Object.entries(r.album).filter(([k]) => k.toLowerCase().includes('sort')))); - document.getElementById('album-detail-name').textContent = dispAlbum(songs[0]) || dispAlbumName(album); artistEl.innerHTML = parseArtists(songs[0]) .map(a => `${esc(dispArtistById(a.id, a.name))}`) .join(' • ') || '';