import { useQuery } from "react-query"; import useAxios from "./useAxios"; import { useLocation } from "react-router-dom"; import { PaginationParams } from "../utils/PaginationParams"; import { filterParams } from "../utils/filterParams"; import useAuthState from "../../zustand/AuthState"; import { useFilterStateState } from "../../zustand/Filter"; function useGetQuery( KEY: string | string[], url: string, params: any = {}, options: any = {}, ) { const axios = useAxios(); const {Filter} = useFilterStateState() const sort_by = Filter?.sort_by ?? null; const name = Filter?.name ?? null; const { show, pagination, ...remainingParams } = params; const location = useLocation(); const { page, per_page } = PaginationParams(location); const paramToSend = pagination ? { page: page, per_page: per_page, name,...remainingParams , sort_by } : { name,...remainingParams ,sort_by}; const filteredParams = filterParams(paramToSend); return useQuery( [KEY, filteredParams, show], async () => { const response = await axios.get(url + (show ? `/${show}` : ""), { params: filteredParams, }); return response?.data ?? []; }, options, ); } export default useGetQuery;