Update song list queries

This commit is contained in:
jeffvli 2022-12-27 13:20:22 -08:00
parent 2b0d4c44a6
commit c7f588539d
4 changed files with 21 additions and 4 deletions

View file

@ -290,16 +290,29 @@ const getAlbumList = async (args: AlbumListArgs): Promise<JFAlbumList> => {
const getSongList = async (args: SongListArgs): Promise<JFSongList> => {
const { query, server, signal } = args;
const searchParams: JFSongListParams = {
const yearsGroup = [];
if (query.jfParams?.minYear && query.jfParams?.maxYear) {
for (let i = Number(query.jfParams.minYear); i <= Number(query.jfParams.maxYear); i += 1) {
yearsGroup.push(String(i));
}
}
const yearsFilter = yearsGroup.length ? yearsGroup.join(',') : undefined;
const searchParams: JFSongListParams & { maxYear?: number; minYear?: number } = {
fields: 'Genres, DateCreated, MediaSources, ParentId',
includeItemTypes: 'Audio',
limit: query.limit,
parentId: query.musicFolderId,
recursive: true,
searchTerm: query.searchTerm,
sortBy: songListSortMap.jellyfin[query.sortBy],
sortOrder: sortOrderMap.jellyfin[query.sortOrder],
startIndex: query.startIndex,
...query.jfParams,
maxYear: undefined,
minYear: undefined,
years: yearsFilter,
};
const data = await api

View file

@ -528,6 +528,7 @@ export enum JFSongListSort {
export type JFSongListParams = {
filters?: string;
genreIds?: string;
genres?: string;
includeItemTypes: 'Audio';
searchTerm?: string;

View file

@ -237,13 +237,14 @@ const getSongList = async (args: SongListArgs): Promise<NDSongList> => {
_order: sortOrderMap.navidrome[query.sortOrder],
_sort: songListSortMap.navidrome[query.sortBy],
_start: query.startIndex,
title: query.searchTerm,
...query.ndParams,
};
const res = await api.get('api/song', {
headers: { 'x-nd-authorization': `Bearer ${server?.ndCredential}` },
prefixUrl: server?.url,
searchParams,
searchParams: parseSearchParams(searchParams),
signal,
});

View file

@ -419,10 +419,12 @@ export enum SongListSort {
export type SongListQuery = {
jfParams?: {
filters?: string;
genreIds?: string;
genres?: string;
includeItemTypes: 'Audio';
maxYear?: number;
minYear?: number;
isFavorite?: boolean;
maxYear?: number; // Parses to years
minYear?: number; // Parses to years
sortBy?: JFSongListSort;
years?: string;
};