Tokens.js 2.76 KiB
Newer Older
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity.
Amaury Martiny's avatar
Amaury Martiny committed
//
Amaury Martiny's avatar
Amaury Martiny committed
// SPDX-License-Identifier: BSD-3-Clause
import React, { PureComponent } from 'react';
import { AccountHeader, Clickable, MenuPopup } from 'fether-ui';
import { Link, withRouter } from 'react-router-dom';
import i18n, { packageNS } from '../i18n';
YJ's avatar
YJ committed
import Health from '../Health';
import TokensList from './TokensList';
import withAccount from '../utils/withAccount';
YJ's avatar
YJ committed

@withAccount
class Tokens extends PureComponent {
  state = {
    isMenuOpen: false
  };

  handleMenuClose = () => {
    this.setState({ isMenuOpen: false });
  };

  handleMenuOpen = () => {
    this.setState({ isMenuOpen: true });
  };

  isParitySignerAccount = () => {
    const {
      account: { type }
    } = this.props;

    return type === 'signer';
  };

  menuItems = () => {
      account: { address },
      history
    const backupAccountItem = {
      name: i18n.t(`${packageNS}:tokens.tokens.menu_items.backup_account`),
      onClick: () => history.push(`/backup/${address}`)
Luke Schoen's avatar
Luke Schoen committed
    const menuItems = [
        name: i18n.t(`${packageNS}:tokens.tokens.menu_items.add_tokens`),
        onClick: () => history.push(`/whitelist/${address}`)
      },
      {
        name: i18n.t(`${packageNS}:tokens.tokens.menu_items.delete_account`),
        onClick: () => history.push(`/delete/${address}`)

    if (this.isParitySignerAccount() === false) {
      menuItems.unshift(backupAccountItem);
YJ's avatar
YJ committed
  render () {
    const {
      account: { address, name, type }
    } = this.props;
    const { isMenuOpen } = this.state;
Amaury Martiny's avatar
Amaury Martiny committed
    return (
      <React.Fragment>
        <div className='tokens'>
          <div className={isMenuOpen ? 'popup-underlay' : ''} />
          <AccountHeader
            address={address}
            copyAddress
            type={type}
            left={
              <Link to='/accounts' className='icon -back'>
                {i18n.t(`${packageNS}:navigation.back`)}
              </Link>
            }
            right={
              <MenuPopup
                className='popup-menu-account'
                horizontalOffset={1}
                menuItems={this.menuItems()}
                onClose={this.handleMenuClose}
                onOpen={this.handleMenuOpen}
                size='small'
                trigger={<Clickable className='icon -menu' />}
              />
            }
          />

          <TokensList />
        </div>
YJ's avatar
YJ committed
        <nav className='footer-nav'>
          <div className='footer-nav_status'>
            <Health />
          </div>
        </nav>
Amaury Martiny's avatar
Amaury Martiny committed
export default Tokens;