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();
}
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 //////
/////////////////////////////////////
@ -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';

View File

@ -452,6 +452,8 @@ void paymentPopup(BuildContext context, String toAddress) {
isScrollControlled: true,
context: context,
builder: (BuildContext context) {
final sub = Provider.of<SubstrateSdk>(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: <TextInputFormatter>[
FilteringTextInputFormatter.deny(',',
replacementString: '.'),

View File

@ -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'