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,