This repository has been archived by the owner on Jun 7, 2023. It is now read-only.
/
GenerateSeed.js
93 lines (83 loc) · 2.71 KB
/
GenerateSeed.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { translate } from 'react-i18next';
import { addAndSelectSeed, clearSeeds } from 'actions/seeds';
import { showError } from 'actions/notifications';
import { getSelectedSeed } from 'selectors/seeds';
import { isValidSeed } from 'libs/util';
import { createRandomSeed } from 'libs/seedUtil';
import Template, { Main, Footer } from './Template';
import Button from '../UI/Button';
import SeedGenerator from '../UI/SeedGenerator';
class GenerateSeed extends React.PureComponent {
static propTypes = {
t: PropTypes.func.isRequired,
addAndSelectSeed: PropTypes.func.isRequired,
history: PropTypes.shape({
push: PropTypes.func.isRequired,
}).isRequired,
seed: PropTypes.string,
showError: PropTypes.func.isRequired,
};
state = {
seed: this.props.seed,
};
generateNewSeed = () => {
const newSeed = createRandomSeed();
this.setState(() => ({
seed: newSeed,
}));
};
onUpdatedSeed = seed => {
this.setState(() => ({
seed,
}));
};
onRequestNext = () => {
const { addAndSelectSeed, history, showError } = this.props;
const { seed } = this.state;
if (!seed || !isValidSeed(seed)) {
return showError({
title: 'unknownError_title',
text: 'unknownError_text',
translate: true,
});
}
clearSeeds(seed);
addAndSelectSeed(seed);
history.push('/seed/save');
};
render() {
const { t } = this.props;
const { seed } = this.state;
return (
<Template headline={t('title')}>
<Main>
<Button type="button" onClick={this.generateNewSeed} variant="cta">
{t('button1')}
</Button>
<SeedGenerator seed={seed} onUpdatedSeed={this.onUpdatedSeed} />
<p>{t('text1')}</p>
</Main>
<Footer>
<Button to="/wallet-setup" variant="warning">
{t('button3')}
</Button>
<Button onClick={this.onRequestNext} variant="success">
{t('button2')}
</Button>
</Footer>
</Template>
);
}
}
const mapStateToProps = state => ({
seed: getSelectedSeed(state).seed,
});
const mapDispatchToProps = {
addAndSelectSeed,
clearSeeds,
showError,
};
export default translate('newSeedSetup')(connect(mapStateToProps, mapDispatchToProps)(GenerateSeed));