All files / src/features/Underwriting/UnderwritingCard ChallengeCategoriesBottom.tsx

18.18% Statements 2/11
0% Branches 0/2
0% Functions 0/4
18.18% Lines 2/11

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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96                                      21x                                                                                                                 21x                                      
import { Stack } from "@mui/material";
import GiveText from "@shared/Text/GiveText";
import { StyledGiveButton } from "./UnderwritingCard.style";
import NiceModal from "@ebay/nice-modal-react";
import {
  APPROVE_MERCHANT_MODAL_REBRAND,
  DECLINE_MERCHANT_MODAL_REBRAND,
} from "modals/modal_names";
import { useUnderwriterPermissions } from "features/Permissions/AccessControl/hooks";
import { NEW_ACTION_DENY_MESSAGE } from "@constants/permissions";
import GiveTooltip from "@shared/Tooltip/GiveTooltip";
import useUpdateMerchantStatusWithReason from "@features/Merchants/MerchantSidePanel/ApprovalFlowPanel/hooks/useUpdateMerchantStatusWithReason";
 
type TChallengeCategoriesBottom = {
  isAllCompleted: boolean;
  merchantId: number;
  merchantName: string;
};
 
const ChallengeCategoriesBottom = ({
  isAllCompleted,
  merchantId,
  merchantName,
}: TChallengeCategoriesBottom) => {
  const { isUpdateUnderwriterAllowed } = useUnderwriterPermissions();
  const { onStatusChange: onDecline, isLoading: isLoadingDecline } =
    useUpdateMerchantStatusWithReason({
      merchantId,
      type: "underwriting",
      status: "declined",
    });
 
  const handleApprove = () => {
    NiceModal.show(APPROVE_MERCHANT_MODAL_REBRAND, {
      merchantId,
    });
  };
 
  const handleDecline = () => {
    NiceModal.show(DECLINE_MERCHANT_MODAL_REBRAND, {
      merchantName,
      onHandleDecline: onDecline,
      isLoading: isLoadingDecline,
    });
  };
 
  return (
    <>
      <GiveText variant="bodyS" color="primary">
        All of the above criteria must be met before moving this account to
        sponsor.
      </GiveText>
      <Stack direction="row" gap={1.5}>
        <UnderwriterAllowedTooltip>
          <StyledGiveButton
            disabled={!isAllCompleted || !isUpdateUnderwriterAllowed}
            variant="filled"
            label="Move To Sponsor"
            onClick={handleApprove}
          />
        </UnderwriterAllowedTooltip>
 
        <UnderwriterAllowedTooltip>
          <StyledGiveButton
            disabled={!isUpdateUnderwriterAllowed}
            variant="outline"
            label="Decline"
            color="destructive"
            onClick={handleDecline}
          />
        </UnderwriterAllowedTooltip>
      </Stack>
    </>
  );
};
 
const UnderwriterAllowedTooltip = ({
  children,
}: {
  children: React.ReactElement;
}) => {
  const { isUpdateUnderwriterAllowed } = useUnderwriterPermissions();
  return (
    <GiveTooltip
      title={NEW_ACTION_DENY_MESSAGE}
      color="default"
      disableHoverListener={isUpdateUnderwriterAllowed}
      customTooltipStyles={{ width: "fit-content" }}
    >
      {children}
    </GiveTooltip>
  );
};
 
export default ChallengeCategoriesBottom;