diff --git a/ui/app/helpers/utils/conversions.util.test.js b/ui/app/helpers/utils/conversions.util.test.js
index f4c08cc74..5f344e3e5 100644
--- a/ui/app/helpers/utils/conversions.util.test.js
+++ b/ui/app/helpers/utils/conversions.util.test.js
@@ -1,6 +1,18 @@
import assert from 'assert'
+import { ETH } from '../constants/common'
import * as utils from './conversions.util'
+describe('getWeiHexFromDecimalValue', function () {
+ it('should correctly convert 0 in ETH', function () {
+ const weiValue = utils.getWeiHexFromDecimalValue({
+ value: '0',
+ fromCurrency: ETH,
+ fromDenomination: ETH,
+ })
+ assert.equal(weiValue, '0')
+ })
+})
+
describe('decETHToDecWEI', function () {
it('should correctly convert 1 ETH to WEI', function () {
const weiValue = utils.decETHToDecWEI('1')
diff --git a/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js b/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js
index 65b39fbb8..1bbdde3b1 100644
--- a/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js
+++ b/ui/app/pages/confirm-token-transaction-base/confirm-token-transaction-base.component.js
@@ -1,5 +1,7 @@
-import React, { Component } from 'react'
+import React, { useContext, useMemo } from 'react'
import PropTypes from 'prop-types'
+import BigNumber from 'bignumber.js'
+import { I18nContext } from '../../contexts/i18n'
import ConfirmTransactionBase from '../confirm-transaction-base'
import UserPreferencedCurrencyDisplay from '../../components/app/user-preferenced-currency-display'
import {
@@ -11,112 +13,103 @@ import {
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,
- }
+export default function ConfirmTokenTransactionBase ({
+ toAddress,
+ tokenAddress,
+ tokenAmount = '0',
+ tokenSymbol,
+ fiatTransactionTotal,
+ ethTransactionTotal,
+ contractExchangeRate,
+ conversionRate,
+ currentCurrency,
+}) {
+ const t = useContext(I18nContext)
- 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,
- })
- }
+ const hexWeiValue = useMemo(() => {
+ if (tokenAmount === '0' || !contractExchangeRate) {
+ return '0'
+ }
- renderSubtitleComponent () {
- const { contractExchangeRate, tokenAmount } = this.props
+ const decimalEthValue = (
+ (new BigNumber(tokenAmount)).times(new BigNumber(contractExchangeRate))
+ ).toFixed()
- const decimalEthValue = (tokenAmount * contractExchangeRate) || '0'
- const hexWeiValue = getWeiHexFromDecimalValue({
+ return getWeiHexFromDecimalValue({
value: decimalEthValue,
fromCurrency: ETH,
fromDenomination: ETH,
})
+ }, [tokenAmount, contractExchangeRate])
- return typeof contractExchangeRate === 'undefined'
- ? (
-
- { this.context.t('noConversionRateAvailable') }
-
- ) : (
-