refactor: enhance ada txs

This commit is contained in:
dethe 2024-09-01 15:12:09 +03:00
parent 56dcc0ba4a
commit e3d040b9b8
3 changed files with 31 additions and 29 deletions

View file

@ -353,10 +353,11 @@ class CardanoWallet extends Bip39Wallet<Cardano> {
await updateProvider();
final addressUtxos = await blockfrostProvider!.request(
BlockfrostRequestAddressUTXOs(
ADAAddress.fromAddress(
BlockfrostRequestAddressUTXOsOfAGivenAsset(
address: ADAAddress.fromAddress(
(await getCurrentReceivingAddress())!.value,
),
asset: "lovelace",
),
);
@ -402,7 +403,7 @@ class CardanoWallet extends Bip39Wallet<Cardano> {
await info.updateCachedChainHeight(
newHeight: latestBlock.height == null ? 0 : latestBlock.height!,
isar: mainDB.isar);
isar: mainDB.isar,);
} catch (e, s) {
Logging.instance.log(
"Error updating transactions in cardano_wallet.dart: $e\n$s",
@ -443,55 +444,56 @@ class CardanoWallet extends Bip39Wallet<Cardano> {
);
var txType = isar.TransactionType.unknown;
var txOutputIndex = -1;
for (final input in utxoInfo.inputs) {
if (input.address == currentAddr) {
txType = isar.TransactionType.outgoing;
}
}
if (txType == isar.TransactionType.outgoing) {
var isSelfTx = true;
for (final output in utxoInfo.outputs) {
if (output.address != currentAddr) {
isSelfTx = false;
}
}
if (isSelfTx) {
txType = isar.TransactionType.sentToSelf;
}
}
if (txType == isar.TransactionType.unknown) {
for (final output in utxoInfo.outputs) {
if (output.address == currentAddr) {
txType = isar.TransactionType.incoming;
txOutputIndex = output.outputIndex;
}
}
}
var receiverAddr = "Unknown?";
var amount = 0;
if (txType == isar.TransactionType.incoming) {
receiverAddr = currentAddr;
for (final output in utxoInfo.outputs) {
if (output.address == currentAddr) {
amount += int.parse(output.amount.first.quantity);
}
}
} else if (txType == isar.TransactionType.outgoing) {
for (final output in utxoInfo.outputs) {
if (output.address != currentAddr) {
receiverAddr = output.address;
txOutputIndex = output.outputIndex;
amount += int.parse(output.amount.first.quantity);
}
}
} else if (txType == isar.TransactionType.sentToSelf) {
receiverAddr = currentAddr;
for (final output in utxoInfo.outputs) {
amount += int.parse(output.amount.first.quantity);
}
}
var amount = 0;
// Temporary solution until https://github.com/mrtnetwork/On_chain/issues/9 is solved.
// Use the library when the mentioned issue is solved.
final currentNode = getCurrentNode();
final response = await _httpClient.get(
url: Uri.parse(
"${currentNode.host}:${currentNode.port}/api/v0/txs/${tx.txHash}/utxos",),
proxyInfo: Prefs.instance.useTor
? TorService.sharedInstance.getProxyInfo()
: null,
);
final json = jsonDecode(response.body);
if (txOutputIndex != -1) {
amount = int.parse(json["outputs"][txOutputIndex]["amount"][0]
["quantity"]! as String,);
}
// Temporary solution part end.
final transaction = isar.Transaction(
walletId: walletId,
txid: txInfo.hash,

View file

@ -1289,10 +1289,10 @@ packages:
dependency: "direct main"
description:
name: on_chain
sha256: "53a17cc19c722e3cdef7a34931e7cd07c490443a92bf538f08cc755b854dfb59"
sha256: "4040c187be82f6f6414110139f6e70fe304f23f63111c3ee60438c539b1a1dce"
url: "https://pub.dev"
source: hosted
version: "3.9.0"
version: "4.0.1"
package_config:
dependency: transitive
description:

View file

@ -199,7 +199,7 @@ dependencies:
camera_platform_interface: ^2.8.0
camera_macos: ^0.0.8
blockchain_utils: ^3.3.0
on_chain: ^3.7.0
on_chain: ^4.0.1
dev_dependencies:
flutter_test: