'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 { result: FilterResult; query: any; params: SearchFilter; setParams: Dispatch>; } export function useFilterQuery({ queryKey, queryFn, ...options }: UseQueryOptions): FilterQueryResult { const [params, setParams] = useState({ query: '', page: 1, }); const { useQuery } = useApi(); const { data, ...query } = useQuery({ queryKey: [{ ...queryKey, ...params }], queryFn: () => queryFn(params as any), ...options, }); return { result: data as FilterResult, query, params, setParams, }; } export default useFilterQuery;