mirror of
https://github.com/haveno-dex/haveno.git
synced 2024-10-01 01:35:48 -04:00
do not fetch trade txs directly from daemon
This commit is contained in:
parent
2e672260d3
commit
895acc9d7c
@ -88,7 +88,6 @@ import javafx.collections.ObservableList;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import monero.common.MoneroError;
|
||||
import monero.common.MoneroRpcConnection;
|
||||
import monero.common.TaskLooper;
|
||||
import monero.daemon.MoneroDaemon;
|
||||
@ -1181,43 +1180,12 @@ public abstract class Trade implements Tradable, Model {
|
||||
|
||||
@Nullable
|
||||
public MoneroTx getTakerDepositTx() {
|
||||
return getDepositTx(getTaker());
|
||||
return getTaker().getDepositTx();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public MoneroTx getMakerDepositTx() {
|
||||
return getDepositTx(getMaker());
|
||||
}
|
||||
|
||||
private MoneroTx getDepositTx(TradePeer trader) {
|
||||
String depositId = trader.getDepositTxHash();
|
||||
if (depositId == null) return null;
|
||||
try {
|
||||
if (trader.getDepositTx() == null || !trader.getDepositTx().isConfirmed()) {
|
||||
MoneroTx depositTx = getDepositTxFromWalletOrDaemon(depositId);
|
||||
if (depositTx != null) trader.setDepositTx(depositTx);
|
||||
}
|
||||
return trader.getDepositTx();
|
||||
} catch (MoneroError e) {
|
||||
log.error("Error getting {} deposit tx {}: {}", getPeerRole(trader), depositId, e.getMessage()); // TODO: peer.getRole()
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private MoneroTx getDepositTxFromWalletOrDaemon(String txId) {
|
||||
MoneroTx tx = null;
|
||||
|
||||
// first check wallet
|
||||
if (getWallet() != null) {
|
||||
List<MoneroTxWallet> filteredTxs = getWallet().getTxs(new MoneroTxQuery()
|
||||
.setHash(txId)
|
||||
.setIsConfirmed(isDepositsConfirmed() ? true : null)); // avoid checking pool if confirmed
|
||||
if (filteredTxs.size() == 1) tx = filteredTxs.get(0);
|
||||
}
|
||||
|
||||
// then check daemon
|
||||
if (tx == null) tx = xmrWalletService.getDaemonTxWithCache(txId);
|
||||
return tx;
|
||||
return getMaker().getDepositTx();
|
||||
}
|
||||
|
||||
public void addAndPersistChatMessage(ChatMessage chatMessage) {
|
||||
@ -2231,7 +2199,7 @@ public abstract class Trade implements Tradable, Model {
|
||||
if (tx.getHash().equals(getMaker().getDepositTxHash())) getMaker().setDepositTx(tx);
|
||||
if (tx.getHash().equals(getTaker().getDepositTxHash())) getTaker().setDepositTx(tx);
|
||||
}
|
||||
if (!txs.isEmpty()) depositTxsUpdateCounter.set(depositTxsUpdateCounter.get() + 1);
|
||||
depositTxsUpdateCounter.set(depositTxsUpdateCounter.get() + 1);
|
||||
}
|
||||
|
||||
private void forceRestartTradeWallet() {
|
||||
|
@ -199,18 +199,18 @@ public class TxIdTextField extends AnchorPane {
|
||||
tx = useCache ? xmrWalletService.getDaemonTxWithCache(txId) : xmrWalletService.getDaemonTx(txId);
|
||||
tx.setNumConfirmations(tx.isConfirmed() ? (height == null ? xmrWalletService.getConnectionService().getLastInfo().getHeight() : height) - tx.getHeight(): 0l); // TODO: don't set if tx.getNumConfirmations() works reliably on non-local testnet
|
||||
} else {
|
||||
if (txId.equals(trade.getMaker().getDepositTxHash())) tx = trade.getMaker().getDepositTx();
|
||||
else if (txId.equals(trade.getTaker().getDepositTxHash())) tx = trade.getTaker().getDepositTx();
|
||||
if (txId.equals(trade.getMaker().getDepositTxHash())) tx = trade.getMakerDepositTx();
|
||||
else if (txId.equals(trade.getTaker().getDepositTxHash())) tx = trade.getTakerDepositTx();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// do nothing
|
||||
}
|
||||
updateConfidence(tx);
|
||||
updateConfidence(tx, trade);
|
||||
}
|
||||
|
||||
private void updateConfidence(MoneroTx tx) {
|
||||
private void updateConfidence(MoneroTx tx, Trade trade) {
|
||||
UserThread.execute(() -> {
|
||||
GUIUtil.updateConfidence(tx, progressIndicatorTooltip, txConfidenceIndicator);
|
||||
GUIUtil.updateConfidence(tx, trade, progressIndicatorTooltip, txConfidenceIndicator);
|
||||
if (txConfidenceIndicator.getProgress() != 0) {
|
||||
AnchorPane.setRightAnchor(txConfidenceIndicator, 0.0);
|
||||
}
|
||||
|
@ -48,6 +48,7 @@ import haveno.core.payment.PaymentAccount;
|
||||
import haveno.core.payment.PaymentAccountList;
|
||||
import haveno.core.payment.payload.PaymentMethod;
|
||||
import haveno.core.trade.HavenoUtils;
|
||||
import haveno.core.trade.Trade;
|
||||
import haveno.core.user.DontShowAgainLookup;
|
||||
import haveno.core.user.Preferences;
|
||||
import haveno.core.user.User;
|
||||
@ -528,9 +529,21 @@ public class GUIUtil {
|
||||
public static void updateConfidence(MoneroTx tx,
|
||||
Tooltip tooltip,
|
||||
TxConfidenceIndicator txConfidenceIndicator) {
|
||||
updateConfidence(tx, null, tooltip, txConfidenceIndicator);
|
||||
}
|
||||
|
||||
public static void updateConfidence(MoneroTx tx,
|
||||
Trade trade,
|
||||
Tooltip tooltip,
|
||||
TxConfidenceIndicator txConfidenceIndicator) {
|
||||
if (tx == null || tx.getNumConfirmations() == null || !tx.isRelayed()) {
|
||||
tooltip.setText(Res.get("confidence.unknown"));
|
||||
txConfidenceIndicator.setProgress(-1);
|
||||
if (trade != null && trade.isDepositsUnlocked()) {
|
||||
tooltip.setText(Res.get("confidence.confirmed", ">=10"));
|
||||
txConfidenceIndicator.setProgress(1.0);
|
||||
} else {
|
||||
tooltip.setText(Res.get("confidence.unknown"));
|
||||
txConfidenceIndicator.setProgress(-1);
|
||||
}
|
||||
} else {
|
||||
if (tx.isFailed()) {
|
||||
tooltip.setText(Res.get("confidence.invalid"));
|
||||
|
Loading…
Reference in New Issue
Block a user