Browse Source

distinguish between 3 error screens onboarding

master
Anastasia Poupeney 7 years ago
parent
commit
7c20b6c879
  1. 96
      src/components/Onboarding/steps/GenuineCheck/GenuineCheckErrorPage.js
  2. 18
      src/components/Onboarding/steps/GenuineCheck/index.js
  3. 20
      static/i18n/en/onboarding.yml

96
src/components/Onboarding/steps/GenuineCheck/GenuineCheckErrorPage.js

@ -1,6 +1,6 @@
// @flow // @flow
import React, { Fragment } from 'react' import React, { PureComponent, Fragment } from 'react'
import { i } from 'helpers/staticPath' import { i } from 'helpers/staticPath'
import type { T } from 'types/common' import type { T } from 'types/common'
@ -12,54 +12,80 @@ import TrackPage from 'analytics/TrackPage'
import { Title, Description, OnboardingFooterWrapper } from '../../helperComponents' import { Title, Description, OnboardingFooterWrapper } from '../../helperComponents'
export function GenuineCheckErrorPage({ type Props = {
redoGenuineCheck, t: T,
contactSupport,
onboarding,
t,
}: {
redoGenuineCheck: () => void, redoGenuineCheck: () => void,
contactSupport: () => void, contactSupport: () => void,
onboarding: OnboardingState, onboarding: OnboardingState,
t: T, }
}) {
return ( class GenuineCheckErrorPage extends PureComponent<Props, *> {
<Box sticky pt={50}> trackErrorPage = (page: string) => {
const { onboarding } = this.props
return (
<TrackPage <TrackPage
category="Onboarding" category="Onboarding"
name="Genuine Check Error Page" name={`Genuine Check Error Page - ${page}`}
flowType={onboarding.flowType} flowType={onboarding.flowType}
deviceType={onboarding.isLedgerNano ? 'Nano S' : 'Blue'} deviceType={onboarding.isLedgerNano ? 'Nano S' : 'Blue'}
/> />
<Box grow alignItems="center" justifyContent="center"> )
{onboarding.isLedgerNano ? ( }
renderErrorPage = () => {
const { onboarding, t } = this.props
return (
<Fragment>
{onboarding.genuine.isGenuineFail ? (
<Fragment> <Fragment>
<Title>{t('onboarding:genuineCheck.errorPage.ledgerNano.title')}</Title> {this.trackErrorPage('Not Genuine')}
<Description>{t('onboarding:genuineCheck.errorPage.ledgerNano.desc')}</Description> <Title>{t('onboarding:genuineCheck.errorPage.title.isGenuineFail')}</Title>
<Box mt={5} mr={7}> <Description>{t('onboarding:genuineCheck.errorPage.desc.isGenuineFail')}</Description>
<img alt="" src={i('nano-error-onb.svg')} /> </Fragment>
</Box> ) : !onboarding.genuine.pinStepPass ? (
<Fragment>
{this.trackErrorPage('PIN Step')}
<Title>{t('onboarding:genuineCheck.errorPage.title.pinFailed')}</Title>
<Description>{t('onboarding:genuineCheck.errorPage.desc.pinFailed')}</Description>
</Fragment> </Fragment>
) : ( ) : (
<Fragment> <Fragment>
<Title>{t('onboarding:genuineCheck.errorPage.ledgerBlue.title')}</Title> {this.trackErrorPage('Recovery Phase Step')}
<Description pb={5}> <Title>{t('onboarding:genuineCheck.errorPage.title.recoveryPhraseFailed')}</Title>
{t('onboarding:genuineCheck.errorPage.ledgerBlue.desc')} <Description>
{t('onboarding:genuineCheck.errorPage.desc.recoveryPhraseFailed')}
</Description> </Description>
<Box alignItems="center">
<img alt="" src={i('blue-error-onb.svg')} />
</Box>
</Fragment> </Fragment>
)} )}
<Box mt={5} mr={7}>
{onboarding.isLedgerNano ? (
<img alt="" src={i('nano-error-onb.svg')} />
) : (
<img alt="" src={i('blue-error-onb.svg')} />
)}
</Box>
</Fragment>
)
}
render() {
const { redoGenuineCheck, contactSupport, t } = this.props
return (
<Box sticky pt={50}>
<Box grow alignItems="center" justifyContent="center">
{this.renderErrorPage()}
</Box>
<OnboardingFooterWrapper>
<Button padded outlineGrey onClick={() => redoGenuineCheck()}>
{t('app:common.back')}
</Button>
<Button padded danger onClick={() => contactSupport()} ml="auto">
{t('onboarding:genuineCheck.buttons.contactSupport')}
</Button>
</OnboardingFooterWrapper>
</Box> </Box>
<OnboardingFooterWrapper> )
<Button padded outlineGrey onClick={() => redoGenuineCheck()}> }
{t('app:common.back')}
</Button>
<Button padded danger onClick={() => contactSupport()} ml="auto">
{t('onboarding:genuineCheck.buttons.contactSupport')}
</Button>
</OnboardingFooterWrapper>
</Box>
)
} }
export default GenuineCheckErrorPage

