[feature/1630] Add QR code button on signed transaction screen

This commit is contained in:
Thauan Amorim 2025-02-09 18:44:26 -03:00
parent 78f0721168
commit 0c4b281475
2 changed files with 25 additions and 0 deletions

View file

@ -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) {

View file

@ -293,6 +293,11 @@
<Tooltip text="Connect to a server (bottom right toggle) to broadcast a transaction" />
</tooltip>
</Button>
<Button fx:id="showTransactionButton" defaultButton="true" HBox.hgrow="ALWAYS" text="Show Transaction as QR" contentDisplay="TOP" wrapText="true" textAlignment="CENTER" onAction="#showTransaction">
<graphic>
<Glyph fontFamily="Font Awesome 5 Free Solid" fontSize="20" icon="QRCODE" />
</graphic>
</Button>
<Button fx:id="payjoinButton" defaultButton="true" HBox.hgrow="ALWAYS" text="Get Payjoin Transaction" contentDisplay="TOP" wrapText="true" textAlignment="CENTER" onAction="#getPayjoinTransaction">
<graphic>
<Glyph fontFamily="Font Awesome 5 Free Solid" fontSize="20" icon="RANDOM" />