Quiz_dashboard/src/api/helper/useGetQuery.ts
2024-09-12 13:41:25 +03:00

44 lines
1.2 KiB
TypeScript

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;