18
src/components/Onboarding/steps/GenuineCheck/index.js

@ -26,7 +26,7 @@ import {
GenuineCheckCardWrapper, GenuineCheckCardWrapper,
} from '../../helperComponents' } from '../../helperComponents'
import { GenuineCheckErrorPage } from './GenuineCheckErrorPage' import GenuineCheckErrorPage from './GenuineCheckErrorPage'
import { import {
GenuineCheckUnavailableFooter, GenuineCheckUnavailableFooter,
GenuineCheckUnavailableMessage, GenuineCheckUnavailableMessage,
@ -81,14 +81,8 @@ class GenuineCheck extends PureComponent<StepProps, State> {
} }
if (!item.pass) { if (!item.pass) {
this.setState(INITIAL_STATE)
this.props.updateGenuineCheck({ this.props.updateGenuineCheck({
displayErrorScreen: true, displayErrorScreen: true,
pinStepPass: false,
recoveryStepPass: false,
isGenuineFail: false,
isDeviceGenuine: false,
genuineCheckUnavailable: null,
}) })
} }
} }
@ -137,7 +131,15 @@ class GenuineCheck extends PureComponent<StepProps, State> {
} }
redoGenuineCheck = () => { redoGenuineCheck = () => {
this.props.updateGenuineCheck({ displayErrorScreen: false }) this.setState(INITIAL_STATE)
this.props.updateGenuineCheck({
displayErrorScreen: false,
pinStepPass: false,
recoveryStepPass: false,
isGenuineFail: false,
isDeviceGenuine: false,
genuineCheckUnavailable: null,
})
} }
contactSupport = () => { contactSupport = () => {

20
static/i18n/en/onboarding.yml

@ -107,18 +107,14 @@ genuineCheck:
genuineCheck: Check now genuineCheck: Check now
contactSupport: Contact us contactSupport: Contact us
errorPage: errorPage:
ledgerNano: title:
title: Oops, something went wrong... pinFailed: "Didn't choose your own PIN code?"
#PIN: Didn't choose your own PIN code? recoveryPhraseFailed: "Didn't save your own recovery phrase?"
#recoveryPhrase: Didn't save your own recovery phrase? isGenuineFail: Oops, your device does not seem genuine...
#Genuine: Oops, your device does not seem genuine... desc:
desc: Go back to the security checklist or request Ledger Support assistance pinFailed: Never use a device supplied with a PIN code. If your device was provided with a PIN code, please contact us.
#PIN: Never use a device supplied with a PIN code. If your device was provided with a PIN code, please contact us. recoveryPhraseFailed: Only save a recovery phrase that is displayed on your device. Please contact us in case of doubt. Otherwise, go back to the security checklist.
#recoveryPhrase: Only save a recovery phrase that is displayed on your device. Please contact us in case of doubt. Otherwise, go back to the security checklist. isGenuineFail: Your device did not pass the authenticity test required to connect to Ledger’s secure server. Please contact Ledger Support to get assistance.
#Genuine: Your device did not pass the authenticity test required to connect to Ledger’s secure server. Please contact Ledger Support to get assistance.
ledgerBlue:
title: Oops, something went wrong...
desc: Go back to the security checklist or request Ledger Support assistance
setPassword: setPassword:
title: Password lock (optional) title: Password lock (optional)
desc: Set a password to prevent unauthorized access to Ledger Live data stored on your computer, including account names, balances, transactions and public addresses. desc: Set a password to prevent unauthorized access to Ledger Live data stored on your computer, including account names, balances, transactions and public addresses.

Loading…
Cancel
Save