All files / src/features/Merchants/MerchantSidePanel/AgreementAndSnapshot/Agreement useGetAgreementData.tsx

100% Statements 14/14
100% Branches 16/16
100% Functions 3/3
100% Lines 13/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            59x                         209x 209x 73x   73x 63x 61x   2x     209x   209x 73x       209x                         209x    
import { TMerchantAgreementPayload } from "@components/Merchants/CreateMerchantPanel/hooks/TMerchantAgreementPayload";
import { useMemo } from "react";
import { AgreementState, StatusInfo } from "../agreements.types";
import moment from "moment";
import { PLATFORM_TIMEZONE } from "@utils/timezones";
 
export const useGetAgreementData = (data?: TMerchantAgreementPayload) => {
  const {
    msaHadAgreed,
    msaLastAcceptedVersion,
    tcVersion = "1.1.5",
    msaLastAcceptedAt,
    msaLastUpdatedAt,
    signedBy,
    signatureURL,
    msaPreviousTermination,
    msaPreviousTerminationAt,
    msaPreviousTerminationReason,
    msaPreviousTerminationProcessorName,
  } = data || {};
  const status = useMemo<AgreementState>(() => {
    const isCorrectVersion = msaLastAcceptedVersion === tcVersion;
 
    if (msaHadAgreed && isCorrectVersion) return "signed";
    if ((!msaHadAgreed && isCorrectVersion) || !msaLastAcceptedVersion)
      return "not_signed";
 
    return "newVersion";
  }, [msaHadAgreed, msaLastAcceptedVersion, tcVersion]);
 
  const updateDate = msaLastAcceptedAt || msaLastUpdatedAt;
 
  const signedOn = useMemo(
    () => (updateDate ? moment.unix(updateDate).tz(PLATFORM_TIMEZONE).format("MM/DD/YYYY") : null),
    [updateDate],
  );
 
  const statusInfo: StatusInfo = {
    status: status,
    msaLastAcceptedVersion: msaLastAcceptedVersion,
    tcVersion: tcVersion,
    signedOn: signedOn,
    signedBy: signedBy,
    signatureURL: signatureURL,
    msaPreviousTermination: msaPreviousTermination,
    msaPreviousTerminationAt: msaPreviousTerminationAt,
    msaPreviousTerminationReason: msaPreviousTerminationReason,
    msaPreviousTerminationProcessorName: msaPreviousTerminationProcessorName,
  };
 
  return statusInfo;
};