import { Identicon, UnitDisplay } from 'components/ui'; import { NetworkConfig } from 'config'; import { IWallet, Balance, TrezorWallet, LedgerWallet } from 'libs/wallet'; import React from 'react'; import translate from 'translations'; import './AccountInfo.scss'; import Spinner from 'components/ui/Spinner'; interface Props { balance: Balance; wallet: IWallet; network: NetworkConfig; } interface State { showLongBalance: boolean; address: string; confirmAddr: boolean; } export default class AccountInfo extends React.Component { public state = { showLongBalance: false, address: '', confirmAddr: false }; public async setAddressFromWallet() { const address = await this.props.wallet.getAddressString(); if (address !== this.state.address) { this.setState({ address }); } } public componentDidMount() { this.setAddressFromWallet(); } public componentDidUpdate() { this.setAddressFromWallet(); } public toggleConfirmAddr = () => { this.setState(state => { return { confirmAddr: !state.confirmAddr }; }); }; public toggleShowLongBalance = (e: React.FormEvent) => { e.preventDefault(); this.setState(state => { return { showLongBalance: !state.showLongBalance }; }); }; public render() { const { network, balance } = this.props; const { address, showLongBalance, confirmAddr } = this.state; const { blockExplorer, tokenExplorer } = network; const wallet = this.props.wallet as LedgerWallet | TrezorWallet; return (
{translate('sidebar_AccountAddr')}
{address}
{typeof wallet.displayAddress === 'function' && (
{ this.toggleConfirmAddr(); wallet .displayAddress() .then(() => this.toggleConfirmAddr()) .catch(e => { this.toggleConfirmAddr(); throw new Error(e); }); }} > {confirmAddr ? null : 'Display address on ' + wallet.getWalletType()} {confirmAddr ? ( Confirm address on {wallet.getWalletType()} ) : null}
)}
{translate('sidebar_AccountBal')}
  • {balance.isPending ? ( ) : ( )} {!balance.isPending ? balance.wei ? {network.name} : null : null}
{(!!blockExplorer || !!tokenExplorer) && (
{translate('sidebar_TransHistory')}
)}
); } }