mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-26 06:08:40 +01:00
feat: persist whether a wallet still needs its recovery phrase backed up
This commit is contained in:
@@ -107,6 +107,7 @@ abstract class DashboardViewModelBase with Store {
|
||||
wallet = appStore.wallet! {
|
||||
showDecredInfoCard = wallet.type == WalletType.decred &&
|
||||
(sharedPreferences.getBool(PreferencesKey.showDecredInfoCard) ?? true);
|
||||
showSeedBackupReminder = wallet.walletInfo.showSeedBackupReminder;
|
||||
|
||||
name = wallet.name;
|
||||
type = wallet.type;
|
||||
@@ -207,6 +208,7 @@ abstract class DashboardViewModelBase with Store {
|
||||
loadCardDesigns();
|
||||
showDecredInfoCard = wallet?.type == WalletType.decred &&
|
||||
sharedPreferences.getBool(PreferencesKey.showDecredInfoCard) != false;
|
||||
loadSeedBackupReminder();
|
||||
|
||||
tradeMonitor.stopTradeMonitoring();
|
||||
tradeMonitor.monitorActiveTrades(wallet!.id);
|
||||
@@ -892,6 +894,22 @@ abstract class DashboardViewModelBase with Store {
|
||||
@observable
|
||||
late bool showDecredInfoCard;
|
||||
|
||||
@observable
|
||||
late bool showSeedBackupReminder;
|
||||
|
||||
@computed
|
||||
bool get hasBalance => wallet.balance.values.any(
|
||||
(balance) =>
|
||||
!balance.available.isZero ||
|
||||
!balance.unavailable.isZero ||
|
||||
!(balance.secondAvailable?.isZero ?? true) ||
|
||||
!(balance.secondUnavailable?.isZero ?? true) ||
|
||||
!(balance.frozen?.isZero ?? true),
|
||||
);
|
||||
|
||||
@computed
|
||||
bool get shouldShowSeedBackupReminder => showSeedBackupReminder && hasBalance;
|
||||
|
||||
@computed
|
||||
bool get showPayjoinCard =>
|
||||
wallet.type == WalletType.bitcoin &&
|
||||
@@ -1121,6 +1139,17 @@ abstract class DashboardViewModelBase with Store {
|
||||
sharedPreferences.setBool(PreferencesKey.showDecredInfoCard, false);
|
||||
}
|
||||
|
||||
@action
|
||||
void loadSeedBackupReminder() {
|
||||
showSeedBackupReminder = wallet.walletInfo.showSeedBackupReminder;
|
||||
}
|
||||
|
||||
@action
|
||||
Future<void> dismissSeedBackupReminder() async {
|
||||
showSeedBackupReminder = false;
|
||||
await wallet.walletInfo.updateShowSeedBackupReminder(false);
|
||||
}
|
||||
|
||||
@action
|
||||
void dismissPayjoin() {
|
||||
settingsStore.showPayjoinCard = false;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import 'dart:async';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:cake_wallet/utils/feature_flag.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
import 'package:cw_core/wallet_info.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:cw_core/wallet_type.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
@@ -16,11 +18,14 @@ abstract class WalletSeedViewModelBase with Store {
|
||||
: name = wallet.name,
|
||||
seed = wallet.seed!,
|
||||
walletType = wallet.type,
|
||||
_walletInfo = wallet.walletInfo,
|
||||
currentOptions = ObservableList<String>(),
|
||||
verificationIndices = ObservableList<int>() {
|
||||
setupSeedVerification();
|
||||
}
|
||||
|
||||
final WalletInfo _walletInfo;
|
||||
|
||||
@observable
|
||||
String name;
|
||||
|
||||
@@ -133,6 +138,7 @@ abstract class WalletSeedViewModelBase with Store {
|
||||
} else {
|
||||
// All verification steps completed
|
||||
isVerificationComplete = true;
|
||||
unawaited(markSeedVerified());
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -141,4 +147,12 @@ abstract class WalletSeedViewModelBase with Store {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> markSeedVerified() async {
|
||||
if (!_walletInfo.showSeedBackupReminder) {
|
||||
return;
|
||||
}
|
||||
|
||||
await _walletInfo.updateShowSeedBackupReminder(false);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user