TokenBalance.js 1.34 KiB
Newer Older
Amaury Martiny's avatar
Amaury Martiny committed
// Copyright 2015-2018 Parity Technologies (UK) Ltd.
// This file is part of Parity.
//
Amaury Martiny's avatar
Amaury Martiny committed
// SPDX-License-Identifier: BSD-3-Clause
Amaury Martiny's avatar
Amaury Martiny committed

Axel Chalon's avatar
Axel Chalon committed
import React, { Component } from 'react';
import { inject } from 'mobx-react';
import PropTypes from 'prop-types';
import { TokenCard } from 'fether-ui';
import { withRouter } from 'react-router-dom';
Amaury Martiny's avatar
Amaury Martiny committed

import withAccount from '../../../utils/withAccount.js';
import withBalance from '../../../utils/withBalance.js';
import { estimateUsd } from '../../../utils/estimateUsd';
@withAccount
Axel Chalon's avatar
Axel Chalon committed
@inject('sendStore')
class TokenBalance extends Component {
Amaury Martiny's avatar
Amaury Martiny committed
  static propTypes = {
    token: PropTypes.object
Amaury Martiny's avatar
Amaury Martiny committed
  };

  state = {
    usdBalance: null
  };

  componentDidMount = async () => {
    const { balance, token } = this.props;

    if (token.symbol === 'ETH') {
      this.setState({
        usdBalance: (await estimateUsd()) * balance
      });
    }
  };

  handleClick = () => {
Axel Chalon's avatar
Axel Chalon committed
    const { accountAddress, history, sendStore, token } = this.props;
    if (!token.address) {
      return;
    }
    sendStore.clear();
    history.push(`/send/${token.address}/from/${accountAddress}`);
Axel Chalon's avatar
Axel Chalon committed
  render () {
    const { usdBalance } = this.state;

    return (
      <TokenCard
        onClick={this.handleClick}
        usdBalance={usdBalance}
        {...this.props}
      />
    );
Amaury Martiny's avatar
Amaury Martiny committed
  }
}

export default TokenBalance;