Newer
Older
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
import { AccountCard, Clickable, Header } from 'fether-ui';
import { chainId$ } from '@parity/light.js';
import light from '@parity/light.js-react';
import i18n, { packageNS } from '../../i18n';
Luke Schoen
committed
import RequireHealthOverlay from '../../RequireHealthOverlay';
import withAccountsInfo from '../../utils/withAccountsInfo';
import Feedback from './Feedback';
@light({
@observer
class AccountsList extends Component {
handleClick = ({
currentTarget: {
dataset: { address }
}
}) => {
const { accountsInfo, chainId } = this.props;
const accountsList = Object.keys(accountsInfo).filter(
key =>
!accountsInfo[key].chainId ||
accountsInfo[key].chainId === parseInt(chainId, 10)
Luke Schoen
committed
const accountsListLength = accountsList && accountsList.length;
<RequireHealthOverlay require='node'>
Luke Schoen
committed
<div className='accounts-list'>
<Header
right={
<Clickable
className='icon -new'
onClick={this.handleCreateAccount}
/>
}
title={<h1>{i18n.t(`${packageNS}:accounts_list.header`)}</h1>}
Luke Schoen
committed
/>
Luke Schoen
committed
<div className='window_content'>
<div className='box -scroller'>
{accountsListLength ? (
<ul className='list'>
{accountsList.map(address => (
<li
key={address}
data-address={address} // Using data- to avoid creating a new item Component
onClick={this.handleClick}
>
<AccountCard
address={address}
className='-clickable'
i18n={i18n}
name={
accountsInfo[address].name ||
i18n.t(`${packageNS}:account.existing.no_name`)
}
packageNS={packageNS}
Luke Schoen
committed
screen='accounts'
shortAddress
type={accountsInfo[address].type}
Luke Schoen
committed
/>
</li>
))}
</ul>
) : (
<p className='create-hint'>
{i18n.t(`${packageNS}:accounts_list.hint.none`)}
Luke Schoen
committed
<br />
<br />
{i18n.t(`${packageNS}:accounts_list.hint.exist`)}
Luke Schoen
committed
</p>
)}
</div>
<nav className='footer-nav'>
<div className='footer-nav_status'>
<Health />
</div>
<div className='footer-feedback'>
<Feedback accountsListLength={accountsListLength} />
</div>
</nav>
Luke Schoen
committed
</div>
</RequireHealthOverlay>
);
}
}
export default AccountsList;