All files / src/hooks/merchant-api/settings/business-details useListMerchantParentCategoryCodes.tsx

0% Statements 0/16
0% Branches 0/4
0% Functions 0/6
0% Lines 0/14

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 61 62 63 64 65 66 67 68 69 70 71 72 73                                                                                                                                                 
import { customInstance } from "@services/api";
import { useQuery } from "react-query";
import { useGetCurrentMerchantId } from "@hooks/common";
import { useMemo } from "react";
 
type TCategoryCode = {
  merchantAccountID: number;
  categoryCodes: {
    id: number;
    issuer: string;
    code: string;
    title: string;
    titleAlt: string;
    description: string;
    examples: string;
    isHidden: false;
  };
  createdAt: number;
};
 
type ParsedCategoryCode = {
  id: number;
  title: string;
};
 
type TReturnedType = {
  total: number;
  data: TCategoryCode[] | null;
};
 
export const useListMerchantParentCategoryCodes = () => {
  const { merchantId } = useGetCurrentMerchantId();
 
  const getMerchant = (id: number) => {
    return customInstance({
      url: `merchants/${id}`,
      method: "GET",
    });
  };
 
  const getCategoryCodes = (id: number) => {
    return customInstance({
      url: `/merchants/${id}/category-codes&filter=isAllowed:true`,
      method: "GET",
    });
  };
 
  const { data, isLoading } = useQuery<TReturnedType>(
    ["merchant-select-categories", merchantId],
    async () => {
      const merchant = await getMerchant(merchantId);
      const codes = await getCategoryCodes(merchant?.parentAccID);
      return codes;
    },
    {
      refetchOnWindowFocus: false,
    },
  );
 
  const parsedData = useMemo((): ParsedCategoryCode[] => {
    if (!data || !data.data) return [];
    return data.data.map(({ categoryCodes }) => ({
      id: categoryCodes.id,
      title: categoryCodes.title,
    }));
  }, [data?.data]);
 
  return {
    categories: parsedData,
    isLoading,
  };
};