mirror of
https://github.com/kremalicious/umami.git
synced 2024-06-17 01:43:11 +02:00
40 lines
914 B
TypeScript
40 lines
914 B
TypeScript
'use client';
|
|
import { UseQueryOptions } from '@tanstack/react-query';
|
|
import { useState, Dispatch, SetStateAction } from 'react';
|
|
import { useApi } from './useApi';
|
|
import { FilterResult, SearchFilter } from 'lib/types';
|
|
|
|
export interface FilterQueryResult<T> {
|
|
result: FilterResult<T>;
|
|
query: any;
|
|
params: SearchFilter;
|
|
setParams: Dispatch<SetStateAction<T | SearchFilter>>;
|
|
}
|
|
|
|
export function useFilterQuery<T = any>({
|
|
queryKey,
|
|
queryFn,
|
|
...options
|
|
}: UseQueryOptions): FilterQueryResult<T> {
|
|
const [params, setParams] = useState<T | SearchFilter>({
|
|
query: '',
|
|
page: 1,
|
|
});
|
|
|
|
const { useQuery } = useApi();
|
|
const { data, ...query } = useQuery({
|
|
queryKey: [{ ...queryKey, ...params }],
|
|
queryFn: () => queryFn(params as any),
|
|
...options,
|
|
});
|
|
|
|
return {
|
|
result: data as FilterResult<any>,
|
|
query,
|
|
params,
|
|
setParams,
|
|
};
|
|
}
|
|
|
|
export default useFilterQuery;
|