import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; import { getProfilesFilterList, getProfilesFilterMasters, } from "../api/masters.api"; export const useProfiles = (filters = {}) => { // Remove empty filters const cleanFilters = Object.entries(filters).reduce((acc, [key, value]) => { if ( value !== "" && value !== null && value !== undefined && !(Array.isArray(value) && value.length === 0) ) { acc[key] = value; } return acc; }, {}); return useInfiniteQuery({ queryKey: ["profiles-filter-list", cleanFilters], queryFn: ({ pageParam = 1 }) => getProfilesFilterList({ ...cleanFilters, page: pageParam, }), staleTime: 1000 * 60 * 2, refetchOnWindowFocus: false, getNextPageParam: (lastPage, allPages) => { const currentPageData = lastPage?.data?.data || lastPage?.data || []; const totalLoaded = allPages.reduce((acc, page) => { const pageData = page?.data?.data || page?.data || []; return acc + pageData.length; }, 0); const totalRecords = lastPage?.data?.recordsFiltered || lastPage?.recordsFiltered || 0; console.log("totalLoaded:", totalLoaded); console.log("totalRecords:", totalRecords); if (totalLoaded < totalRecords) { return allPages.length + 1; } return undefined; } }); }; export const useProfilesFilterMasters = () => useQuery({ queryKey: ["profiles-filter-masters"], queryFn: getProfilesFilterMasters, });