// 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 } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import { observer } from 'mobx-react'; import { pick } from 'lodash'; import { nullableProptype } from '@parity/shared/util/proptypes'; import { Button, IdentityIcon, Portal, Warning } from '@parity/ui'; import { newError } from '@parity/ui/Errors/actions'; import { CancelIcon, NextIcon, PrevIcon } from '@parity/ui/Icons'; import Details from './Details'; import Extras from './Extras'; import TransferStore, { WALLET_WARNING_SPENT_TODAY_LIMIT } from './store'; import styles from './transfer.css'; const STEP_DETAILS = 0; const STEP_EXTRA = 1; @observer class Transfer extends Component { static contextTypes = { api: PropTypes.object.isRequired } static propTypes = { newError: PropTypes.func.isRequired, gasLimit: PropTypes.object.isRequired, account: PropTypes.object, balance: PropTypes.object, onClose: PropTypes.func, senders: nullableProptype(PropTypes.object), sendersBalances: nullableProptype(PropTypes.object), tokens: PropTypes.object, wallet: PropTypes.object } store = new TransferStore(this.context.api, this.props); render () { const { stage, steps } = this.store; return ( { this.renderExceptionWarning() } { this.renderWalletWarning() } { this.renderPage() } ); } renderExceptionWarning () { const { errorEstimated } = this.store.gasStore; if (!errorEstimated) { return null; } return ( ); } renderWalletWarning () { const { walletWarning } = this.store; if (!walletWarning) { return null; } if (walletWarning === WALLET_WARNING_SPENT_TODAY_LIMIT) { const warning = ( ); return ( ); } return null; } renderAccount () { const { account } = this.props; return (
{ account.name || 'Unnamed' }
{ account.address }
); } renderPage () { const { extras, stage } = this.store; if (stage === STEP_DETAILS) { return this.renderDetailsPage(); } else if (stage === STEP_EXTRA && extras) { return this.renderExtrasPage(); } } renderDetailsPage () { const { account, balance, senders } = this.props; const { recipient, recipientError, sender, senderError } = this.store; const { valueAll, extras, token, total, totalError, value, valueError } = this.store; return (
); } renderExtrasPage () { if (!this.store.gasStore.histogram) { return null; } const { isEth, data, dataError, total, totalError } = this.store; return ( ); } renderDialogActions () { const { account } = this.props; const { extras, sending, stage } = this.store; const cancelBtn = (