Merge PR #18: add album to playlist

This commit is contained in:
vicrodh committed 2026-01-22 23:12:19 -06:00
commit 1fdd4d9711
7 files changed
+65 -3

No files matched your search

+3
View File
@@ -21,6 +21,7 @@
onPlay?: () => void; onPlay?: () => void;
onPlayNext?: () => void; onPlayNext?: () => void;
onPlayLater?: () => void; onPlayLater?: () => void;
onAddAlbumToPlaylist?: () => void;
onShareQobuz?: () => void; onShareQobuz?: () => void;
onShareSonglink?: () => void; onShareSonglink?: () => void;
onDownload?: () => void; onDownload?: () => void;
@@ -44,6 +45,7 @@
onPlay, onPlay,
onPlayNext, onPlayNext,
onPlayLater, onPlayLater,
onAddAlbumToPlaylist,
onShareQobuz, onShareQobuz,
onShareSonglink, onShareSonglink,
onDownload, onDownload,
@@ -202,6 +204,7 @@
<AlbumMenu <AlbumMenu
onPlayNext={onPlayNext} onPlayNext={onPlayNext}
onPlayLater={onPlayLater} onPlayLater={onPlayLater}
onAddToPlaylist={onAddAlbumToPlaylist}
onShareQobuz={onShareQobuz} onShareQobuz={onShareQobuz}
onShareSonglink={onShareSonglink} onShareSonglink={onShareSonglink}
onDownload={onDownload} onDownload={onDownload}
+17 -2
View File
@@ -6,6 +6,7 @@
MoreHorizontal, MoreHorizontal,
ListPlus, ListPlus,
ListEnd, ListEnd,
ListMusic,
Share2, Share2,
CloudDownload, CloudDownload,
Link, Link,
@@ -15,6 +16,7 @@
interface Props { interface Props {
onPlayNext?: () => void; onPlayNext?: () => void;
onPlayLater?: () => void; onPlayLater?: () => void;
onAddToPlaylist?: () => void;
onShareQobuz?: () => void; onShareQobuz?: () => void;
onShareSonglink?: () => void; onShareSonglink?: () => void;
onDownload?: () => void; onDownload?: () => void;
@@ -27,6 +29,7 @@
let { let {
onPlayNext, onPlayNext,
onPlayLater, onPlayLater,
onAddToPlaylist,
onShareQobuz, onShareQobuz,
onShareSonglink, onShareSonglink,
onDownload, onDownload,
@@ -53,9 +56,10 @@
const menuId = Symbol('album-menu'); const menuId = Symbol('album-menu');
const hasQueue = $derived(!!(onPlayNext || onPlayLater)); const hasQueue = $derived(!!(onPlayNext || onPlayLater));
const hasLibrary = $derived(!!onAddToPlaylist);
const hasShare = $derived(!!(onShareQobuz || onShareSonglink)); const hasShare = $derived(!!(onShareQobuz || onShareSonglink));
const hasDownload = $derived(!!onDownload || isAlbumFullyDownloaded); const hasDownload = $derived(!!onDownload || isAlbumFullyDownloaded);
const hasMenu = $derived(hasQueue || hasShare || hasDownload); const hasMenu = $derived(hasQueue || hasLibrary || hasShare || hasDownload);
function closeMenu() { function closeMenu() {
isOpen = false; isOpen = false;
@@ -260,7 +264,18 @@
{/if} {/if}
{/if} {/if}
{#if hasQueue && (hasShare || hasDownload)} {#if hasQueue && (hasLibrary || hasShare || hasDownload)}
<div class="separator"></div>
{/if}
{#if hasLibrary}
<button class="menu-item" onclick={() => handleAction(onAddToPlaylist)}>
<ListMusic size={14} />
<span>Add to playlist</span>
</button>
{/if}
{#if hasLibrary && (hasShare || hasDownload)}
<div class="separator"></div> <div class="separator"></div>
{/if} {/if}
@@ -56,6 +56,7 @@
onPlayAllNext?: () => void; onPlayAllNext?: () => void;
onPlayAllLater?: () => void; onPlayAllLater?: () => void;
onAddTrackToPlaylist?: (trackId: number) => void; onAddTrackToPlaylist?: (trackId: number) => void;
onAddAlbumToPlaylist?: () => void;
onTrackDownload?: (track: Track) => void; onTrackDownload?: (track: Track) => void;
onTrackRemoveDownload?: (trackId: number) => void; onTrackRemoveDownload?: (trackId: number) => void;
onTrackReDownload?: (track: Track) => void; onTrackReDownload?: (track: Track) => void;
@@ -87,6 +88,7 @@
onPlayAllNext, onPlayAllNext,
onPlayAllLater, onPlayAllLater,
onAddTrackToPlaylist, onAddTrackToPlaylist,
onAddAlbumToPlaylist,
onTrackDownload, onTrackDownload,
onTrackRemoveDownload, onTrackRemoveDownload,
onTrackReDownload, onTrackReDownload,
@@ -160,6 +162,11 @@
isFavoriteLoading = false; isFavoriteLoading = false;
} }
} }
function handleAddAlbumToPlaylist() {
if (!album?.tracks?.length) return;
onAddAlbumToPlaylist?.();
}
</script> </script>
<div class="album-detail" bind:this={scrollContainer}> <div class="album-detail" bind:this={scrollContainer}>
@@ -216,6 +223,7 @@
<AlbumMenu <AlbumMenu
onPlayNext={onPlayAllNext} onPlayNext={onPlayAllNext}
onPlayLater={onPlayAllLater} onPlayLater={onPlayAllLater}
onAddToPlaylist={onAddAlbumToPlaylist ? handleAddAlbumToPlaylist : undefined}
onShareQobuz={onShareAlbumQobuz} onShareQobuz={onShareAlbumQobuz}
onShareSonglink={onShareAlbumSonglink} onShareSonglink={onShareAlbumSonglink}
onDownload={onDownloadAlbum} onDownload={onDownloadAlbum}
@@ -68,6 +68,7 @@
onTrackPlayLater?: (track: Track) => void; onTrackPlayLater?: (track: Track) => void;
onTrackAddFavorite?: (trackId: number) => void; onTrackAddFavorite?: (trackId: number) => void;
onTrackAddToPlaylist?: (trackId: number) => void; onTrackAddToPlaylist?: (trackId: number) => void;
onAddAlbumToPlaylist?: (albumId: string) => void;
onTrackShareQobuz?: (trackId: number) => void; onTrackShareQobuz?: (trackId: number) => void;
onTrackShareSonglink?: (track: Track) => void; onTrackShareSonglink?: (track: Track) => void;
onTrackGoToAlbum?: (albumId: string) => void; onTrackGoToAlbum?: (albumId: string) => void;
@@ -98,6 +99,7 @@
onTrackPlayLater, onTrackPlayLater,
onTrackAddFavorite, onTrackAddFavorite,
onTrackAddToPlaylist, onTrackAddToPlaylist,
onAddAlbumToPlaylist,
onTrackShareQobuz, onTrackShareQobuz,
onTrackShareSonglink, onTrackShareSonglink,
onTrackGoToAlbum, onTrackGoToAlbum,
@@ -1019,6 +1021,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -1062,6 +1065,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -1093,6 +1097,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -1124,6 +1129,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -1155,6 +1161,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
+9
View File
@@ -64,6 +64,7 @@
onTrackPlayNext?: (track: DisplayTrack) => void; onTrackPlayNext?: (track: DisplayTrack) => void;
onTrackPlayLater?: (track: DisplayTrack) => void; onTrackPlayLater?: (track: DisplayTrack) => void;
onTrackAddToPlaylist?: (trackId: number) => void; onTrackAddToPlaylist?: (trackId: number) => void;
onAddAlbumToPlaylist?: (albumId: string) => void;
onTrackShareQobuz?: (trackId: number) => void; onTrackShareQobuz?: (trackId: number) => void;
onTrackShareSonglink?: (track: DisplayTrack) => void; onTrackShareSonglink?: (track: DisplayTrack) => void;
onTrackGoToAlbum?: (albumId: string) => void; onTrackGoToAlbum?: (albumId: string) => void;
@@ -94,6 +95,7 @@
onTrackPlayNext, onTrackPlayNext,
onTrackPlayLater, onTrackPlayLater,
onTrackAddToPlaylist, onTrackAddToPlaylist,
onAddAlbumToPlaylist,
onTrackShareQobuz, onTrackShareQobuz,
onTrackShareSonglink, onTrackShareSonglink,
onTrackGoToAlbum, onTrackGoToAlbum,
@@ -639,6 +641,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -667,6 +670,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -695,6 +699,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -723,6 +728,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -751,6 +757,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -779,6 +786,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -877,6 +885,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -83,6 +83,7 @@
onTrackPlayLater?: (track: Track) => void; onTrackPlayLater?: (track: Track) => void;
onTrackAddFavorite?: (trackId: number) => void; onTrackAddFavorite?: (trackId: number) => void;
onTrackAddToPlaylist?: (trackId: number) => void; onTrackAddToPlaylist?: (trackId: number) => void;
onAddAlbumToPlaylist?: (albumId: string) => void;
onTrackShareQobuz?: (trackId: number) => void; onTrackShareQobuz?: (trackId: number) => void;
onTrackShareSonglink?: (track: Track) => void; onTrackShareSonglink?: (track: Track) => void;
onTrackGoToAlbum?: (albumId: string) => void; onTrackGoToAlbum?: (albumId: string) => void;
@@ -113,6 +114,7 @@
onTrackPlayLater, onTrackPlayLater,
onTrackAddFavorite, onTrackAddFavorite,
onTrackAddToPlaylist, onTrackAddToPlaylist,
onAddAlbumToPlaylist,
onTrackShareQobuz, onTrackShareQobuz,
onTrackShareSonglink, onTrackShareSonglink,
onTrackGoToAlbum, onTrackGoToAlbum,
@@ -626,6 +628,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(allResults.albums.items[0].id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(allResults.albums.items[0].id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(allResults.albums.items[0].id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(allResults.albums.items[0].id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(allResults.albums.items[0].id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(allResults.albums.items[0].id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(allResults.albums.items[0].id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(allResults.albums.items[0].id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(allResults.albums.items[0].id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(allResults.albums.items[0].id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(allResults.albums.items[0].id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(allResults.albums.items[0].id) : undefined}
@@ -757,6 +760,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
@@ -923,6 +927,7 @@
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined} onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined} onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined} onPlayLater={onAlbumPlayLater ? () => onAlbumPlayLater(album.id) : undefined}
onAddAlbumToPlaylist={onAddAlbumToPlaylist ? () => onAddAlbumToPlaylist(album.id) : undefined}
onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined} onShareQobuz={onAlbumShareQobuz ? () => onAlbumShareQobuz(album.id) : undefined}
onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined} onShareSonglink={onAlbumShareSonglink ? () => onAlbumShareSonglink(album.id) : undefined}
onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined} onDownload={onAlbumDownload ? () => onAlbumDownload(album.id) : undefined}
+16 -1
View File
@@ -1110,6 +1110,17 @@
} }
} }
async function addAlbumToPlaylistById(albumId: string) {
const album = await fetchAlbumDetail(albumId);
addAlbumToPlaylist(album);
}
function addAlbumToPlaylist(album: AlbumDetail | null) {
if (!album?.tracks?.length) return;
const trackIds = album.tracks.map(t => t.id);
openAddToPlaylist(trackIds);
}
// Share album Qobuz link // Share album Qobuz link
function shareAlbumQobuzLink() { function shareAlbumQobuzLink() {
if (!selectedAlbum?.id) return; if (!selectedAlbum?.id) return;
@@ -1447,7 +1458,7 @@
function handlePlaylistCreated() { function handlePlaylistCreated() {
if (playlistModalMode === 'addTrack') { if (playlistModalMode === 'addTrack') {
showToast('Track added to playlist', 'success'); showToast('Track(s) added to playlist', 'success');
} else { } else {
showToast('Playlist created', 'success'); showToast('Playlist created', 'success');
} }
@@ -2122,6 +2133,7 @@
onTrackPlayNext={queueQobuzTrackNext} onTrackPlayNext={queueQobuzTrackNext}
onTrackPlayLater={queueQobuzTrackLater} onTrackPlayLater={queueQobuzTrackLater}
onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId])} onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId])}
onAddAlbumToPlaylist={addAlbumToPlaylistById}
onTrackShareQobuz={shareQobuzTrackLink} onTrackShareQobuz={shareQobuzTrackLink}
onTrackShareSonglink={(track) => shareSonglinkTrack(track.id, track.isrc)} onTrackShareSonglink={(track) => shareSonglinkTrack(track.id, track.isrc)}
onTrackGoToAlbum={handleAlbumClick} onTrackGoToAlbum={handleAlbumClick}
@@ -2158,6 +2170,7 @@
onTrackPlayLater={queueQobuzTrackLater} onTrackPlayLater={queueQobuzTrackLater}
onTrackAddFavorite={handleAddToFavorites} onTrackAddFavorite={handleAddToFavorites}
onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId])} onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId])}
onAddAlbumToPlaylist={addAlbumToPlaylistById}
onTrackShareQobuz={shareQobuzTrackLink} onTrackShareQobuz={shareQobuzTrackLink}
onTrackShareSonglink={(track) => shareSonglinkTrack(track.id, track.isrc)} onTrackShareSonglink={(track) => shareSonglinkTrack(track.id, track.isrc)}
onTrackGoToAlbum={handleAlbumClick} onTrackGoToAlbum={handleAlbumClick}
@@ -2199,6 +2212,7 @@
onPlayAllNext={handleAddAlbumToQueueNext} onPlayAllNext={handleAddAlbumToQueueNext}
onPlayAllLater={handleAddAlbumToQueueLater} onPlayAllLater={handleAddAlbumToQueueLater}
onAddTrackToPlaylist={(trackId) => openAddToPlaylist([trackId])} onAddTrackToPlaylist={(trackId) => openAddToPlaylist([trackId])}
onAddAlbumToPlaylist={() => addAlbumToPlaylist(selectedAlbum)}
onTrackDownload={handleTrackDownload} onTrackDownload={handleTrackDownload}
onTrackRemoveDownload={handleTrackRemoveDownload} onTrackRemoveDownload={handleTrackRemoveDownload}
onTrackReDownload={handleTrackReDownload} onTrackReDownload={handleTrackReDownload}
@@ -2232,6 +2246,7 @@
onTrackPlayLater={queueQobuzTrackLater} onTrackPlayLater={queueQobuzTrackLater}
onTrackAddFavorite={handleAddToFavorites} onTrackAddFavorite={handleAddToFavorites}
onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId])} onTrackAddToPlaylist={(trackId) => openAddToPlaylist([trackId])}
onAddAlbumToPlaylist={addAlbumToPlaylistById}
onTrackShareQobuz={shareQobuzTrackLink} onTrackShareQobuz={shareQobuzTrackLink}
onTrackShareSonglink={(track) => shareSonglinkTrack(track.id, track.isrc)} onTrackShareSonglink={(track) => shareSonglinkTrack(track.id, track.isrc)}
onTrackGoToAlbum={handleAlbumClick} onTrackGoToAlbum={handleAlbumClick}