diff --git a/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java b/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java index f102f4e56c6..f00e52130d0 100644 --- a/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java +++ b/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java @@ -55,7 +55,6 @@ import bisq.network.p2p.NodeAddress; -import bisq.common.app.Version; import bisq.common.crypto.KeyRing; import bisq.common.crypto.PubKeyRing; import bisq.common.util.Utilities; @@ -475,16 +474,6 @@ protected void reOpenDisputeFromButton() { protected abstract void handleOnSelectDispute(Dispute dispute); - protected void onCloseDispute(Dispute dispute) { - long protocolVersion = dispute.getContract().getOfferPayload().getProtocolVersion(); - if (protocolVersion == Version.TRADE_PROTOCOL_VERSION) { - disputeSummaryWindow.onFinalizeDispute(() -> chatView.removeInputBox()) - .show(dispute); - } else { - new Popup().warning(Res.get("support.wrongVersion", protocolVersion)).show(); - } - } - protected void reOpenDispute() { if (selectedDispute != null) { selectedDispute.setIsClosed(false); diff --git a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/DisputeAgentView.java b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/DisputeAgentView.java index b3111962fb4..aafb16d2185 100644 --- a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/DisputeAgentView.java +++ b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/DisputeAgentView.java @@ -215,6 +215,8 @@ protected void setupTable() { tableView.getColumns().add(getAlertColumn()); } + protected abstract void onCloseDispute(Dispute dispute); + /////////////////////////////////////////////////////////////////////////////////////////// // Private diff --git a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/arbitration/ArbitratorView.java b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/arbitration/ArbitratorView.java index 7c8c40b1417..ba6f4b19952 100644 --- a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/arbitration/ArbitratorView.java +++ b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/arbitration/ArbitratorView.java @@ -18,6 +18,7 @@ package bisq.desktop.main.support.dispute.agent.arbitration; import bisq.desktop.common.view.FxmlView; +import bisq.desktop.main.overlays.popups.Popup; import bisq.desktop.main.overlays.windows.ContractWindow; import bisq.desktop.main.overlays.windows.DisputeSummaryWindow; import bisq.desktop.main.overlays.windows.TradeDetailsWindow; @@ -26,6 +27,7 @@ import bisq.core.account.witness.AccountAgeWitnessService; import bisq.core.alert.PrivateNotificationManager; import bisq.core.dao.DaoFacade; +import bisq.core.locale.Res; import bisq.core.support.SupportType; import bisq.core.support.dispute.Dispute; import bisq.core.support.dispute.DisputeSession; @@ -84,4 +86,17 @@ protected SupportType getType() { protected DisputeSession getConcreteDisputeChatSession(Dispute dispute) { return new ArbitrationSession(dispute, disputeManager.isTrader(dispute)); } + + @Override + protected void onCloseDispute(Dispute dispute) { + long protocolVersion = dispute.getContract().getOfferPayload().getProtocolVersion(); + // Only cases with protocolVersion 1 are candidates for legacy arbitration. + // This code path is not tested and it is not assumed that it is still be used as old arbitrators would use + // their old Bisq version if still cases are pending. + if (protocolVersion == 1) { + disputeSummaryWindow.onFinalizeDispute(() -> chatView.removeInputBox()).show(dispute); + } else { + new Popup().warning(Res.get("support.wrongVersion", protocolVersion)).show(); + } + } } diff --git a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/mediation/MediatorView.java b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/mediation/MediatorView.java index 4dacc16ed2c..835a1034fcb 100644 --- a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/mediation/MediatorView.java +++ b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/mediation/MediatorView.java @@ -112,7 +112,6 @@ protected DisputeSession getConcreteDisputeChatSession(Dispute dispute) { @Override protected void onCloseDispute(Dispute dispute) { - disputeSummaryWindow.onFinalizeDispute(() -> chatView.removeInputBox()) - .show(dispute); + disputeSummaryWindow.onFinalizeDispute(() -> chatView.removeInputBox()).show(dispute); } } diff --git a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/refund/RefundAgentView.java b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/refund/RefundAgentView.java index 797e4849bd0..ef5ed5c1487 100644 --- a/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/refund/RefundAgentView.java +++ b/desktop/src/main/java/bisq/desktop/main/support/dispute/agent/refund/RefundAgentView.java @@ -18,6 +18,7 @@ package bisq.desktop.main.support.dispute.agent.refund; import bisq.desktop.common.view.FxmlView; +import bisq.desktop.main.overlays.popups.Popup; import bisq.desktop.main.overlays.windows.ContractWindow; import bisq.desktop.main.overlays.windows.DisputeSummaryWindow; import bisq.desktop.main.overlays.windows.TradeDetailsWindow; @@ -26,6 +27,7 @@ import bisq.core.account.witness.AccountAgeWitnessService; import bisq.core.alert.PrivateNotificationManager; import bisq.core.dao.DaoFacade; +import bisq.core.locale.Res; import bisq.core.support.SupportType; import bisq.core.support.dispute.Dispute; import bisq.core.support.dispute.DisputeSession; @@ -84,4 +86,15 @@ protected SupportType getType() { protected DisputeSession getConcreteDisputeChatSession(Dispute dispute) { return new RefundSession(dispute, disputeManager.isTrader(dispute)); } + + @Override + protected void onCloseDispute(Dispute dispute) { + long protocolVersion = dispute.getContract().getOfferPayload().getProtocolVersion(); + // Refund agent was introduced with protocolVersion version 2. We do not support old trade protocol cases. + if (protocolVersion >= 2) { + disputeSummaryWindow.onFinalizeDispute(() -> chatView.removeInputBox()).show(dispute); + } else { + new Popup().warning(Res.get("support.wrongVersion", protocolVersion)).show(); + } + } }