resend payment received message until acked within window

This commit is contained in:
woodser 2025-11-21 20:48:59 -05:00 committed by woodser
parent 67103b76d2
commit 1742f03d00
3 changed files with 6 additions and 8 deletions

View file

@ -71,7 +71,7 @@ public abstract class SellerTrade extends Trade {
public boolean needsToResendPaymentReceivedMessages() {
boolean hasNoPaymentReceivedMessages = getBuyer().getPaymentReceivedMessage() == null && getArbitrator().getPaymentReceivedMessage() == null;
if (!walletExistsNoSync() && !hasNoPaymentReceivedMessages) return false; // cannot provide any updated state
return !isShutDownStarted() && getState().ordinal() >= Trade.State.SELLER_SENT_PAYMENT_RECEIVED_MSG.ordinal() && !getProcessModel().isPaymentReceivedMessagesAckedOrNacked() && resendPaymentReceivedMessagesEnabled() && resendPaymentReceivedMessagesWithinDuration();
return !isShutDownStarted() && getState().ordinal() >= Trade.State.SELLER_SENT_PAYMENT_RECEIVED_MSG.ordinal() && !getProcessModel().isPaymentReceivedMessagesAcked() && resendPaymentReceivedMessagesEnabled() && resendPaymentReceivedMessagesWithinDuration();
}
private boolean resendPaymentReceivedMessagesEnabled() {

View file

@ -1999,17 +1999,15 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
}
// TODO: clear other process data
if (processModel.isPaymentReceivedMessagesAckedOrNacked()) setPayoutTxHex(null);
if (isPayoutFinalized() || processModel.isPaymentReceivedMessagesAcked()) setPayoutTxHex(null);
for (TradePeer peer : getAllPeers()) {
peer.setUpdatedMultisigHex(null);
peer.setDisputeClosedMessage(null);
peer.setPaymentSentMessage(null);
peer.setDepositTxHex(null);
peer.setDepositTxKey(null);
if (peer.isPaymentReceivedMessageAckedOrNacked()) {
peer.setUnsignedPayoutTxHex(null);
peer.setPaymentReceivedMessage(null);
}
if (peer.isPaymentReceivedMessageAckedOrNacked() || isPayoutFinalized()) peer.setUnsignedPayoutTxHex(null);
if (peer.isPaymentReceivedMessageAckedOrNacked()) peer.setPaymentReceivedMessage(null);
}
}

View file

@ -309,8 +309,8 @@ public class ProcessModel implements Model, PersistablePayload {
return getP2PService().getAddress();
}
public boolean isPaymentReceivedMessagesAckedOrNacked() {
return getArbitrator().isPaymentReceivedMessageAckedOrNacked() && getBuyer().isPaymentReceivedMessageAckedOrNacked();
public boolean isPaymentReceivedMessagesAcked() {
return getArbitrator().isPaymentReceivedMessageAcked() && getBuyer().isPaymentReceivedMessageAcked();
}
public boolean isDisputeOpenedMessageAckedOrNacked() {