Merge branch 'calculTxFees' into 'master'

Calcul tx fees

See merge request clients/gecko!32
This commit is contained in:
pokapow 2022-11-16 15:18:37 +01:00
commit ebc69445ed
6 changed files with 70 additions and 24 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

@ -82,16 +82,18 @@ class MigrateIdentityScreen extends StatelessWidget {
if (status.data == null) {
return Column(children: [
const SizedBox(height: 80),
Row(mainAxisAlignment: MainAxisAlignment.center, children: const [
SizedBox(
height: 35,
width: 35,
child: CircularProgressIndicator(
color: orangeC,
strokeWidth: 4,
),
),
]),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
SizedBox(
height: 35,
width: 35,
child: CircularProgressIndicator(
color: orangeC,
strokeWidth: 4,
),
),
]),
]);
}

View File

@ -221,6 +221,10 @@ class WalletsHome extends StatelessWidget {
} else if (screenWidth >= 650) {
nTule = 3;
}
// Offset followDragAnchorStrategy(
// Draggable<Object> d, BuildContext context, Offset point) {
// return Offset(d.feedbackOffset.dx - 30, d.feedbackOffset.dy - 0);
// }
return CustomScrollView(slivers: <Widget>[
const SliverToBoxAdapter(child: SizedBox(height: 20)),
@ -235,10 +239,11 @@ class WalletsHome extends StatelessWidget {
LongPressDraggable<String>(
delay: const Duration(milliseconds: 200),
data: repository.address!,
// dragAnchorStrategy:
// (Draggable<Object> _, BuildContext __, Offset ___) =>
// const Offset(40, 40),
dragAnchorStrategy: pointerDragAnchorStrategy,
dragAnchorStrategy:
(Draggable<Object> _, BuildContext __, Offset ___) =>
const Offset(0, 0),
// feedbackOffset: const Offset(-500, -500),
// dragAnchorStrategy: childDragAnchorStrategy,
onDragStarted: () =>
myWalletProvider.dragAddress = repository.address!,
onDragEnd: (_) {

View File

@ -24,7 +24,7 @@ class QrCodeFullscreen extends StatelessWidget {
backgroundColor: color ?? Colors.black,
toolbarHeight: 60 * ratio,
leading: IconButton(
icon:const Icon(Icons.arrow_back, color: orangeC),
icon: const Icon(Icons.arrow_back, color: orangeC),
onPressed: () {
Navigator.pop(context);
}),

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'