hijabi-dashboard/src/api/helper/ueGetPagination.tsx
KarimAldeen ce2b31e3f9 #23
2024-03-27 10:44:47 +03:00

41 lines
1.2 KiB
TypeScript

import { useQuery } from 'react-query';
import useAxios from './useAxios';
import { useLocation, useNavigate } from 'react-router-dom';
import useAuthState from '../../lib/state mangment/AuthState';
export default function useGetQueryPagination(KEY: string | string[], Api: string, params: any = {}, options: any = {}, dontSearchBy?: string) {
const axios = useAxios();
const location = useLocation();
let pagination = location?.search || '';
const { logout } = useAuthState();
const navigate = useNavigate();
if (dontSearchBy && pagination.includes(dontSearchBy)) {
const searchParams = new URLSearchParams(pagination);
searchParams.delete(dontSearchBy);
pagination = searchParams.toString();
}
if (pagination && !pagination.startsWith('?')) {
pagination = '?' + pagination;
}
return useQuery(
[Array.isArray(KEY) ? KEY.join(',') : KEY, pagination], async () => {
const response = await axios.get(Api + pagination, { params });
return response.data;
},
{
onError: (error: any) => {
if (error?.response?.status === 401 || error?.response?.status === 403) {
logout();
navigate("/auth");
}
},
refetchOnWindowFocus: false,
...options
}
);
}