All files / src/components/common/BusinessProfileInputs CategoriesSelect.tsx

6.25% Statements 1/16
0% Branches 0/11
0% Functions 0/5
7.69% Lines 1/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                            89x                                                                                                            
import { RHFSelect } from "@common/Select";
import { useListEnterpriseCategoryCodes } from "@hooks/enterprise-api/merchants/useListEnterpriseCategoryCodes";
import React, { useMemo } from "react";
import { useFormContext } from "react-hook-form";
 
type CategoriesSelectProps = {
  label?: string;
  name: string;
  placeholder?: string;
  providerId?: number;
  isAcquirer?: boolean;
  disabled?: boolean;
};
 
const CategoriesSelect = ({
  name,
  placeholder,
  label,
  providerId,
  isAcquirer,
  disabled,
}: CategoriesSelectProps) => {
  const { setValue } = useFormContext();
  const {
    categories: fetchedCategories,
    slug,
    feeConfig,
    amexCreditCardFees,
    debitCardFees,
    creditCardFees,
  } = useListEnterpriseCategoryCodes(providerId);
 
  React.useEffect(() => {
    if (!providerId || !isAcquirer) return;
 
    setValue("merchant_info.parent_slug", slug);
    setValue("merchant_info.fees", {
      amexCreditCardFee:
        feeConfig?.amexCreditCardFee.baselinePercent + amexCreditCardFees,
      debitCardFee: feeConfig?.debitCardFee.baselinePercent + debitCardFees,
      creditCardFee: feeConfig?.creditCardFee.baselinePercent + creditCardFees,
    });
  }, [providerId]);
 
  React.useEffect(() => {
    if (providerId || isAcquirer) return;
    setValue("merchant_info.parent_slug", slug);
  }, [slug]);
 
  const categoriesOptions = useMemo(() => {
    return fetchedCategories.map((category: any) => ({
      value: category.id,
      label: `${category.code} - ${category.title}`,
    }));
  }, [fetchedCategories]);
 
  return (
    <RHFSelect
      label={label}
      name={name}
      placeholder={placeholder}
      options={categoriesOptions}
      disabled={(isAcquirer && !providerId) || disabled}
    />
  );
};
 
export default CategoriesSelect;