mirror of
https://github.com/bisq-network/bisq.git
synced 2024-11-19 18:03:12 +01:00
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.
This commit is contained in:
parent
1daa58624d
commit
27d41c8499
@ -2693,6 +2693,13 @@ tradeDetailsWindow.tradeState=Trade state
|
|||||||
tradeDetailsWindow.agentAddresses=Arbitrator/Mediator
|
tradeDetailsWindow.agentAddresses=Arbitrator/Mediator
|
||||||
tradeDetailsWindow.detailData=Detail data
|
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
|
walletPasswordWindow.headline=Enter password to unlock
|
||||||
|
|
||||||
torNetworkSettingWindow.header=Tor networks settings
|
torNetworkSettingWindow.header=Tor networks settings
|
||||||
|
@ -27,6 +27,7 @@ import bisq.desktop.main.dao.wallet.BsqBalanceUtil;
|
|||||||
import bisq.desktop.main.funds.FundsView;
|
import bisq.desktop.main.funds.FundsView;
|
||||||
import bisq.desktop.main.funds.deposit.DepositView;
|
import bisq.desktop.main.funds.deposit.DepositView;
|
||||||
import bisq.desktop.main.overlays.popups.Popup;
|
import bisq.desktop.main.overlays.popups.Popup;
|
||||||
|
import bisq.desktop.main.overlays.windows.TxDetailsBsq;
|
||||||
import bisq.desktop.main.overlays.windows.WalletPasswordWindow;
|
import bisq.desktop.main.overlays.windows.WalletPasswordWindow;
|
||||||
import bisq.desktop.util.GUIUtil;
|
import bisq.desktop.util.GUIUtil;
|
||||||
import bisq.desktop.util.Layout;
|
import bisq.desktop.util.Layout;
|
||||||
@ -45,6 +46,7 @@ import bisq.core.btc.wallet.TxBroadcaster;
|
|||||||
import bisq.core.btc.wallet.WalletsManager;
|
import bisq.core.btc.wallet.WalletsManager;
|
||||||
import bisq.core.dao.state.model.blockchain.TxType;
|
import bisq.core.dao.state.model.blockchain.TxType;
|
||||||
import bisq.core.locale.Res;
|
import bisq.core.locale.Res;
|
||||||
|
import bisq.core.user.DontShowAgainLookup;
|
||||||
import bisq.core.util.FormattingUtils;
|
import bisq.core.util.FormattingUtils;
|
||||||
import bisq.core.util.coin.BsqFormatter;
|
import bisq.core.util.coin.BsqFormatter;
|
||||||
import bisq.core.util.coin.CoinFormatter;
|
import bisq.core.util.coin.CoinFormatter;
|
||||||
@ -373,6 +375,12 @@ public class BsqSendView extends ActivatableView<GridPane, Void> implements BsqB
|
|||||||
@Override
|
@Override
|
||||||
public void onSuccess(Transaction transaction) {
|
public void onSuccess(Transaction transaction) {
|
||||||
log.debug("Successfully sent tx with id {}", txWithBtcFee.getTxId().toString());
|
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
|
@Override
|
||||||
|
@ -25,6 +25,7 @@ import bisq.desktop.components.ExternalHyperlink;
|
|||||||
import bisq.desktop.components.HyperlinkWithIcon;
|
import bisq.desktop.components.HyperlinkWithIcon;
|
||||||
import bisq.desktop.components.TitledGroupBg;
|
import bisq.desktop.components.TitledGroupBg;
|
||||||
import bisq.desktop.main.overlays.popups.Popup;
|
import bisq.desktop.main.overlays.popups.Popup;
|
||||||
|
import bisq.desktop.main.overlays.windows.TxDetails;
|
||||||
import bisq.desktop.main.overlays.windows.WalletPasswordWindow;
|
import bisq.desktop.main.overlays.windows.WalletPasswordWindow;
|
||||||
import bisq.desktop.util.GUIUtil;
|
import bisq.desktop.util.GUIUtil;
|
||||||
import bisq.desktop.util.Layout;
|
import bisq.desktop.util.Layout;
|
||||||
@ -39,6 +40,7 @@ import bisq.core.btc.wallet.Restrictions;
|
|||||||
import bisq.core.locale.Res;
|
import bisq.core.locale.Res;
|
||||||
import bisq.core.trade.Trade;
|
import bisq.core.trade.Trade;
|
||||||
import bisq.core.trade.TradeManager;
|
import bisq.core.trade.TradeManager;
|
||||||
|
import bisq.core.user.DontShowAgainLookup;
|
||||||
import bisq.core.user.Preferences;
|
import bisq.core.user.Preferences;
|
||||||
import bisq.core.util.FormattingUtils;
|
import bisq.core.util.FormattingUtils;
|
||||||
import bisq.core.util.ParsingUtils;
|
import bisq.core.util.ParsingUtils;
|
||||||
@ -383,6 +385,12 @@ public class WithdrawalView extends ActivatableView<VBox, Void> {
|
|||||||
@Override
|
@Override
|
||||||
public void onSuccess(@javax.annotation.Nullable Transaction transaction) {
|
public void onSuccess(@javax.annotation.Nullable Transaction transaction) {
|
||||||
if (transaction != null) {
|
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());
|
log.debug("onWithdraw onSuccess tx ID:{}", transaction.getTxId().toString());
|
||||||
} else {
|
} else {
|
||||||
log.error("onWithdraw transaction is null");
|
log.error("onWithdraw transaction is null");
|
||||||
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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<TxDetails> {
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user