From f2c544cab8f0be03d0b2a90a18dd3043d64ab216 Mon Sep 17 00:00:00 2001 From: Jack Mallers Date: Tue, 20 Mar 2018 20:48:32 -0500 Subject: [PATCH] feature(reEnterSeedChecker): return true or false based on whether the user has re-entered the seed correctly --- app/components/Onboarding/Onboarding.js | 7 ++++++- app/components/Onboarding/ReEnterSeed.js | 6 +++--- app/containers/Root.js | 4 +--- app/reducers/onboarding.js | 22 +++------------------- 4 files changed, 13 insertions(+), 26 deletions(-) diff --git a/app/components/Onboarding/Onboarding.js b/app/components/Onboarding/Onboarding.js index 1bb9e54b..b6f8bef3 100644 --- a/app/components/Onboarding/Onboarding.js +++ b/app/components/Onboarding/Onboarding.js @@ -110,7 +110,12 @@ const Onboarding = ({ title='Re-enter your seed' description='Yeah I know, might be annoying, but just to be safe!' // eslint-disable-line back={() => changeStep(6)} - next={() => changeStep(8)} + next={() => { + // don't allow them to move on if they havent re-entered the seed correctly + if (!reEnterSeedProps.reEnterSeedChecker) { return } + + changeStep(8) + }} > diff --git a/app/components/Onboarding/ReEnterSeed.js b/app/components/Onboarding/ReEnterSeed.js index aab83657..2e8270b1 100644 --- a/app/components/Onboarding/ReEnterSeed.js +++ b/app/components/Onboarding/ReEnterSeed.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import styles from './ReEnterSeed.scss' -const ReEnterSeed = ({ seed, seedInput, updateSeedInput, reEnterSeedChecker, renderEnterSeedHtml }) => { +const ReEnterSeed = ({ seed, seedInput, updateSeedInput }) => { return (
    @@ -33,9 +33,9 @@ const ReEnterSeed = ({ seed, seedInput, updateSeedInput, reEnterSeedChecker, ren } ReEnterSeed.propTypes = { + seed: PropTypes.array.isRequired, seedInput: PropTypes.array.isRequired, - updateSeedInput: PropTypes.func.isRequired, - reEnterSeedChecker: PropTypes.array.isRequired + updateSeedInput: PropTypes.func.isRequired } export default ReEnterSeed diff --git a/app/containers/Root.js b/app/containers/Root.js index cf6530a6..b5bffa74 100644 --- a/app/containers/Root.js +++ b/app/containers/Root.js @@ -50,8 +50,7 @@ const mapStateToProps = state => ({ syncPercentage: lndSelectors.syncPercentage(state), passwordIsValid: onboardingSelectors.passwordIsValid(state), - reEnterSeedChecker: onboardingSelectors.reEnterSeedChecker(state), - renderEnterSeedHtml: onboardingSelectors.renderEnterSeedHtml(state) + reEnterSeedChecker: onboardingSelectors.reEnterSeedChecker(state) }) const mergeProps = (stateProps, dispatchProps, ownProps) => { @@ -111,7 +110,6 @@ const mergeProps = (stateProps, dispatchProps, ownProps) => { seed: stateProps.onboarding.seed, seedInput: stateProps.onboarding.seedInput, reEnterSeedChecker: stateProps.reEnterSeedChecker, - renderEnterSeedHtml: stateProps.renderEnterSeedHtml, updateSeedInput: dispatchProps.updateSeedInput } diff --git a/app/reducers/onboarding.js b/app/reducers/onboarding.js index c628bf90..e35fd16d 100644 --- a/app/reducers/onboarding.js +++ b/app/reducers/onboarding.js @@ -208,25 +208,7 @@ onboardingSelectors.passwordIsValid = createSelector( onboardingSelectors.reEnterSeedChecker = createSelector( seedSelector, seedInputSelector, - (seed, seedInput) => { - // console.log('seedInput: ', seedInput) - - // const seedInputArr = seedInput.split(' ').filter(n => true && n.length) - - // console.log('seedInputArr: ', seedInputArr) - - // return seedInputArr.map((word, index) => { return { valid: word === seed[index], word } }) - } -) - -onboardingSelectors.renderEnterSeedHtml = createSelector( - onboardingSelectors.reEnterSeedChecker, - (reEnterSeedChecker) => { - // console.log('reEnterSeedChecker: ', reEnterSeedChecker) - // if (!reEnterSeedChecker.length) { return 'gang' } - - // return reEnterSeedChecker.map( ({ valid, word }) => (`${word}`) ).join('') - } + (seed, seedInput) => seed.length === seedInput.length && seed.every((word, i) => word === seedInput[i].word) ) export { onboardingSelectors } @@ -259,6 +241,8 @@ const initialState = { }, // array of inputs for when the user re-enters their seed + // object has a word attr and a index attr: + // { word: 'foo', index: 0 } seedInput: [], // step where the user decides whether they want a newly created seed or to import an existing one signupForm: {