Skip to content
This repository was archived by the owner on Feb 23, 2021. It is now read-only.

Commit 1fd414c

Browse files
Add "SelectSeed" view.
This view is shown on a fresh start of the app to allow the user to either restore an existing wallet or initialize a new one.
1 parent c5ef05a commit 1fd414c

File tree

5 files changed

+91
-0
lines changed

5 files changed

+91
-0
lines changed

src/action/nav.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ class NavAction {
1313
this._store.route = 'Loader';
1414
}
1515

16+
goSelectSeed() {
17+
this._store.route = 'SelectSeed';
18+
}
19+
1620
goSeed() {
1721
this._store.route = 'Seed';
1822
}

src/view/main.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Container from '../component/container';
44
import { NotificationBar } from '../component/notification';
55
import Welcome from './welcome';
66
import Loader from './loader';
7+
import SelectSeed from './select-seed';
78
import Seed from './seed';
89
import SeedVerify from './seed-verify';
910
import SeedSuccess from './seed-success';
@@ -56,6 +57,9 @@ class MainView extends Component {
5657
/>
5758
{route === 'Welcome' && <Welcome />}
5859
{route === 'Loader' && <Loader />}
60+
{route === 'SelectSeed' && (
61+
<SelectSeed store={store} wallet={wallet} nav={nav} />
62+
)}
5963
{route === 'Seed' && <Seed store={store} wallet={wallet} />}
6064
{route === 'SeedVerify' && (
6165
<SeedVerify store={store} nav={nav} wallet={wallet} />

src/view/select-seed.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import React from 'react';
2+
import { StyleSheet, View } from 'react-native';
3+
import { observer } from 'mobx-react';
4+
import PropTypes from 'prop-types';
5+
import Background from '../component/background';
6+
import MainContent from '../component/main-content';
7+
import { H1Text, CopyText } from '../component/text';
8+
import { RadioButton, GlasButton } from '../component/button';
9+
import { SettingItem } from '../component/list';
10+
import { color } from '../component/style';
11+
12+
//
13+
// Select Seed View
14+
//
15+
16+
const styles = StyleSheet.create({
17+
content: {
18+
justifyContent: 'center',
19+
paddingLeft: 50,
20+
paddingRight: 50,
21+
},
22+
copyTxt: {
23+
textAlign: 'center',
24+
marginTop: 10,
25+
maxWidth: 450,
26+
},
27+
list: {
28+
marginTop: 50,
29+
width: 400,
30+
},
31+
});
32+
33+
const SelectSeedView = ({ store, wallet, nav }) => (
34+
<Background color={color.blackDark}>
35+
<MainContent style={styles.content}>
36+
<H1Text>Recovery phrase?</H1Text>
37+
<CopyText style={styles.copyTxt}>
38+
If you already have a recovery phrase, you can use that now. Otherwise,
39+
you should generate a new wallet.
40+
</CopyText>
41+
<View style={styles.list}>
42+
<SettingItem
43+
name="Generate a new wallet"
44+
onSelect={() => wallet.setRestoringWallet({ restoring: false })}
45+
>
46+
<RadioButton selected={store.wallet.restoring === false} />
47+
</SettingItem>
48+
<SettingItem
49+
name="Recover an existing wallet"
50+
onSelect={() => wallet.setRestoringWallet({ restoring: true })}
51+
>
52+
<RadioButton selected={store.wallet.restoring === true} />
53+
</SettingItem>
54+
</View>
55+
</MainContent>
56+
<GlasButton
57+
onPress={() =>
58+
store.wallet.restoring ? wallet.initRestoreWallet() : nav.goSeed()
59+
}
60+
>
61+
Next
62+
</GlasButton>
63+
</Background>
64+
);
65+
66+
SelectSeedView.propTypes = {
67+
store: PropTypes.object.isRequired,
68+
wallet: PropTypes.object.isRequired,
69+
nav: PropTypes.object.isRequired,
70+
};
71+
72+
export default observer(SelectSeedView);

stories/screen-story.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import PayBitcoinDone from '../src/view/pay-bitcoin-done';
4141
import NoRoute from '../src/view/no-route';
4242
import Loader from '../src/view/loader';
4343
import LoaderSyncing from '../src/view/loader-syncing';
44+
import SelectSeed from '../src/view/select-seed';
4445
import SeedSuccess from '../src/view/seed-success';
4546
import Seed from '../src/view/seed';
4647
import SeedVerify from '../src/view/seed-verify';
@@ -81,6 +82,9 @@ sinon.stub(channel, 'closeSelectedChannel');
8182
storiesOf('Screens', module)
8283
.add('Welcome', () => <Welcome />)
8384
.add('Loader - First Time', () => <Loader />)
85+
.add('Select Seed', () => (
86+
<SelectSeed store={store} wallet={wallet} nav={nav} />
87+
))
8488
.add('Seed', () => <Seed store={store} wallet={wallet} />)
8589
.add('Seed Verify', () => (
8690
<SeedVerify store={store} nav={nav} wallet={wallet} />

test/unit/action/nav.spec.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ describe('Action Nav Unit Tests', () => {
2525
});
2626
});
2727

28+
describe('goSelectSeed()', () => {
29+
it('should set correct route', () => {
30+
nav.goSelectSeed();
31+
expect(store.route, 'to equal', 'SelectSeed');
32+
});
33+
});
34+
2835
describe('goSeed()', () => {
2936
it('should set correct route', () => {
3037
nav.goSeed();

0 commit comments

Comments
 (0)