diff --git a/src/api.js b/src/api.js index 838134a..90b3f32 100644 --- a/src/api.js +++ b/src/api.js @@ -124,16 +124,24 @@ export function romajiLookup(id) { return _romajiMap?.get(String(id)) ?? null; } // Display helpers — return romaji when showRomaji is on and the song is in the index, // otherwise fall back to the original Navidrome values. +// Overrides (localStorage) always take priority over auto-converted index values. export function dispTitle(s) { if (!S.cfg.showRomaji) return s.title || ''; + const ov = getRomajiOverrides(); + if (s.title && ov[s.title]) return ov[s.title]; return romajiLookup(s.id)?.titleRomaji || s.title || ''; } export function dispArtist(s) { if (!S.cfg.showRomaji) return s.artist || ''; + const ov = getRomajiOverrides(); + if (s.artist && ov[s.artist]) return ov[s.artist]; + if (s.albumArtist && ov[s.albumArtist]) return ov[s.albumArtist]; return romajiLookup(s.id)?.artistRomaji || s.artist || ''; } export function dispAlbum(s) { if (!S.cfg.showRomaji) return s.album || ''; + const ov = getRomajiOverrides(); + if (s.album && ov[s.album]) return ov[s.album]; return romajiLookup(s.id)?.albumRomaji || s.album || ''; } // Returns [{name, id}] like parseArtists but with romaji display names when showRomaji is on. @@ -141,6 +149,9 @@ export function dispAlbum(s) { export function dispArtistParts(s, parseArtistsFn) { const parts = parseArtistsFn(s); if (!S.cfg.showRomaji) return parts; + const ov = getRomajiOverrides(); + if (s.artist && ov[s.artist]) return [{ name: ov[s.artist], id: parts[0]?.id || '' }]; + if (s.albumArtist && ov[s.albumArtist]) return [{ name: ov[s.albumArtist], id: parts[0]?.id || '' }]; const info = romajiLookup(s.id); if (!info?.artistRomaji) return parts; return [{ name: info.artistRomaji, id: parts[0]?.id || '' }];