All files / src/features/Merchants/MerchantSidePanel/ApprovalFlowPanel/hooks useGetUnderwritingTasksStats.tsx

100% Statements 6/6
100% Branches 10/10
100% Functions 3/3
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                        21x 357x     42x                     21x 357x       357x                            
import { customInstance } from "@services/api";
import { useQuery } from "react-query";
import { TUnderwritingTasksStats } from "../types";
import {
  GENERAL_STALE_TIME_15,
  UNDERWRITING_CHALLENGE_API_KEYS,
} from "@features/Merchants/MerchantSidePanel/constants";
 
type Props = {
  merchantId: number;
};
 
const useTasksStatsQuery = ({ merchantId }: Props) => {
  return useQuery({
    queryKey: [...UNDERWRITING_CHALLENGE_API_KEYS.GET_STATS, merchantId],
    queryFn: async () =>
      await customInstance({
        url: `/merchants/${merchantId}/tasks/stats`,
        method: "GET",
      }),
    enabled: Boolean(merchantId),
    refetchOnMount: false,
    refetchOnWindowFocus: false,
    staleTime: GENERAL_STALE_TIME_15,
  });
};
 
export const useGetUnderwritingTasksStats = ({ merchantId }: Props) => {
  const { data: stats, isLoading: isStatsLoading, error, refetch } = useTasksStatsQuery({
    merchantId,
  });
 
  return {
    stats: stats as TUnderwritingTasksStats,
    isLoading: isStatsLoading,
    error,
    refetch,
    counts: {
      completed: stats?.completedTasksCount || 0,
      incomplete: stats?.readyForUnderwritingTasksCount || 0,
      incomplete2: stats?.inProgressTasksCount || 0,
      disabled: stats?.openTasksCount || 0,
      hasData: !!stats && !isStatsLoading,
    },
  };
};