diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 9696018..1aa34a5 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -367,6 +367,19 @@ class SubstrateSdk with ChangeNotifier { notifyListeners(); } + Future txFees( + String fromAddress, String destAddress, double amount) async { + if (amount == 0) return 0; + final sender = await _setSender(fromAddress); + final txInfo = TxInfoData('balances', 'transferKeepAlive', sender); + final amountUnit = (amount * 100).toInt(); + + final estimateFees = + await sdk.api.tx.estimateFees(txInfo, [destAddress, amountUnit]); + + return estimateFees.partialFee / 100; + } + ///////////////////////////////////// ////// 3: SUBSTRATE CONNECTION ////// ///////////////////////////////////// @@ -714,7 +727,7 @@ class SubstrateSdk with ChangeNotifier { txOptions = [destAddress, false]; tx2 = 'api.tx.balances.transferAll("$destAddress", false)'; } else { - int amountUnit; + late int amountUnit; if (isUdUnit) { palette = 'universalDividend'; call = 'transferUd'; diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index 93132f0..de77061 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -452,6 +452,8 @@ void paymentPopup(BuildContext context, String toAddress) { isScrollControlled: true, context: context, builder: (BuildContext context) { + final sub = Provider.of(homeContext, listen: false); + double fees = 0; return StatefulBuilder( builder: (BuildContext context, StateSetter setState) { if (walletViewProvider.payAmount.text != '' && @@ -588,12 +590,26 @@ void paymentPopup(BuildContext context, String toAddress) { ], ), const SizedBox(height: 12), - Text( - 'amount'.tr(), - style: TextStyle( - fontSize: 19, - fontWeight: FontWeight.w500, - color: Colors.grey[600]), + Row( + children: [ + Text( + 'amount'.tr(), + style: TextStyle( + fontSize: 19, + fontWeight: FontWeight.w500, + color: Colors.grey[600]), + ), + const Spacer(), + Text( + 'frais: $fees $currencyName', + style: const TextStyle( + color: orangeC, + fontSize: 17, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(width: 10), + ], ), const SizedBox(height: 10), TextField( @@ -606,7 +622,17 @@ void paymentPopup(BuildContext context, String toAddress) { maxLines: 1, textAlign: TextAlign.center, keyboardType: TextInputType.number, - onChanged: (_) => setState(() {}), + onChanged: (_) async { + fees = await sub.txFees( + defaultWallet.address!, + toAddress, + double.parse( + walletViewProvider.payAmount.text == '' + ? '0' + : walletViewProvider.payAmount.text)); + log.d(fees); + setState(() {}); + }, inputFormatters: [ FilteringTextInputFormatter.deny(',', replacementString: '.'), diff --git a/pubspec.yaml b/pubspec.yaml index b77e500..b096b25 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: Pay with G1. # pub.dev using `pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev -version: 0.0.11+31 +version: 0.0.11+32 environment: sdk: '>=2.12.0 <3.0.0'