Merge pull request #3827 from ethcore/jr-first-run
first run: skip account creation if they already have accounts
This commit is contained in:
		
						commit
						be0d5ca516
					
				@ -15,6 +15,7 @@
 | 
			
		||||
// along with Parity.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import React, { Component, PropTypes } from 'react';
 | 
			
		||||
import { connect } from 'react-redux';
 | 
			
		||||
import ActionDone from 'material-ui/svg-icons/action/done';
 | 
			
		||||
import ActionDoneAll from 'material-ui/svg-icons/action/done-all';
 | 
			
		||||
import NavigationArrowForward from 'material-ui/svg-icons/navigation/arrow-forward';
 | 
			
		||||
@ -35,14 +36,15 @@ import ParityLogo from '../../../assets/images/parity-logo-black-no-text.svg';
 | 
			
		||||
 | 
			
		||||
const STAGE_NAMES = ['welcome', 'terms', 'new account', 'recovery', 'completed'];
 | 
			
		||||
 | 
			
		||||
export default class FirstRun extends Component {
 | 
			
		||||
class FirstRun extends Component {
 | 
			
		||||
  static contextTypes = {
 | 
			
		||||
    api: PropTypes.object.isRequired,
 | 
			
		||||
    store: PropTypes.object.isRequired
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static propTypes = {
 | 
			
		||||
    visible: PropTypes.bool,
 | 
			
		||||
    hasAccounts: PropTypes.bool.isRequired,
 | 
			
		||||
    visible: PropTypes.bool.isRequired,
 | 
			
		||||
    onClose: PropTypes.func.isRequired
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -109,6 +111,7 @@ export default class FirstRun extends Component {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  renderDialogActions () {
 | 
			
		||||
    const { hasAccounts } = this.props;
 | 
			
		||||
    const { canCreate, stage, hasAcceptedTnc } = this.state;
 | 
			
		||||
 | 
			
		||||
    switch (stage) {
 | 
			
		||||
@ -130,13 +133,26 @@ export default class FirstRun extends Component {
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
      case 2:
 | 
			
		||||
        return (
 | 
			
		||||
        const buttons = [
 | 
			
		||||
          <Button
 | 
			
		||||
            icon={ <ActionDone /> }
 | 
			
		||||
            label='Create'
 | 
			
		||||
            key='create'
 | 
			
		||||
            disabled={ !canCreate }
 | 
			
		||||
            onClick={ this.onCreate } />
 | 
			
		||||
        );
 | 
			
		||||
            onClick={ this.onCreate }
 | 
			
		||||
          />
 | 
			
		||||
        ];
 | 
			
		||||
        if (hasAccounts) {
 | 
			
		||||
          buttons.unshift(
 | 
			
		||||
            <Button
 | 
			
		||||
              icon={ <NavigationArrowForward /> }
 | 
			
		||||
              label='Skip'
 | 
			
		||||
              key='skip'
 | 
			
		||||
              onClick={ this.skipAccountCreation }
 | 
			
		||||
            />
 | 
			
		||||
          );
 | 
			
		||||
        }
 | 
			
		||||
        return buttons;
 | 
			
		||||
 | 
			
		||||
      case 3:
 | 
			
		||||
        return [
 | 
			
		||||
@ -219,6 +235,10 @@ export default class FirstRun extends Component {
 | 
			
		||||
      });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  skipAccountCreation = () => {
 | 
			
		||||
    this.setState({ stage: this.state.stage + 2 });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  newError = (error) => {
 | 
			
		||||
    const { store } = this.context;
 | 
			
		||||
 | 
			
		||||
@ -232,3 +252,9 @@ export default class FirstRun extends Component {
 | 
			
		||||
    print(recoveryPage({ phrase, name, identity, address, logo: ParityLogo }));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function mapStateToProps (state) {
 | 
			
		||||
  return { hasAccounts: state.personal.hasAccounts };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default connect(mapStateToProps, null)(FirstRun);
 | 
			
		||||
 | 
			
		||||
@ -16,14 +16,17 @@
 | 
			
		||||
 | 
			
		||||
import { action, observable } from 'mobx';
 | 
			
		||||
 | 
			
		||||
const showFirstRun = window.localStorage.getItem('showFirstRun') !== '0';
 | 
			
		||||
 | 
			
		||||
export default class Store {
 | 
			
		||||
  @observable firstrunVisible = showFirstRun;
 | 
			
		||||
  @observable firstrunVisible = false;
 | 
			
		||||
 | 
			
		||||
  constructor (api) {
 | 
			
		||||
    this._api = api;
 | 
			
		||||
 | 
			
		||||
    const value = window.localStorage.getItem('showFirstRun');
 | 
			
		||||
    if (value) {
 | 
			
		||||
      this.firstrunVisible = JSON.parse(value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this._checkAccounts();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -33,7 +36,7 @@ export default class Store {
 | 
			
		||||
 | 
			
		||||
  @action toggleFirstrun = (visible = false) => {
 | 
			
		||||
    this.firstrunVisible = visible;
 | 
			
		||||
    window.localStorage.setItem('showFirstRun', visible ? '1' : '0');
 | 
			
		||||
    window.localStorage.setItem('showFirstRun', JSON.stringify(!!visible));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  _checkAccounts () {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user