All files / src/features/Merchants/MerchantSidePanel/components/RiskTriggers RiskTriggersTab.tsx

78.57% Statements 11/14
75% Branches 6/8
75% Functions 3/4
84.61% Lines 11/13

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                        5x 5x 5x         5x   5x                                 32x                           21x                                             21x       4x 4x 4x                  
import { Stack } from "@mui/material";
import GiveTabs from "@shared/Tabs/GiveTabs";
import { useState } from "react";
import TriggerCard from "./TriggerCard";
import {
  RiskTriggerDataFormatted,
  useRiskTriggersV2,
} from "@components/Merchants/MerchantPreview/RiskProfile/hooks/useRiskTriggersV2";
import { useMerchantSidePanelContext } from "@features/Merchants/MerchantSidePanel/Provider/MerchantSidePanelProvider";
import LoadingSkeleton from "./LoadingSkeleton";
 
export default function RiskTriggersTab() {
  const { data, id } = useMerchantSidePanelContext();
  const [selectedTab, setSelectedTab] = useState(TriggerTabValue.All);
  const { data: triggersData, isLoading } = useRiskTriggersV2(
    data.riskProfile.profileID,
    id,
  );
 
  const usedData = isLoading ? [] : getDataForTab(selectedTab, triggersData);
 
  return (
    <Stack gap="20px" paddingBottom="20px">
      <GiveTabs
        onClick={(tab) => setSelectedTab(tab as TriggerTabValue)}
        items={triggersTabs}
        type="pill"
        selected={selectedTab}
        variant="gradient"
        containerSx={{
          display: "flex",
          overflow: "auto",
          scrollbarWidth: "none",
          width: "100%",
        }}
      />
      {isLoading && <LoadingSkeleton />}
      {usedData.map((trigger, index) => (
        <TriggerCard key={`${index}-${trigger.factorID}`} trigger={trigger} />
      ))}
    </Stack>
  );
}
 
enum TriggerTabValue {
  All = "all",
  Transaction = "transaction",
  Processing = "processing",
  Underwriting = "underwriting",
  Content = "content",
}
 
const triggersTabs = [
  {
    label: "All",
    value: TriggerTabValue.All,
  },
  {
    label: "Transaction",
    value: TriggerTabValue.Transaction,
  },
  {
    label: "Processing",
    value: TriggerTabValue.Processing,
  },
  {
    label: "Underwriting",
    value: TriggerTabValue.Underwriting,
  },
  {
    label: "Content",
    value: TriggerTabValue.Content,
  },
];
 
const getDataForTab = (
  tab: TriggerTabValue,
  data?: RiskTriggerDataFormatted,
) => {
  Iif (!data) return [];
  Eif (tab === TriggerTabValue.All) {
    return [
      ...data.transaction,
      ...data.processing,
      ...data.underwriting,
      ...data.content,
    ];
  }
  return data[tab];
};