import { useSelector } from 'react-redux'; import { ORIGIN_METAMASK } from '../../shared/constants/app'; import { TransactionType } from '../../shared/constants/transaction'; import { getKnownMethodData } from '../selectors'; import { getNativeCurrency } from '../ducks/metamask/metamask'; import { getTransactionTypeTitle } from '../helpers/utils/transactions.util'; import { getMethodName } from '../helpers/utils/metrics'; import { useI18nContext } from './useI18nContext'; export const useTransactionFunctionType = (txData = {}) => { const t = useI18nContext(); const nativeCurrency = useSelector(getNativeCurrency); const { txParams } = txData; const methodData = useSelector( (state) => getKnownMethodData(state, txParams?.data) || {}, ); if (!txParams) { return {}; } const isTokenApproval = txData.type === TransactionType.tokenMethodSetApprovalForAll || txData.type === TransactionType.tokenMethodApprove; const isContractInteraction = txData.type === TransactionType.contractInteraction; const isTransactionFromDapp = (isTokenApproval || isContractInteraction) && txData.origin !== ORIGIN_METAMASK; let functionType = isTransactionFromDapp ? getMethodName(methodData?.name) : undefined; if (!functionType) { functionType = txData.type ? getTransactionTypeTitle(t, txData.type, nativeCurrency) : t('contractInteraction'); } return { functionType }; };