From 764c66ee084e7c5f427bfd797aac4b604bd480e1 Mon Sep 17 00:00:00 2001 From: Marco <marco@cypherstack.com> Date: Wed, 12 Oct 2022 18:09:17 -0600 Subject: [PATCH] fix ui bug where chosen fee field doesnt show the updated user fee --- lib/pages/send_view/send_view.dart | 6 ++ .../transaction_fee_selection_sheet.dart | 56 +++++++++++++++++++ .../coins/wownero/wownero_wallet.dart | 2 +- 3 files changed, 63 insertions(+), 1 deletion(-) diff --git a/lib/pages/send_view/send_view.dart b/lib/pages/send_view/send_view.dart index 25264e19c..17dd9219d 100644 --- a/lib/pages/send_view/send_view.dart +++ b/lib/pages/send_view/send_view.dart @@ -1319,6 +1319,12 @@ class _SendViewState extends ConsumerState<SendView> { cryptoAmountController .text) ?? Decimal.zero, + updateChosen: (String fee) { + setState(() { + _calculateFeesFuture = + Future(() => fee); + }); + }, ), ); }, diff --git a/lib/pages/send_view/sub_widgets/transaction_fee_selection_sheet.dart b/lib/pages/send_view/sub_widgets/transaction_fee_selection_sheet.dart index 05644cf70..982086d3c 100644 --- a/lib/pages/send_view/sub_widgets/transaction_fee_selection_sheet.dart +++ b/lib/pages/send_view/sub_widgets/transaction_fee_selection_sheet.dart @@ -32,10 +32,12 @@ class TransactionFeeSelectionSheet extends ConsumerStatefulWidget { Key? key, required this.walletId, required this.amount, + required this.updateChosen, }) : super(key: key); final String walletId; final Decimal amount; + final Function updateChosen; @override ConsumerState<TransactionFeeSelectionSheet> createState() => @@ -223,6 +225,10 @@ class _TransactionFeeSelectionSheetState ref.read(feeRateTypeStateProvider.state).state = FeeRateType.fast; } + String? fee = getAmount(FeeRateType.fast); + if (fee != null) { + widget.updateChosen(fee); + } Navigator.of(context).pop(); }, child: Container( @@ -352,6 +358,10 @@ class _TransactionFeeSelectionSheetState ref.read(feeRateTypeStateProvider.state).state = FeeRateType.average; } + String? fee = getAmount(FeeRateType.average); + if (fee != null) { + widget.updateChosen(fee); + } Navigator.of(context).pop(); }, child: Container( @@ -479,6 +489,11 @@ class _TransactionFeeSelectionSheetState ref.read(feeRateTypeStateProvider.state).state = FeeRateType.slow; } + String? fee = getAmount(FeeRateType.slow); + print("fee $fee"); + if (fee != null) { + widget.updateChosen(fee); + } Navigator.of(context).pop(); }, child: Container( @@ -608,4 +623,45 @@ class _TransactionFeeSelectionSheetState ), ); } + + String? getAmount(FeeRateType feeRateType) { + try { + print(feeRateType); + var amount = Format.decimalAmountToSatoshis(this.amount); + print(amount); + print(ref.read(feeSheetSessionCacheProvider).fast); + print(ref.read(feeSheetSessionCacheProvider).average); + print(ref.read(feeSheetSessionCacheProvider).slow); + switch (feeRateType) { + case FeeRateType.fast: + if (ref.read(feeSheetSessionCacheProvider).fast[amount] != null) { + return (ref.read(feeSheetSessionCacheProvider).fast[amount] + as Decimal) + .toString(); + } + return null; + + case FeeRateType.average: + if (ref.read(feeSheetSessionCacheProvider).average[amount] != null) { + return (ref.read(feeSheetSessionCacheProvider).average[amount] + as Decimal) + .toString(); + } + return null; + + case FeeRateType.slow: + print(ref.read(feeSheetSessionCacheProvider).slow); + print(ref.read(feeSheetSessionCacheProvider).slow[amount]); + if (ref.read(feeSheetSessionCacheProvider).slow[amount] != null) { + return (ref.read(feeSheetSessionCacheProvider).slow[amount] + as Decimal) + .toString(); + } + return null; + } + } catch (e, s) { + print("$e $s"); + return null; + } + } } diff --git a/lib/services/coins/wownero/wownero_wallet.dart b/lib/services/coins/wownero/wownero_wallet.dart index afdc49117..d3aba5bbb 100644 --- a/lib/services/coins/wownero/wownero_wallet.dart +++ b/lib/services/coins/wownero/wownero_wallet.dart @@ -1558,7 +1558,7 @@ class WowneroWallet extends CoinServiceAPI { "WW3iVcnoAY6K9zNdU4qmdvZELefx6xZz4PMpTwUifRkvMQckyadhSPYMVPJhBdYE8P9c27fg9RPmVaWNFx1cDaj61HnetqBiy", satoshiAmount: satoshiAmount, args: {"feeRate": feeRateType}))['fee']; - await Future.delayed(const Duration(milliseconds: 100)); + await Future.delayed(const Duration(milliseconds: 500)); } catch (e, s) { aprox = -9999999999999999; }