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

80.95% Statements 17/21
66.66% Branches 6/9
66.66% Functions 4/6
94.11% Lines 16/17

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 48 49 50 51 52 53 54 55 56 57 58 59 60              21x       104x 113x       104x   104x       104x   104x 104x 104x   104x           104x 19x   9x 150x           104x                 21x            
import { useUnderwritingTasksRepository } from "./useUnderwritingTasksRepository";
import { TTaskStatus, TUnderwritingTask } from "../types";
import { useMemo } from "react";
import { useAppSelector } from "@redux/hooks";
import { selectQueryString } from "@redux/slices/search";
import { GENERAL_STALE_TIME_15 } from "../../constants";
 
export const useListUnderwritingTasks = (
  statusFilters: TTaskStatus[],
  userTaggedInFilter: string,
) => {
  const searchQuery = useAppSelector((state) =>
    selectQueryString(state, "items_all_challenges"),
  );
 
  const { useGetItems: useGetTaskList } =
    useUnderwritingTasksRepository("all_tasks");
 
  const status = statusFilters.flatMap((status) =>
    filterMapper[status].map((value) => `status:"${value}"`),
  );
 
  let filterParam = "?filter=";
 
  Iif (status.length > 0) filterParam += `%3B(${status.join(",")})`;
  Iif (userTaggedInFilter) filterParam += userTaggedInFilter;
  filterParam += "&sort=id";
 
  const { data, isLoading, error, isFetching, refetch } = useGetTaskList(filterParam, {
    refetchOnWindowFocus: false,
    refetchOnMount: false,
    staleTime: GENERAL_STALE_TIME_15,
  });
 
  const filteredData = useMemo(() => {
    if (!data?.data) return [];
 
    return data?.data?.filter((item) =>
      (item.merchantTaskName || item.globalTaskName || item.name)
        .toLowerCase()
        .includes(searchQuery.toLowerCase()),
    );
  }, [searchQuery, data]);
 
  return {
    data: filteredData as TUnderwritingTask[],
    isLoading,
    isFetching,
    error,
    refetch,
  };
};
 
const filterMapper = {
  open: [1],
  in_progress: [2],
  ready_for_underwriting: [3],
  completed: [4],
};