diff --git a/src/renderer/api/navidrome/navidrome-controller.ts b/src/renderer/api/navidrome/navidrome-controller.ts index 128e7825e..833fa6536 100644 --- a/src/renderer/api/navidrome/navidrome-controller.ts +++ b/src/renderer/api/navidrome/navidrome-controller.ts @@ -322,13 +322,17 @@ export const NavidromeController: InternalControllerEndpoint = { ? query.genreIds : query.genreIds?.[0]; + const artistIds = hasFeature(apiClientProps.server, ServerFeature.BFR) + ? query.artistIds + : query.artistIds?.[0]; + const res = await ndApiClient(apiClientProps).getAlbumList({ query: { _end: query.startIndex + (query.limit || 0), _order: sortOrderMap.navidrome[query.sortOrder], _sort: albumListSortMap.navidrome[query.sortBy], _start: query.startIndex, - artist_id: query.artistIds?.[0], + artist_id: artistIds, compilation: query.compilation, genre_id: genres, has_rating: query.hasRating, diff --git a/src/renderer/features/albums/components/navidrome-album-filters.tsx b/src/renderer/features/albums/components/navidrome-album-filters.tsx index a562d5023..ef2cee20a 100644 --- a/src/renderer/features/albums/components/navidrome-album-filters.tsx +++ b/src/renderer/features/albums/components/navidrome-album-filters.tsx @@ -2,10 +2,7 @@ import { useQuery, useSuspenseQuery } from '@tanstack/react-query'; import { ChangeEvent, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { - MultiSelectWithInvalidData, - SelectWithInvalidData, -} from '/@/renderer/components/select-with-invalid-data'; +import { MultiSelectWithInvalidData } from '/@/renderer/components/select-with-invalid-data'; import { useListContext } from '/@/renderer/context/list-context'; import { useAlbumListFilters } from '/@/renderer/features/albums/hooks/use-album-list-filters'; import { artistsQueries } from '/@/renderer/features/artists/api/artists-api'; @@ -187,14 +184,14 @@ export const NavidromeAlbumFilters = ({ disableArtistFilter }: NavidromeAlbumFil searchable /> )} - setAlbumArtist(e ? [e] : null)} + onChange={(e) => (e && e.length > 0 ? setAlbumArtist(e) : setAlbumArtist(null))} rightSection={albumArtistListQuery.isFetching ? : undefined} searchable /> diff --git a/src/shared/api/navidrome/navidrome-types.ts b/src/shared/api/navidrome/navidrome-types.ts index bb4f6ddb2..01735e24a 100644 --- a/src/shared/api/navidrome/navidrome-types.ts +++ b/src/shared/api/navidrome/navidrome-types.ts @@ -480,7 +480,7 @@ const albumList = z.array(album); const albumListParameters = paginationParameters.extend({ _sort: z.nativeEnum(NDAlbumListSort).optional(), album_id: z.string().optional(), - artist_id: z.string().optional(), + artist_id: z.union([z.string(), z.string().array()]).optional(), compilation: z.boolean().optional(), // in older versions, this was a single string. post BFR, you can repeat it multiple times genre_id: z.union([z.string(), z.string().array()]).optional(),