diff options
author | Alexander Tseung <alextsg@gmail.com> | 2017-12-05 04:13:02 +0800 |
---|---|---|
committer | Alexander Tseung <alextsg@gmail.com> | 2017-12-15 06:11:23 +0800 |
commit | 706a6b0ad6d7b6e2d56252f17713e63430d84abc (patch) | |
tree | f956746763dfe4d09388d261698edde88fea933e | |
parent | d9ea2df6c2a2cabedead09f90c3c9bb7b4c37dd1 (diff) | |
download | tangerine-wallet-browser-706a6b0ad6d7b6e2d56252f17713e63430d84abc.tar tangerine-wallet-browser-706a6b0ad6d7b6e2d56252f17713e63430d84abc.tar.gz tangerine-wallet-browser-706a6b0ad6d7b6e2d56252f17713e63430d84abc.tar.bz2 tangerine-wallet-browser-706a6b0ad6d7b6e2d56252f17713e63430d84abc.tar.lz tangerine-wallet-browser-706a6b0ad6d7b6e2d56252f17713e63430d84abc.tar.xz tangerine-wallet-browser-706a6b0ad6d7b6e2d56252f17713e63430d84abc.tar.zst tangerine-wallet-browser-706a6b0ad6d7b6e2d56252f17713e63430d84abc.zip |
Add initialized checks for first time flow routes
-rw-r--r-- | mascara/src/app/first-time/confirm-seed-screen.js | 8 | ||||
-rw-r--r-- | ui/app/app.js | 16 | ||||
-rw-r--r-- | ui/app/components/pages/authenticated.js | 28 | ||||
-rw-r--r-- | ui/app/components/pages/initialized.js | 25 | ||||
-rw-r--r-- | ui/app/components/pages/unauthenticated/index.js | 38 | ||||
-rw-r--r-- | ui/app/components/pages/unlock.js (renamed from ui/app/components/pages/unauthenticated/unlock.js) | 28 |
6 files changed, 60 insertions, 83 deletions
diff --git a/mascara/src/app/first-time/confirm-seed-screen.js b/mascara/src/app/first-time/confirm-seed-screen.js index 6b730a2f8..c9382689e 100644 --- a/mascara/src/app/first-time/confirm-seed-screen.js +++ b/mascara/src/app/first-time/confirm-seed-screen.js @@ -12,10 +12,10 @@ import { DEFAULT_ROUTE } from '../../../../ui/app/routes' class ConfirmSeedScreen extends Component { static propTypes = { - isLoading: PropTypes.bool.isRequired, - address: PropTypes.string.isRequired, + isLoading: PropTypes.bool, + address: PropTypes.string, seedWords: PropTypes.string, - confirmSeedWords: PropTypes.func.isRequired, + confirmSeedWords: PropTypes.func, history: PropTypes.object, }; @@ -28,7 +28,7 @@ class ConfirmSeedScreen extends Component { const { seedWords } = props this.state = { selectedSeeds: [], - shuffledSeeds: seedWords && shuffle(seedWords.split(' ')), + shuffledSeeds: seedWords && shuffle(seedWords.split(' ')) || [], } } diff --git a/ui/app/app.js b/ui/app/app.js index 8c3cfee2f..6717b3d67 100644 --- a/ui/app/app.js +++ b/ui/app/app.js @@ -24,10 +24,10 @@ const WalletView = require('./components/wallet-view') // other views const Authenticated = require('./components/pages/authenticated') -const Unauthenticated = require('./components/pages/unauthenticated') +const Initialized = require('./components/pages/initialized') const MetamaskRoute = require('./components/pages/metamask-route') const Settings = require('./components/pages/settings') -const UnlockPage = require('./components/pages/unauthenticated/unlock') +const UnlockPage = require('./components/pages/unlock') const RestoreVaultPage = require('./components/pages/keychains/restore-vault') const RevealSeedPage = require('./components/pages/keychains/reveal-seed') const AddTokenPage = require('./components/pages/add-token') @@ -88,21 +88,21 @@ class App extends Component { component: InitializeMenuScreen, mascaraComponent: MascaraCreatePassword, }), - h(MetamaskRoute, { + h(Initialized, { path: REVEAL_SEED_ROUTE, exact, component: RevealSeedPage, mascaraComponent: MascaraSeedScreen, }), - h(MetamaskRoute, { + h(Initialized, { path: CONFIRM_SEED_ROUTE, exact, mascaraComponent: MascaraConfirmSeedScreen, }), - h(Unauthenticated, { path: UNLOCK_ROUTE, exact, component: UnlockPage }), - h(Unauthenticated, { path: SETTINGS_ROUTE, component: Settings }), - h(Unauthenticated, { path: RESTORE_VAULT_ROUTE, exact, component: RestoreVaultPage }), - h(Unauthenticated, { + h(Initialized, { path: UNLOCK_ROUTE, exact, component: UnlockPage }), + h(Initialized, { path: SETTINGS_ROUTE, component: Settings }), + h(Initialized, { path: RESTORE_VAULT_ROUTE, exact, component: RestoreVaultPage }), + h(Initialized, { path: NOTICE_ROUTE, exact, component: NoticeScreen, diff --git a/ui/app/components/pages/authenticated.js b/ui/app/components/pages/authenticated.js index 89bd238d2..1f6b0be49 100644 --- a/ui/app/components/pages/authenticated.js +++ b/ui/app/components/pages/authenticated.js @@ -5,28 +5,20 @@ const h = require('react-hyperscript') const MetamaskRoute = require('./metamask-route') const { UNLOCK_ROUTE, INITIALIZE_ROUTE } = require('../../routes') -const Authenticated = ({ component: Component, isUnlocked, isInitialized, ...props }) => { - const component = renderProps => { - switch (true) { - case isUnlocked: - return h(Component, { ...renderProps }) - case !isInitialized: - return h(Redirect, { to: { pathname: INITIALIZE_ROUTE } }) - default: - return h(Redirect, { to: { pathname: UNLOCK_ROUTE } }) - } - } +const Authenticated = props => { + const { isUnlocked, isInitialized } = props - return ( - h(MetamaskRoute, { - ...props, - component, - }) - ) + switch (true) { + case isUnlocked && isInitialized: + return h(MetamaskRoute, { ...props }) + case !isInitialized: + return h(Redirect, { to: { pathname: INITIALIZE_ROUTE } }) + default: + return h(Redirect, { to: { pathname: UNLOCK_ROUTE } }) + } } Authenticated.propTypes = { - component: PropTypes.func, isUnlocked: PropTypes.bool, isInitialized: PropTypes.bool, } diff --git a/ui/app/components/pages/initialized.js b/ui/app/components/pages/initialized.js new file mode 100644 index 000000000..3adf67b28 --- /dev/null +++ b/ui/app/components/pages/initialized.js @@ -0,0 +1,25 @@ +const { connect } = require('react-redux') +const PropTypes = require('prop-types') +const { Redirect } = require('react-router-dom') +const h = require('react-hyperscript') +const { INITIALIZE_ROUTE } = require('../../routes') +const MetamaskRoute = require('./metamask-route') + +const Initialized = props => { + return props.isInitialized + ? h(MetamaskRoute, { ...props }) + : h(Redirect, { to: { pathname: INITIALIZE_ROUTE } }) +} + +Initialized.propTypes = { + isInitialized: PropTypes.bool, +} + +const mapStateToProps = state => { + const { metamask: { isInitialized } } = state + return { + isInitialized, + } +} + +module.exports = connect(mapStateToProps)(Initialized) diff --git a/ui/app/components/pages/unauthenticated/index.js b/ui/app/components/pages/unauthenticated/index.js deleted file mode 100644 index f8b5fa172..000000000 --- a/ui/app/components/pages/unauthenticated/index.js +++ /dev/null @@ -1,38 +0,0 @@ -const { connect } = require('react-redux') -const PropTypes = require('prop-types') -const { Redirect } = require('react-router-dom') -const h = require('react-hyperscript') -const { INITIALIZE_ROUTE } = require('../../../routes') -const MetamaskRoute = require('../metamask-route') - -const Unauthenticated = ({ component: Component, isInitialized, ...props }) => { - const component = renderProps => { - return isInitialized - ? h(Component, { ...renderProps }) - : h(Redirect, { to: { pathname: INITIALIZE_ROUTE } }) - } - - return ( - h(MetamaskRoute, { - ...props, - component, - }) - ) -} - -Unauthenticated.propTypes = { - component: PropTypes.func, - isInitialized: PropTypes.bool, - isMascara: PropTypes.bool, - mascaraComponent: PropTypes.func, -} - -const mapStateToProps = state => { - const { metamask: { isInitialized, isMascara } } = state - return { - isInitialized, - isMascara, - } -} - -module.exports = connect(mapStateToProps)(Unauthenticated) diff --git a/ui/app/components/pages/unauthenticated/unlock.js b/ui/app/components/pages/unlock.js index 72f27c11d..27e093a29 100644 --- a/ui/app/components/pages/unauthenticated/unlock.js +++ b/ui/app/components/pages/unlock.js @@ -2,13 +2,13 @@ const { Component } = require('react') const PropTypes = require('prop-types') const { connect } = require('react-redux') const h = require('react-hyperscript') -const { Redirect, withRouter } = require('react-router-dom') +const { withRouter } = require('react-router-dom') const { compose } = require('recompose') -const { tryUnlockMetamask, forgotPassword } = require('../../../actions') +const { tryUnlockMetamask, forgotPassword } = require('../../actions') const getCaretCoordinates = require('textarea-caret') const EventEmitter = require('events').EventEmitter -const Mascot = require('../../mascot') -const { DEFAULT_ROUTE, RESTORE_VAULT_ROUTE } = require('../../../routes') +const Mascot = require('../mascot') +const { DEFAULT_ROUTE, RESTORE_VAULT_ROUTE } = require('../../routes') class UnlockScreen extends Component { constructor (props) { @@ -21,6 +21,14 @@ class UnlockScreen extends Component { this.animationEventEmitter = new EventEmitter() } + componentWillMount () { + const { isUnlocked, history } = this.props + + if (isUnlocked) { + history.push(DEFAULT_ROUTE) + } + } + componentDidMount () { const passwordBox = document.getElementById('password-box') @@ -69,17 +77,7 @@ class UnlockScreen extends Component { render () { const { error } = this.state - const { isUnlocked, history } = this.props - - if (isUnlocked) { - return ( - h(Redirect, { - to: { - pathname: DEFAULT_ROUTE, - }, - }) - ) - } + const { history } = this.props return ( h('.unlock-page.main-container', [ |