From 0450e355810521b0dbd139953df77a4bc6cf0df1 Mon Sep 17 00:00:00 2001 From: AlaaElattar Date: Wed, 6 Nov 2024 16:11:51 +0200 Subject: [PATCH] update transfer to fix sending decimal values --- packages/tfchain_client/lib/src/balances.dart | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/tfchain_client/lib/src/balances.dart b/packages/tfchain_client/lib/src/balances.dart index 7fc241e9..4ecce544 100644 --- a/packages/tfchain_client/lib/src/balances.dart +++ b/packages/tfchain_client/lib/src/balances.dart @@ -21,8 +21,8 @@ class Balances extends QueryBalances { final Client client; Future transfer( - {required String address, required BigInt amount}) async { - if (amount <= BigInt.zero) { + {required String address, required double amount}) async { + if (amount <= 0) { throw Exception("Amount must be a positive numeric value"); } @@ -30,8 +30,12 @@ class Balances extends QueryBalances { final publicKey = keyring.decodeAddress(address); MultiAddress multiAddress = Id(publicKey); + final scaleFactor = BigInt.from(10).pow(7); + final scaledAmount = (amount * scaleFactor.toDouble()).round(); + final bigIntAmount = BigInt.from(scaledAmount); + final extrinsic = client.api.tx.balances - .transfer(dest: multiAddress, value: amount * BigInt.from(10).pow(7)); + .transfer(dest: multiAddress, value: bigIntAmount); await client.apply(extrinsic); }