From 93530008a90416818ab8e71c2ef4b64ecc6af626 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 20 May 2023 20:58:11 -0700 Subject: [PATCH] Add custom query prop to play queue add --- .../player/hooks/use-handle-playqueue-add.ts | 8 ++++---- src/renderer/features/player/utils.ts | 12 +++++++++--- src/renderer/types.ts | 1 + 3 files changed, 14 insertions(+), 7 deletions(-) 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 1f1735ae..26ef4a0a 100644 --- a/src/renderer/features/player/hooks/use-handle-playqueue-add.ts +++ b/src/renderer/features/player/hooks/use-handle-playqueue-add.ts @@ -29,7 +29,7 @@ export const useHandlePlayQueueAdd = () => { const handlePlayQueueAdd = useCallback( async (options: PlayQueueAddOptions) => { if (!server) return toast.error({ message: 'No server selected', type: 'error' }); - const { initialIndex, initialSongId, playType, byData, byItemType } = options; + const { initialIndex, initialSongId, playType, byData, byItemType, query } = options; let songs: QueueSong[] | null = null; let initialSongIndex = 0; @@ -39,11 +39,11 @@ export const useHandlePlayQueueAdd = () => { try { if (itemType === LibraryItem.PLAYLIST) { - songList = await getPlaylistSongsById({ id: id?.[0], queryClient, server }); + songList = await getPlaylistSongsById({ id: id?.[0], query, queryClient, server }); } else if (itemType === LibraryItem.ALBUM) { - songList = await getAlbumSongsById({ id, queryClient, server }); + songList = await getAlbumSongsById({ id, query, queryClient, server }); } else if (itemType === LibraryItem.ALBUM_ARTIST) { - songList = await getAlbumArtistSongsById({ id, queryClient, server }); + songList = await getAlbumArtistSongsById({ id, query, queryClient, server }); } else { songList = await getSongById({ id: id?.[0], queryClient, server }); } diff --git a/src/renderer/features/player/utils.ts b/src/renderer/features/player/utils.ts index 1af7caae..155a83a5 100644 --- a/src/renderer/features/player/utils.ts +++ b/src/renderer/features/player/utils.ts @@ -13,16 +13,18 @@ import { ServerListItem } from '/@/renderer/types'; export const getPlaylistSongsById = async (args: { id: string; + query?: Partial; queryClient: QueryClient; server: ServerListItem; }) => { - const { id, queryClient, server } = args; + const { id, queryClient, server, query } = args; const queryFilter: PlaylistSongListQuery = { id, sortBy: SongListSort.ID, sortOrder: SortOrder.ASC, startIndex: 0, + ...query, }; const queryKey = queryKeys.playlists.songList(server?.id, id, queryFilter); @@ -49,16 +51,18 @@ export const getPlaylistSongsById = async (args: { export const getAlbumSongsById = async (args: { id: string[]; orderByIds?: boolean; + query?: Partial; queryClient: QueryClient; server: ServerListItem; }) => { - const { id, queryClient, server } = args; + const { id, queryClient, server, query } = args; const queryFilter: SongListQuery = { albumIds: id, sortBy: SongListSort.ALBUM, sortOrder: SortOrder.ASC, startIndex: 0, + ...query, }; const queryKey = queryKeys.songs.list(server?.id, queryFilter); @@ -85,16 +89,18 @@ export const getAlbumSongsById = async (args: { export const getAlbumArtistSongsById = async (args: { id: string[]; orderByIds?: boolean; + query?: Partial; queryClient: QueryClient; server: ServerListItem; }) => { - const { id, queryClient, server } = args; + const { id, queryClient, server, query } = args; const queryFilter: SongListQuery = { artistIds: id || [], sortBy: SongListSort.ALBUM_ARTIST, sortOrder: SortOrder.ASC, startIndex: 0, + ...query, }; const queryKey = queryKeys.songs.list(server?.id, queryFilter); diff --git a/src/renderer/types.ts b/src/renderer/types.ts index 3df22f90..cb09d6fe 100644 --- a/src/renderer/types.ts +++ b/src/renderer/types.ts @@ -157,6 +157,7 @@ export type PlayQueueAddOptions = { initialIndex?: number; initialSongId?: string; playType: Play; + query?: Record; }; export type GridCardData = {