fix: initial fixes for timeouts

This commit is contained in:
Rafael Saes 2025-01-06 19:05:52 -03:00
parent d1c45a5326
commit aa374f9127
3 changed files with 23 additions and 24 deletions

View file

@ -270,7 +270,9 @@ class ElectrumClient {
Future<dynamic> getTransaction({required String hash, required bool verbose}) async {
try {
final result = await callWithTimeout(
method: 'blockchain.transaction.get', params: [hash, verbose], timeout: 10000);
method: 'blockchain.transaction.get',
params: [hash, verbose],
);
return result;
} on RequestFailedTimeoutException catch (_) {
return <String, dynamic>{};

View file

@ -123,6 +123,7 @@ class ElectrumTransactionInfo extends TransactionInfo {
List<String> inputAddresses = [];
List<String> outputAddresses = [];
try {
for (var i = 0; i < bundle.originalTransaction.inputs.length; i++) {
final input = bundle.originalTransaction.inputs[i];
final inputTransaction = bundle.ins[i];
@ -133,6 +134,7 @@ class ElectrumTransactionInfo extends TransactionInfo {
inputAddresses.add(addressFromOutputScript(outTransaction.scriptPubKey, network));
}
}
} catch (_) {}
final receivedAmounts = <int>[];
for (final out in bundle.originalTransaction.outputs) {

View file

@ -1423,7 +1423,6 @@ abstract class ElectrumWalletBase
required List<BitcoinUnspent> updatedUnspentCoins,
required List<List<BitcoinUnspent>?> results,
}) {
if (failedCount == results.length) {
printV("All UTXOs failed to fetch, falling back to previous UTXOs");
return previousUnspentCoins;
@ -1918,19 +1917,15 @@ abstract class ElectrumWalletBase
final original = BtcTransaction.fromRaw(transactionHex);
final ins = <BtcTransaction>[];
for (final vin in original.inputs) {
final verboseTransaction = await electrumClient.getTransactionVerbose(hash: vin.txId);
final String inputTransactionHex;
if (verboseTransaction.isEmpty) {
inputTransactionHex = await electrumClient.getTransactionHex(hash: hash);
} else {
inputTransactionHex = verboseTransaction['hex'] as String;
}
try {
await Future.forEach(original.inputs, (vin) async {
String inputTransactionHex = await electrumClient.getTransactionHex(
hash: (vin as TxInput).txId,
);
ins.add(BtcTransaction.fromRaw(inputTransactionHex));
}
});
} catch (_) {}
return ElectrumTransactionBundle(
original,