estimate fees are ok and diplayed to user

This commit is contained in:
poka 2022-09-14 15:57:18 +02:00
parent 6443e04191
commit a0b0423856
3 changed files with 48 additions and 9 deletions

View File

@ -367,6 +367,19 @@ class SubstrateSdk with ChangeNotifier {
notifyListeners(); notifyListeners();
} }
Future<double> 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 ////// ////// 3: SUBSTRATE CONNECTION //////
///////////////////////////////////// /////////////////////////////////////
@ -714,7 +727,7 @@ class SubstrateSdk with ChangeNotifier {
txOptions = [destAddress, false]; txOptions = [destAddress, false];
tx2 = 'api.tx.balances.transferAll("$destAddress", false)'; tx2 = 'api.tx.balances.transferAll("$destAddress", false)';
} else { } else {
int amountUnit; late int amountUnit;
if (isUdUnit) { if (isUdUnit) {
palette = 'universalDividend'; palette = 'universalDividend';
call = 'transferUd'; call = 'transferUd';

View File

@ -452,6 +452,8 @@ void paymentPopup(BuildContext context, String toAddress) {
isScrollControlled: true, isScrollControlled: true,
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
final sub = Provider.of<SubstrateSdk>(homeContext, listen: false);
double fees = 0;
return StatefulBuilder( return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) { builder: (BuildContext context, StateSetter setState) {
if (walletViewProvider.payAmount.text != '' && if (walletViewProvider.payAmount.text != '' &&
@ -588,12 +590,26 @@ void paymentPopup(BuildContext context, String toAddress) {
], ],
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
Text( Row(
'amount'.tr(), children: [
style: TextStyle( Text(
fontSize: 19, 'amount'.tr(),
fontWeight: FontWeight.w500, style: TextStyle(
color: Colors.grey[600]), 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), const SizedBox(height: 10),
TextField( TextField(
@ -606,7 +622,17 @@ void paymentPopup(BuildContext context, String toAddress) {
maxLines: 1, maxLines: 1,
textAlign: TextAlign.center, textAlign: TextAlign.center,
keyboardType: TextInputType.number, 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: <TextInputFormatter>[ inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.deny(',', FilteringTextInputFormatter.deny(',',
replacementString: '.'), replacementString: '.'),

View File

@ -5,7 +5,7 @@ description: Pay with G1.
# pub.dev using `pub publish`. This is preferred for private packages. # 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 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: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'