Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

Commit

Permalink
Merge pull request #3618 from ethcore/jg-list-accounts
Browse files Browse the repository at this point in the history
Use accountsInfo instead of eth_accounts for first check
  • Loading branch information
gavofyork authored Nov 25, 2016
2 parents b274d08 + 2958546 commit a51066b
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 33 deletions.
39 changes: 6 additions & 33 deletions js/src/views/Application/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { observer } from 'mobx-react';

import Connection from '../Connection';
import ParityBar from '../ParityBar';
Expand All @@ -26,13 +27,14 @@ import Container from './Container';
import DappContainer from './DappContainer';
import FrameError from './FrameError';
import Status from './Status';
import Store from './store';
import TabBar from './TabBar';

import styles from './application.css';

const inFrame = window.parent !== window && window.parent.frames.length !== 0;
const showFirstRun = window.localStorage.getItem('showFirstRun') === '1';

@observer
class Application extends Component {
static contextTypes = {
api: PropTypes.object.isRequired,
Expand All @@ -47,13 +49,7 @@ class Application extends Component {
blockNumber: PropTypes.object
}

state = {
showFirstRun: false
}

componentWillMount () {
this.checkAccounts();
}
store = new Store(this.context.api);

render () {
const [root] = (window.location.hash || '').replace('#/', '').split('/');
Expand All @@ -76,12 +72,11 @@ class Application extends Component {

renderApp () {
const { children, pending, netChain, isTest, blockNumber } = this.props;
const { showFirstRun } = this.state;

return (
<Container
showFirstRun={ showFirstRun }
onCloseFirstRun={ this.onCloseFirstRun }>
showFirstRun={ this.store.firstrunVisible }
onCloseFirstRun={ this.store.closeFirstrun }>
<TabBar
netChain={ netChain }
isTest={ isTest }
Expand All @@ -102,28 +97,6 @@ class Application extends Component {
</DappContainer>
);
}

checkAccounts () {
const { api } = this.context;

api.eth
.accounts()
.then((accounts) => {
this.setState({
showFirstRun: showFirstRun || accounts.length === 0
});
})
.catch((error) => {
console.error('checkAccounts', error);
});
}

onCloseFirstRun = () => {
window.localStorage.setItem('showFirstRun', '0');
this.setState({
showFirstRun: false
});
}
}

function mapStateToProps (state) {
Expand Down
51 changes: 51 additions & 0 deletions js/src/views/Application/store.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Copyright 2015, 2016 Ethcore (UK) Ltd.
// This file is part of Parity.

// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.

import { action, observable } from 'mobx';

const showFirstRun = window.localStorage.getItem('showFirstRun') !== '0';

export default class Store {
@observable firstrunVisible = showFirstRun;

constructor (api) {
this._api = api;

this._checkAccounts();
}

@action closeFirstrun = () => {
this.toggleFirstrun(false);
}

@action toggleFirstrun = (visible = false) => {
this.firstrunVisible = visible;
window.localStorage.setItem('showFirstRun', visible ? '1' : '0');
}

_checkAccounts () {
this._api.parity
.accountsInfo()
.then((info) => {
const accounts = Object.keys(info).filter((address) => info[address].uuid);

this.toggleFirstrun(this.firstrunVisible || !accounts || !accounts.length);
})
.catch((error) => {
console.error('checkAccounts', error);
});
}
}

0 comments on commit a51066b

Please sign in to comment.