Add playlist queue handler

This commit is contained in:
jeffvli 2022-12-31 20:07:44 -08:00
parent aa1cd742ad
commit 5cef23944f
2 changed files with 42 additions and 21 deletions

View file

@ -93,10 +93,13 @@ export const ContextMenuProvider = ({ children }: ContextMenuProviderProps) => {
handlePlayQueueAdd?.({ byData: ctx.data, play }); handlePlayQueueAdd?.({ byData: ctx.data, play });
break; break;
case LibraryItem.PLAYLIST: case LibraryItem.PLAYLIST:
handlePlayQueueAdd?.({ for (const item of ctx.data) {
byItemType: { id: ctx.data.map((item) => item.id), type: ctx.type }, handlePlayQueueAdd?.({
play, byItemType: { id: [item.id], type: ctx.type },
}); play,
});
}
break; break;
} }
}; };

View file

@ -31,7 +31,20 @@ export const useHandlePlayQueueAdd = () => {
let songsList; let songsList;
let queryFilter: any; let queryFilter: any;
let queryKey: 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 = { queryFilter = {
albumIds: options.byItemType?.id || [], albumIds: options.byItemType?.id || [],
sortBy: SongListSort.ALBUM, sortBy: SongListSort.ALBUM,
@ -48,26 +61,29 @@ export const useHandlePlayQueueAdd = () => {
startIndex: 0, 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); queryKey = queryKeys.songs.list(server?.id, queryFilter);
} }
try { try {
songsList = await queryClient.fetchQuery(queryKey, async ({ signal }) => if (options.byItemType?.type === LibraryItem.PLAYLIST) {
api.controller.getSongList({ songsList = await queryClient.fetchQuery(queryKey, async ({ signal }) =>
query: queryFilter, api.controller.getPlaylistSongList({
server, query: queryFilter,
signal, server,
}), signal,
); }),
);
console.log('songsList', songsList);
} else {
songsList = await queryClient.fetchQuery(queryKey, async ({ signal }) =>
api.controller.getSongList({
query: queryFilter,
server,
signal,
}),
);
}
} catch (err: any) { } catch (err: any) {
return toast.error({ return toast.error({
message: err.message, message: err.message,
@ -91,6 +107,8 @@ export const useHandlePlayQueueAdd = () => {
case 'subsonic': case 'subsonic':
break; break;
} }
console.log('songs', songs);
} else if (options.byData) { } else if (options.byData) {
songs = options.byData.map((song) => ({ ...song, uniqueId: nanoid() })); songs = options.byData.map((song) => ({ ...song, uniqueId: nanoid() }));
} }