handlePlaySong(song, index)}
+ onkeydown={(e) => {
+ if (e.key === 'Enter' || e.key === ' ') {
+ e.preventDefault();
+ handlePlaySong(song, index);
+ }
+ }}
+ class="grid grid-cols-[40px_1fr_1fr_1fr_80px_40px_40px_40px] gap-4 px-4 py-3 hover:bg-background transition-colors items-center cursor-pointer group {playerStore
+ .currentSong?.id === song.id
+ ? 'bg-primary/5'
+ : ''}"
>
- {#if song.coverArtPath && libraryStore.coverUrls[song.coverArtPath]}
+ {#if song.coverArtPath && libraryStore.coverUrls[song.coverArtPath] && !failedCovers.has(song.id)}

{
+ failedCovers = new Set([...failedCovers, song.id]);
+ }}
/>
{:else}
{/if}
+
+ {#if playerStore.currentSong?.id === song.id && playerStore.isPlaying}
+
+ {:else}
+
+ {/if}
@@ -254,11 +300,15 @@
- {#if album.coverArtPath && libraryStore.coverUrls[album.coverArtPath]}
+ {#if album.coverArtPath && libraryStore.coverUrls[album.coverArtPath] && !failedCovers.has(album.coverArtPath)}

{
+ if (album.coverArtPath)
+ failedCovers = new Set([...failedCovers, album.coverArtPath]);
+ }}
/>
{:else}