WIP: fix custom playlists on home

This commit is contained in:
Julien Maille 2026-01-02 00:26:17 +01:00
parent 0a52440b0b
commit 057244e73e

View file

@ -225,9 +225,10 @@ export class UIRenderer {
imageHTML = `<img src="${playlist.cover}" alt="${playlist.name}" class="card-image" loading="lazy">`; imageHTML = `<img src="${playlist.cover}" alt="${playlist.name}" class="card-image" loading="lazy">`;
} else { } else {
const tracks = playlist.tracks || []; const tracks = playlist.tracks || [];
const uniqueCovers = []; let uniqueCovers = playlist.images || [];
const seenCovers = new Set(); const seenCovers = new Set(uniqueCovers);
if (uniqueCovers.length === 0) {
for (const track of tracks) { for (const track of tracks) {
const cover = track.album?.cover; const cover = track.album?.cover;
if (cover && !seenCovers.has(cover)) { if (cover && !seenCovers.has(cover)) {
@ -236,13 +237,16 @@ export class UIRenderer {
if (uniqueCovers.length >= 4) break; if (uniqueCovers.length >= 4) break;
} }
} }
}
if (uniqueCovers.length >= 2) { if (uniqueCovers.length >= 2) {
const count = uniqueCovers.length; const count = Math.min(uniqueCovers.length, 4);
const itemsClass = count < 4 ? `items-${count}` : ''; const itemsClass = count < 4 ? `items-${count}` : '';
const covers = uniqueCovers.slice(0, 4);
imageHTML = ` imageHTML = `
<div class="card-image card-collage ${itemsClass}"> <div class="card-image card-collage ${itemsClass}">
${uniqueCovers.map(cover => `<img src="${this.api.getCoverUrl(cover, '320')}" alt="" loading="lazy">`).join('')} ${covers.map(cover => `<img src="${this.api.getCoverUrl(cover, '320')}" alt="" loading="lazy">`).join('')}
</div> </div>
`; `;
} else if (uniqueCovers.length > 0) { } else if (uniqueCovers.length > 0) {
@ -276,7 +280,7 @@ export class UIRenderer {
</button> </button>
</div> </div>
<h3 class="card-title">${playlist.name}</h3> <h3 class="card-title">${playlist.name}</h3>
<p class="card-subtitle">${playlist.tracks ? playlist.tracks.length : 0} tracks</p> <p class="card-subtitle">${playlist.tracks ? playlist.tracks.length : (playlist.numberOfTracks || 0)} tracks</p>
</div> </div>
`; `;
} }
@ -1087,12 +1091,25 @@ async showFullscreenCover(track, nextTrack, lyricsManager, audioPlayer) {
actionsDiv.appendChild(editBtn); actionsDiv.appendChild(editBtn);
actionsDiv.appendChild(deleteBtn); actionsDiv.appendChild(deleteBtn);
const uniqueCovers = [];
const seenCovers = new Set();
const trackList = userPlaylist.tracks || [];
for (const track of trackList) {
const cover = track.album?.cover;
if (cover && !seenCovers.has(cover)) {
seenCovers.add(cover);
uniqueCovers.push(cover);
if (uniqueCovers.length >= 4) break;
}
}
recentActivityManager.addPlaylist({ recentActivityManager.addPlaylist({
id: userPlaylist.id, id: userPlaylist.id,
name: userPlaylist.name, name: userPlaylist.name,
title: userPlaylist.name, title: userPlaylist.name,
uuid: userPlaylist.id, uuid: userPlaylist.id,
cover: userPlaylist.cover, cover: userPlaylist.cover,
images: uniqueCovers,
numberOfTracks: userPlaylist.tracks ? userPlaylist.tracks.length : 0, numberOfTracks: userPlaylist.tracks ? userPlaylist.tracks.length : 0,
isUserPlaylist: true isUserPlaylist: true
}); });