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(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(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(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, }; }