mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-28 20:39:51 +00:00
fix: initial fixes for timeouts
This commit is contained in:
parent
d1c45a5326
commit
aa374f9127
3 changed files with 23 additions and 24 deletions
|
@ -270,7 +270,9 @@ class ElectrumClient {
|
||||||
Future<dynamic> getTransaction({required String hash, required bool verbose}) async {
|
Future<dynamic> getTransaction({required String hash, required bool verbose}) async {
|
||||||
try {
|
try {
|
||||||
final result = await callWithTimeout(
|
final result = await callWithTimeout(
|
||||||
method: 'blockchain.transaction.get', params: [hash, verbose], timeout: 10000);
|
method: 'blockchain.transaction.get',
|
||||||
|
params: [hash, verbose],
|
||||||
|
);
|
||||||
return result;
|
return result;
|
||||||
} on RequestFailedTimeoutException catch (_) {
|
} on RequestFailedTimeoutException catch (_) {
|
||||||
return <String, dynamic>{};
|
return <String, dynamic>{};
|
||||||
|
|
|
@ -123,6 +123,7 @@ class ElectrumTransactionInfo extends TransactionInfo {
|
||||||
List<String> inputAddresses = [];
|
List<String> inputAddresses = [];
|
||||||
List<String> outputAddresses = [];
|
List<String> outputAddresses = [];
|
||||||
|
|
||||||
|
try {
|
||||||
for (var i = 0; i < bundle.originalTransaction.inputs.length; i++) {
|
for (var i = 0; i < bundle.originalTransaction.inputs.length; i++) {
|
||||||
final input = bundle.originalTransaction.inputs[i];
|
final input = bundle.originalTransaction.inputs[i];
|
||||||
final inputTransaction = bundle.ins[i];
|
final inputTransaction = bundle.ins[i];
|
||||||
|
@ -133,6 +134,7 @@ class ElectrumTransactionInfo extends TransactionInfo {
|
||||||
inputAddresses.add(addressFromOutputScript(outTransaction.scriptPubKey, network));
|
inputAddresses.add(addressFromOutputScript(outTransaction.scriptPubKey, network));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (_) {}
|
||||||
|
|
||||||
final receivedAmounts = <int>[];
|
final receivedAmounts = <int>[];
|
||||||
for (final out in bundle.originalTransaction.outputs) {
|
for (final out in bundle.originalTransaction.outputs) {
|
||||||
|
|
|
@ -1423,7 +1423,6 @@ abstract class ElectrumWalletBase
|
||||||
required List<BitcoinUnspent> updatedUnspentCoins,
|
required List<BitcoinUnspent> updatedUnspentCoins,
|
||||||
required List<List<BitcoinUnspent>?> results,
|
required List<List<BitcoinUnspent>?> results,
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
if (failedCount == results.length) {
|
if (failedCount == results.length) {
|
||||||
printV("All UTXOs failed to fetch, falling back to previous UTXOs");
|
printV("All UTXOs failed to fetch, falling back to previous UTXOs");
|
||||||
return previousUnspentCoins;
|
return previousUnspentCoins;
|
||||||
|
@ -1918,19 +1917,15 @@ abstract class ElectrumWalletBase
|
||||||
final original = BtcTransaction.fromRaw(transactionHex);
|
final original = BtcTransaction.fromRaw(transactionHex);
|
||||||
final ins = <BtcTransaction>[];
|
final ins = <BtcTransaction>[];
|
||||||
|
|
||||||
for (final vin in original.inputs) {
|
try {
|
||||||
final verboseTransaction = await electrumClient.getTransactionVerbose(hash: vin.txId);
|
await Future.forEach(original.inputs, (vin) async {
|
||||||
|
String inputTransactionHex = await electrumClient.getTransactionHex(
|
||||||
final String inputTransactionHex;
|
hash: (vin as TxInput).txId,
|
||||||
|
);
|
||||||
if (verboseTransaction.isEmpty) {
|
|
||||||
inputTransactionHex = await electrumClient.getTransactionHex(hash: hash);
|
|
||||||
} else {
|
|
||||||
inputTransactionHex = verboseTransaction['hex'] as String;
|
|
||||||
}
|
|
||||||
|
|
||||||
ins.add(BtcTransaction.fromRaw(inputTransactionHex));
|
ins.add(BtcTransaction.fromRaw(inputTransactionHex));
|
||||||
}
|
});
|
||||||
|
} catch (_) {}
|
||||||
|
|
||||||
return ElectrumTransactionBundle(
|
return ElectrumTransactionBundle(
|
||||||
original,
|
original,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue