105 lines
2.4 KiB
TypeScript
105 lines
2.4 KiB
TypeScript
import { useRef } from "react";
|
|
import useSwr from "swr";
|
|
import { enqueueSnackbar } from "notistack";
|
|
|
|
import { userApi } from "./requests";
|
|
|
|
export function useAdmins(page: number, pageSize: number) {
|
|
const adminPagesRef = useRef<number>(0);
|
|
|
|
const swrResponse = useSwr(
|
|
["admin", page, pageSize],
|
|
async ([_, page, pageSize]) => {
|
|
const [adminResponse, error] = await userApi.getManagerList(
|
|
page,
|
|
pageSize
|
|
);
|
|
|
|
if (error) {
|
|
throw new Error(error);
|
|
}
|
|
|
|
adminPagesRef.current = adminResponse?.totalPages || 1;
|
|
return adminResponse;
|
|
},
|
|
{
|
|
onError(err) {
|
|
console.error("Error fetching users", err);
|
|
enqueueSnackbar(err.message, { variant: "error" });
|
|
},
|
|
focusThrottleInterval: 60e3,
|
|
keepPreviousData: true,
|
|
}
|
|
);
|
|
|
|
return {
|
|
...swrResponse,
|
|
adminPages: adminPagesRef.current,
|
|
};
|
|
}
|
|
|
|
export function useManagers(page: number, pageSize: number) {
|
|
const managerPagesRef = useRef<number>(0);
|
|
|
|
const swrResponse = useSwr(
|
|
["manager", page, pageSize],
|
|
async ([_, page, pageSize]) => {
|
|
const [managerResponse, error] = await userApi.getManagerList(
|
|
page,
|
|
pageSize
|
|
);
|
|
|
|
if (error) {
|
|
throw new Error(error);
|
|
}
|
|
|
|
managerPagesRef.current = managerResponse?.totalPages || 1;
|
|
return managerResponse;
|
|
},
|
|
{
|
|
onError(err) {
|
|
console.error("Error fetching users", err);
|
|
enqueueSnackbar(err.message, { variant: "error" });
|
|
},
|
|
focusThrottleInterval: 60e3,
|
|
keepPreviousData: true,
|
|
}
|
|
);
|
|
|
|
return {
|
|
...swrResponse,
|
|
managerPages: managerPagesRef.current,
|
|
};
|
|
}
|
|
|
|
export function useUsers(page: number, pageSize: number) {
|
|
const userPagesRef = useRef<number>(0);
|
|
|
|
const swrResponse = useSwr(
|
|
["users", page, pageSize],
|
|
async ([_, page, pageSize]) => {
|
|
const [userResponse, error] = await userApi.getUserList(page, pageSize);
|
|
|
|
if (error) {
|
|
throw new Error(error);
|
|
}
|
|
|
|
userPagesRef.current = userResponse?.totalPages || 1;
|
|
return userResponse;
|
|
},
|
|
{
|
|
onError(err) {
|
|
console.error("Error fetching users", err);
|
|
enqueueSnackbar(err.message, { variant: "error" });
|
|
},
|
|
focusThrottleInterval: 60e3,
|
|
keepPreviousData: true,
|
|
}
|
|
);
|
|
|
|
return {
|
|
...swrResponse,
|
|
userPagesCount: userPagesRef.current,
|
|
};
|
|
}
|