diff --git a/src/lib/components/views/SearchView.svelte b/src/lib/components/views/SearchView.svelte index 2658e9812..1fb9e7b6c 100644 --- a/src/lib/components/views/SearchView.svelte +++ b/src/lib/components/views/SearchView.svelte @@ -5,6 +5,7 @@ import AlbumCard from '../AlbumCard.svelte'; import TrackMenu from '../TrackMenu.svelte'; import { getSearchState, setSearchState, type SearchResults, type SearchAllResults, type SearchTab } from '$lib/stores/searchState'; + import { setPlaybackContext } from '$lib/stores/playbackContextStore'; import { t } from '$lib/i18n'; let searchInput: HTMLInputElement | null = null; @@ -375,6 +376,28 @@ return track.album?.image?.large || track.album?.image?.thumbnail || track.album?.image?.small || ''; } + function handleSearchTrackPlay(track: Track, trackIndex: number) { + // Create search results context + if (trackResults && trackResults.items.length > 0) { + const trackIds = trackResults.items.map(t => t.id); + + setPlaybackContext( + 'search', + currentQuery, + `Search: ${currentQuery}`, + 'qobuz', + trackIds, + trackIndex + ); + console.log(`[Search] Context created: "${currentQuery}", ${trackIds.length} tracks, starting at ${trackIndex}`); + } + + // Play track + if (onTrackPlay) { + onTrackPlay(track); + } + } + function getArtistImage(artist: Artist): string { return artist.image?.large || artist.image?.thumbnail || artist.image?.small || ''; } @@ -725,8 +748,8 @@ class="track-row" role="button" tabindex="0" - onclick={() => onTrackPlay?.(track)} - onkeydown={(e) => e.key === 'Enter' && onTrackPlay?.(track)} + onclick={() => handleSearchTrackPlay(track, index)} + onkeydown={(e) => e.key === 'Enter' && handleSearchTrackPlay(track, index)} >
{index + 1}
{#if failedTrackImages.has(track.id) || !getTrackArtwork(track)} @@ -738,7 +761,7 @@ {track.title} handleTrackImageError(track.id)} />