import React, { Component } from 'react'; import PropTypes from 'prop-types'; import PageContainerContent from '../../../components/ui/page-container/page-container-content.component'; import Dialog from '../../../components/ui/dialog'; import ActionableMessage from '../../../components/ui/actionable-message'; import { ETH_GAS_PRICE_FETCH_WARNING_KEY, GAS_PRICE_FETCH_FAILURE_ERROR_KEY, GAS_PRICE_EXCESSIVE_ERROR_KEY, INSUFFICIENT_FUNDS_FOR_GAS_ERROR_KEY, } from '../../../helpers/constants/error-keys'; import { AssetType } from '../../../../shared/constants/transaction'; import { CONTRACT_ADDRESS_LINK } from '../../../helpers/constants/common'; import GasDisplay from '../gas-display'; import SendAmountRow from './send-amount-row'; import SendHexDataRow from './send-hex-data-row'; import SendAssetRow from './send-asset-row'; import SendGasRow from './send-gas-row'; export default class SendContent extends Component { static contextTypes = { t: PropTypes.func, }; static propTypes = { showHexData: PropTypes.bool, warning: PropTypes.string, error: PropTypes.string, gasIsExcessive: PropTypes.bool.isRequired, isEthGasPrice: PropTypes.bool, noGasPrice: PropTypes.bool, networkOrAccountNotSupports1559: PropTypes.bool, getIsBalanceInsufficient: PropTypes.bool, asset: PropTypes.object, assetError: PropTypes.string, recipient: PropTypes.object, acknowledgeRecipientWarning: PropTypes.func, recipientWarningAcknowledged: PropTypes.bool, }; render() { const { warning, error, gasIsExcessive, isEthGasPrice, noGasPrice, networkOrAccountNotSupports1559, getIsBalanceInsufficient, asset, assetError, recipient, recipientWarningAcknowledged, } = this.props; let gasError; if (gasIsExcessive) { gasError = GAS_PRICE_EXCESSIVE_ERROR_KEY; } else if (noGasPrice) { gasError = GAS_PRICE_FETCH_FAILURE_ERROR_KEY; } else if (getIsBalanceInsufficient) { gasError = INSUFFICIENT_FUNDS_FOR_GAS_ERROR_KEY; } const showHexData = this.props.showHexData && asset.type !== AssetType.token && asset.type !== AssetType.NFT; const showKnownRecipientWarning = recipient.warning === 'knownAddressRecipient'; return (
{assetError ? this.renderError(assetError) : null} {isEthGasPrice ? this.renderWarning(ETH_GAS_PRICE_FETCH_WARNING_KEY) : null} {error ? this.renderError(error) : null} {warning ? this.renderWarning() : null} {showKnownRecipientWarning && !recipientWarningAcknowledged ? this.renderRecipientWarning() : null} {networkOrAccountNotSupports1559 ? : null} {showHexData ? : null}
); } renderWarning(gasWarning = '') { const { t } = this.context; const { warning } = this.props; return ( {gasWarning === '' ? t(warning) : t(gasWarning)} ); } renderRecipientWarning() { const { acknowledgeRecipientWarning } = this.props; const { t } = this.context; return (
{t('learnMoreUpperCase')} , ])} roundedButtons />
); } renderError(error) { const { t } = this.context; return ( {t(error)} ); } }