mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +02:00
fix filters
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user