mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2025-11-05 11:56:37 +00:00
exclude heights of confirming txes from wallet labels export
This commit is contained in:
parent
76eff2de48
commit
6c3fe93d1e
1 changed files with 11 additions and 5 deletions
|
|
@ -5,6 +5,7 @@ import com.google.gson.*;
|
||||||
import com.sparrowwallet.drongo.KeyPurpose;
|
import com.sparrowwallet.drongo.KeyPurpose;
|
||||||
import com.sparrowwallet.drongo.OutputDescriptor;
|
import com.sparrowwallet.drongo.OutputDescriptor;
|
||||||
import com.sparrowwallet.drongo.Utils;
|
import com.sparrowwallet.drongo.Utils;
|
||||||
|
import com.sparrowwallet.drongo.protocol.Sha256Hash;
|
||||||
import com.sparrowwallet.drongo.protocol.Transaction;
|
import com.sparrowwallet.drongo.protocol.Transaction;
|
||||||
import com.sparrowwallet.drongo.wallet.*;
|
import com.sparrowwallet.drongo.wallet.*;
|
||||||
import com.sparrowwallet.sparrow.AppServices;
|
import com.sparrowwallet.sparrow.AppServices;
|
||||||
|
|
@ -69,6 +70,7 @@ public class WalletLabels implements WalletImport, WalletExport {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set<Sha256Hash> confirmingTxs = new HashSet<>();
|
||||||
WalletTransactionsEntry walletTransactionsEntry = exportWalletForm.getWalletTransactionsEntry();
|
WalletTransactionsEntry walletTransactionsEntry = exportWalletForm.getWalletTransactionsEntry();
|
||||||
for(Entry entry : walletTransactionsEntry.getChildren()) {
|
for(Entry entry : walletTransactionsEntry.getChildren()) {
|
||||||
TransactionEntry txEntry = (TransactionEntry)entry;
|
TransactionEntry txEntry = (TransactionEntry)entry;
|
||||||
|
|
@ -77,24 +79,28 @@ public class WalletLabels implements WalletImport, WalletExport {
|
||||||
txEntry.isConfirming() ? null : blkTx.getHeight(), blkTx.getDate(),
|
txEntry.isConfirming() ? null : blkTx.getHeight(), blkTx.getDate(),
|
||||||
blkTx.getFee() == null || blkTx.getFee() == 0 ? null : blkTx.getFee(), txEntry.getValue(),
|
blkTx.getFee() == null || blkTx.getFee() == 0 ? null : blkTx.getFee(), txEntry.getValue(),
|
||||||
getFiatValue(blkTx.getDate(), Transaction.SATOSHIS_PER_BITCOIN, fiatRates)));
|
getFiatValue(blkTx.getDate(), Transaction.SATOSHIS_PER_BITCOIN, fiatRates)));
|
||||||
|
if(txEntry.isConfirming()) {
|
||||||
|
confirmingTxs.add(blkTx.getHash());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(WalletNode addressNode : exportWallet.getWalletAddresses().values()) {
|
for(WalletNode addressNode : exportWallet.getWalletAddresses().values()) {
|
||||||
labels.add(new AddressLabel(addressNode.getAddress().toString(), addressNode.getLabel(), origin, addressNode.getDerivationPath().substring(1),
|
labels.add(new AddressLabel(addressNode.getAddress().toString(), addressNode.getLabel(), origin, addressNode.getDerivationPath().substring(1),
|
||||||
addressNode.getTransactionOutputs().stream().flatMap(txo -> txo.isSpent() ? Stream.of(txo, txo.getSpentBy()) : Stream.of(txo)).map(BlockTransactionHash::getHeight).toList()));
|
addressNode.getTransactionOutputs().stream().flatMap(txo -> txo.isSpent() ? Stream.of(txo, txo.getSpentBy()) : Stream.of(txo))
|
||||||
|
.filter(ref -> !confirmingTxs.contains(ref.getHash())).map(BlockTransactionHash::getHeight).toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Map.Entry<BlockTransactionHashIndex, WalletNode> txoEntry : exportWallet.getWalletTxos().entrySet()) {
|
for(Map.Entry<BlockTransactionHashIndex, WalletNode> txoEntry : exportWallet.getWalletTxos().entrySet()) {
|
||||||
BlockTransactionHashIndex txo = txoEntry.getKey();
|
BlockTransactionHashIndex txo = txoEntry.getKey();
|
||||||
WalletNode addressNode = txoEntry.getValue();
|
WalletNode addressNode = txoEntry.getValue();
|
||||||
Boolean spendable = (txo.isSpent() ? null : txo.getStatus() != Status.FROZEN);
|
Boolean spendable = (txo.isSpent() ? null : txo.getStatus() != Status.FROZEN);
|
||||||
labels.add(new InputOutputLabel(Type.output, txo.toString(), txo.getLabel(), origin, spendable, addressNode.getDerivationPath().substring(1),
|
labels.add(new InputOutputLabel(Type.output, txo.toString(), txo.getLabel(), origin, spendable, addressNode.getDerivationPath().substring(1), txo.getValue(),
|
||||||
txo.getValue(), txo.getHeight(), txo.getDate(), getFiatValue(txo, fiatRates)));
|
confirmingTxs.contains(txo.getHash()) ? null : txo.getHeight(), txo.getDate(), getFiatValue(txo, fiatRates)));
|
||||||
|
|
||||||
if(txo.isSpent()) {
|
if(txo.isSpent()) {
|
||||||
BlockTransactionHashIndex txi = txo.getSpentBy();
|
BlockTransactionHashIndex txi = txo.getSpentBy();
|
||||||
labels.add(new InputOutputLabel(Type.input, txi.toString(), txi.getLabel(), origin, null, addressNode.getDerivationPath().substring(1),
|
labels.add(new InputOutputLabel(Type.input, txi.toString(), txi.getLabel(), origin, null, addressNode.getDerivationPath().substring(1), txi.getValue(),
|
||||||
txi.getValue(), null, null, getFiatValue(txi, fiatRates)));
|
confirmingTxs.contains(txi.getHash()) ? null : txi.getHeight(), txi.getDate(), getFiatValue(txi, fiatRates)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue