mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-28 12:29:51 +00:00
open wallet even when cache file backup is corrupted (#1720)
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
parent
604432a66c
commit
72184f5837
1 changed files with 16 additions and 6 deletions
|
@ -75,6 +75,12 @@ class MoneroRestoreWalletFromKeysCredentials extends WalletCredentials {
|
||||||
final String spendKey;
|
final String spendKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum OpenWalletTry {
|
||||||
|
initial,
|
||||||
|
cacheRestored,
|
||||||
|
cacheRemoved,
|
||||||
|
}
|
||||||
|
|
||||||
class MoneroWalletService extends WalletService<
|
class MoneroWalletService extends WalletService<
|
||||||
MoneroNewWalletCredentials,
|
MoneroNewWalletCredentials,
|
||||||
MoneroRestoreWalletFromSeedCredentials,
|
MoneroRestoreWalletFromSeedCredentials,
|
||||||
|
@ -139,7 +145,7 @@ class MoneroWalletService extends WalletService<
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<MoneroWallet> openWallet(String name, String password, {bool? retryOnFailure}) async {
|
Future<MoneroWallet> openWallet(String name, String password, {OpenWalletTry openWalletTry = OpenWalletTry.initial}) async {
|
||||||
try {
|
try {
|
||||||
final path = await pathForWallet(name: name, type: getType());
|
final path = await pathForWallet(name: name, type: getType());
|
||||||
|
|
||||||
|
@ -172,12 +178,16 @@ class MoneroWalletService extends WalletService<
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// TODO: Implement Exception for wallet list service.
|
// TODO: Implement Exception for wallet list service.
|
||||||
|
|
||||||
if (retryOnFailure == false) {
|
switch (openWalletTry) {
|
||||||
rethrow;
|
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue