From 0c4b2814757206b69acd8561e10ccba01cfc7447 Mon Sep 17 00:00:00 2001 From: Thauan Amorim Date: Sun, 9 Feb 2025 18:44:26 -0300 Subject: [PATCH] [feature/1630] Add QR code button on signed transaction screen --- .../transaction/HeadersController.java | 20 +++++++++++++++++++ .../sparrow/transaction/headers.fxml | 5 +++++ 2 files changed, 25 insertions(+) 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 @@ +