Fix onclick handlers for artist/album/playlist - use correct quote escaping

This commit is contained in:
Your Name
2026-01-11 19:52:43 +01:00
parent 28c5a2fcb3
commit 9dbc5bf860

27
ui.ts
View File

@@ -293,14 +293,29 @@ function render(f,append){
var type=s.resultType||'song'; var type=s.resultType||'song';
var playable=s.videoId&&(type==='song'||type==='video'); var playable=s.videoId&&(type==='song'||type==='video');
var click=''; var click='';
if(playable){click='play('+i+')';} // Check browseId prefix to determine actual type
else if(type==='artist'&&s.browseId){click='viewArtist("'+s.browseId+'")';} var bid=s.browseId||'';
else if(type==='album'&&s.browseId){click='viewAlbum("'+s.browseId+'")';} var isPlaylist=bid.startsWith('VL')||bid.startsWith('RDCLAK')||type==='playlist';
else if(type==='playlist'&&(s.browseId||s.playlistId)){click='viewPlaylist("'+(s.playlistId||s.browseId)+'")';} var isAlbum=bid.startsWith('MPRE')&&!isPlaylist;
else if(s.browseId){click='viewArtist("'+s.browseId+'")';} var isArtist=bid.startsWith('UC')||type==='artist';
if(playable){
click='play('+i+')';
}else if(isPlaylist&&bid){
click="viewPlaylist('"+bid+"')";
type='playlist';
}else if(isAlbum&&bid){
click="viewAlbum('"+bid+"')";
type='album';
}else if(isArtist&&bid){
click="viewArtist('"+bid+"')";
type='artist';
}else if(bid){
click="viewArtist('"+bid+"')";
}
var img=s.thumbnails?.[0]?.url||(s.videoId?'https://img.youtube.com/vi/'+s.videoId+'/mqdefault.jpg':''); var img=s.thumbnails?.[0]?.url||(s.videoId?'https://img.youtube.com/vi/'+s.videoId+'/mqdefault.jpg':'');
var badge=type!=='song'&&type!=='video'?'<span style="font-size:.65rem;color:var(--accent);margin-left:8px;text-transform:uppercase">'+type+'</span>':''; var badge=type!=='song'&&type!=='video'?'<span style="font-size:.65rem;color:var(--accent);margin-left:8px;text-transform:uppercase">'+type+'</span>':'';
return '<div class="result'+(i===idx?' active':'')+(click?'':' disabled')+'" onclick="'+click+'" style="'+(click?'cursor:pointer':'opacity:0.5;cursor:default')+'"><img class="thumb" src="'+img+'"><div class="info"><div class="name">'+esc(s.title||s.name||'Unknown')+badge+'</div><div class="artist">'+esc(s.artists?.map(a=>a.name).join(', ')||s.subtitle||'')+'</div></div><div class="dur">'+(s.duration||'')+'</div></div>'; return '<div class="result'+(i===idx?' active':'')+'" onclick="'+click+'" style="cursor:pointer"><img class="thumb" src="'+img+'"><div class="info"><div class="name">'+esc(s.title||s.name||'Unknown')+badge+'</div><div class="artist">'+esc(s.artists?.map(a=>a.name).join(', ')||s.subtitle||'')+'</div></div><div class="dur">'+(s.duration||'')+'</div></div>';
}).join(''); }).join('');
if(append)el.innerHTML+=html; if(append)el.innerHTML+=html;
else el.innerHTML=html; else el.innerHTML=html;