Portalweb/src/features/orders/hooks/useOrders.ts

28 lines
951 B
TypeScript

import { useQuery } from '@tanstack/react-query';
import { useOrderFilters } from './useOrderFilters';
import { orderService } from '../api/order.service';
import { OrderFilters } from '../schemas/order.schema';
import { omitBy, isNil } from 'lodash';
const normalizeFilters = (filters: Record<string, any>): OrderFilters => {
const { searchTriggered, ...rest } = filters;
const normalized = omitBy(rest, isNil);
return normalized as OrderFilters;
};
export function useOrders() {
const [filters] = useOrderFilters();
const normalizedFilters = normalizeFilters(filters);
const shouldSearch = filters.searchTriggered === true;
return useQuery({
queryKey: ['orders', normalizedFilters],
enabled: shouldSearch && Object.keys(normalizedFilters).length > 0,
queryFn: () => orderService.findOrders(normalizedFilters),
staleTime: 1000 * 60 * 5,
retry: 1,
retryOnMount: false,
refetchOnWindowFocus: false,
});
}