Fixes for validation of bitcoin seed mnemonic text.
M committed
Jan 19, 2022 at 17:27 UTC
bc07f9d69b9357085d3bdea505c007e1fda3525a
2 files changed
+25
-16
lib/src/screens/restore/wallet_restore_page.dart
+23
-10
@@ -1,5 +1,6 @@
1
import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
2
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
3
+import 'package:cw_core/wallet_type.dart';
4
import 'package:flutter/cupertino.dart';
5
import 'package:flutter/material.dart';
6
import 'package:keyboard_actions/keyboard_actions.dart';
@@ -46,15 +47,19 @@ class WalletRestorePage extends BasePage {
47
}
48
},
49
onSeedChange: (String seed) {
49
- final hasHeight = walletRestoreFromSeedFormKey
50
- .currentState
51
- .blockchainHeightKey
52
- .currentState
53
- .restoreHeightController
54
- .text
55
- .isNotEmpty;
56
- if (hasHeight) {
57
- walletRestoreViewModel.isButtonEnabled = _isValidSeed();
50
+ if (walletRestoreViewModel.hasBlockchainHeightLanguageSelector) {
51
+ final hasHeight = walletRestoreFromSeedFormKey
52
+ .currentState
53
+ .blockchainHeightKey
54
+ .currentState
55
+ .restoreHeightController
56
+ .text
57
+ .isNotEmpty;
58
+ if (hasHeight) {
59
+ walletRestoreViewModel.isButtonEnabled = _isValidSeed();
60
+ }
61
+ } else {
62
+ walletRestoreViewModel.isButtonEnabled = _isValidSeed();
63
}
64
},
65
onLanguageChange: (_) {
@@ -209,8 +214,16 @@ class WalletRestorePage extends BasePage {
214
.currentState
215
.text
216
.split(' ');
217
+
218
+ if (walletRestoreViewModel.type == WalletType.monero &&
219
+ seedWords.length != WalletRestoreViewModelBase.moneroSeedMnemonicLength) {
220
+ return false;
221
+ }
222
213
- if (seedWords.length != walletRestoreViewModel.seedMnemonicLength) {
223
+ if ((walletRestoreViewModel.type == WalletType.bitcoin ||
224
+ walletRestoreViewModel.type == WalletType.litecoin) &&
225
+ (seedWords.length != WalletRestoreViewModelBase.electrumSeedMnemonicLength &&
226
+ seedWords.length != WalletRestoreViewModelBase.electrumShortSeedMnemonicLength)) {
227
return false;
228
}
229
lib/view_model/wallet_restore_view_model.dart
+2
-6
@@ -38,6 +38,7 @@ abstract class WalletRestoreViewModelBase extends WalletCreationVM with Store {
38
39
static const moneroSeedMnemonicLength = 25;
40
static const electrumSeedMnemonicLength = 24;
41
+ static const electrumShortSeedMnemonicLength = 12;
42
43
final List<WalletRestoreMode> availableModes;
44
final bool hasSeedLanguageSelector;
@@ -49,12 +50,7 @@ abstract class WalletRestoreViewModelBase extends WalletCreationVM with Store {
50
51
@observable
52
bool isButtonEnabled;
52
-
53
- int get seedMnemonicLength =>
54
- type == WalletType.monero
55
- ? moneroSeedMnemonicLength
56
- : electrumSeedMnemonicLength;
57
-
53
+
54
@override
55
WalletCredentials getCredentials(dynamic options) {
56
final password = generateWalletPassword(type);