Compare commits

...

2 commits

Author SHA1 Message Date
woodser
111b7613c0 new dispute state is considered open 2024-11-13 18:41:57 -05:00
woodser
5f29e7e1a6 trader can re-open dispute unless payout confirmed 2024-11-13 12:00:24 -05:00
2 changed files with 108 additions and 108 deletions

View file

@ -467,7 +467,7 @@ public final class Dispute implements NetworkPayload, PersistablePayload {
} }
public boolean isOpen() { public boolean isOpen() {
return this.disputeState == State.OPEN || this.disputeState == State.REOPENED; return isNew() || this.disputeState == State.OPEN || this.disputeState == State.REOPENED;
} }
public boolean isClosed() { public boolean isClosed() {

View file

@ -359,6 +359,13 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
return; return;
} }
// skip if payout is confirmed
if (trade.isPayoutConfirmed()) {
String errorMsg = "Cannot open dispute because payout is already confirmed for " + trade.getClass().getSimpleName() + " " + trade.getId();
faultHandler.handleFault(errorMsg, new IllegalStateException(errorMsg));
return;
}
synchronized (disputeList.getObservableList()) { synchronized (disputeList.getObservableList()) {
if (disputeList.contains(dispute)) { if (disputeList.contains(dispute)) {
String msg = "We got a dispute msg that we have already stored. TradeId = " + dispute.getTradeId() + ", DisputeId = " + dispute.getId(); String msg = "We got a dispute msg that we have already stored. TradeId = " + dispute.getTradeId() + ", DisputeId = " + dispute.getId();
@ -368,8 +375,7 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
} }
Optional<Dispute> storedDisputeOptional = findDispute(dispute); Optional<Dispute> storedDisputeOptional = findDispute(dispute);
boolean reOpen = storedDisputeOptional.isPresent() && storedDisputeOptional.get().isClosed(); boolean reOpen = storedDisputeOptional.isPresent();
if (!storedDisputeOptional.isPresent() || reOpen) {
// add or re-open dispute // add or re-open dispute
if (reOpen) { if (reOpen) {
@ -472,12 +478,6 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
errorMessage, new DisputeMessageDeliveryFailedException()); errorMessage, new DisputeMessageDeliveryFailedException());
} }
}); });
} else {
String msg = "We got a dispute already open for that trade and trading peer.\n" +
"TradeId = " + dispute.getTradeId();
log.warn(msg);
faultHandler.handleFault(msg, new DisputeAlreadyOpenException());
}
} }
requestPersistence(); requestPersistence();