aboutsummaryrefslogtreecommitdiffstats
path: root/mascara/src/app/first-time/index.js
diff options
context:
space:
mode:
authorLe Quoc Viet <vietlq85@gmail.com>2018-03-15 16:11:42 +0800
committerGitHub <noreply@github.com>2018-03-15 16:11:42 +0800
commit04079455e36e48433cf8055c8f1f79e1e7e18298 (patch)
treed7de2a6603b67b56abacf09bee4d2bbbfe886b8f /mascara/src/app/first-time/index.js
parent5bdee96e73f65a0b369277e9c56b0afe5159e65b (diff)
parente2efc91aee64072c408ab509219dcbfb389c7609 (diff)
downloadtangerine-wallet-browser-04079455e36e48433cf8055c8f1f79e1e7e18298.tar.gz
tangerine-wallet-browser-04079455e36e48433cf8055c8f1f79e1e7e18298.tar.zst
tangerine-wallet-browser-04079455e36e48433cf8055c8f1f79e1e7e18298.zip
Merge pull request #1 from MetaMask/master
Merge from the source
Diffstat (limited to 'mascara/src/app/first-time/index.js')
-rw-r--r--mascara/src/app/first-time/index.js173
1 files changed, 173 insertions, 0 deletions
diff --git a/mascara/src/app/first-time/index.js b/mascara/src/app/first-time/index.js
new file mode 100644
index 000000000..da2f6bab9
--- /dev/null
+++ b/mascara/src/app/first-time/index.js
@@ -0,0 +1,173 @@
+import React, { Component } from 'react'
+import PropTypes from 'prop-types'
+import {connect} from 'react-redux'
+import CreatePasswordScreen from './create-password-screen'
+import UniqueImageScreen from './unique-image-screen'
+import NoticeScreen from './notice-screen'
+import BackupPhraseScreen from './backup-phrase-screen'
+import ImportAccountScreen from './import-account-screen'
+import ImportSeedPhraseScreen from './import-seed-phrase-screen'
+import {
+ onboardingBuyEthView,
+ unMarkPasswordForgotten,
+} from '../../../../ui/app/actions'
+
+class FirstTimeFlow extends Component {
+
+ static propTypes = {
+ isInitialized: PropTypes.bool,
+ seedWords: PropTypes.string,
+ address: PropTypes.string,
+ noActiveNotices: PropTypes.bool,
+ goToBuyEtherView: PropTypes.func.isRequired,
+ };
+
+ static defaultProps = {
+ isInitialized: false,
+ seedWords: '',
+ noActiveNotices: false,
+ };
+
+ static SCREEN_TYPE = {
+ CREATE_PASSWORD: 'create_password',
+ IMPORT_ACCOUNT: 'import_account',
+ IMPORT_SEED_PHRASE: 'import_seed_phrase',
+ UNIQUE_IMAGE: 'unique_image',
+ NOTICE: 'notice',
+ BACK_UP_PHRASE: 'back_up_phrase',
+ CONFIRM_BACK_UP_PHRASE: 'confirm_back_up_phrase',
+ LOADING: 'loading',
+ };
+
+ constructor (props) {
+ super(props)
+ this.state = {
+ screenType: this.getScreenType(),
+ }
+ }
+
+ setScreenType (screenType) {
+ this.setState({ screenType })
+ }
+
+ getScreenType () {
+ const {
+ isInitialized,
+ seedWords,
+ noActiveNotices,
+ forgottenPassword,
+ } = this.props
+ const {SCREEN_TYPE} = FirstTimeFlow
+
+ // return SCREEN_TYPE.NOTICE
+
+ if (forgottenPassword) {
+ return SCREEN_TYPE.IMPORT_SEED_PHRASE
+ }
+ if (!isInitialized) {
+ return SCREEN_TYPE.CREATE_PASSWORD
+ }
+
+ if (!noActiveNotices) {
+ return SCREEN_TYPE.NOTICE
+ }
+
+ if (seedWords) {
+ return SCREEN_TYPE.BACK_UP_PHRASE
+ }
+ };
+
+ renderScreen () {
+ const {SCREEN_TYPE} = FirstTimeFlow
+ const {
+ goToBuyEtherView,
+ address,
+ restoreCreatePasswordScreen,
+ forgottenPassword,
+ leaveImportSeedScreenState,
+ } = this.props
+
+ switch (this.state.screenType) {
+ case SCREEN_TYPE.CREATE_PASSWORD:
+ return (
+ <CreatePasswordScreen
+ next={() => this.setScreenType(SCREEN_TYPE.UNIQUE_IMAGE)}
+ goToImportAccount={() => this.setScreenType(SCREEN_TYPE.IMPORT_ACCOUNT)}
+ goToImportWithSeedPhrase={() => this.setScreenType(SCREEN_TYPE.IMPORT_SEED_PHRASE)}
+ />
+ )
+ case SCREEN_TYPE.IMPORT_ACCOUNT:
+ return (
+ <ImportAccountScreen
+ back={() => this.setScreenType(SCREEN_TYPE.CREATE_PASSWORD)}
+ next={() => this.setScreenType(SCREEN_TYPE.NOTICE)}
+ />
+ )
+ case SCREEN_TYPE.IMPORT_SEED_PHRASE:
+ return (
+ <ImportSeedPhraseScreen
+ back={() => {
+ leaveImportSeedScreenState()
+ this.setScreenType(SCREEN_TYPE.CREATE_PASSWORD)
+ }}
+ next={() => {
+ const newScreenType = forgottenPassword ? null : SCREEN_TYPE.NOTICE
+ this.setScreenType(newScreenType)
+ }}
+ />
+ )
+ case SCREEN_TYPE.UNIQUE_IMAGE:
+ return (
+ <UniqueImageScreen
+ next={() => this.setScreenType(SCREEN_TYPE.NOTICE)}
+ />
+ )
+ case SCREEN_TYPE.NOTICE:
+ return (
+ <NoticeScreen
+ next={() => this.setScreenType(SCREEN_TYPE.BACK_UP_PHRASE)}
+ />
+ )
+ case SCREEN_TYPE.BACK_UP_PHRASE:
+ return (
+ <BackupPhraseScreen
+ next={() => goToBuyEtherView(address)}
+ />
+ )
+ default:
+ return <noscript />
+ }
+ }
+
+ render () {
+ return (
+ <div className="first-time-flow">
+ {this.renderScreen()}
+ </div>
+ )
+ }
+
+}
+
+export default connect(
+ ({
+ metamask: {
+ isInitialized,
+ seedWords,
+ noActiveNotices,
+ selectedAddress,
+ forgottenPassword,
+ }
+ }) => ({
+ isInitialized,
+ seedWords,
+ noActiveNotices,
+ address: selectedAddress,
+ forgottenPassword,
+ }),
+ dispatch => ({
+ leaveImportSeedScreenState: () => dispatch(unMarkPasswordForgotten()),
+ goToBuyEtherView: address => dispatch(onboardingBuyEthView(address)),
+ })
+)(FirstTimeFlow)
+