open wallet even when cache file backup is corrupted ()

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
cyan 2025-03-27 03:47:45 +01:00 committed by GitHub
parent 604432a66c
commit 72184f5837
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -75,6 +75,12 @@ class MoneroRestoreWalletFromKeysCredentials extends WalletCredentials {
final String spendKey;
}
enum OpenWalletTry {
initial,
cacheRestored,
cacheRemoved,
}
class MoneroWalletService extends WalletService<
MoneroNewWalletCredentials,
MoneroRestoreWalletFromSeedCredentials,
@ -139,7 +145,7 @@ class MoneroWalletService extends WalletService<
}
@override
Future<MoneroWallet> openWallet(String name, String password, {bool? retryOnFailure}) async {
Future<MoneroWallet> openWallet(String name, String password, {OpenWalletTry openWalletTry = OpenWalletTry.initial}) async {
try {
final path = await pathForWallet(name: name, type: getType());
@ -172,12 +178,16 @@ class MoneroWalletService extends WalletService<
} catch (e) {
// TODO: Implement Exception for wallet list service.
if (retryOnFailure == false) {
rethrow;
switch (openWalletTry) {
case OpenWalletTry.initial:
await restoreOrResetWalletFiles(name);
return await openWallet(name, password, openWalletTry: OpenWalletTry.cacheRestored);
case OpenWalletTry.cacheRestored:
await removeCache(name);
return await openWallet(name, password, openWalletTry: OpenWalletTry.cacheRemoved);
case OpenWalletTry.cacheRemoved:
rethrow;
}
await restoreOrResetWalletFiles(name);
return await openWallet(name, password, retryOnFailure: false);
}
}