// 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 { observer } from 'mobx-react'; import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import shapeshiftBtn from '~/../assets/images/shapeshift-btn.png'; import HardwareStore from '~/mobx/hardwareStore'; import { EditMeta, DeleteAccount, Shapeshift, Verification, Transfer, PasswordManager } from '~/modals'; import { setVisibleAccounts } from '~/redux/providers/personalActions'; import { fetchCertifiers, fetchCertifications } from '~/redux/providers/certifications/actions'; import { Actionbar, Button, Page } from '~/ui'; import { DeleteIcon, EditIcon, LockedIcon, SendIcon, VerifyIcon } from '~/ui/Icons'; import DeleteAddress from '../Address/Delete'; import Header from './Header'; import Store from './store'; import Transactions from './Transactions'; import styles from './account.css'; @observer class Account extends Component { static contextTypes = { api: PropTypes.object.isRequired }; static propTypes = { fetchCertifiers: PropTypes.func.isRequired, fetchCertifications: PropTypes.func.isRequired, setVisibleAccounts: PropTypes.func.isRequired, accounts: PropTypes.object, balances: PropTypes.object, params: PropTypes.object } store = new Store(); hwstore = HardwareStore.get(this.context.api); componentDidMount () { this.props.fetchCertifiers(); this.setVisibleAccounts(); } componentWillReceiveProps (nextProps) { const prevAddress = this.props.params.address; const nextAddress = nextProps.params.address; if (prevAddress !== nextAddress) { this.setVisibleAccounts(nextProps); } } componentWillUnmount () { this.props.setVisibleAccounts([]); } setVisibleAccounts (props = this.props) { const { params, setVisibleAccounts, fetchCertifications } = props; const addresses = [params.address]; setVisibleAccounts(addresses); fetchCertifications(params.address); } render () { const { accounts, balances } = this.props; const { address } = this.props.params; const account = (accounts || {})[address]; const balance = (balances || {})[address]; if (!account) { return null; } const isAvailable = !account.hardware || this.hwstore.isConnected(address); return (
{ this.renderDeleteDialog(account) } { this.renderEditDialog(account) } { this.renderFundDialog() } { this.renderPasswordDialog(account) } { this.renderTransferDialog(account, balance) } { this.renderVerificationDialog() } { this.renderActionbar(account, balance) }
); } renderActionbar (account, balance) { const showTransferButton = !!(balance && balance.tokens); const buttons = [