From 27d41c849919e530ad9de7270d61c37767dea6fe Mon Sep 17 00:00:00 2001
From: jmacxx <47253594+jmacxx@users.noreply.github.com>
Date: Sun, 10 Jan 2021 19:51:34 -0600
Subject: [PATCH 1/2] Show a confirmation of successfully sending BTC or BSQ
from wallet
The confirmation details include amount, recipient address and txId.
Includes a link to open txId details in the user's external block explorer.
@m52go reworded the BSQ conf explanation note.
Added "don't show again" checkbox.
---
.../resources/i18n/displayStrings.properties | 7 ++
.../main/dao/wallet/send/BsqSendView.java | 8 +++
.../main/funds/withdrawal/WithdrawalView.java | 8 +++
.../main/overlays/windows/TxDetails.java | 66 +++++++++++++++++++
.../main/overlays/windows/TxDetailsBsq.java | 33 ++++++++++
5 files changed, 122 insertions(+)
create mode 100644 desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java
create mode 100644 desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetailsBsq.java
diff --git a/core/src/main/resources/i18n/displayStrings.properties b/core/src/main/resources/i18n/displayStrings.properties
index fa728340308..0c84b6f5563 100644
--- a/core/src/main/resources/i18n/displayStrings.properties
+++ b/core/src/main/resources/i18n/displayStrings.properties
@@ -2693,6 +2693,13 @@ tradeDetailsWindow.tradeState=Trade state
tradeDetailsWindow.agentAddresses=Arbitrator/Mediator
tradeDetailsWindow.detailData=Detail data
+txDetailsWindow.headline=Transaction Details
+txDetailsWindow.btc.note=You have sent BTC.
+txDetailsWindow.bsq.note=You have sent BSQ funds. \
+ BSQ is colored bitcoin, so the transaction will not show in a BSQ explorer until it has been confirmed in a bitcoin block.
+txDetailsWindow.sentTo=Sent to
+txDetailsWindow.txId=TxId
+
walletPasswordWindow.headline=Enter password to unlock
torNetworkSettingWindow.header=Tor networks settings
diff --git a/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java b/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java
index 533064b62c1..a56de1e5b89 100644
--- a/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java
+++ b/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java
@@ -27,6 +27,7 @@
import bisq.desktop.main.funds.FundsView;
import bisq.desktop.main.funds.deposit.DepositView;
import bisq.desktop.main.overlays.popups.Popup;
+import bisq.desktop.main.overlays.windows.TxDetailsBsq;
import bisq.desktop.main.overlays.windows.WalletPasswordWindow;
import bisq.desktop.util.GUIUtil;
import bisq.desktop.util.Layout;
@@ -45,6 +46,7 @@
import bisq.core.btc.wallet.WalletsManager;
import bisq.core.dao.state.model.blockchain.TxType;
import bisq.core.locale.Res;
+import bisq.core.user.DontShowAgainLookup;
import bisq.core.util.FormattingUtils;
import bisq.core.util.coin.BsqFormatter;
import bisq.core.util.coin.CoinFormatter;
@@ -373,6 +375,12 @@ private void showPublishTxPopup(Coin receiverAmount,
@Override
public void onSuccess(Transaction transaction) {
log.debug("Successfully sent tx with id {}", txWithBtcFee.getTxId().toString());
+ String key = "showTransactionSentBsq";
+ if (DontShowAgainLookup.showAgain(key)) {
+ new TxDetailsBsq(txWithBtcFee.getTxId().toString(), address, amountFormatter.formatCoinWithCode(receiverAmount))
+ .dontShowAgainId(key)
+ .show();
+ }
}
@Override
diff --git a/desktop/src/main/java/bisq/desktop/main/funds/withdrawal/WithdrawalView.java b/desktop/src/main/java/bisq/desktop/main/funds/withdrawal/WithdrawalView.java
index e67cd9903e3..aa3e984660b 100644
--- a/desktop/src/main/java/bisq/desktop/main/funds/withdrawal/WithdrawalView.java
+++ b/desktop/src/main/java/bisq/desktop/main/funds/withdrawal/WithdrawalView.java
@@ -25,6 +25,7 @@
import bisq.desktop.components.HyperlinkWithIcon;
import bisq.desktop.components.TitledGroupBg;
import bisq.desktop.main.overlays.popups.Popup;
+import bisq.desktop.main.overlays.windows.TxDetails;
import bisq.desktop.main.overlays.windows.WalletPasswordWindow;
import bisq.desktop.util.GUIUtil;
import bisq.desktop.util.Layout;
@@ -39,6 +40,7 @@
import bisq.core.locale.Res;
import bisq.core.trade.Trade;
import bisq.core.trade.TradeManager;
+import bisq.core.user.DontShowAgainLookup;
import bisq.core.user.Preferences;
import bisq.core.util.FormattingUtils;
import bisq.core.util.ParsingUtils;
@@ -383,6 +385,12 @@ private void onWithdraw() {
@Override
public void onSuccess(@javax.annotation.Nullable Transaction transaction) {
if (transaction != null) {
+ String key = "showTransactionSent";
+ if (DontShowAgainLookup.showAgain(key)) {
+ new TxDetails(transaction.getTxId().toString(), withdrawToTextField.getText(), formatter.formatCoinWithCode(sendersAmount))
+ .dontShowAgainId(key)
+ .show();
+ }
log.debug("onWithdraw onSuccess tx ID:{}", transaction.getTxId().toString());
} else {
log.error("onWithdraw transaction is null");
diff --git a/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java b/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java
new file mode 100644
index 00000000000..3e65eed1878
--- /dev/null
+++ b/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java
@@ -0,0 +1,66 @@
+/*
+ * This file is part of Bisq.
+ *
+ * Bisq is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * Bisq is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with Bisq. If not, see .
+ */
+
+package bisq.desktop.main.overlays.windows;
+
+import bisq.desktop.components.TxIdTextField;
+import bisq.desktop.main.overlays.Overlay;
+
+import bisq.core.locale.Res;
+
+import javafx.scene.control.Label;
+import javafx.scene.layout.GridPane;
+
+import static bisq.desktop.util.FormBuilder.*;
+
+public class TxDetails extends Overlay {
+
+ protected String txId, address, amount, note;
+ protected TxIdTextField txIdTextField;
+
+ public TxDetails(String txId, String address, String amount) {
+ type = Type.Attention;
+ this.txId = txId;
+ this.address = address;
+ this.amount = amount;
+ this.note = Res.get("txDetailsWindow.btc.note");
+ }
+
+ public void show() {
+ rowIndex = -1;
+ width = 918;
+ if (headLine == null)
+ headLine = Res.get("txDetailsWindow.headline");
+ createGridPane();
+ gridPane.setHgap(15);
+ addHeadLine();
+ addContent();
+ addButtons();
+ addDontShowAgainCheckBox();
+ applyStyles();
+ display();
+ }
+
+ protected void addContent() {
+ GridPane.setColumnSpan(
+ addMultilineLabel(gridPane, ++rowIndex, note, 0), 2);
+ gridPane.add(new Label(""), 0, ++rowIndex); // spacer
+ addConfirmationLabelLabel(gridPane, ++rowIndex, Res.get("shared.amount"), amount);
+ addConfirmationLabelTextFieldWithCopyIcon(gridPane, ++rowIndex, Res.get("txDetailsWindow.sentTo"), address);
+ txIdTextField = addLabelTxIdTextField(gridPane, ++rowIndex, Res.get("txDetailsWindow.txId"), txId).second;
+ }
+}
diff --git a/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetailsBsq.java b/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetailsBsq.java
new file mode 100644
index 00000000000..aa10072b615
--- /dev/null
+++ b/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetailsBsq.java
@@ -0,0 +1,33 @@
+/*
+ * This file is part of Bisq.
+ *
+ * Bisq is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * Bisq is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with Bisq. If not, see .
+ */
+
+package bisq.desktop.main.overlays.windows;
+
+import bisq.core.locale.Res;
+
+public class TxDetailsBsq extends TxDetails {
+
+ public TxDetailsBsq(String txId, String address, String amount) {
+ super(txId, address, amount);
+ note = Res.get("txDetailsWindow.bsq.note");
+ }
+
+ protected void addContent() {
+ super.addContent();
+ txIdTextField.setBsq(true);
+ }
+}
From 3984e8b3dd32450627e306974815814676736c38 Mon Sep 17 00:00:00 2001
From: jmacxx <47253594+jmacxx@users.noreply.github.com>
Date: Wed, 13 Jan 2021 21:31:58 -0600
Subject: [PATCH 2/2] Code review suggestions from @ripcurlx
Disable validation errors when clearing edit fields
Implement spacer field using Region
---
.../java/bisq/desktop/main/dao/wallet/send/BsqSendView.java | 4 ++++
.../java/bisq/desktop/main/overlays/windows/TxDetails.java | 6 ++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java b/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java
index a56de1e5b89..e692f13d0f7 100644
--- a/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java
+++ b/desktop/src/main/java/bisq/desktop/main/dao/wallet/send/BsqSendView.java
@@ -262,8 +262,12 @@ private void addSendBsqGroup() {
bsqFormatter,
btcFormatter,
() -> {
+ receiversAddressInputTextField.setValidator(null);
receiversAddressInputTextField.setText("");
+ receiversAddressInputTextField.setValidator(bsqAddressValidator);
+ amountInputTextField.setValidator(null);
amountInputTextField.setText("");
+ amountInputTextField.setValidator(bsqValidator);
});
} catch (BsqChangeBelowDustException e) {
String msg = Res.get("popup.warning.bsqChangeBelowDustException", bsqFormatter.formatCoinWithCode(e.getOutputValue()));
diff --git a/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java b/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java
index 3e65eed1878..50730519019 100644
--- a/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java
+++ b/desktop/src/main/java/bisq/desktop/main/overlays/windows/TxDetails.java
@@ -22,8 +22,8 @@
import bisq.core.locale.Res;
-import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
+import javafx.scene.layout.Region;
import static bisq.desktop.util.FormBuilder.*;
@@ -58,7 +58,9 @@ public void show() {
protected void addContent() {
GridPane.setColumnSpan(
addMultilineLabel(gridPane, ++rowIndex, note, 0), 2);
- gridPane.add(new Label(""), 0, ++rowIndex); // spacer
+ Region spacer = new Region();
+ spacer.setMinHeight(20);
+ gridPane.add(spacer, 0, ++rowIndex);
addConfirmationLabelLabel(gridPane, ++rowIndex, Res.get("shared.amount"), amount);
addConfirmationLabelTextFieldWithCopyIcon(gridPane, ++rowIndex, Res.get("txDetailsWindow.sentTo"), address);
txIdTextField = addLabelTxIdTextField(gridPane, ++rowIndex, Res.get("txDetailsWindow.txId"), txId).second;