You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.3 KiB
55 lines
1.3 KiB
6 years ago
|
import React, { PureComponent } from 'react'
|
||
|
import PropTypes from 'prop-types'
|
||
|
import CurrencyDisplay from '../currency-display/currency-display.component'
|
||
|
import { getTokenData } from '../../helpers/transactions.util'
|
||
|
import { calcTokenAmount } from '../../token-util'
|
||
|
|
||
|
export default class TokenCurrencyDisplayContainer extends PureComponent {
|
||
|
static propTypes = {
|
||
|
transactionData: PropTypes.string,
|
||
|
token: PropTypes.object,
|
||
|
}
|
||
|
|
||
|
state = {
|
||
|
displayValue: '',
|
||
|
}
|
||
|
|
||
|
componentDidMount () {
|
||
|
this.setDisplayValue()
|
||
|
}
|
||
|
|
||
|
componentDidUpdate (prevProps) {
|
||
|
const { transactionData } = this.props
|
||
|
const { transactionData: prevTransactionData } = prevProps
|
||
|
|
||
|
if (transactionData !== prevTransactionData) {
|
||
|
this.setDisplayValue()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
setDisplayValue () {
|
||
|
const { transactionData: data, token } = this.props
|
||
|
const { decimals = '', symbol = '' } = token
|
||
|
const tokenData = getTokenData(data)
|
||
|
|
||
|
let displayValue
|
||
|
|
||
|
if (tokenData.params && tokenData.params.length === 2) {
|
||
|
const tokenValue = tokenData.params[1].value
|
||
|
const tokenAmount = calcTokenAmount(tokenValue, decimals)
|
||
|
displayValue = `${tokenAmount} ${symbol}`
|
||
|
}
|
||
|
|
||
|
this.setState({ displayValue })
|
||
|
}
|
||
|
|
||
|
render () {
|
||
|
return (
|
||
|
<CurrencyDisplay
|
||
|
{...this.props}
|
||
|
displayValue={this.state.displayValue}
|
||
|
/>
|
||
|
)
|
||
|
}
|
||
|
}
|