mirror of
https://github.com/bisq-network/bisq.git
synced 2025-03-03 10:46:54 +01:00
Clean up TransactionAwareTrade & speed it up slightly
Replace the "Optional.ofNullable(...)..." constructs with more direct code using short-circuit operators, as this is shorter and a little faster. Also use "trade.get[Deposit|Payout]TxId()" instead of the code "trade.get[Deposit|Payout]TxId().getTxId()", as (upon inspection of the code) there should never be a case where the deposit/payout transaction field of a Trade object is set but the respective txID field is null (or set to an inconsistent value). Also remove a redundant 'RefundManager.getDisputesAsObservableList' method call, which was also slowing things down slightly. The minor speedups afforded by the above are important because the method 'TransactionAwareTrade.isRelatedToTransaction' is called a quadratic number of times and consequently a major bottleneck when loading the Transactions view.
This commit is contained in:
parent
b1e2cb03ad
commit
88dd924577
2 changed files with 11 additions and 22 deletions
|
@ -37,8 +37,6 @@ import org.bitcoinj.core.TransactionOutput;
|
||||||
|
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
@ -73,8 +71,8 @@ class TransactionAwareTrade implements TransactionAwareTradable {
|
||||||
Trade trade = (Trade) tradeModel;
|
Trade trade = (Trade) tradeModel;
|
||||||
boolean isTakerOfferFeeTx = txId.equals(trade.getTakerFeeTxId());
|
boolean isTakerOfferFeeTx = txId.equals(trade.getTakerFeeTxId());
|
||||||
boolean isOfferFeeTx = isOfferFeeTx(txId);
|
boolean isOfferFeeTx = isOfferFeeTx(txId);
|
||||||
boolean isDepositTx = isDepositTx(hash);
|
boolean isDepositTx = isDepositTx(txId);
|
||||||
boolean isPayoutTx = isPayoutTx(hash);
|
boolean isPayoutTx = isPayoutTx(txId);
|
||||||
boolean isDisputedPayoutTx = isDisputedPayoutTx(txId);
|
boolean isDisputedPayoutTx = isDisputedPayoutTx(txId);
|
||||||
boolean isDelayedPayoutTx = transaction.getLockTime() != 0 && isDelayedPayoutTx(txId);
|
boolean isDelayedPayoutTx = transaction.getLockTime() != 0 && isDelayedPayoutTx(txId);
|
||||||
boolean isRefundPayoutTx = isRefundPayoutTx(trade, txId);
|
boolean isRefundPayoutTx = isRefundPayoutTx(trade, txId);
|
||||||
|
@ -91,36 +89,28 @@ class TransactionAwareTrade implements TransactionAwareTradable {
|
||||||
return tradeRelated || isBsqSwapTrade;
|
return tradeRelated || isBsqSwapTrade;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPayoutTx(Sha256Hash txId) {
|
private boolean isPayoutTx(String txId) {
|
||||||
if (isBsqSwapTrade())
|
if (isBsqSwapTrade())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Trade trade = (Trade) tradeModel;
|
Trade trade = (Trade) tradeModel;
|
||||||
return Optional.ofNullable(trade.getPayoutTx())
|
return txId.equals(trade.getPayoutTxId());
|
||||||
.map(Transaction::getTxId)
|
|
||||||
.map(hash -> hash.equals(txId))
|
|
||||||
.orElse(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDepositTx(Sha256Hash txId) {
|
private boolean isDepositTx(String txId) {
|
||||||
if (isBsqSwapTrade())
|
if (isBsqSwapTrade())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Trade trade = (Trade) tradeModel;
|
Trade trade = (Trade) tradeModel;
|
||||||
return Optional.ofNullable(trade.getDepositTx())
|
return txId.equals(trade.getDepositTxId());
|
||||||
.map(Transaction::getTxId)
|
|
||||||
.map(hash -> hash.equals(txId))
|
|
||||||
.orElse(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isOfferFeeTx(String txId) {
|
private boolean isOfferFeeTx(String txId) {
|
||||||
if (isBsqSwapTrade())
|
if (isBsqSwapTrade())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return Optional.ofNullable(tradeModel.getOffer())
|
Offer offer = tradeModel.getOffer();
|
||||||
.map(Offer::getOfferFeePaymentTxId)
|
return offer != null && txId.equals(offer.getOfferFeePaymentTxId());
|
||||||
.map(paymentTxId -> paymentTxId.equals(txId))
|
|
||||||
.orElse(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDisputedPayoutTx(String txId) {
|
private boolean isDisputedPayoutTx(String txId) {
|
||||||
|
@ -168,7 +158,7 @@ class TransactionAwareTrade implements TransactionAwareTradable {
|
||||||
if (parentTransaction == null) {
|
if (parentTransaction == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return isDepositTx(parentTransaction.getTxId());
|
return isDepositTx(parentTransaction.getTxId().toString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +167,6 @@ class TransactionAwareTrade implements TransactionAwareTradable {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
String tradeId = tradeModel.getId();
|
String tradeId = tradeModel.getId();
|
||||||
ObservableList<Dispute> disputes = refundManager.getDisputesAsObservableList();
|
|
||||||
|
|
||||||
boolean isAnyDisputeRelatedToThis = refundManager.getDisputedTradeIds().contains(tradeId);
|
boolean isAnyDisputeRelatedToThis = refundManager.getDisputedTradeIds().contains(tradeId);
|
||||||
|
|
||||||
|
|
|
@ -66,13 +66,13 @@ public class TransactionAwareTradeTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsRelatedToTransactionWhenPayoutTx() {
|
public void testIsRelatedToTransactionWhenPayoutTx() {
|
||||||
when(delegate.getPayoutTx().getTxId()).thenReturn(XID);
|
when(delegate.getPayoutTxId()).thenReturn(XID.toString());
|
||||||
assertTrue(trade.isRelatedToTransaction(transaction));
|
assertTrue(trade.isRelatedToTransaction(transaction));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsRelatedToTransactionWhenDepositTx() {
|
public void testIsRelatedToTransactionWhenDepositTx() {
|
||||||
when(delegate.getDepositTx().getTxId()).thenReturn(XID);
|
when(delegate.getDepositTxId()).thenReturn(XID.toString());
|
||||||
assertTrue(trade.isRelatedToTransaction(transaction));
|
assertTrue(trade.isRelatedToTransaction(transaction));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue