Fix errors from seed restore not being shown to user properly (#2019)
cyan committed
Feb 12, 2025 at 12:41 UTC
637bc1cdc992527ec7d2238ab3fe3c7ed011e483
2 files changed
+15
-8
cw_monero/lib/api/wallet_manager.dart
+4
-4
@@ -100,7 +100,7 @@ void restoreWalletFromSeedSync(
100
required String passphrase,
101
required String seed,
102
int nettype = 0,
103
- int restoreHeight = 0}) async {
103
+ int restoreHeight = 0}) {
104
txhistory = null;
105
final newWptr = monero.WalletManager_recoveryWallet(
106
wmPtr,
@@ -404,7 +404,7 @@ void _restoreFromSeed(Map<String, dynamic> args) {
404
final seed = args['seed'] as String;
405
final restoreHeight = args['restoreHeight'] as int;
406
407
- restoreWalletFromSeedSync(
407
+ return restoreWalletFromSeedSync(
408
path: path, password: password, passphrase: passphrase, seed: seed, restoreHeight: restoreHeight);
409
}
410
@@ -472,13 +472,13 @@ Future<void> createWallet(
472
'nettype': nettype
473
});
474
475
-Future<void> restoreFromSeed(
475
+void restoreFromSeed(
476
{required String path,
477
required String password,
478
required String passphrase,
479
required String seed,
480
int nettype = 0,
481
- int restoreHeight = 0}) async =>
481
+ int restoreHeight = 0}) =>
482
_restoreFromSeed({
483
'path': path,
484
'password': password,
cw_monero/lib/monero_wallet_service.dart
+11
-4
@@ -292,14 +292,21 @@ class MoneroWalletService extends WalletService<
292
Future<MoneroWallet> restoreFromSeed(
293
MoneroRestoreWalletFromSeedCredentials credentials,
294
{bool? isTestnet}) async {
295
- // Restore from Polyseed
296
- if (Polyseed.isValidSeed(credentials.mnemonic)) {
297
- return restoreFromPolyseed(credentials);
295
+ if (credentials.mnemonic.split(" ").length == 16) {
296
+ // Restore from Polyseed
297
+ try {
298
+ if (Polyseed.isValidSeed(credentials.mnemonic)) {
299
+ return restoreFromPolyseed(credentials);
300
+ }
301
+ } catch (e) {
302
+ printV("Polyseed restore failed: $e");
303
+ rethrow;
304
+ }
305
}
306
307
try {
308
final path = await pathForWallet(name: credentials.name, type: getType());
302
- await monero_wallet_manager.restoreFromSeed(
309
+ monero_wallet_manager.restoreFromSeed(
310
path: path,
311
password: credentials.password!,
312
passphrase: credentials.passphrase,