fix filters

This commit is contained in:
jeffvli
2025-11-07 11:08:22 -08:00
parent 71bd124088
commit cb232ab5af
3 changed files with 20 additions and 20 deletions
@@ -39,12 +39,12 @@ export const JellyfinAlbumFilters = ({
const { const {
query, query,
setAlbumArtist, setAlbumArtist,
setAlbumCompilation, setCompilation,
setAlbumFavorite,
setAlbumGenre,
setCustom, setCustom,
setMaxAlbumYear, setFavorite,
setMinAlbumYear, setGenreId,
setMaxYear,
setMinYear,
} = useAlbumListFilters(); } = useAlbumListFilters();
// TODO - eventually replace with /items/filters endpoint to fetch genres and tags specific to the selected library // TODO - eventually replace with /items/filters endpoint to fetch genres and tags specific to the selected library
@@ -87,7 +87,7 @@ export const JellyfinAlbumFilters = ({
{ {
label: t('filter.isFavorited', { postProcess: 'sentenceCase' }), label: t('filter.isFavorited', { postProcess: 'sentenceCase' }),
onChange: (favoriteValue?: boolean) => { onChange: (favoriteValue?: boolean) => {
setAlbumFavorite(favoriteValue ?? null); setFavorite(favoriteValue ?? null);
}, },
value: query.favorite, value: query.favorite,
}, },
@@ -97,7 +97,7 @@ export const JellyfinAlbumFilters = ({
filters.push({ filters.push({
label: t('filter.isCompilation', { postProcess: 'sentenceCase' }), label: t('filter.isCompilation', { postProcess: 'sentenceCase' }),
onChange: (compilationValue?: boolean) => { onChange: (compilationValue?: boolean) => {
setAlbumCompilation(compilationValue ?? null); setCompilation(compilationValue ?? null);
}, },
value: query.compilation, value: query.compilation,
}); });
@@ -108,24 +108,24 @@ export const JellyfinAlbumFilters = ({
query.favorite, query.favorite,
query.artistIds?.length, query.artistIds?.length,
query.compilation, query.compilation,
setAlbumFavorite, setFavorite,
setAlbumCompilation, setCompilation,
]); ]);
const handleMinYearFilter = debounce((e: number | string) => { const handleMinYearFilter = debounce((e: number | string) => {
if (typeof e === 'number' && (e < 1700 || e > 2300)) return; if (typeof e === 'number' && (e < 1700 || e > 2300)) return;
const year = e === '' ? undefined : (e as number); const year = e === '' ? undefined : (e as number);
setMinAlbumYear(year ?? null); setMinYear(year ?? null);
}, 500); }, 500);
const handleMaxYearFilter = debounce((e: number | string) => { const handleMaxYearFilter = debounce((e: number | string) => {
if (typeof e === 'number' && (e < 1700 || e > 2300)) return; if (typeof e === 'number' && (e < 1700 || e > 2300)) return;
const year = e === '' ? undefined : (e as number); const year = e === '' ? undefined : (e as number);
setMaxAlbumYear(year ?? null); setMaxYear(year ?? null);
}, 500); }, 500);
const handleGenresFilter = debounce((e: string[] | undefined) => { const handleGenresFilter = debounce((e: string[] | undefined) => {
setAlbumGenre(e ?? null); setGenreId(e ?? null);
}, 250); }, 250);
const albumArtistListQuery = useQuery( const albumArtistListQuery = useQuery(
@@ -200,7 +200,7 @@ export const JellyfinAlbumFilters = ({
<MultiSelectWithInvalidData <MultiSelectWithInvalidData
clearable clearable
data={genreList} data={genreList}
defaultValue={query.genres ?? undefined} defaultValue={query.genreId ?? undefined}
label={t('entity.genre', { count: 2, postProcess: 'sentenceCase' })} label={t('entity.genre', { count: 2, postProcess: 'sentenceCase' })}
onChange={handleGenresFilter} onChange={handleGenresFilter}
searchable searchable
@@ -205,9 +205,9 @@ export const NavidromeAlbumFilters = ({ disableArtistFilter }: NavidromeAlbumFil
<MultiSelectWithInvalidData <MultiSelectWithInvalidData
clearable clearable
data={genreList} data={genreList}
defaultValue={query.genres} defaultValue={query.genreId}
label={t('entity.genre', { count: 2, postProcess: 'sentenceCase' })} label={t('entity.genre', { count: 2, postProcess: 'sentenceCase' })}
onChange={(e) => (e ? setAlbumGenre(e) : undefined)} onChange={(e) => (e ? setGenreId(e) : undefined)}
searchable searchable
/> />
</Group> </Group>
@@ -38,7 +38,7 @@ export const SubsonicAlbumFilters = ({
const [maxYear, setMaxYear] = useQueryState(FILTER_KEYS.ALBUM.MAX_YEAR, parseAsInteger); const [maxYear, setMaxYear] = useQueryState(FILTER_KEYS.ALBUM.MAX_YEAR, parseAsInteger);
const [genres, setGenres] = useQueryState(FILTER_KEYS.ALBUM.GENRES, parseAsString); const [genreId, setGenreId] = useQueryState(FILTER_KEYS.ALBUM.GENRE_ID, parseAsString);
const [artistIds, setArtistIds] = useQueryState( const [artistIds, setArtistIds] = useQueryState(
FILTER_KEYS.ALBUM.ARTIST_IDS, FILTER_KEYS.ALBUM.ARTIST_IDS,
@@ -103,7 +103,7 @@ export const SubsonicAlbumFilters = ({
}, [genreListQuery.data]); }, [genreListQuery.data]);
const handleGenresFilter = debounce((e: null | string) => { const handleGenresFilter = debounce((e: null | string) => {
setGenres(e ?? null); setGenreId(e ?? null);
const updatedFilters: Partial<AlbumListFilter> = { const updatedFilters: Partial<AlbumListFilter> = {
genres: e ? [e] : undefined, genres: e ? [e] : undefined,
}; };
@@ -152,7 +152,7 @@ export const SubsonicAlbumFilters = ({
<Group grow> <Group grow>
<NumberInput <NumberInput
defaultValue={minYear ?? undefined} defaultValue={minYear ?? undefined}
disabled={genres !== null} disabled={genreId !== null}
hideControls={false} hideControls={false}
label={t('filter.fromYear', { postProcess: 'sentenceCase' })} label={t('filter.fromYear', { postProcess: 'sentenceCase' })}
max={5000} max={5000}
@@ -161,7 +161,7 @@ export const SubsonicAlbumFilters = ({
/> />
<NumberInput <NumberInput
defaultValue={maxYear ?? undefined} defaultValue={maxYear ?? undefined}
disabled={genres !== null} disabled={genreId !== null}
hideControls={false} hideControls={false}
label={t('filter.toYear', { postProcess: 'sentenceCase' })} label={t('filter.toYear', { postProcess: 'sentenceCase' })}
max={5000} max={5000}
@@ -173,7 +173,7 @@ export const SubsonicAlbumFilters = ({
<Select <Select
clearable clearable
data={genreList} data={genreList}
defaultValue={genres ?? undefined} defaultValue={genreId ?? undefined}
disabled={Boolean(minYear || maxYear)} disabled={Boolean(minYear || maxYear)}
label={t('entity.genre', { count: 1, postProcess: 'titleCase' })} label={t('entity.genre', { count: 1, postProcess: 'titleCase' })}
onChange={handleGenresFilter} onChange={handleGenresFilter}