mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Handle undefined gas limits and prices in transaction-breakdown.component (#6246)
This commit is contained in:
parent
be2d2bad4b
commit
b8f143f1c3
@ -6,8 +6,6 @@ import CurrencyDisplay from '../currency-display'
|
|||||||
import UserPreferencedCurrencyDisplay from '../user-preferenced-currency-display'
|
import UserPreferencedCurrencyDisplay from '../user-preferenced-currency-display'
|
||||||
import HexToDecimal from '../hex-to-decimal'
|
import HexToDecimal from '../hex-to-decimal'
|
||||||
import { GWEI, PRIMARY, SECONDARY } from '../../constants/common'
|
import { GWEI, PRIMARY, SECONDARY } from '../../constants/common'
|
||||||
import { getHexGasTotal } from '../../helpers/confirm-transaction/util'
|
|
||||||
import { sumHexes } from '../../helpers/transactions.util'
|
|
||||||
|
|
||||||
export default class TransactionBreakdown extends PureComponent {
|
export default class TransactionBreakdown extends PureComponent {
|
||||||
static contextTypes = {
|
static contextTypes = {
|
||||||
@ -19,6 +17,11 @@ export default class TransactionBreakdown extends PureComponent {
|
|||||||
className: PropTypes.string,
|
className: PropTypes.string,
|
||||||
nativeCurrency: PropTypes.string.isRequired,
|
nativeCurrency: PropTypes.string.isRequired,
|
||||||
showFiat: PropTypes.bool,
|
showFiat: PropTypes.bool,
|
||||||
|
gas: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||||
|
gasPrice: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||||
|
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||||
|
gasUsed: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||||
|
totalInHex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
||||||
}
|
}
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
@ -28,13 +31,7 @@ export default class TransactionBreakdown extends PureComponent {
|
|||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { t } = this.context
|
const { t } = this.context
|
||||||
const { transaction, className, nativeCurrency, showFiat } = this.props
|
const { gas, gasPrice, value, className, nativeCurrency, showFiat, totalInHex, gasUsed } = this.props
|
||||||
const { txParams: { gas, gasPrice, value } = {}, txReceipt: { gasUsed } = {} } = transaction
|
|
||||||
|
|
||||||
const gasLimit = typeof gasUsed === 'string' ? gasUsed : gas
|
|
||||||
|
|
||||||
const hexGasTotal = getHexGasTotal({ gasLimit, gasPrice })
|
|
||||||
const totalInHex = sumHexes(hexGasTotal, value)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classnames('transaction-breakdown', className)}>
|
<div className={classnames('transaction-breakdown', className)}>
|
||||||
@ -52,10 +49,13 @@ export default class TransactionBreakdown extends PureComponent {
|
|||||||
title={`${t('gasLimit')} (${t('units')})`}
|
title={`${t('gasLimit')} (${t('units')})`}
|
||||||
className="transaction-breakdown__row-title"
|
className="transaction-breakdown__row-title"
|
||||||
>
|
>
|
||||||
<HexToDecimal
|
{typeof gas !== 'undefined'
|
||||||
|
? <HexToDecimal
|
||||||
className="transaction-breakdown__value"
|
className="transaction-breakdown__value"
|
||||||
value={gas}
|
value={gas}
|
||||||
/>
|
/>
|
||||||
|
: '?'
|
||||||
|
}
|
||||||
</TransactionBreakdownRow>
|
</TransactionBreakdownRow>
|
||||||
{
|
{
|
||||||
typeof gasUsed === 'string' && (
|
typeof gasUsed === 'string' && (
|
||||||
@ -71,13 +71,16 @@ export default class TransactionBreakdown extends PureComponent {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
<TransactionBreakdownRow title={t('gasPrice')}>
|
<TransactionBreakdownRow title={t('gasPrice')}>
|
||||||
<CurrencyDisplay
|
{typeof gasPrice !== 'undefined'
|
||||||
|
? <CurrencyDisplay
|
||||||
className="transaction-breakdown__value"
|
className="transaction-breakdown__value"
|
||||||
currency={nativeCurrency}
|
currency={nativeCurrency}
|
||||||
denomination={GWEI}
|
denomination={GWEI}
|
||||||
value={gasPrice}
|
value={gasPrice}
|
||||||
hideLabel
|
hideLabel
|
||||||
/>
|
/>
|
||||||
|
: '?'
|
||||||
|
}
|
||||||
</TransactionBreakdownRow>
|
</TransactionBreakdownRow>
|
||||||
<TransactionBreakdownRow title={t('total')}>
|
<TransactionBreakdownRow title={t('total')}>
|
||||||
<div>
|
<div>
|
||||||
|
@ -1,14 +1,28 @@
|
|||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
import TransactionBreakdown from './transaction-breakdown.component'
|
import TransactionBreakdown from './transaction-breakdown.component'
|
||||||
import {getIsMainnet, getNativeCurrency, preferencesSelector} from '../../selectors'
|
import {getIsMainnet, getNativeCurrency, preferencesSelector} from '../../selectors'
|
||||||
|
import { getHexGasTotal } from '../../helpers/confirm-transaction/util'
|
||||||
|
import { sumHexes } from '../../helpers/transactions.util'
|
||||||
|
|
||||||
const mapStateToProps = (state) => {
|
const mapStateToProps = (state, ownProps) => {
|
||||||
|
const { transaction } = ownProps
|
||||||
|
const { txParams: { gas, gasPrice, value } = {}, txReceipt: { gasUsed } = {} } = transaction
|
||||||
const { showFiatInTestnets } = preferencesSelector(state)
|
const { showFiatInTestnets } = preferencesSelector(state)
|
||||||
const isMainnet = getIsMainnet(state)
|
const isMainnet = getIsMainnet(state)
|
||||||
|
|
||||||
|
const gasLimit = typeof gasUsed === 'string' ? gasUsed : gas
|
||||||
|
|
||||||
|
const hexGasTotal = gasLimit && gasPrice && getHexGasTotal({ gasLimit, gasPrice }) || '0x0'
|
||||||
|
const totalInHex = sumHexes(hexGasTotal, value)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
nativeCurrency: getNativeCurrency(state),
|
nativeCurrency: getNativeCurrency(state),
|
||||||
showFiat: (isMainnet || !!showFiatInTestnets),
|
showFiat: (isMainnet || !!showFiatInTestnets),
|
||||||
|
totalInHex,
|
||||||
|
gas,
|
||||||
|
gasPrice,
|
||||||
|
value,
|
||||||
|
gasUsed,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user