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;