mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
fix filters
This commit is contained in:
@@ -39,12 +39,12 @@ export const JellyfinAlbumFilters = ({
|
||||
const {
|
||||
query,
|
||||
setAlbumArtist,
|
||||
setAlbumCompilation,
|
||||
setAlbumFavorite,
|
||||
setAlbumGenre,
|
||||
setCompilation,
|
||||
setCustom,
|
||||
setMaxAlbumYear,
|
||||
setMinAlbumYear,
|
||||
setFavorite,
|
||||
setGenreId,
|
||||
setMaxYear,
|
||||
setMinYear,
|
||||
} = useAlbumListFilters();
|
||||
|
||||
// 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' }),
|
||||
onChange: (favoriteValue?: boolean) => {
|
||||
setAlbumFavorite(favoriteValue ?? null);
|
||||
setFavorite(favoriteValue ?? null);
|
||||
},
|
||||
value: query.favorite,
|
||||
},
|
||||
@@ -97,7 +97,7 @@ export const JellyfinAlbumFilters = ({
|
||||
filters.push({
|
||||
label: t('filter.isCompilation', { postProcess: 'sentenceCase' }),
|
||||
onChange: (compilationValue?: boolean) => {
|
||||
setAlbumCompilation(compilationValue ?? null);
|
||||
setCompilation(compilationValue ?? null);
|
||||
},
|
||||
value: query.compilation,
|
||||
});
|
||||
@@ -108,24 +108,24 @@ export const JellyfinAlbumFilters = ({
|
||||
query.favorite,
|
||||
query.artistIds?.length,
|
||||
query.compilation,
|
||||
setAlbumFavorite,
|
||||
setAlbumCompilation,
|
||||
setFavorite,
|
||||
setCompilation,
|
||||
]);
|
||||
|
||||
const handleMinYearFilter = debounce((e: number | string) => {
|
||||
if (typeof e === 'number' && (e < 1700 || e > 2300)) return;
|
||||
const year = e === '' ? undefined : (e as number);
|
||||
setMinAlbumYear(year ?? null);
|
||||
setMinYear(year ?? null);
|
||||
}, 500);
|
||||
|
||||
const handleMaxYearFilter = debounce((e: number | string) => {
|
||||
if (typeof e === 'number' && (e < 1700 || e > 2300)) return;
|
||||
const year = e === '' ? undefined : (e as number);
|
||||
setMaxAlbumYear(year ?? null);
|
||||
setMaxYear(year ?? null);
|
||||
}, 500);
|
||||
|
||||
const handleGenresFilter = debounce((e: string[] | undefined) => {
|
||||
setAlbumGenre(e ?? null);
|
||||
setGenreId(e ?? null);
|
||||
}, 250);
|
||||
|
||||
const albumArtistListQuery = useQuery(
|
||||
@@ -200,7 +200,7 @@ export const JellyfinAlbumFilters = ({
|
||||
<MultiSelectWithInvalidData
|
||||
clearable
|
||||
data={genreList}
|
||||
defaultValue={query.genres ?? undefined}
|
||||
defaultValue={query.genreId ?? undefined}
|
||||
label={t('entity.genre', { count: 2, postProcess: 'sentenceCase' })}
|
||||
onChange={handleGenresFilter}
|
||||
searchable
|
||||
|
||||
@@ -205,9 +205,9 @@ export const NavidromeAlbumFilters = ({ disableArtistFilter }: NavidromeAlbumFil
|
||||
<MultiSelectWithInvalidData
|
||||
clearable
|
||||
data={genreList}
|
||||
defaultValue={query.genres}
|
||||
defaultValue={query.genreId}
|
||||
label={t('entity.genre', { count: 2, postProcess: 'sentenceCase' })}
|
||||
onChange={(e) => (e ? setAlbumGenre(e) : undefined)}
|
||||
onChange={(e) => (e ? setGenreId(e) : undefined)}
|
||||
searchable
|
||||
/>
|
||||
</Group>
|
||||
|
||||
@@ -38,7 +38,7 @@ export const SubsonicAlbumFilters = ({
|
||||
|
||||
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(
|
||||
FILTER_KEYS.ALBUM.ARTIST_IDS,
|
||||
@@ -103,7 +103,7 @@ export const SubsonicAlbumFilters = ({
|
||||
}, [genreListQuery.data]);
|
||||
|
||||
const handleGenresFilter = debounce((e: null | string) => {
|
||||
setGenres(e ?? null);
|
||||
setGenreId(e ?? null);
|
||||
const updatedFilters: Partial<AlbumListFilter> = {
|
||||
genres: e ? [e] : undefined,
|
||||
};
|
||||
@@ -152,7 +152,7 @@ export const SubsonicAlbumFilters = ({
|
||||
<Group grow>
|
||||
<NumberInput
|
||||
defaultValue={minYear ?? undefined}
|
||||
disabled={genres !== null}
|
||||
disabled={genreId !== null}
|
||||
hideControls={false}
|
||||
label={t('filter.fromYear', { postProcess: 'sentenceCase' })}
|
||||
max={5000}
|
||||
@@ -161,7 +161,7 @@ export const SubsonicAlbumFilters = ({
|
||||
/>
|
||||
<NumberInput
|
||||
defaultValue={maxYear ?? undefined}
|
||||
disabled={genres !== null}
|
||||
disabled={genreId !== null}
|
||||
hideControls={false}
|
||||
label={t('filter.toYear', { postProcess: 'sentenceCase' })}
|
||||
max={5000}
|
||||
@@ -173,7 +173,7 @@ export const SubsonicAlbumFilters = ({
|
||||
<Select
|
||||
clearable
|
||||
data={genreList}
|
||||
defaultValue={genres ?? undefined}
|
||||
defaultValue={genreId ?? undefined}
|
||||
disabled={Boolean(minYear || maxYear)}
|
||||
label={t('entity.genre', { count: 1, postProcess: 'titleCase' })}
|
||||
onChange={handleGenresFilter}
|
||||
|
||||
Reference in New Issue
Block a user