From 0f05502af6a82ec845c6c62d0cab28c3be8397b6 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Fri, 1 Mar 2024 09:51:23 +0200 Subject: [PATCH] allow adding additional accounts (up to account 30) if accounts 0-9 have already been added --- .../com/sparrowwallet/sparrow/control/AddAccountDialog.java | 4 +++- .../java/com/sparrowwallet/sparrow/net/ElectrumServer.java | 6 +++--- .../sparrow/terminal/wallet/AddAccountDialog.java | 4 +++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/control/AddAccountDialog.java b/src/main/java/com/sparrowwallet/sparrow/control/AddAccountDialog.java index eb6941b8..82349787 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/AddAccountDialog.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/AddAccountDialog.java @@ -20,6 +20,8 @@ import java.util.List; import static com.sparrowwallet.drongo.wallet.StandardAccount.*; public class AddAccountDialog extends Dialog> { + private static final int MAX_SHOWN_ACCOUNTS = 8; + private final ComboBox standardAccountCombo; private boolean discoverAccounts = false; @@ -55,7 +57,7 @@ public class AddAccountDialog extends Dialog> { List availableAccounts = new ArrayList<>(); for(StandardAccount standardAccount : StandardAccount.values()) { - if(!existingIndexes.contains(standardAccount.getAccountNumber()) && !StandardAccount.isWhirlpoolAccount(standardAccount)) { + if(!existingIndexes.contains(standardAccount.getAccountNumber()) && !StandardAccount.isWhirlpoolAccount(standardAccount) && availableAccounts.size() <= MAX_SHOWN_ACCOUNTS) { availableAccounts.add(standardAccount); } } diff --git a/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java b/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java index 14efcef8..0424ed9b 100644 --- a/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java +++ b/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java @@ -1702,7 +1702,7 @@ public class ElectrumServer { for(int i = 0; i < wallets.size(); i++) { Wallet wallet = wallets.get(i); - updateProgress(i, wallets.size() + StandardAccount.values().length); + updateProgress(i, wallets.size() + StandardAccount.DISCOVERY_ACCOUNTS.size()); Map> nodeTransactionMap = new TreeMap<>(); electrumServer.getReferences(wallet, wallet.getNode(KeyPurpose.RECEIVE).getChildren(), nodeTransactionMap, 0); if(nodeTransactionMap.values().stream().anyMatch(blockTransactionHashes -> !blockTransactionHashes.isEmpty())) { @@ -1721,7 +1721,7 @@ public class ElectrumServer { foundAccounts.add(standardAccount); } } - updateProgress(i + j, wallets.size() + StandardAccount.values().length); + updateProgress(i + j, wallets.size() + StandardAccount.DISCOVERY_ACCOUNTS.size()); } for(StandardAccount standardAccount : foundAccounts) { @@ -1743,7 +1743,7 @@ public class ElectrumServer { } List accounts = new ArrayList<>(); - for(StandardAccount account : StandardAccount.values()) { + for(StandardAccount account : StandardAccount.DISCOVERY_ACCOUNTS) { if(account != StandardAccount.ACCOUNT_0 && (!StandardAccount.isWhirlpoolAccount(account) || wallet.getScriptType() == ScriptType.P2WPKH)) { accounts.add(account); } diff --git a/src/main/java/com/sparrowwallet/sparrow/terminal/wallet/AddAccountDialog.java b/src/main/java/com/sparrowwallet/sparrow/terminal/wallet/AddAccountDialog.java index 0d886fd4..24badd42 100644 --- a/src/main/java/com/sparrowwallet/sparrow/terminal/wallet/AddAccountDialog.java +++ b/src/main/java/com/sparrowwallet/sparrow/terminal/wallet/AddAccountDialog.java @@ -11,6 +11,8 @@ import java.util.ArrayList; import java.util.List; final class AddAccountDialog extends DialogWindow { + private static final int MAX_SHOWN_ACCOUNTS = 8; + private ComboBox standardAccounts; private StandardAccount standardAccount; @@ -40,7 +42,7 @@ final class AddAccountDialog extends DialogWindow { List availableAccounts = new ArrayList<>(); for(StandardAccount standardAccount : StandardAccount.values()) { - if(!existingIndexes.contains(standardAccount.getAccountNumber()) && !StandardAccount.isWhirlpoolAccount(standardAccount)) { + if(!existingIndexes.contains(standardAccount.getAccountNumber()) && !StandardAccount.isWhirlpoolAccount(standardAccount) && availableAccounts.size() <= MAX_SHOWN_ACCOUNTS) { availableAccounts.add(standardAccount); } }