diff --git a/js/src/modals/FirstRun/firstRun.js b/js/src/modals/FirstRun/firstRun.js
index a273d6e63..03bc8d770 100644
--- a/js/src/modals/FirstRun/firstRun.js
+++ b/js/src/modals/FirstRun/firstRun.js
@@ -15,6 +15,7 @@
// along with Parity. If not, see .
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 = [
}
label='Create'
+ key='create'
disabled={ !canCreate }
- onClick={ this.onCreate } />
- );
+ onClick={ this.onCreate }
+ />
+ ];
+ if (hasAccounts) {
+ buttons.unshift(
+ }
+ 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);
diff --git a/js/src/views/Application/store.js b/js/src/views/Application/store.js
index bb42721cd..b9f960eff 100644
--- a/js/src/views/Application/store.js
+++ b/js/src/views/Application/store.js
@@ -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 () {