WIP: fix custom playlists on home
This commit is contained in:
parent
0a52440b0b
commit
057244e73e
1 changed files with 28 additions and 11 deletions
39
js/ui.js
39
js/ui.js
|
|
@ -225,24 +225,28 @@ 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);
|
||||||
|
|
||||||
for (const track of tracks) {
|
if (uniqueCovers.length === 0) {
|
||||||
const cover = track.album?.cover;
|
for (const track of tracks) {
|
||||||
if (cover && !seenCovers.has(cover)) {
|
const cover = track.album?.cover;
|
||||||
seenCovers.add(cover);
|
if (cover && !seenCovers.has(cover)) {
|
||||||
uniqueCovers.push(cover);
|
seenCovers.add(cover);
|
||||||
if (uniqueCovers.length >= 4) break;
|
uniqueCovers.push(cover);
|
||||||
|
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
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue