Skip to content

Commit 623c7ab

Browse files
committed
fix: show loading while reading the seed
1 parent 31f939f commit 623c7ab

File tree

8 files changed

+45
-17
lines changed

8 files changed

+45
-17
lines changed

e2e/backup.e2e.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ d('Backup', () => {
111111
await element(by.id('TapToReveal')).tap();
112112

113113
// get the seed from SeedContaider
114+
await waitFor(element(by.id('SeedContaider')))
115+
.toBeVisible()
116+
.withTimeout(30000);
114117
const { label: seed } = await element(
115118
by.id('SeedContaider'),
116119
).getAttributes();

e2e/lightning.e2e.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,9 @@ d('Lightning', () => {
319319
await element(by.id('TapToReveal')).tap();
320320

321321
// get the seed from SeedContaider
322+
await waitFor(element(by.id('SeedContaider')))
323+
.toBeVisible()
324+
.withTimeout(30000);
322325
const { label: seed } = await element(
323326
by.id('SeedContaider'),
324327
).getAttributes();

e2e/onboarding.e2e.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ d('Onboarding', () => {
6060
await element(by.id('BackupWallet')).tap();
6161
await element(by.id('TapToReveal')).tap();
6262
// get the seed from SeedContaider
63+
await waitFor(element(by.id('SeedContaider')))
64+
.toBeVisible()
65+
.withTimeout(30000);
6366
const { label: seed } = await element(
6467
by.id('SeedContaider'),
6568
).getAttributes();

e2e/settings.e2e.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,9 @@ d('Settings', () => {
284284
await element(by.id('TapToReveal')).tap();
285285

286286
// get the seed from SeedContaider
287+
await waitFor(element(by.id('SeedContaider')))
288+
.toBeVisible()
289+
.withTimeout(30000);
287290
const { label: seed } = await element(
288291
by.id('SeedContaider'),
289292
).getAttributes();

e2e/slashtags.e2e.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,9 @@ d('Profile and Contacts', () => {
237237
await element(by.id('BackupSettings')).tap();
238238
await element(by.id('BackupWallet')).tap();
239239
await element(by.id('TapToReveal')).tap();
240+
await waitFor(element(by.id('SeedContaider')))
241+
.toBeVisible()
242+
.withTimeout(30000);
240243
const { label: seed } = await element(
241244
by.id('SeedContaider'),
242245
).getAttributes();

src/screens/Recovery/Mnemonic.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const Mnemonic = ({
2525
const bip39Passphrase = await getBip39Passphrase();
2626

2727
if (mnemoncicResult.isErr()) {
28-
console.log(mnemoncicResult.error.message);
28+
console.log('getMnemonicPhrase error:', mnemoncicResult.error.message);
2929
showToast({
3030
type: 'warning',
3131
title: t('mnemonic_error'),
@@ -54,6 +54,7 @@ const Mnemonic = ({
5454

5555
<ThemedView style={styles.seed} color="white10">
5656
<View style={styles.col}>
57+
{seed.length === 0 && <BodyM>{t('mnemonic_loading')}</BodyM>}
5758
{seed.slice(0, seed.length / 2).map((w, i) => (
5859
<Word key={i} word={w} number={i + 1} />
5960
))}

src/screens/Settings/Backup/ShowMnemonic.tsx

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { memo, ReactElement, useMemo, useState, useEffect } from 'react';
1+
import React, { memo, ReactElement, useState, useEffect } from 'react';
22
import { StyleSheet, View, Platform, TouchableOpacity } from 'react-native';
33
import { Trans, useTranslation } from 'react-i18next';
44
import Clipboard from '@react-native-clipboard/clipboard';
@@ -46,7 +46,7 @@ const ShowMnemonic = ({
4646
useEffect(() => {
4747
getMnemonicPhrase().then((res) => {
4848
if (res.isErr()) {
49-
console.log(res.error.message);
49+
console.log('getMnemonicPhrase error:', res.error.message);
5050
showToast({
5151
type: 'warning',
5252
title: t('mnemonic_error'),
@@ -59,10 +59,21 @@ const ShowMnemonic = ({
5959
getBip39Passphrase().then(setPassphrase);
6060
}, [t]);
6161

62-
const seedToShow = useMemo(
63-
() => (Platform.OS === 'android' && !show ? dummySeed : seed),
64-
[seed, show],
65-
);
62+
const revealMnemonic = (): void => {
63+
setShow(true);
64+
};
65+
66+
const copyMnemonic = (): void => {
67+
Clipboard.setString(seed.join(' '));
68+
vibrate();
69+
};
70+
71+
const ready = show && seed.length !== 0;
72+
73+
const seedToShow =
74+
seed.length === 0 || (Platform.OS === 'android' && !show)
75+
? dummySeed
76+
: seed;
6677

6778
return (
6879
<View style={styles.container}>
@@ -72,23 +83,20 @@ const ShowMnemonic = ({
7283
/>
7384

7485
<BodyM color="secondary">
75-
{show
86+
{ready
7687
? t('mnemonic_write', { length: seedToShow.length })
7788
: t('mnemonic_use')}
7889
</BodyM>
7990

8091
<View
8192
style={styles.seedContainer}
82-
testID="SeedContaider"
93+
testID={ready ? 'SeedContaider' : undefined}
8394
accessibilityLabel={seed.join(' ')}>
8495
<ThemedView color="white10" style={styles.seed}>
8596
<TouchableOpacity
8697
style={styles.seed2}
8798
activeOpacity={1}
88-
onLongPress={(): void => {
89-
Clipboard.setString(seed.join(' '));
90-
vibrate();
91-
}}>
99+
onLongPress={copyMnemonic}>
92100
<View style={styles.col}>
93101
{seedToShow.slice(0, seedToShow.length / 2).map((w, i) => (
94102
<Word key={i} word={w} number={i + 1} />
@@ -102,14 +110,15 @@ const ShowMnemonic = ({
102110
</TouchableOpacity>
103111
</ThemedView>
104112

105-
{!show && (
113+
{!ready && (
106114
<BlurView style={styles.blur}>
107115
<Button
108116
size="large"
109-
text={t('mnemonic_reveal')}
117+
text={show ? t('mnemonic_loading') : t('mnemonic_reveal')}
110118
color="black50"
111-
onPress={(): void => setShow(true)}
119+
onPress={revealMnemonic}
112120
testID="TapToReveal"
121+
disabled={show}
113122
/>
114123
</BlurView>
115124
)}
@@ -127,7 +136,7 @@ const ShowMnemonic = ({
127136
<Button
128137
size="large"
129138
text={t('continue')}
130-
disabled={!show}
139+
disabled={!ready}
131140
testID="ContinueShowMnemonic"
132141
onPress={(): void => {
133142
navigation.navigate(

src/utils/i18n/locales/en/security.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@
5656
"mnemonic_reveal": {
5757
"string": "Tap To Reveal"
5858
},
59+
"mnemonic_loading": {
60+
"string": "Loading..."
61+
},
5962
"mnemonic_never_share": {
6063
"string": "<accent>Never share</accent> your recovery phrase with anyone as this may result in the loss of funds."
6164
},

0 commit comments

Comments
 (0)