diff --git a/lib/entities/preferences_key.dart b/lib/entities/preferences_key.dart index 63c94bdb7..d35c010f5 100644 --- a/lib/entities/preferences_key.dart +++ b/lib/entities/preferences_key.dart @@ -63,7 +63,8 @@ class PreferencesKey { static const zanoTransactionPriority = 'current_fee_priority_zano'; static const wowneroTransactionPriority = 'current_fee_priority_wownero'; static const decredTransactionPriority = 'current_fee_priority_decred'; - static const zcashTransactionPriority = 'current_fee_priority_decred'; + static const zcashTransactionPriority = 'current_fee_priority_zcash'; + static const dogecoinTransactionPriority = 'current_fee_priority_dogecoin'; static const customBitcoinFeeRate = 'custom_electrum_fee_rate'; static const silentPaymentsCardDisplay = 'silentPaymentsCardDisplay'; static const mwebCardDisplay = 'mwebCardDisplay'; diff --git a/lib/new-ui/pages/send_page.dart b/lib/new-ui/pages/send_page.dart index 0b0c51d03..0a6ea20d6 100644 --- a/lib/new-ui/pages/send_page.dart +++ b/lib/new-ui/pages/send_page.dart @@ -215,12 +215,7 @@ class _NewSendPageState extends State { final _addressFocusNode = FocusNode(); final _disposers = []; StreamSubscription? _deepLinkSubscription; - late final AnyPayFlow _anyPayFlow = AnyPayFlow( - anyPayService: widget.anyPayService, - sendViewModel: widget.sendViewModel, - authService: widget.authService, - walletSwitcherViewModel: widget.walletSwitcherViewModel, - ); + late final AnyPayFlow _anyPayFlow; ContactRecord? newContactAddress; bool _justHandledPasteButton = false; @@ -228,6 +223,12 @@ class _NewSendPageState extends State { @override void initState() { super.initState(); + _anyPayFlow = AnyPayFlow( + anyPayService: widget.anyPayService, + sendViewModel: widget.sendViewModel, + authService: widget.authService, + walletSwitcherViewModel: widget.walletSwitcherViewModel, + ); _addInputControllers(); _disposers.add( diff --git a/lib/reactions/wallet_utils.dart b/lib/reactions/wallet_utils.dart index dc2ed1af4..2e94fa9b5 100644 --- a/lib/reactions/wallet_utils.dart +++ b/lib/reactions/wallet_utils.dart @@ -32,6 +32,7 @@ bool isElectrumWallet(WalletType walletType) { case WalletType.bitcoin: case WalletType.litecoin: case WalletType.bitcoinCash: + case WalletType.dogecoin: return true; default: return false; diff --git a/lib/store/settings_store.dart b/lib/store/settings_store.dart index f699640e7..f845cf86a 100644 --- a/lib/store/settings_store.dart +++ b/lib/store/settings_store.dart @@ -5,6 +5,7 @@ import 'dart:io'; import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/core/utilities.dart'; import 'package:cake_wallet/decred/decred.dart'; +import 'package:cake_wallet/dogecoin/dogecoin.dart'; import 'package:cake_wallet/bitcoin_cash/bitcoin_cash.dart'; import 'package:cake_wallet/core/secure_storage.dart'; import 'package:cake_wallet/di.dart'; @@ -168,6 +169,7 @@ abstract class SettingsStoreBase with Store { TransactionPriority? initialZanoTransactionPriority, TransactionPriority? initialDecredTransactionPriority, TransactionPriority? initialZcashTransactionPriority, + TransactionPriority? initialDogecoinTransactionPriority, Country? initialCakePayCountry}) : nodes = ObservableMap.of(nodes), powNodes = ObservableMap.of(powNodes), @@ -273,6 +275,9 @@ abstract class SettingsStoreBase with Store { if (initialZcashTransactionPriority != null) { priority[WalletType.zcash] = initialZcashTransactionPriority; } + if (initialDogecoinTransactionPriority != null) { + priority[WalletType.dogecoin] = initialDogecoinTransactionPriority; + } if (initialCakePayCountry != null) { selectedCakePayCountry = initialCakePayCountry; @@ -345,6 +350,9 @@ abstract class SettingsStoreBase with Store { case WalletType.zcash: key = PreferencesKey.zcashTransactionPriority; break; + case WalletType.dogecoin: + key = PreferencesKey.dogecoinTransactionPriority; + break; default: key = null; } @@ -1194,6 +1202,7 @@ abstract class SettingsStoreBase with Store { TransactionPriority? zanoTransactionPriority; TransactionPriority? decredTransactionPriority; TransactionPriority? zcashTransactionPriority; + TransactionPriority? dogecoinTransactionPriority; if (sharedPreferences.getInt(PreferencesKey.havenTransactionPriority) != null) { havenTransactionPriority = monero?.deserializeMoneroTransactionPriority( @@ -1241,6 +1250,10 @@ abstract class SettingsStoreBase with Store { zcashTransactionPriority = zcash?.deserializeZcashTransactionPriority( raw: sharedPreferences.getInt(PreferencesKey.zcashTransactionPriority)!); } + if (sharedPreferences.getInt(PreferencesKey.dogecoinTransactionPriority) != null) { + dogecoinTransactionPriority = dogecoin?.deserializeDogeCoinTransactionPriority( + sharedPreferences.getInt(PreferencesKey.dogecoinTransactionPriority)!); + } moneroTransactionPriority ??= monero?.getDefaultTransactionPriority(); bitcoinTransactionPriority ??= bitcoin?.getMediumTransactionPriority(); @@ -1256,6 +1269,7 @@ abstract class SettingsStoreBase with Store { bscTransactionPriority ??= evm?.getDefaultTransactionPriority(); zanoTransactionPriority ??= zano?.getDefaultTransactionPriority(); zcashTransactionPriority ??= zcash?.getDefaultTransactionPriority(); + dogecoinTransactionPriority ??= dogecoin?.getDefaultTransactionPriority(); final currentBalanceDisplayMode = BalanceDisplayMode.deserialize( raw: sharedPreferences.getInt(PreferencesKey.currentBalanceDisplayModeKey)!); @@ -1744,6 +1758,7 @@ abstract class SettingsStoreBase with Store { initialBitcoinCashTransactionPriority: bitcoinCashTransactionPriority, initialDecredTransactionPriority: decredTransactionPriority, initialZcashTransactionPriority: zcashTransactionPriority, + initialDogecoinTransactionPriority: dogecoinTransactionPriority, initialShouldRequireTOTP2FAForAccessingWallet: shouldRequireTOTP2FAForAccessingWallet, initialShouldRequireTOTP2FAForSendsToContact: shouldRequireTOTP2FAForSendsToContact, initialShouldRequireTOTP2FAForSendsToNonContact: shouldRequireTOTP2FAForSendsToNonContact, @@ -1847,6 +1862,11 @@ abstract class SettingsStoreBase with Store { priority[WalletType.zcash] = zcash!.deserializeZcashTransactionPriority( raw: sharedPreferences.getInt(PreferencesKey.zcashTransactionPriority)!); } + if (dogecoin != null && + sharedPreferences.getInt(PreferencesKey.dogecoinTransactionPriority) != null) { + priority[WalletType.dogecoin] = dogecoin!.deserializeDogeCoinTransactionPriority( + sharedPreferences.getInt(PreferencesKey.dogecoinTransactionPriority)!); + } final generateSubaddresses = sharedPreferences.getInt(PreferencesKey.autoGenerateSubaddressStatusKey); diff --git a/lib/view_model/send/send_view_model.dart b/lib/view_model/send/send_view_model.dart index 670bc5a17..df85d0cac 100644 --- a/lib/view_model/send/send_view_model.dart +++ b/lib/view_model/send/send_view_model.dart @@ -167,9 +167,10 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor bool get isEVMWallet => isEVMCompatibleChain(walletType); - @action CryptoCurrency _outputCryptoCurrencyHandler([CryptoCurrency? override]) { - if (override != null && override != selectedCryptoCurrency) selectedCryptoCurrency = override; + if (override != null && override != selectedCryptoCurrency) { + runInAction(() => selectedCryptoCurrency = override); + } return selectedCryptoCurrency; }