// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import ReactTooltip from 'react-tooltip'; import { Button, MethodDecoding } from '~/ui'; import { GasIcon } from '~/ui/Icons'; import * as tUtil from '../util/transaction'; import Account from '../Account'; import RequestOrigin from '../RequestOrigin'; import styles from './transactionMainDetails.css'; export default class TransactionMainDetails extends Component { static propTypes = { children: PropTypes.node, disabled: PropTypes.bool, externalLink: PropTypes.string.isRequired, from: PropTypes.string.isRequired, fromBalance: PropTypes.object, gasStore: PropTypes.object, id: PropTypes.object.isRequired, netVersion: PropTypes.string.isRequired, origin: PropTypes.any, totalValue: PropTypes.object.isRequired, transaction: PropTypes.object.isRequired, value: PropTypes.object.isRequired }; static defaultProps = { origin: { type: 'unknown', details: '' } }; componentWillMount () { const { totalValue, value } = this.props; this.updateDisplayValues(value, totalValue); } componentWillReceiveProps (nextProps) { const { totalValue, value } = nextProps; this.updateDisplayValues(value, totalValue); } render () { const { children, disabled, externalLink, from, fromBalance, gasStore, netVersion, transaction, origin } = this.props; return (
{ this.renderEditTx() }
{ children }
); } renderEditTx () { const { gasStore } = this.props; if (!gasStore) { return null; } return (
); } renderTotalValue () { const { id } = this.props; const { feeEth, totalValueDisplay, totalValueDisplayWei } = this.state; const labelId = `totalValue${id}`; return (
{ totalValueDisplay } ETH
{ totalValueDisplayWei }, type: WEI } } />
{ feeEth }, token: ETH } } />
); } renderValue () { const { id } = this.props; const { valueDisplay, valueDisplayWei } = this.state; const labelId = `value${id}`; return (
{ valueDisplay } ETH

{ valueDisplayWei } WEI
); } updateDisplayValues (value, totalValue) { this.setState({ feeEth: tUtil.calcFeeInEth(totalValue, value), totalValueDisplay: tUtil.getTotalValueDisplay(totalValue), totalValueDisplayWei: tUtil.getTotalValueDisplayWei(totalValue), valueDisplay: tUtil.getValueDisplay(value), valueDisplayWei: tUtil.getValueDisplayWei(value) }); } toggleGasEditor = () => { this.props.gasStore.setEditing(true); } }