@@ -1,4 +1,4 @@
1−import React, { useCallback, useMemo } from 'react';
1+import React, { useCallback, useState, useMemo } from 'react';
22import cn from 'classnames';
33import { Just, Nothing } from 'folktale/maybe';
44import { Grid, CheckboxInput } from 'indigo-react';
@@ -10,6 +10,7 @@ import useLoginView from 'lib/useLoginView';
1010import { MnemonicInput, HdPathInput, PassphraseInput } from 'form/Inputs';
1111import {
1212 composeValidator,
13+ buildAnyMnemonicValidator,
1314 buildMnemonicValidator,
1415 buildCheckboxValidator,
1516 buildPassphraseValidator,
@@ -25,25 +26,34 @@ export default function Mnemonic({ className, goHome }) {
2526
2627 const { setWallet, setAuthMnemonic, setWalletHdPath } = useWallet();
2728
28− const validate = useMemo(
29− () =>
30− composeValidator({
31− useAdvanced: buildCheckboxValidator(),
32− mnemonic: buildMnemonicValidator(),
33− passphrase: buildPassphraseValidator(),
34− hdpath: buildHdPathValidator(),
35− }),
36− []
37− );
29+ const [anyMnemonic, setAnyMnemonic] = useState(false);
30+
31+ const validate = useMemo(() => {
32+ const mnemonicValidator = anyMnemonic
33+ ? buildAnyMnemonicValidator()
34+ : buildMnemonicValidator();
35+ return composeValidator({
36+ useAdvanced: buildCheckboxValidator(),
37+ mnemonic: mnemonicValidator,
38+ passphrase: buildPassphraseValidator(),
39+ hdpath: buildHdPathValidator(),
40+ });
41+ }, [anyMnemonic]);
3842
3943 // when the properties change, re-derive wallet and set global state
4044 const onValues = useCallback(
4145 ({ valid, values }) => {
46+ setAnyMnemonic(values.anyMnemonic);
4247 if (valid) {
4348 setWalletHdPath(values.hdpath);
4449 setAuthMnemonic(Just(values.mnemonic));
4550 setWallet(
46− walletFromMnemonic(values.mnemonic, values.hdpath, values.passphrase)
51+ walletFromMnemonic(
52+ values.mnemonic,
53+ values.hdpath,
54+ values.passphrase,
55+ values.anyMnemonic
56+ )
4757 );
4858 } else {
4959 setAuthMnemonic(Nothing());
@@ -53,7 +63,11 @@ export default function Mnemonic({ className, goHome }) {
5363 [setAuthMnemonic, setWallet, setWalletHdPath]
5464 );
5565
56− const initialValues = { hdpath: DEFAULT_HD_PATH, useAdvanced: false };
66+ const initialValues = {
67+ hdpath: DEFAULT_HD_PATH,
68+ useAdvanced: false,
69+ anyMnemonic: false,
70+ };
5771
5872 return (
5973 <Grid className={cn('mt4', className)}>
@@ -71,6 +85,13 @@ export default function Mnemonic({ className, goHome }) {
7185 label="BIP39 Mnemonic"
7286 />
7387
88+ <Grid.Item
89+ full
90+ as={CheckboxInput}
91+ name="anyMnemonic"
92+ label="Skip mnemonic validation"
93+ />
94+
7495 <Condition when="useAdvanced" is={true}>
7596 <Grid.Item
7697 full