From 3c631fa65376f9864aad38375a774d17aeff2cd9 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Fri, 5 Apr 2024 13:50:05 +0200 Subject: [PATCH] add button to display seedqr on seed display dialog after warning --- drongo | 2 +- .../sparrow/control/SeedDisplayDialog.java | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/drongo b/drongo index 9872c6b6..b128bb89 160000 --- a/drongo +++ b/drongo @@ -1 +1 @@ -Subproject commit 9872c6b6ecfa6f5d14cd2edcb5605b76e9cb7396 +Subproject commit b128bb895d43dfb97ddb4625425b975182753e5d diff --git a/src/main/java/com/sparrowwallet/sparrow/control/SeedDisplayDialog.java b/src/main/java/com/sparrowwallet/sparrow/control/SeedDisplayDialog.java index e3995835..06e7788d 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/SeedDisplayDialog.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/SeedDisplayDialog.java @@ -1,12 +1,16 @@ package com.sparrowwallet.sparrow.control; import com.sparrowwallet.drongo.wallet.Keystore; +import com.sparrowwallet.drongo.wallet.SeedQR; import com.sparrowwallet.sparrow.AppServices; import javafx.application.Platform; +import javafx.event.ActionEvent; import javafx.scene.control.*; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.StackPane; +import java.util.Optional; + public class SeedDisplayDialog extends Dialog { public SeedDisplayDialog(Keystore decryptedKeystore) { final DialogPane dialogPane = getDialogPane(); @@ -39,8 +43,15 @@ public class SeedDisplayDialog extends Dialog { stackPane.getChildren().addAll(anchorPane); + final ButtonType seedQRButtonType = new javafx.scene.control.ButtonType("Show SeedQR", ButtonBar.ButtonData.LEFT); final ButtonType cancelButtonType = new javafx.scene.control.ButtonType("Cancel", ButtonBar.ButtonData.CANCEL_CLOSE); - dialogPane.getButtonTypes().addAll(cancelButtonType); + dialogPane.getButtonTypes().addAll(seedQRButtonType, cancelButtonType); + + Button seedQRButton = (Button)dialogPane.lookupButton(seedQRButtonType); + seedQRButton.addEventFilter(ActionEvent.ACTION, event -> { + event.consume(); + showSeedQR(decryptedKeystore); + }); dialogPane.setPrefWidth(500); dialogPane.setPrefHeight(150 + height); @@ -48,4 +59,15 @@ public class SeedDisplayDialog extends Dialog { Platform.runLater(() -> keystoreAccordion.setExpandedPane(keystorePane)); } + + private void showSeedQR(Keystore decryptedKeystore) { + Optional optButtonType = AppServices.showWarningDialog("Sensitive QR", "The following QR contains these seed words. " + + "Be careful before displaying or digitally recording it.\n\nAre you sure you want to continue?", ButtonType.YES, ButtonType.NO); + if(optButtonType.isPresent() && optButtonType.get() == ButtonType.YES) { + String seedQR = SeedQR.getSeedQR(decryptedKeystore.getSeed()); + QRDisplayDialog qrDisplayDialog = new QRDisplayDialog(seedQR); + qrDisplayDialog.initOwner(getDialogPane().getScene().getWindow()); + qrDisplayDialog.showAndWait(); + } + } }