1 import React from 'react'
2 import { ErrorBanner, SingletonField} from 'features/shared/components'
3 import {reduxForm} from 'redux-form'
4 import style from './ConfirmMnemonic.scss'
5 import {withNamespaces} from 'react-i18next'
7 class ConfirmMnemonic extends React.Component {
10 this.state = this.getInitialState()
12 this.submitWithValidation = this.submitWithValidation.bind(this)
17 let randomThreshold = 0.3
18 let splitMnemonic = this.props.mnemonic.split(' ')
19 for (let i = 0; i < splitMnemonic.length; i++) {
20 let hideWord = Math.random()
22 word: hideWord > randomThreshold ? splitMnemonic[i] : '',
23 show: hideWord > randomThreshold,
26 if(hideWord<= randomThreshold){
27 this.props.fields.words.addField({
34 splitMnemoic: splitMnemonic,
38 submitWithValidation(data) {
39 for(let word of data.words){
40 if(word.value.trim() !== this.state.splitMnemoic[word.seedIndex]){
41 return new Promise((_, reject) => reject({
42 _error: 'please match the word'
47 return new Promise((resolve, reject) => {
48 this.props.succeeded()
49 .catch((err) => reject({type: err}))
62 const { seedWords } = this.state
66 <form onSubmit={handleSubmit(this.submitWithValidation)}>
67 <h4>{t('mnemonic.confirmTitle')}</h4>
68 <p>{t('mnemonic.confirmMessage')}</p>
69 <div className={style.seedArea}>
70 {seedWords.map((seedWord) => {
71 return ( seedWord.show ?
72 <div key={seedWord.index} className={`${style.seed} ${style.seedWord}`}>{seedWord.word}</div> :
73 (words[counter]? <SingletonField
74 className={style.seedWord}
76 fieldProps={ words[counter++].value }
82 {error&& <ErrorBanner error={error} />}
85 className={`btn btn-primary ${style.submit}`}
87 disabled={submitting}>
88 {t('mnemonic.confirm')}
96 const validate = (values, props) => {
97 const errors = {words: {}}
98 const splitMnemonic = props.mnemonic.split(' ')
102 values.words.forEach((word, index) => {
103 const seedIndex = values.words[index].seedIndex
104 numError = values.words[index].value !== splitMnemonic[seedIndex]
106 errors.words[index] = {...errors.words[index], value:' '}
112 export default withNamespaces('translations') (reduxForm({
113 form: 'MnemonicInit',