From 4feb4a3a79a3bbe69178fbefa38cd530fe963240 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Wed, 6 Dec 2023 08:55:09 +0200 Subject: [PATCH] add airgap vault to airgapped options (draft) --- drongo | 2 +- .../sparrow/control/WalletImportDialog.java | 2 +- .../sparrowwallet/sparrow/io/AirGapVault.java | 35 ++++++++++++++++++ .../keystoreimport/HwAirgappedController.java | 2 +- .../image/airgapvault-icon-invert.svg | 6 +++ src/main/resources/image/airgapvault-icon.svg | 6 +++ src/main/resources/image/airgapvault.png | Bin 0 -> 1340 bytes src/main/resources/image/airgapvault@2x.png | Bin 0 -> 2728 bytes src/main/resources/image/airgapvault@3x.png | Bin 0 -> 5775 bytes 9 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/sparrowwallet/sparrow/io/AirGapVault.java create mode 100644 src/main/resources/image/airgapvault-icon-invert.svg create mode 100644 src/main/resources/image/airgapvault-icon.svg create mode 100644 src/main/resources/image/airgapvault.png create mode 100644 src/main/resources/image/airgapvault@2x.png create mode 100644 src/main/resources/image/airgapvault@3x.png diff --git a/drongo b/drongo index 0bb5b75b..579c86b1 160000 --- a/drongo +++ b/drongo @@ -1 +1 @@ -Subproject commit 0bb5b75be52ca4ee9dc771dae30d2b7cb9a49bd2 +Subproject commit 579c86b1a748e410c51f637cd79cbb701996b7e3 diff --git a/src/main/java/com/sparrowwallet/sparrow/control/WalletImportDialog.java b/src/main/java/com/sparrowwallet/sparrow/control/WalletImportDialog.java index a6056a59..29683b28 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/WalletImportDialog.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/WalletImportDialog.java @@ -51,7 +51,7 @@ public class WalletImportDialog extends Dialog { AnchorPane.setRightAnchor(scrollPane, 0.0); importAccordion = new Accordion(); - List keystoreImporters = List.of(new ColdcardSinglesig(), new CoboVaultSinglesig(), new Jade(), new KeystoneSinglesig(), new PassportSinglesig(), new GordianSeedTool(), new SeedSigner(), new SpecterDIY(), new Krux()); + List keystoreImporters = List.of(new ColdcardSinglesig(), new CoboVaultSinglesig(), new Jade(), new KeystoneSinglesig(), new PassportSinglesig(), new GordianSeedTool(), new SeedSigner(), new SpecterDIY(), new Krux(), new AirGapVault()); for(KeystoreFileImport importer : keystoreImporters) { if(!importer.isDeprecated() || Config.get().isShowDeprecatedImportExport()) { FileWalletKeystoreImportPane importPane = new FileWalletKeystoreImportPane(importer); diff --git a/src/main/java/com/sparrowwallet/sparrow/io/AirGapVault.java b/src/main/java/com/sparrowwallet/sparrow/io/AirGapVault.java new file mode 100644 index 00000000..8ccb8be8 --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/io/AirGapVault.java @@ -0,0 +1,35 @@ +package com.sparrowwallet.sparrow.io; + +import com.sparrowwallet.drongo.wallet.WalletModel; + +public class AirGapVault extends KeystoneSinglesig { + @Override + public String getName() { + return "AirGap Vault"; + } + + @Override + public String getKeystoreImportDescription(int account) { + return "Import QR created on your AirGap Vault, by selecting the Secret > Account > Sparrow Wallet"; + } + + @Override + public WalletModel getWalletModel() { + return WalletModel.AIRGAP_VAULT; + } + + @Override + public boolean isFileFormatAvailable() { + return false; + } + + @Override + public boolean isWalletImportFileFormatAvailable() { + return false; + } + + @Override + public boolean isDeprecated() { + return true; + } +} diff --git a/src/main/java/com/sparrowwallet/sparrow/keystoreimport/HwAirgappedController.java b/src/main/java/com/sparrowwallet/sparrow/keystoreimport/HwAirgappedController.java index d91bd691..1cb4b71b 100644 --- a/src/main/java/com/sparrowwallet/sparrow/keystoreimport/HwAirgappedController.java +++ b/src/main/java/com/sparrowwallet/sparrow/keystoreimport/HwAirgappedController.java @@ -25,7 +25,7 @@ public class HwAirgappedController extends KeystoreImportDetailController { public void initializeView() { List fileImporters = Collections.emptyList(); if(getMasterController().getWallet().getPolicyType().equals(PolicyType.SINGLE)) { - fileImporters = List.of(new ColdcardSinglesig(), new CoboVaultSinglesig(), new Jade(), new KeystoneSinglesig(), new PassportSinglesig(), new SeedSigner(), new GordianSeedTool(), new SpecterDIY(), new Krux()); + fileImporters = List.of(new ColdcardSinglesig(), new CoboVaultSinglesig(), new Jade(), new KeystoneSinglesig(), new PassportSinglesig(), new SeedSigner(), new GordianSeedTool(), new SpecterDIY(), new Krux(), new AirGapVault()); } else if(getMasterController().getWallet().getPolicyType().equals(PolicyType.MULTI)) { fileImporters = List.of(new Bip129(), new ColdcardMultisig(), new CoboVaultMultisig(), new Jade(), new KeystoneMultisig(), new PassportMultisig(), new SeedSigner(), new GordianSeedTool(), new SpecterDIY(), new Krux()); } diff --git a/src/main/resources/image/airgapvault-icon-invert.svg b/src/main/resources/image/airgapvault-icon-invert.svg new file mode 100644 index 00000000..b02c356e --- /dev/null +++ b/src/main/resources/image/airgapvault-icon-invert.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/resources/image/airgapvault-icon.svg b/src/main/resources/image/airgapvault-icon.svg new file mode 100644 index 00000000..47aef9d0 --- /dev/null +++ b/src/main/resources/image/airgapvault-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/resources/image/airgapvault.png b/src/main/resources/image/airgapvault.png new file mode 100644 index 0000000000000000000000000000000000000000..2925707b7d24463d26b069b71d73a75931f67d1c GIT binary patch literal 1340 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