import React, { Component } from 'react' import PropTypes from 'prop-types' import ConfirmTransactionBase from '../confirm-transaction-base' import UserPreferencedCurrencyDisplay from '../../components/app/user-preferenced-currency-display' import { formatCurrency, convertTokenToFiat, addFiat, roundExponential, } from '../../helpers/utils/confirm-tx.util' import { getWeiHexFromDecimalValue } from '../../helpers/utils/conversions.util' import { ETH, PRIMARY } from '../../helpers/constants/common' export default class ConfirmTokenTransactionBase extends Component { static contextTypes = { t: PropTypes.func, } static propTypes = { tokenAddress: PropTypes.string, toAddress: PropTypes.string, tokenAmount: PropTypes.string, tokenSymbol: PropTypes.string, fiatTransactionTotal: PropTypes.string, ethTransactionTotal: PropTypes.string, contractExchangeRate: PropTypes.number, conversionRate: PropTypes.number, currentCurrency: PropTypes.string, } static defaultProps = { tokenAmount: '0', } getFiatTransactionAmount () { const { tokenAmount, currentCurrency, conversionRate, contractExchangeRate } = this.props return convertTokenToFiat({ value: tokenAmount, toCurrency: currentCurrency, conversionRate, contractExchangeRate, }) } renderSubtitleComponent () { const { contractExchangeRate, tokenAmount } = this.props const decimalEthValue = (tokenAmount * contractExchangeRate) || '0' const hexWeiValue = getWeiHexFromDecimalValue({ value: decimalEthValue, fromCurrency: ETH, fromDenomination: ETH, }) return typeof contractExchangeRate === 'undefined' ? ( { this.context.t('noConversionRateAvailable') } ) : ( ) } renderPrimaryTotalTextOverride () { const { tokenAmount, tokenSymbol, ethTransactionTotal } = this.props const tokensText = `${tokenAmount} ${tokenSymbol}` return (
{ `${tokensText} + ` } { ethTransactionTotal }
) } getSecondaryTotalTextOverride () { const { fiatTransactionTotal, currentCurrency, contractExchangeRate } = this.props if (typeof contractExchangeRate === 'undefined') { return formatCurrency(fiatTransactionTotal, currentCurrency) } const fiatTransactionAmount = this.getFiatTransactionAmount() const fiatTotal = addFiat(fiatTransactionAmount, fiatTransactionTotal) const roundedFiatTotal = roundExponential(fiatTotal) return formatCurrency(roundedFiatTotal, currentCurrency) } render () { const { toAddress, tokenAddress, tokenSymbol, tokenAmount, ...restProps } = this.props const tokensText = `${tokenAmount} ${tokenSymbol}` return ( ) } }