feat: discover overhaul (filters!) (#3232)

This commit is contained in:
Ryan Cohen
2023-01-13 16:54:35 +09:00
committed by GitHub
parent b5157010c4
commit dd00e48f59
26 changed files with 1445 additions and 179 deletions

View File

@@ -1,3 +1,4 @@
import { encodeURIExtraParams } from '@app/hooks/useSearchInput';
import { MediaStatus } from '@server/constants/media';
import useSWRInfinite from 'swr/infinite';
import useSettings from './useSettings';
@@ -27,9 +28,13 @@ interface DiscoverResult<T, S> {
firstResultData?: BaseSearchResult<T> & S;
}
const useDiscover = <T extends BaseMedia, S = Record<string, never>>(
const useDiscover = <
T extends BaseMedia,
S = Record<string, never>,
O = Record<string, unknown>
>(
endpoint: string,
options?: Record<string, unknown>,
options?: O,
{ hideAvailable = true } = {}
): DiscoverResult<T, S> => {
const settings = useSettings();
@@ -47,7 +52,10 @@ const useDiscover = <T extends BaseMedia, S = Record<string, never>>(
};
const finalQueryString = Object.keys(params)
.map((paramKey) => `${paramKey}=${params[paramKey]}`)
.map(
(paramKey) =>
`${paramKey}=${encodeURIExtraParams(params[paramKey] as string)}`
)
.join('&');
return `${endpoint}?${finalQueryString}`;

View File

@@ -132,3 +132,20 @@ export const useUpdateQueryParams = (
[filter, updateQueryParams]
);
};
export const useBatchUpdateQueryParams = (
filter: ParsedUrlQuery
): ((items: Record<string, string>) => void) => {
const updateQueryParams = useQueryParams();
return useCallback(
(items: Record<string, string>) => {
const query = {
...filter,
...items,
};
updateQueryParams(query, 'replace');
},
[filter, updateQueryParams]
);
};