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;
         }