import React from 'react' import PropTypes from 'prop-types' import { FormattedMessage, injectIntl } from 'react-intl' import { Flex } from 'rebass' import { Bar, Form, Header, Input, Label } from 'components/UI' import messages from './messages' class SeedConfirm extends React.Component { state = { seedWordIndexes: [] } static propTypes = { wizardApi: PropTypes.object, wizardState: PropTypes.object, seed: PropTypes.array.isRequired } static defaultProps = { wizardApi: {}, wizardState: {} } componentDidMount() { this.generateSeedWordIndexes() } generateSeedWordIndexes = () => { const seedWordIndexes = [] while (seedWordIndexes.length < 3) { const r = Math.floor(Math.random() * 24) + 1 if (seedWordIndexes.indexOf(r) === -1) { seedWordIndexes.push(r) } } this.setState({ seedWordIndexes }) } setFormApi = formApi => { this.formApi = formApi } validateWord = (index, word) => { const { seed } = this.props return !word || word !== seed[index] ? 'incorrect' : null } render() { const { wizardApi, wizardState, seed, intl, ...rest } = this.props const { seedWordIndexes } = this.state const { getApi, onChange, preSubmit, onSubmit, onSubmitFailure } = wizardApi const { currentItem } = wizardState return (
{ this.setFormApi(formApi) if (getApi) { getApi(formApi) } }} onChange={onChange && (formState => onChange(formState, currentItem))} preSubmit={preSubmit} onSubmit={onSubmit} onSubmitFailure={onSubmitFailure} > {({ formState }) => { const shouldValidateInline = formState.submits > 0 return ( <>
} subtitle={ } align="left" /> {seedWordIndexes.map((wordIndex, index) => { return ( this.validateWord.call(null, wordIndex - 1, value)} placeholder={intl.formatMessage({ ...messages.word_placeholder })} required /> ) })} ) }} ) } } export default injectIntl(SeedConfirm)