// Copyright 2015, 2016 Ethcore (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 { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import ActionDelete from 'material-ui/svg-icons/action/delete'; import ContentCreate from 'material-ui/svg-icons/content/create'; import ContentSend from 'material-ui/svg-icons/content/send'; import LockIcon from 'material-ui/svg-icons/action/lock'; import VerifyIcon from 'material-ui/svg-icons/action/verified-user'; import { EditMeta, DeleteAccount, Shapeshift, SMSVerification, Transfer, PasswordManager } from '../../modals'; import { Actionbar, Button, Page } from '../../ui'; import shapeshiftBtn from '../../../assets/images/shapeshift-btn.png'; import Header from './Header'; import Transactions from './Transactions'; import { setVisibleAccounts } from '../../redux/providers/personalActions'; import VerificationStore from '../../modals/SMSVerification/store'; import styles from './account.css'; class Account extends Component { static contextTypes = { api: PropTypes.object.isRequired } static propTypes = { setVisibleAccounts: PropTypes.func.isRequired, images: PropTypes.object.isRequired, params: PropTypes.object, accounts: PropTypes.object, isTestnet: PropTypes.bool, balances: PropTypes.object } propName = null state = { showDeleteDialog: false, showEditDialog: false, showFundDialog: false, showVerificationDialog: false, verificationStore: null, showTransferDialog: false, showPasswordDialog: false } componentDidMount () { this.setVisibleAccounts(); } componentWillReceiveProps (nextProps) { const prevAddress = this.props.params.address; const nextAddress = nextProps.params.address; if (prevAddress !== nextAddress) { this.setVisibleAccounts(nextProps); } const { isTestnet } = nextProps; if (typeof isTestnet === 'boolean' && !this.state.verificationStore) { const { api } = this.context; const { address } = nextProps.params; this.setState({ verificationStore: new VerificationStore(api, address, isTestnet) }); } } componentWillUnmount () { this.props.setVisibleAccounts([]); } setVisibleAccounts (props = this.props) { const { params, setVisibleAccounts } = props; const addresses = [ params.address ]; setVisibleAccounts(addresses); } render () { const { accounts, balances } = this.props; const { address } = this.props.params; const account = (accounts || {})[address]; const balance = (balances || {})[address]; if (!account) { return null; } return (
{ this.renderDeleteDialog(account) } { this.renderEditDialog(account) } { this.renderFundDialog() } { this.renderVerificationDialog() } { this.renderTransferDialog() } { this.renderPasswordDialog() } { this.renderActionbar() }
); } renderActionbar () { const { address } = this.props.params; const { balances } = this.props; const balance = balances[address]; const showTransferButton = !!(balance && balance.tokens); const buttons = [