mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-24 11:01:41 +01:00
31175625b4
* Remove ui/app/keychains/ * Remove ui/app/img/ (unused images) * Move conversion-util to helpers/utils/ * Move token-util to helpers/utils/ * Move /helpers/*.js inside /helpers/utils/ * Move util tests inside /helpers/utils/ * Renameand move confirm-transaction/util.js to helpers/utils/ * Move higher-order-components to helpers/higher-order-components/ * Move infura-conversion.json to helpers/constants/ * Move all utility functions to helpers/utils/ * Move pages directory to top-level * Move all constants to helpers/constants/ * Move metametrics inside helpers/ * Move app and root inside pages/ * Move routes inside helpers/ * Re-organize ducks/ * Move reducers to ducks/ * Move selectors inside selectors/ * Move test out of test folder * Move action, reducer, store inside store/ * Move ui components inside ui/ * Move UI components inside ui/ * Move connected components inside components/app/ * Move i18n-helper inside helpers/ * Fix unit tests * Fix unit test * Move pages components * Rename routes component * Move reducers to ducks/index * Fix bad path in unit test
120 lines
3.4 KiB
JavaScript
120 lines
3.4 KiB
JavaScript
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.number,
|
|
tokenSymbol: PropTypes.string,
|
|
fiatTransactionTotal: PropTypes.string,
|
|
ethTransactionTotal: PropTypes.string,
|
|
contractExchangeRate: PropTypes.number,
|
|
conversionRate: PropTypes.number,
|
|
currentCurrency: PropTypes.string,
|
|
}
|
|
|
|
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'
|
|
? (
|
|
<span>
|
|
{ this.context.t('noConversionRateAvailable') }
|
|
</span>
|
|
) : (
|
|
<UserPreferencedCurrencyDisplay
|
|
value={hexWeiValue}
|
|
type={PRIMARY}
|
|
showEthLogo
|
|
hideLabel
|
|
/>
|
|
)
|
|
}
|
|
|
|
renderPrimaryTotalTextOverride () {
|
|
const { tokenAmount, tokenSymbol, ethTransactionTotal } = this.props
|
|
const tokensText = `${tokenAmount} ${tokenSymbol}`
|
|
|
|
return (
|
|
<div>
|
|
<span>{ `${tokensText} + ` }</span>
|
|
<img
|
|
src="/images/eth.svg"
|
|
height="18"
|
|
/>
|
|
<span>{ ethTransactionTotal }</span>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
getSecondaryTotalTextOverride () {
|
|
const { fiatTransactionTotal, currentCurrency, contractExchangeRate } = this.props
|
|
|
|
if (typeof contractExchangeRate === 'undefined') {
|
|
return formatCurrency(fiatTransactionTotal, currentCurrency)
|
|
} else {
|
|
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 (
|
|
<ConfirmTransactionBase
|
|
toAddress={toAddress}
|
|
identiconAddress={tokenAddress}
|
|
title={tokensText}
|
|
subtitleComponent={this.renderSubtitleComponent()}
|
|
primaryTotalTextOverride={this.renderPrimaryTotalTextOverride()}
|
|
secondaryTotalTextOverride={this.getSecondaryTotalTextOverride()}
|
|
{...restProps}
|
|
/>
|
|
)
|
|
}
|
|
}
|