fix(ui): wire active state in lists

cx
This commit is contained in:
vicrodh committed 2026-01-19 13:02:43 -06:00
1 parent c59ab226b9
commit 1fae9b7d9f
4 files changed
+31 -7

No files matched your search

+12 -5
View File
@@ -205,11 +205,18 @@
let showArtistGroupMenu = $state(false); let showArtistGroupMenu = $state(false);
let artistGroupingEnabled = $state(false); let artistGroupingEnabled = $state(false);
let customIconSrc = $derived.by(() => function resolveCustomIconSrc(path: string | null): string | null {
favoritesPreferences.custom_icon_path if (!path) return null;
? convertFileSrc(favoritesPreferences.custom_icon_path) if (path.startsWith('asset://') || path.startsWith('http://asset.localhost') || path.startsWith('https://asset.localhost')) {
: null return path;
); }
if (path.startsWith('file://')) {
return path;
}
return convertFileSrc(path);
}
let customIconSrc = $derived.by(() => resolveCustomIconSrc(favoritesPreferences.custom_icon_path));
async function scrollToTrack(trackId: number) { async function scrollToTrack(trackId: number) {
await tick(); await tick();
+7 -1
View File
@@ -61,6 +61,8 @@
downloadStateVersion?: number; downloadStateVersion?: number;
onArtistClick?: (artistId: number) => void; onArtistClick?: (artistId: number) => void;
onTrackPlay?: (track: DisplayTrack) => void; onTrackPlay?: (track: DisplayTrack) => void;
activeTrackId?: number | null;
isPlaybackActive?: boolean;
} }
let { let {
@@ -77,7 +79,9 @@
checkAlbumFullyDownloaded, checkAlbumFullyDownloaded,
downloadStateVersion, downloadStateVersion,
onArtistClick, onArtistClick,
onTrackPlay onTrackPlay,
activeTrackId = null,
isPlaybackActive = false
}: Props = $props(); }: Props = $props();
// Home settings state // Home settings state
@@ -775,6 +779,7 @@
</div> </div>
<div class="track-list compact"> <div class="track-list compact">
{#each continueTracks as track, index} {#each continueTracks as track, index}
{@const isActiveTrack = isPlaybackActive && activeTrackId === track.id}
<TrackRow <TrackRow
trackId={track.id} trackId={track.id}
number={index + 1} number={index + 1}
@@ -783,6 +788,7 @@
album={track.album} album={track.album}
duration={track.duration} duration={track.duration}
quality={getTrackQuality(track)} quality={getTrackQuality(track)}
isPlaying={isActiveTrack}
hideDownload={true} hideDownload={true}
compact={true} compact={true}
onArtistClick={track.artistId && onArtistClick ? () => onArtistClick(track.artistId!) : undefined} onArtistClick={track.artistId && onArtistClick ? () => onArtistClick(track.artistId!) : undefined}
@@ -131,6 +131,8 @@
onTrackPlayLater?: (track: LocalTrack) => void; onTrackPlayLater?: (track: LocalTrack) => void;
onTrackAddToPlaylist?: (trackId: number) => void; onTrackAddToPlaylist?: (trackId: number) => void;
onSetLocalQueue?: (trackIds: number[]) => void; onSetLocalQueue?: (trackIds: number[]) => void;
activeTrackId?: number | null;
isPlaybackActive?: boolean;
} }
let { let {
@@ -140,7 +142,9 @@
onTrackPlayNext, onTrackPlayNext,
onTrackPlayLater, onTrackPlayLater,
onTrackAddToPlaylist, onTrackAddToPlaylist,
onSetLocalQueue onSetLocalQueue,
activeTrackId = null,
isPlaybackActive = false
}: Props = $props(); }: Props = $props();
// View state // View state
@@ -1499,6 +1503,7 @@
artist={track.artist !== selectedAlbum?.artist ? track.artist : undefined} artist={track.artist !== selectedAlbum?.artist ? track.artist : undefined}
duration={formatDuration(track.duration_secs)} duration={formatDuration(track.duration_secs)}
quality={getQualityBadge(track)} quality={getQualityBadge(track)}
isPlaying={isPlaybackActive && activeTrackId === track.id}
isLocal={true} isLocal={true}
hideDownload={true} hideDownload={true}
hideFavorite={true} hideFavorite={true}
@@ -2139,6 +2144,7 @@
artist={track.artist} artist={track.artist}
duration={formatDuration(track.duration_secs)} duration={formatDuration(track.duration_secs)}
quality={getQualityBadge(track)} quality={getQualityBadge(track)}
isPlaying={isPlaybackActive && activeTrackId === track.id}
isLocal={true} isLocal={true}
hideDownload={true} hideDownload={true}
hideFavorite={true} hideFavorite={true}
@@ -2162,6 +2168,7 @@
artist={track.artist} artist={track.artist}
duration={formatDuration(track.duration_secs)} duration={formatDuration(track.duration_secs)}
quality={getQualityBadge(track)} quality={getQualityBadge(track)}
isPlaying={isPlaybackActive && activeTrackId === track.id}
isLocal={true} isLocal={true}
hideDownload={true} hideDownload={true}
hideFavorite={true} hideFavorite={true}
+4
View File
@@ -2058,6 +2058,8 @@
{downloadStateVersion} {downloadStateVersion}
onArtistClick={handleArtistClick} onArtistClick={handleArtistClick}
onTrackPlay={handleDisplayTrackPlay} onTrackPlay={handleDisplayTrackPlay}
activeTrackId={currentTrack?.id ?? null}
isPlaybackActive={isPlaying}
/> />
{/if} {/if}
{:else if activeView === 'search'} {:else if activeView === 'search'}
@@ -2168,6 +2170,8 @@
onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId], true)} onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId], true)}
onSetLocalQueue={handleSetLocalQueue} onSetLocalQueue={handleSetLocalQueue}
onQobuzArtistClick={handleArtistClick} onQobuzArtistClick={handleArtistClick}
activeTrackId={currentTrack?.id ?? null}
isPlaybackActive={isPlaying}
/> />
{:else if activeView === 'playlist' && selectedPlaylistId} {:else if activeView === 'playlist' && selectedPlaylistId}
<PlaylistDetailView <PlaylistDetailView