From 5cef23944f396f7cc92052a9cbb666f38fbeb0fe Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 31 Dec 2022 20:07:44 -0800 Subject: [PATCH] Add playlist queue handler --- .../context-menu/context-menu-provider.tsx | 11 ++-- .../player/hooks/use-handle-playqueue-add.ts | 52 +++++++++++++------ 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/renderer/features/context-menu/context-menu-provider.tsx b/src/renderer/features/context-menu/context-menu-provider.tsx index 49cd9be4..c221156f 100644 --- a/src/renderer/features/context-menu/context-menu-provider.tsx +++ b/src/renderer/features/context-menu/context-menu-provider.tsx @@ -93,10 +93,13 @@ export const ContextMenuProvider = ({ children }: ContextMenuProviderProps) => { handlePlayQueueAdd?.({ byData: ctx.data, play }); break; case LibraryItem.PLAYLIST: - handlePlayQueueAdd?.({ - byItemType: { id: ctx.data.map((item) => item.id), type: ctx.type }, - play, - }); + for (const item of ctx.data) { + handlePlayQueueAdd?.({ + byItemType: { id: [item.id], type: ctx.type }, + play, + }); + } + break; } }; diff --git a/src/renderer/features/player/hooks/use-handle-playqueue-add.ts b/src/renderer/features/player/hooks/use-handle-playqueue-add.ts index 58b393d0..e77367a2 100644 --- a/src/renderer/features/player/hooks/use-handle-playqueue-add.ts +++ b/src/renderer/features/player/hooks/use-handle-playqueue-add.ts @@ -31,7 +31,20 @@ export const useHandlePlayQueueAdd = () => { let songsList; let queryFilter: any; let queryKey: any; - if (options.byItemType.type === LibraryItem.ALBUM) { + if (options.byItemType.type === LibraryItem.PLAYLIST) { + queryFilter = { + id: options.byItemType?.id || [], + sortBy: 'id', + sortOrder: SortOrder.ASC, + startIndex: 0, + }; + + queryKey = queryKeys.playlists.songList( + server?.id, + options.byItemType?.id?.[0] || '', + queryFilter, + ); + } else if (options.byItemType.type === LibraryItem.ALBUM) { queryFilter = { albumIds: options.byItemType?.id || [], sortBy: SongListSort.ALBUM, @@ -48,26 +61,29 @@ export const useHandlePlayQueueAdd = () => { startIndex: 0, }; - queryKey = queryKeys.songs.list(server?.id, queryFilter); - } else if (options.byItemType.type === LibraryItem.PLAYLIST) { - queryFilter = { - artistIds: options.byItemType?.id || [], - sortBy: SongListSort.ALBUM, - sortOrder: SortOrder.ASC, - startIndex: 0, - }; - queryKey = queryKeys.songs.list(server?.id, queryFilter); } try { - songsList = await queryClient.fetchQuery(queryKey, async ({ signal }) => - api.controller.getSongList({ - query: queryFilter, - server, - signal, - }), - ); + if (options.byItemType?.type === LibraryItem.PLAYLIST) { + songsList = await queryClient.fetchQuery(queryKey, async ({ signal }) => + api.controller.getPlaylistSongList({ + query: queryFilter, + server, + signal, + }), + ); + + console.log('songsList', songsList); + } else { + songsList = await queryClient.fetchQuery(queryKey, async ({ signal }) => + api.controller.getSongList({ + query: queryFilter, + server, + signal, + }), + ); + } } catch (err: any) { return toast.error({ message: err.message, @@ -91,6 +107,8 @@ export const useHandlePlayQueueAdd = () => { case 'subsonic': break; } + + console.log('songs', songs); } else if (options.byData) { songs = options.byData.map((song) => ({ ...song, uniqueId: nanoid() })); }