2023-12-02 05:27:59 +01:00
|
|
|
import { useState, Dispatch, SetStateAction } from 'react';
|
2023-09-29 14:29:22 +02:00
|
|
|
import { useApi } from 'components/hooks/useApi';
|
2023-12-02 05:27:59 +01:00
|
|
|
import { SearchFilter, FilterResult } from 'lib/types';
|
2023-09-29 14:29:22 +02:00
|
|
|
|
2023-12-02 05:27:59 +01:00
|
|
|
export interface FilterQueryResult<T> {
|
|
|
|
result: FilterResult<any[]>;
|
|
|
|
query: any;
|
|
|
|
params: SearchFilter;
|
|
|
|
setParams: Dispatch<SetStateAction<T | SearchFilter>>;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function useFilterQuery<T>(props = {}): FilterQueryResult<T> {
|
|
|
|
const [params, setParams] = useState<T | SearchFilter>({
|
2023-09-29 14:29:22 +02:00
|
|
|
query: '',
|
|
|
|
page: 1,
|
|
|
|
});
|
|
|
|
const { useQuery } = useApi();
|
2023-12-02 05:27:59 +01:00
|
|
|
const { data, ...query } = useQuery<FilterResult<any[]>>({ ...props });
|
2023-09-29 14:29:22 +02:00
|
|
|
|
2023-10-04 10:46:00 +02:00
|
|
|
return {
|
2023-12-02 05:27:59 +01:00
|
|
|
result: data,
|
|
|
|
query,
|
2023-10-04 10:46:00 +02:00
|
|
|
params,
|
|
|
|
setParams,
|
|
|
|
};
|
2023-09-29 14:29:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export default useFilterQuery;
|