diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
index 2a7f2912..1e36c6b2 100644
--- a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
+++ b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java
@@ -9,6 +9,7 @@ import com.sparrowwallet.drongo.psbt.PSBT;
import com.sparrowwallet.drongo.psbt.PSBTInput;
import com.sparrowwallet.drongo.uri.BitcoinURI;
import com.sparrowwallet.drongo.wallet.*;
+import com.sparrowwallet.hummingbird.UR;
import com.sparrowwallet.hummingbird.registry.CryptoPSBT;
import com.sparrowwallet.sparrow.AppServices;
import com.sparrowwallet.sparrow.EventManager;
@@ -230,6 +231,9 @@ public class HeadersController extends TransactionFormController implements Init
@FXML
private Button saveFinalButton;
+ @FXML
+ private Button showTransactionButton;
+
@FXML
private Button payjoinButton;
@@ -463,6 +467,8 @@ public class HeadersController extends TransactionFormController implements Init
broadcastButton.managedProperty().bind(broadcastButton.visibleProperty());
saveFinalButton.managedProperty().bind(saveFinalButton.visibleProperty());
saveFinalButton.visibleProperty().bind(broadcastButton.visibleProperty().not());
+ showTransactionButton.managedProperty().bind(showTransactionButton.visibleProperty());
+ showTransactionButton.visibleProperty().bind(broadcastButton.visibleProperty().not());
broadcastButton.visibleProperty().bind(AppServices.onlineProperty());
BitcoinURI payjoinURI = getPayjoinURI();
@@ -1280,6 +1286,20 @@ public class HeadersController extends TransactionFormController implements Init
}
}
+ public void showTransaction(ActionEvent event) {
+ try {
+ Transaction transaction = headersForm.getPsbt().extractTransaction();
+ byte[] txBytes = transaction.bitcoinSerialize();
+ UR ur = UR.fromBytes(txBytes);
+ BBQR bbqr = new BBQR(BBQRType.TXN, txBytes);
+ QRDisplayDialog qrDisplayDialog = new QRDisplayDialog(ur, bbqr, false, false, false);
+ qrDisplayDialog.showAndWait();
+ } catch (Exception exception) {
+ log.error("Error creating UR", exception);
+ AppServices.showErrorDialog("Error displaying transaction QR code", exception.getMessage());
+ }
+ }
+
public void getPayjoinTransaction(ActionEvent event) {
BitcoinURI payjoinURI = getPayjoinURI();
if(payjoinURI == null) {
diff --git a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml
index b6b92ac6..c7e26af0 100644
--- a/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml
+++ b/src/main/resources/com/sparrowwallet/sparrow/transaction/headers.fxml
@@ -293,6 +293,11 @@
+