All files / src/features/GiveOnboarding/pages/Bank/Connect index.tsx

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

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                                10x   11x   11x             11x   11x 1x     10x 3x     7x                   10x      
import { IStep } from "@features/GiveOnboarding/types";
import { IApiData } from "@features/GiveOnboarding/types/form";
import { forwardRef } from "react";
import BankLinked from "../Linked";
import BankProhibited from "../Prohibited";
import { BankConnect } from "./Form";
import { useAccessControl } from "@features/Permissions/AccessControl";
import RESOURCE_BASE, { OPERATIONS } from "@constants/permissions";
 
interface Props {
  data_key: IStep;
  apiData: Pick<IApiData["data"], "business_bank_connect" | "merchant_info">;
}
 
type ForwardedRefType = any;
 
const BankConnectRoot = forwardRef<ForwardedRefType, Props>(
  ({ data_key, apiData }, ref) => {
    const showLinkedBA = apiData.business_bank_connect?.bankDataAux?.isLinked;
 
    const isAddAllowed = useAccessControl({
      resource: RESOURCE_BASE.BANK_ACCOUNT,
      operation: OPERATIONS.CREATE,
      withPortal: true,
    });
 
    const showProhibited =
      apiData.merchant_info?.isAllowedAddBankAccounts && isAddAllowed;
 
    if (showLinkedBA) {
      return <BankLinked data={apiData} />;
    }
 
    if (showProhibited) {
      return <BankProhibited />;
    }
 
    return (
      <BankConnect
        data_key={data_key}
        bankData={apiData.business_bank_connect}
        ref={ref}
      />
    );
  },
);
 
BankConnectRoot.displayName = "BankConnectRoot";
 
export { BankConnectRoot };