mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-10-10 17:48:43 -04:00
automatically close disputes on startup when payout is published
This commit is contained in:
parent
2d0d03337e
commit
4e09a83e40
2 changed files with 38 additions and 0 deletions
|
@ -1182,6 +1182,7 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
|
|||
}
|
||||
|
||||
public boolean canSendChatMessages(Dispute dispute) {
|
||||
if (dispute.isClosed()) return false;
|
||||
Optional<Trade> tradeOptional = findTrade(dispute);
|
||||
if (!tradeOptional.isPresent()) {
|
||||
log.warn("Dispute trade {} does not exist", dispute.getTradeId());
|
||||
|
|
|
@ -225,6 +225,43 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
|
|||
}
|
||||
trade.setDisputeState(DisputeState.NO_DISPUTE);
|
||||
}
|
||||
|
||||
// close open disputes with published payout
|
||||
for (Dispute dispute : disputes) {
|
||||
|
||||
// skip if dispute is closed
|
||||
if (dispute.isClosed()) continue;
|
||||
|
||||
// get dispute's trade
|
||||
final Trade trade = tradeManager.getTrade(dispute.getTradeId());
|
||||
if (trade == null) {
|
||||
log.warn("Dispute trade {} does not exist", dispute.getTradeId());
|
||||
continue;
|
||||
}
|
||||
|
||||
// skip if trade's payout is not published
|
||||
if (!trade.isPayoutPublished()) continue;
|
||||
|
||||
// skip if arbitrator's peer dispute is closed
|
||||
Optional<Dispute> peersDisputeOptional = null;
|
||||
if (trade.isArbitrator()) {
|
||||
peersDisputeOptional = getDisputesAsObservableList().stream()
|
||||
.filter(d -> dispute.getTradeId().equals(d.getTradeId()) && dispute.getTraderId() != d.getTraderId())
|
||||
.findFirst();
|
||||
if (peersDisputeOptional.isPresent()) {
|
||||
if (peersDisputeOptional.get().isClosed()) continue;
|
||||
} else {
|
||||
log.warn("No peer dispute found for disputeId={}, tradeId={}", dispute.getId(), dispute.getTradeId());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// close trade disputes if payout published
|
||||
log.warn("Auto-closing dispute for {} {} with published payout, disputeId={}", trade.getClass().getSimpleName(), trade.getId(), dispute.getId());
|
||||
dispute.setIsClosed();
|
||||
if (peersDisputeOptional != null && peersDisputeOptional.isPresent()) peersDisputeOptional.get().setIsClosed();
|
||||
trade.setDisputeState(Trade.DisputeState.DISPUTE_CLOSED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue