fix: fetch full song metadata for info modal via getSong API

Renders immediately with available data, then enriches with complete
metadata (genre, bitrate, path, plays, etc.) from getSong response.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-04-28 09:49:43 +02:00
1 parent 068b491a1c
commit 23e8a7ddfb
1 file changed
+10 -1
+10 -1
View File
@@ -199,7 +199,7 @@ document.addEventListener('click', e => {
}); });
// ─── SONG INFO MODAL ─── // ─── SONG INFO MODAL ───
export function showSongInfo(s) { function _renderInfoModal(s) {
const cv = coverUrl(s.coverArt, 200); const cv = coverUrl(s.coverArt, 200);
document.getElementById('info-cover').innerHTML = cv document.getElementById('info-cover').innerHTML = cv
? `<img src="${cv}" style="width:100%;height:100%;object-fit:cover">` ? `<img src="${cv}" style="width:100%;height:100%;object-fit:cover">`
@@ -224,7 +224,16 @@ export function showSongInfo(s) {
document.getElementById('info-rows').innerHTML = fields.map(([l,v]) => document.getElementById('info-rows').innerHTML = fields.map(([l,v]) =>
`<div class="info-row"><span class="info-label">${l}</span><span class="info-val">${esc(String(v))}</span></div>` `<div class="info-row"><span class="info-label">${l}</span><span class="info-val">${esc(String(v))}</span></div>`
).join(''); ).join('');
}
export async function showSongInfo(s) {
document.getElementById('info-modal').classList.add('open'); document.getElementById('info-modal').classList.add('open');
_renderInfoModal(s);
try {
const r = await api('getSong', `&id=${s.id}`);
const full = r.song;
if (full) _renderInfoModal(full);
} catch {}
} }
export function closeInfoModal() { document.getElementById('info-modal').classList.remove('open'); } export function closeInfoModal() { document.getElementById('info-modal').classList.remove('open'); }
document.addEventListener('click', e => { document.addEventListener('click', e => {