import React, { useEffect, useState } from 'react'; import { useGasFeeContext } from '../../../../contexts/gasFee'; import { bnGreaterThan, bnLessThan } from '../../../../helpers/utils/util'; import { TYPOGRAPHY } from '../../../../helpers/constants/design-system'; import { useI18nContext } from '../../../../hooks/useI18nContext'; import { MAX_GAS_LIMIT_DEC } from '../../../../pages/send/send.constants'; import Button from '../../../ui/button'; import FormField from '../../../ui/form-field'; import I18nValue from '../../../ui/i18n-value'; import Typography from '../../../ui/typography'; import { useAdvancedGasFeePopoverContext } from '../context'; const validateGasLimit = (gasLimit, minimumGasLimitDec) => { return bnLessThan(gasLimit, minimumGasLimitDec) || bnGreaterThan(gasLimit, MAX_GAS_LIMIT_DEC) ? 'editGasLimitOutOfBoundsV2' : null; }; const AdvancedGasFeeGasLimit = () => { const t = useI18nContext(); const { setGasLimit: setGasLimitInContext, setErrorValue, } = useAdvancedGasFeePopoverContext(); const { gasLimit: gasLimitInTransaction, minimumGasLimitDec, } = useGasFeeContext(); const [isEditing, setEditing] = useState(false); const [gasLimit, setGasLimit] = useState(gasLimitInTransaction); const [gasLimitError, setGasLimitError] = useState(); const updateGasLimit = (value) => { setGasLimit(value); }; useEffect(() => { setGasLimitInContext(gasLimit); const error = validateGasLimit(gasLimit, minimumGasLimitDec); setGasLimitError(error); setErrorValue('gasLimit', error === 'editGasLimitOutOfBoundsV2'); }, [gasLimit, minimumGasLimitDec, setGasLimitInContext, setErrorValue]); if (isEditing) { return ( ); } return ( {gasLimit} ); }; export default AdvancedGasFeeGasLimit;