diff options
Diffstat (limited to 'ui/app/accounts')
-rw-r--r-- | ui/app/accounts/account-list-item.js | 20 | ||||
-rw-r--r-- | ui/app/accounts/index.js | 29 |
2 files changed, 37 insertions, 12 deletions
diff --git a/ui/app/accounts/account-list-item.js b/ui/app/accounts/account-list-item.js index 4e0d69ed7..16019c88a 100644 --- a/ui/app/accounts/account-list-item.js +++ b/ui/app/accounts/account-list-item.js @@ -15,19 +15,21 @@ function AccountListItem () { } AccountListItem.prototype.render = function () { - const identity = this.props.identity - var isSelected = this.props.selectedAddress === identity.address - var account = this.props.accounts[identity.address] + const { identity, selectedAccount, accounts, onShowDetail } = this.props + + const isSelected = selectedAccount === identity.address + const account = accounts[identity.address] const selectedClass = isSelected ? '.selected' : '' return ( h(`.accounts-list-option.flex-row.flex-space-between.pointer.hover-white${selectedClass}`, { key: `account-panel-${identity.address}`, - onClick: (event) => this.props.onShowDetail(identity.address, event), + onClick: (event) => onShowDetail(identity.address, event), }, [ h('.identicon-wrapper.flex-column.flex-center.select-none', [ this.pendingOrNot(), + this.indicateIfLoose(), h(Identicon, { address: identity.address, imageify: true, @@ -48,7 +50,7 @@ AccountListItem.prototype.render = function () { }, }, ethUtil.toChecksumAddress(identity.address)), h(EthBalance, { - value: account.balance, + value: account && account.balance, style: { lineHeight: '7px', marginTop: '10px', @@ -70,6 +72,14 @@ AccountListItem.prototype.render = function () { ) } +AccountListItem.prototype.indicateIfLoose = function () { + try { // Sometimes keyrings aren't loaded yet: + const type = this.props.keyring.type + const isLoose = type !== 'HD Key Tree' + return isLoose ? h('.keyring-label', 'LOOSE') : null + } catch (e) { return } +} + AccountListItem.prototype.pendingOrNot = function () { const pending = this.props.pending if (pending.length === 0) return null diff --git a/ui/app/accounts/index.js b/ui/app/accounts/index.js index 65cf82b2c..5ab31a1c0 100644 --- a/ui/app/accounts/index.js +++ b/ui/app/accounts/index.js @@ -19,9 +19,10 @@ function mapStateToProps (state) { accounts: state.metamask.accounts, identities: state.metamask.identities, unconfTxs: state.metamask.unconfTxs, - selectedAddress: state.metamask.selectedAddress, + selectedAccount: state.metamask.selectedAccount, scrollToBottom: state.appState.scrollToBottom, pending, + keyrings: state.metamask.keyrings, } } @@ -31,9 +32,10 @@ function AccountsScreen () { } AccountsScreen.prototype.render = function () { - var state = this.props - var identityList = valuesFor(state.identities) - var unconfTxList = valuesFor(state.unconfTxs) + const props = this.props + const { keyrings } = props + const identityList = valuesFor(props.identities) + const unconfTxList = valuesFor(props.unconfTxs) return ( @@ -69,13 +71,19 @@ AccountsScreen.prototype.render = function () { } }) + const simpleAddress = identity.address.substring(2).toLowerCase() + const keyring = keyrings.find((kr) => { + return kr.accounts.includes(simpleAddress) + }) + return h(AccountListItem, { key: `acct-panel-${identity.address}`, identity, - selectedAddress: this.props.selectedAddress, + selectedAccount: this.props.selectedAccount, accounts: this.props.accounts, onShowDetail: this.onShowDetail.bind(this), pending, + keyring, }) }), @@ -133,8 +141,8 @@ AccountsScreen.prototype.navigateToConfTx = function () { AccountsScreen.prototype.onSelect = function (address, event) { event.stopPropagation() // if already selected, deselect - if (this.props.selectedAddress === address) address = null - this.props.dispatch(actions.setSelectedAddress(address)) + if (this.props.selectedAccount === address) address = null + this.props.dispatch(actions.setSelectedAccount(address)) } AccountsScreen.prototype.onShowDetail = function (address, event) { @@ -143,8 +151,15 @@ AccountsScreen.prototype.onShowDetail = function (address, event) { } AccountsScreen.prototype.addNewAccount = function () { + this.props.dispatch(actions.addNewAccount(0)) +} + +/* An optional view proposed in this design: + * https://consensys.quip.com/zZVrAysM5znY +AccountsScreen.prototype.addNewAccount = function () { this.props.dispatch(actions.navigateToNewAccountScreen()) } +*/ AccountsScreen.prototype.goHome = function () { this.props.dispatch(actions.goHome()) |