From a2f75a2c7b3f39a2d593c52400c8df6909b996d4 Mon Sep 17 00:00:00 2001 From: julian Date: Wed, 8 Mar 2023 15:19:43 -0600 Subject: [PATCH] respect the coin control setting --- lib/pages/send_view/send_view.dart | 30 +++++++--- .../sub_widgets/wallet_navigation_bar.dart | 57 +++++++++++++++---- 2 files changed, 68 insertions(+), 19 deletions(-) diff --git a/lib/pages/send_view/send_view.dart b/lib/pages/send_view/send_view.dart index 655cd65ce..aaae70d97 100644 --- a/lib/pages/send_view/send_view.dart +++ b/lib/pages/send_view/send_view.dart @@ -319,8 +319,13 @@ class _SendViewState extends ConsumerState { Format.decimalAmountToSatoshis(manager.balance.getSpendable(), coin); } - if (!manager.hasCoinControlSupport || - (manager.hasCoinControlSupport && selectedUTXOs.isEmpty)) { + final coinControlEnabled = + ref.read(prefsChangeNotifierProvider).enableCoinControl; + + if (!(manager.hasCoinControlSupport && coinControlEnabled) || + (manager.hasCoinControlSupport && + coinControlEnabled && + selectedUTXOs.isEmpty)) { // confirm send all if (amount == availableBalance) { final bool? shouldSendAll = await showDialog( @@ -404,7 +409,9 @@ class _SendViewState extends ConsumerState { satoshiAmount: amount, args: { "feeRate": feeRate, - "UTXOs": (manager.hasCoinControlSupport && selectedUTXOs.isNotEmpty) + "UTXOs": (manager.hasCoinControlSupport && + coinControlEnabled && + selectedUTXOs.isNotEmpty) ? selectedUTXOs : null, }, @@ -423,7 +430,9 @@ class _SendViewState extends ConsumerState { satoshiAmount: amount, args: { "feeRate": ref.read(feeRateTypeStateProvider), - "UTXOs": (manager.hasCoinControlSupport && selectedUTXOs.isNotEmpty) + "UTXOs": (manager.hasCoinControlSupport && + coinControlEnabled && + selectedUTXOs.isNotEmpty) ? selectedUTXOs : null, }, @@ -585,10 +594,15 @@ class _SendViewState extends ConsumerState { localeServiceChangeNotifierProvider.select((value) => value.locale)); final showCoinControl = ref.watch( - walletsChangeNotifierProvider.select( - (value) => value.getManager(walletId).hasCoinControlSupport, - ), - ); + walletsChangeNotifierProvider.select( + (value) => value.getManager(walletId).hasCoinControlSupport, + ), + ) && + ref.watch( + prefsChangeNotifierProvider.select( + (value) => value.enableCoinControl, + ), + ); if (coin == Coin.firo || coin == Coin.firoTestNet) { ref.listen(publicPrivateBalanceStateProvider, (previous, next) { diff --git a/lib/pages/wallet_view/sub_widgets/wallet_navigation_bar.dart b/lib/pages/wallet_view/sub_widgets/wallet_navigation_bar.dart index bd2f13b40..18a1dfb34 100644 --- a/lib/pages/wallet_view/sub_widgets/wallet_navigation_bar.dart +++ b/lib/pages/wallet_view/sub_widgets/wallet_navigation_bar.dart @@ -7,6 +7,7 @@ import 'package:stackwallet/pages/coin_control/coin_control_view.dart'; import 'package:stackwallet/pages/paynym/paynym_claim_view.dart'; import 'package:stackwallet/pages/paynym/paynym_home_view.dart'; import 'package:stackwallet/providers/global/paynym_api_provider.dart'; +import 'package:stackwallet/providers/global/prefs_provider.dart'; import 'package:stackwallet/providers/global/wallets_provider.dart'; import 'package:stackwallet/providers/wallet/my_paynym_account_state_provider.dart'; import 'package:stackwallet/services/mixins/paynym_wallet_interface.dart'; @@ -52,10 +53,22 @@ class _WalletNavigationBarState extends ConsumerState { @override Widget build(BuildContext context) { - final showMore = ref.watch(walletsChangeNotifierProvider.select( - (value) => value.getManager(widget.walletId).hasPaynymSupport)) || - ref.watch(walletsChangeNotifierProvider.select((value) => - value.getManager(widget.walletId).hasCoinControlSupport)); + final showMore = ref.watch( + walletsChangeNotifierProvider.select( + (value) => value.getManager(widget.walletId).hasPaynymSupport, + ), + ) || + (ref.watch( + walletsChangeNotifierProvider.select( + (value) => + value.getManager(widget.walletId).hasCoinControlSupport, + ), + ) && + ref.watch( + prefsChangeNotifierProvider.select( + (value) => value.enableCoinControl, + ), + )); return Column( mainAxisAlignment: MainAxisAlignment.end, @@ -104,8 +117,18 @@ class _WalletNavigationBarState extends ConsumerState { // const SizedBox( // height: 8, // ), - if (ref.watch(walletsChangeNotifierProvider.select((value) => - value.getManager(widget.walletId).hasCoinControlSupport))) + if (ref.watch( + walletsChangeNotifierProvider.select( + (value) => value + .getManager(widget.walletId) + .hasCoinControlSupport, + ), + ) && + ref.watch( + prefsChangeNotifierProvider.select( + (value) => value.enableCoinControl, + ), + )) AnimatedOpacity( opacity: scale, duration: duration, @@ -164,12 +187,24 @@ class _WalletNavigationBarState extends ConsumerState { ), ), ), - if (ref.watch(walletsChangeNotifierProvider.select((value) => - value + if (ref.watch( + walletsChangeNotifierProvider.select( + (value) => value .getManager(widget.walletId) - .hasCoinControlSupport)) && - ref.watch(walletsChangeNotifierProvider.select((value) => - value.getManager(widget.walletId).hasPaynymSupport))) + .hasCoinControlSupport, + ), + ) && + ref.watch( + prefsChangeNotifierProvider.select( + (value) => value.enableCoinControl, + ), + ) && + ref.watch( + walletsChangeNotifierProvider.select( + (value) => + value.getManager(widget.walletId).hasPaynymSupport, + ), + )) const SizedBox( height: 8, ),