mirror of
https://github.com/boldsuck/haveno.git
synced 2024-12-22 20:19:21 +00:00
verify arbitrator signature when dispute closed
This commit is contained in:
parent
435fc164b2
commit
9260cf53ee
15 changed files with 76 additions and 88 deletions
|
@ -174,9 +174,11 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ChatMessage> getAllChatMessages() {
|
public List<ChatMessage> getAllChatMessages() {
|
||||||
return getDisputeList().stream()
|
synchronized (getDisputeList()) {
|
||||||
.flatMap(dispute -> dispute.getChatMessages().stream())
|
return getDisputeList().stream()
|
||||||
.collect(Collectors.toList());
|
.flatMap(dispute -> dispute.getChatMessages().stream())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -294,12 +296,14 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<Dispute> findOwnDispute(String tradeId) {
|
public Optional<Dispute> findOwnDispute(String tradeId) {
|
||||||
T disputeList = getDisputeList();
|
synchronized (getDisputeList()) {
|
||||||
if (disputeList == null) {
|
T disputeList = getDisputeList();
|
||||||
log.warn("disputes is null");
|
if (disputeList == null) {
|
||||||
return Optional.empty();
|
log.warn("disputes is null");
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
return disputeList.stream().filter(e -> e.getTradeId().equals(tradeId)).findAny();
|
||||||
}
|
}
|
||||||
return disputeList.stream().filter(e -> e.getTradeId().equals(tradeId)).findAny();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -25,6 +25,8 @@ import bisq.common.util.Utilities;
|
||||||
|
|
||||||
import org.bitcoinj.core.Coin;
|
import org.bitcoinj.core.Coin;
|
||||||
|
|
||||||
|
import com.google.protobuf.ByteString;
|
||||||
|
|
||||||
import javafx.beans.property.BooleanProperty;
|
import javafx.beans.property.BooleanProperty;
|
||||||
import javafx.beans.property.SimpleBooleanProperty;
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
|
@ -159,6 +161,8 @@ public final class DisputeResult implements NetworkPayload {
|
||||||
.setSellerPayoutAmount(sellerPayoutAmount)
|
.setSellerPayoutAmount(sellerPayoutAmount)
|
||||||
.setCloseDate(closeDate);
|
.setCloseDate(closeDate);
|
||||||
|
|
||||||
|
Optional.ofNullable(arbitratorSignature).ifPresent(arbitratorSignature -> builder.setArbitratorSignature(ByteString.copyFrom(arbitratorSignature)));
|
||||||
|
Optional.ofNullable(arbitratorPubKey).ifPresent(arbitratorPubKey -> builder.setArbitratorPubKey(ByteString.copyFrom(arbitratorPubKey)));
|
||||||
Optional.ofNullable(winner).ifPresent(result -> builder.setWinner(protobuf.DisputeResult.Winner.valueOf(winner.name())));
|
Optional.ofNullable(winner).ifPresent(result -> builder.setWinner(protobuf.DisputeResult.Winner.valueOf(winner.name())));
|
||||||
Optional.ofNullable(chatMessage).ifPresent(chatMessage ->
|
Optional.ofNullable(chatMessage).ifPresent(chatMessage ->
|
||||||
builder.setChatMessage(chatMessage.toProtoNetworkEnvelope().getChatMessage()));
|
builder.setChatMessage(chatMessage.toProtoNetworkEnvelope().getChatMessage()));
|
||||||
|
|
|
@ -19,8 +19,7 @@ package bisq.core.support.dispute;
|
||||||
|
|
||||||
import bisq.core.locale.Res;
|
import bisq.core.locale.Res;
|
||||||
import bisq.core.support.dispute.agent.DisputeAgent;
|
import bisq.core.support.dispute.agent.DisputeAgent;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
|
|
||||||
import bisq.network.p2p.NodeAddress;
|
import bisq.network.p2p.NodeAddress;
|
||||||
|
|
||||||
|
@ -64,18 +63,14 @@ public class DisputeSummaryVerification {
|
||||||
SEPARATOR2);
|
SEPARATOR2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String verifySignature(String input,
|
public static void verifySignature(String input,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorMediator) {
|
||||||
RefundAgentManager refundAgentManager) {
|
|
||||||
try {
|
try {
|
||||||
String[] parts = input.split(SEPARATOR1);
|
String[] parts = input.split(SEPARATOR1);
|
||||||
String textToSign = parts[0];
|
String textToSign = parts[0];
|
||||||
String fullAddress = textToSign.split("\n")[1].split(": ")[1];
|
String fullAddress = textToSign.split("\n")[1].split(": ")[1];
|
||||||
NodeAddress nodeAddress = new NodeAddress(fullAddress);
|
NodeAddress nodeAddress = new NodeAddress(fullAddress);
|
||||||
DisputeAgent disputeAgent = mediatorManager.getDisputeAgentByNodeAddress(nodeAddress).orElse(null);
|
DisputeAgent disputeAgent = arbitratorMediator.getDisputeAgentByNodeAddress(nodeAddress).orElse(null);
|
||||||
if (disputeAgent == null) {
|
|
||||||
disputeAgent = refundAgentManager.getDisputeAgentByNodeAddress(nodeAddress).orElse(null);
|
|
||||||
}
|
|
||||||
checkNotNull(disputeAgent);
|
checkNotNull(disputeAgent);
|
||||||
PublicKey pubKey = disputeAgent.getPubKeyRing().getSignaturePubKey();
|
PublicKey pubKey = disputeAgent.getPubKeyRing().getSignaturePubKey();
|
||||||
|
|
||||||
|
@ -85,15 +80,15 @@ public class DisputeSummaryVerification {
|
||||||
try {
|
try {
|
||||||
boolean result = Sig.verify(pubKey, hash, sig);
|
boolean result = Sig.verify(pubKey, hash, sig);
|
||||||
if (result) {
|
if (result) {
|
||||||
return Res.get("support.sigCheck.popup.success");
|
return;
|
||||||
} else {
|
} else {
|
||||||
return Res.get("support.sigCheck.popup.failed");
|
throw new IllegalArgumentException(Res.get("support.sigCheck.popup.failed"));
|
||||||
}
|
}
|
||||||
} catch (CryptoException e) {
|
} catch (CryptoException e) {
|
||||||
return Res.get("support.sigCheck.popup.failed");
|
throw new IllegalArgumentException(Res.get("support.sigCheck.popup.failed"));
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
return Res.get("support.sigCheck.popup.invalidFormat");
|
throw new IllegalArgumentException(Res.get("support.sigCheck.popup.invalidFormat"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,9 @@ import bisq.core.support.SupportType;
|
||||||
import bisq.core.support.dispute.Dispute;
|
import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeManager;
|
import bisq.core.support.dispute.DisputeManager;
|
||||||
import bisq.core.support.dispute.DisputeResult;
|
import bisq.core.support.dispute.DisputeResult;
|
||||||
|
import bisq.core.support.dispute.DisputeSummaryVerification;
|
||||||
import bisq.core.support.dispute.DisputeResult.Winner;
|
import bisq.core.support.dispute.DisputeResult.Winner;
|
||||||
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.messages.DisputeClosedMessage;
|
import bisq.core.support.dispute.messages.DisputeClosedMessage;
|
||||||
import bisq.core.support.dispute.messages.DisputeOpenedMessage;
|
import bisq.core.support.dispute.messages.DisputeOpenedMessage;
|
||||||
import bisq.core.support.messages.ChatMessage;
|
import bisq.core.support.messages.ChatMessage;
|
||||||
|
@ -73,6 +75,8 @@ import monero.wallet.model.MoneroTxWallet;
|
||||||
@Singleton
|
@Singleton
|
||||||
public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeList> {
|
public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeList> {
|
||||||
|
|
||||||
|
private final ArbitratorManager arbitratorManager;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Constructor
|
// Constructor
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -83,6 +87,7 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
|
||||||
XmrWalletService walletService,
|
XmrWalletService walletService,
|
||||||
CoreMoneroConnectionsService connectionService,
|
CoreMoneroConnectionsService connectionService,
|
||||||
CoreNotificationService notificationService,
|
CoreNotificationService notificationService,
|
||||||
|
ArbitratorManager arbitratorManager,
|
||||||
TradeManager tradeManager,
|
TradeManager tradeManager,
|
||||||
ClosedTradableManager closedTradableManager,
|
ClosedTradableManager closedTradableManager,
|
||||||
OpenOfferManager openOfferManager,
|
OpenOfferManager openOfferManager,
|
||||||
|
@ -92,7 +97,8 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
|
||||||
PriceFeedService priceFeedService) {
|
PriceFeedService priceFeedService) {
|
||||||
super(p2PService, tradeWalletService, walletService, connectionService, notificationService, tradeManager, closedTradableManager,
|
super(p2PService, tradeWalletService, walletService, connectionService, notificationService, tradeManager, closedTradableManager,
|
||||||
openOfferManager, keyRing, arbitrationDisputeListService, config, priceFeedService);
|
openOfferManager, keyRing, arbitrationDisputeListService, config, priceFeedService);
|
||||||
HavenoUtils.arbitrationManager = this; // store static reference
|
this.arbitratorManager = arbitratorManager;
|
||||||
|
HavenoUtils.arbitrationManager = this; // TODO: storing static reference, better way?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -181,6 +187,10 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
|
||||||
|
|
||||||
log.info("Processing {} for {} {}", disputeClosedMessage.getClass().getSimpleName(), trade.getClass().getSimpleName(), disputeResult.getTradeId());
|
log.info("Processing {} for {} {}", disputeClosedMessage.getClass().getSimpleName(), trade.getClass().getSimpleName(), disputeResult.getTradeId());
|
||||||
|
|
||||||
|
// verify arbitrator signature
|
||||||
|
String summaryText = chatMessage.getMessage();
|
||||||
|
DisputeSummaryVerification.verifySignature(summaryText, arbitratorManager);
|
||||||
|
|
||||||
// get dispute
|
// get dispute
|
||||||
Optional<Dispute> disputeOptional = findDispute(disputeResult);
|
Optional<Dispute> disputeOptional = findDispute(disputeResult);
|
||||||
String uid = disputeClosedMessage.getUid();
|
String uid = disputeClosedMessage.getUid();
|
||||||
|
|
|
@ -289,7 +289,7 @@ public class HavenoUtils {
|
||||||
message.setBuyerSignature(signature);
|
message.setBuyerSignature(signature);
|
||||||
|
|
||||||
// verify signature
|
// verify signature
|
||||||
String errMessage = "The buyer signature is invalid for the " + message.getClass().getSimpleName() + " for trade " + trade.getId();
|
String errMessage = "The buyer signature is invalid for the " + message.getClass().getSimpleName() + " for " + trade.getClass().getSimpleName() + " " + trade.getId();
|
||||||
try {
|
try {
|
||||||
if (!Sig.verify(trade.getBuyer().getPubKeyRing().getSignaturePubKey(), unsignedMessageAsJson.getBytes(Charsets.UTF_8), signature)) throw new RuntimeException(errMessage);
|
if (!Sig.verify(trade.getBuyer().getPubKeyRing().getSignaturePubKey(), unsignedMessageAsJson.getBytes(Charsets.UTF_8), signature)) throw new RuntimeException(errMessage);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -320,7 +320,7 @@ public class HavenoUtils {
|
||||||
message.setSellerSignature(signature);
|
message.setSellerSignature(signature);
|
||||||
|
|
||||||
// verify signature
|
// verify signature
|
||||||
String errMessage = "The seller signature is invalid for the " + message.getClass().getSimpleName() + " for trade " + trade.getId();
|
String errMessage = "The seller signature is invalid for the " + message.getClass().getSimpleName() + " for " + trade.getClass().getSimpleName() + " " + trade.getId();
|
||||||
try {
|
try {
|
||||||
if (!Sig.verify(trade.getSeller().getPubKeyRing().getSignaturePubKey(), unsignedMessageAsJson.getBytes(Charsets.UTF_8), signature)) throw new RuntimeException(errMessage);
|
if (!Sig.verify(trade.getSeller().getPubKeyRing().getSignaturePubKey(), unsignedMessageAsJson.getBytes(Charsets.UTF_8), signature)) throw new RuntimeException(errMessage);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -21,8 +21,7 @@ import bisq.desktop.main.overlays.Overlay;
|
||||||
|
|
||||||
import bisq.core.locale.Res;
|
import bisq.core.locale.Res;
|
||||||
import bisq.core.support.dispute.DisputeSummaryVerification;
|
import bisq.core.support.dispute.DisputeSummaryVerification;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
|
|
||||||
import javafx.scene.control.TextArea;
|
import javafx.scene.control.TextArea;
|
||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
|
@ -43,12 +42,10 @@ import static bisq.desktop.util.FormBuilder.addTopLabelTextField;
|
||||||
public class VerifyDisputeResultSignatureWindow extends Overlay<VerifyDisputeResultSignatureWindow> {
|
public class VerifyDisputeResultSignatureWindow extends Overlay<VerifyDisputeResultSignatureWindow> {
|
||||||
private TextArea textArea;
|
private TextArea textArea;
|
||||||
private TextField resultTextField;
|
private TextField resultTextField;
|
||||||
private final MediatorManager mediatorManager;
|
private final ArbitratorManager arbitratorManager;
|
||||||
private final RefundAgentManager refundAgentManager;
|
|
||||||
|
|
||||||
public VerifyDisputeResultSignatureWindow(MediatorManager mediatorManager, RefundAgentManager refundAgentManager) {
|
public VerifyDisputeResultSignatureWindow(ArbitratorManager arbitratorManager) {
|
||||||
this.mediatorManager = mediatorManager;
|
this.arbitratorManager = arbitratorManager;
|
||||||
this.refundAgentManager = refundAgentManager;
|
|
||||||
|
|
||||||
type = Type.Attention;
|
type = Type.Attention;
|
||||||
}
|
}
|
||||||
|
@ -68,9 +65,12 @@ public class VerifyDisputeResultSignatureWindow extends Overlay<VerifyDisputeRes
|
||||||
display();
|
display();
|
||||||
|
|
||||||
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
resultTextField.setText(DisputeSummaryVerification.verifySignature(newValue,
|
try {
|
||||||
mediatorManager,
|
DisputeSummaryVerification.verifySignature(newValue, arbitratorManager);
|
||||||
refundAgentManager));
|
resultTextField.setText(Res.get("support.sigCheck.popup.success"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
resultTextField.setText(e.getMessage());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,9 +44,8 @@ import bisq.core.support.dispute.DisputeManager;
|
||||||
import bisq.core.support.dispute.DisputeResult;
|
import bisq.core.support.dispute.DisputeResult;
|
||||||
import bisq.core.support.dispute.DisputeSession;
|
import bisq.core.support.dispute.DisputeSession;
|
||||||
import bisq.core.support.dispute.agent.DisputeAgentLookupMap;
|
import bisq.core.support.dispute.agent.DisputeAgentLookupMap;
|
||||||
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.mediation.MediationManager;
|
import bisq.core.support.dispute.mediation.MediationManager;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.support.messages.ChatMessage;
|
import bisq.core.support.messages.ChatMessage;
|
||||||
import bisq.core.trade.Contract;
|
import bisq.core.trade.Contract;
|
||||||
import bisq.core.trade.Trade;
|
import bisq.core.trade.Trade;
|
||||||
|
@ -157,8 +156,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
|
||||||
private final TradeDetailsWindow tradeDetailsWindow;
|
private final TradeDetailsWindow tradeDetailsWindow;
|
||||||
|
|
||||||
private final AccountAgeWitnessService accountAgeWitnessService;
|
private final AccountAgeWitnessService accountAgeWitnessService;
|
||||||
private final MediatorManager mediatorManager;
|
private final ArbitratorManager arbitratorManager;
|
||||||
private final RefundAgentManager refundAgentManager;
|
|
||||||
private final boolean useDevPrivilegeKeys;
|
private final boolean useDevPrivilegeKeys;
|
||||||
|
|
||||||
protected TableView<Dispute> tableView;
|
protected TableView<Dispute> tableView;
|
||||||
|
@ -198,8 +196,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
boolean useDevPrivilegeKeys) {
|
boolean useDevPrivilegeKeys) {
|
||||||
this.disputeManager = disputeManager;
|
this.disputeManager = disputeManager;
|
||||||
this.keyRing = keyRing;
|
this.keyRing = keyRing;
|
||||||
|
@ -211,8 +208,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
|
||||||
this.contractWindow = contractWindow;
|
this.contractWindow = contractWindow;
|
||||||
this.tradeDetailsWindow = tradeDetailsWindow;
|
this.tradeDetailsWindow = tradeDetailsWindow;
|
||||||
this.accountAgeWitnessService = accountAgeWitnessService;
|
this.accountAgeWitnessService = accountAgeWitnessService;
|
||||||
this.mediatorManager = mediatorManager;
|
this.arbitratorManager = arbitratorManager;
|
||||||
this.refundAgentManager = refundAgentManager;
|
|
||||||
this.useDevPrivilegeKeys = useDevPrivilegeKeys;
|
this.useDevPrivilegeKeys = useDevPrivilegeKeys;
|
||||||
DisputeChatPopup.ChatCallback chatCallback = this::handleOnProcessDispute;
|
DisputeChatPopup.ChatCallback chatCallback = this::handleOnProcessDispute;
|
||||||
chatPopup = new DisputeChatPopup(disputeManager, formatter, preferences, chatCallback);
|
chatPopup = new DisputeChatPopup(disputeManager, formatter, preferences, chatCallback);
|
||||||
|
@ -286,7 +282,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
|
||||||
sigCheckButton = new AutoTooltipButton(Res.get("support.sigCheck.button"));
|
sigCheckButton = new AutoTooltipButton(Res.get("support.sigCheck.button"));
|
||||||
HBox.setHgrow(sigCheckButton, Priority.NEVER);
|
HBox.setHgrow(sigCheckButton, Priority.NEVER);
|
||||||
sigCheckButton.setOnAction(e -> {
|
sigCheckButton.setOnAction(e -> {
|
||||||
new VerifyDisputeResultSignatureWindow(mediatorManager, refundAgentManager).show();
|
new VerifyDisputeResultSignatureWindow(arbitratorManager).show();
|
||||||
});
|
});
|
||||||
|
|
||||||
Pane spacer = new Pane();
|
Pane spacer = new Pane();
|
||||||
|
|
|
@ -31,8 +31,7 @@ import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeList;
|
import bisq.core.support.dispute.DisputeList;
|
||||||
import bisq.core.support.dispute.DisputeManager;
|
import bisq.core.support.dispute.DisputeManager;
|
||||||
import bisq.core.support.dispute.agent.MultipleHolderNameDetection;
|
import bisq.core.support.dispute.agent.MultipleHolderNameDetection;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.TradeDataValidation;
|
import bisq.core.trade.TradeDataValidation;
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.DontShowAgainLookup;
|
import bisq.core.user.DontShowAgainLookup;
|
||||||
|
@ -79,8 +78,7 @@ public abstract class DisputeAgentView extends DisputeView implements MultipleHo
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
boolean useDevPrivilegeKeys) {
|
boolean useDevPrivilegeKeys) {
|
||||||
super(disputeManager,
|
super(disputeManager,
|
||||||
keyRing,
|
keyRing,
|
||||||
|
@ -92,8 +90,7 @@ public abstract class DisputeAgentView extends DisputeView implements MultipleHo
|
||||||
contractWindow,
|
contractWindow,
|
||||||
tradeDetailsWindow,
|
tradeDetailsWindow,
|
||||||
accountAgeWitnessService,
|
accountAgeWitnessService,
|
||||||
mediatorManager,
|
arbitratorManager,
|
||||||
refundAgentManager,
|
|
||||||
useDevPrivilegeKeys);
|
useDevPrivilegeKeys);
|
||||||
|
|
||||||
multipleHolderNameDetection = new MultipleHolderNameDetection(disputeManager);
|
multipleHolderNameDetection = new MultipleHolderNameDetection(disputeManager);
|
||||||
|
|
|
@ -30,8 +30,7 @@ import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeSession;
|
import bisq.core.support.dispute.DisputeSession;
|
||||||
import bisq.core.support.dispute.arbitration.ArbitrationManager;
|
import bisq.core.support.dispute.arbitration.ArbitrationManager;
|
||||||
import bisq.core.support.dispute.arbitration.ArbitrationSession;
|
import bisq.core.support.dispute.arbitration.ArbitrationSession;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
import bisq.core.util.FormattingUtils;
|
import bisq.core.util.FormattingUtils;
|
||||||
|
@ -57,8 +56,7 @@ public class ArbitratorView extends DisputeAgentView {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
||||||
super(arbitrationManager,
|
super(arbitrationManager,
|
||||||
keyRing,
|
keyRing,
|
||||||
|
@ -70,8 +68,7 @@ public class ArbitratorView extends DisputeAgentView {
|
||||||
contractWindow,
|
contractWindow,
|
||||||
tradeDetailsWindow,
|
tradeDetailsWindow,
|
||||||
accountAgeWitnessService,
|
accountAgeWitnessService,
|
||||||
mediatorManager,
|
arbitratorManager,
|
||||||
refundAgentManager,
|
|
||||||
useDevPrivilegeKeys);
|
useDevPrivilegeKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,9 @@ import bisq.core.alert.PrivateNotificationManager;
|
||||||
import bisq.core.support.SupportType;
|
import bisq.core.support.SupportType;
|
||||||
import bisq.core.support.dispute.Dispute;
|
import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeSession;
|
import bisq.core.support.dispute.DisputeSession;
|
||||||
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.mediation.MediationManager;
|
import bisq.core.support.dispute.mediation.MediationManager;
|
||||||
import bisq.core.support.dispute.mediation.MediationSession;
|
import bisq.core.support.dispute.mediation.MediationSession;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
import bisq.core.util.FormattingUtils;
|
import bisq.core.util.FormattingUtils;
|
||||||
|
@ -57,8 +56,7 @@ public class MediatorView extends DisputeAgentView {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
||||||
super(mediationManager,
|
super(mediationManager,
|
||||||
keyRing,
|
keyRing,
|
||||||
|
@ -70,8 +68,7 @@ public class MediatorView extends DisputeAgentView {
|
||||||
contractWindow,
|
contractWindow,
|
||||||
tradeDetailsWindow,
|
tradeDetailsWindow,
|
||||||
accountAgeWitnessService,
|
accountAgeWitnessService,
|
||||||
mediatorManager,
|
arbitratorManager,
|
||||||
refundAgentManager,
|
|
||||||
useDevPrivilegeKeys);
|
useDevPrivilegeKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,10 +30,9 @@ import bisq.core.locale.Res;
|
||||||
import bisq.core.support.SupportType;
|
import bisq.core.support.SupportType;
|
||||||
import bisq.core.support.dispute.Dispute;
|
import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeSession;
|
import bisq.core.support.dispute.DisputeSession;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.RefundManager;
|
import bisq.core.support.dispute.refund.RefundManager;
|
||||||
import bisq.core.support.dispute.refund.RefundSession;
|
import bisq.core.support.dispute.refund.RefundSession;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
import bisq.core.util.FormattingUtils;
|
import bisq.core.util.FormattingUtils;
|
||||||
|
@ -59,8 +58,7 @@ public class RefundAgentView extends DisputeAgentView {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorService,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
||||||
super(refundManager,
|
super(refundManager,
|
||||||
keyRing,
|
keyRing,
|
||||||
|
@ -72,8 +70,7 @@ public class RefundAgentView extends DisputeAgentView {
|
||||||
contractWindow,
|
contractWindow,
|
||||||
tradeDetailsWindow,
|
tradeDetailsWindow,
|
||||||
accountAgeWitnessService,
|
accountAgeWitnessService,
|
||||||
mediatorManager,
|
arbitratorService,
|
||||||
refundAgentManager,
|
|
||||||
useDevPrivilegeKeys);
|
useDevPrivilegeKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,7 @@ import bisq.core.alert.PrivateNotificationManager;
|
||||||
import bisq.core.support.dispute.Dispute;
|
import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeList;
|
import bisq.core.support.dispute.DisputeList;
|
||||||
import bisq.core.support.dispute.DisputeManager;
|
import bisq.core.support.dispute.DisputeManager;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
import bisq.core.util.coin.CoinFormatter;
|
import bisq.core.util.coin.CoinFormatter;
|
||||||
|
@ -46,12 +45,10 @@ public abstract class DisputeClientView extends DisputeView {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
boolean useDevPrivilegeKeys) {
|
boolean useDevPrivilegeKeys) {
|
||||||
super(DisputeManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow, privateNotificationManager,
|
super(DisputeManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow, privateNotificationManager,
|
||||||
contractWindow, tradeDetailsWindow, accountAgeWitnessService,
|
contractWindow, tradeDetailsWindow, accountAgeWitnessService, arbitratorManager, useDevPrivilegeKeys);
|
||||||
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -30,8 +30,7 @@ import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeSession;
|
import bisq.core.support.dispute.DisputeSession;
|
||||||
import bisq.core.support.dispute.arbitration.ArbitrationManager;
|
import bisq.core.support.dispute.arbitration.ArbitrationManager;
|
||||||
import bisq.core.support.dispute.arbitration.ArbitrationSession;
|
import bisq.core.support.dispute.arbitration.ArbitrationSession;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
import bisq.core.util.FormattingUtils;
|
import bisq.core.util.FormattingUtils;
|
||||||
|
@ -56,12 +55,11 @@ public class ArbitrationClientView extends DisputeClientView {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
||||||
super(arbitrationManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow,
|
super(arbitrationManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow,
|
||||||
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
|
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
|
||||||
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
|
arbitratorManager, useDevPrivilegeKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -30,10 +30,9 @@ import bisq.core.locale.Res;
|
||||||
import bisq.core.support.SupportType;
|
import bisq.core.support.SupportType;
|
||||||
import bisq.core.support.dispute.Dispute;
|
import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeSession;
|
import bisq.core.support.dispute.DisputeSession;
|
||||||
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.mediation.MediationManager;
|
import bisq.core.support.dispute.mediation.MediationManager;
|
||||||
import bisq.core.support.dispute.mediation.MediationSession;
|
import bisq.core.support.dispute.mediation.MediationSession;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.Contract;
|
import bisq.core.trade.Contract;
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
|
@ -61,12 +60,11 @@ public class MediationClientView extends DisputeClientView {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
||||||
super(mediationManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow,
|
super(mediationManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow,
|
||||||
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
|
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
|
||||||
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
|
arbitratorManager, useDevPrivilegeKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -28,10 +28,9 @@ import bisq.core.alert.PrivateNotificationManager;
|
||||||
import bisq.core.support.SupportType;
|
import bisq.core.support.SupportType;
|
||||||
import bisq.core.support.dispute.Dispute;
|
import bisq.core.support.dispute.Dispute;
|
||||||
import bisq.core.support.dispute.DisputeSession;
|
import bisq.core.support.dispute.DisputeSession;
|
||||||
import bisq.core.support.dispute.mediation.mediator.MediatorManager;
|
import bisq.core.support.dispute.arbitration.arbitrator.ArbitratorManager;
|
||||||
import bisq.core.support.dispute.refund.RefundManager;
|
import bisq.core.support.dispute.refund.RefundManager;
|
||||||
import bisq.core.support.dispute.refund.RefundSession;
|
import bisq.core.support.dispute.refund.RefundSession;
|
||||||
import bisq.core.support.dispute.refund.refundagent.RefundAgentManager;
|
|
||||||
import bisq.core.trade.Contract;
|
import bisq.core.trade.Contract;
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
|
@ -59,12 +58,11 @@ public class RefundClientView extends DisputeClientView {
|
||||||
ContractWindow contractWindow,
|
ContractWindow contractWindow,
|
||||||
TradeDetailsWindow tradeDetailsWindow,
|
TradeDetailsWindow tradeDetailsWindow,
|
||||||
AccountAgeWitnessService accountAgeWitnessService,
|
AccountAgeWitnessService accountAgeWitnessService,
|
||||||
MediatorManager mediatorManager,
|
ArbitratorManager arbitratorManager,
|
||||||
RefundAgentManager refundAgentManager,
|
|
||||||
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
|
||||||
super(refundManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow,
|
super(refundManager, keyRing, tradeManager, formatter, preferences, disputeSummaryWindow,
|
||||||
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
|
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
|
||||||
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
|
arbitratorManager, useDevPrivilegeKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue