mirror of
https://github.com/sparrowwallet/drongo.git
synced 2024-12-26 18:16:45 +00:00
handle keystore default label deduping better, validate 1of1 wallets
This commit is contained in:
parent
08c159ebad
commit
488752c142
2 changed files with 28 additions and 4 deletions
|
@ -776,7 +776,7 @@ public class Wallet {
|
|||
return false;
|
||||
}
|
||||
|
||||
if(policyType.equals(PolicyType.MULTI) && (numSigs <= 1 || numSigs > keystores.size())) {
|
||||
if(policyType.equals(PolicyType.MULTI) && (numSigs < 1 || numSigs > keystores.size())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -819,9 +819,10 @@ public class Wallet {
|
|||
private int makeLabelsUnique(Keystore newKeystore, boolean duplicateFound) {
|
||||
int max = 0;
|
||||
for(Keystore keystore : getKeystores()) {
|
||||
if(newKeystore != keystore && keystore.getLabel().startsWith(newKeystore.getLabel())) {
|
||||
String newKeystoreLabel = newKeystore.getLabel().equals(Keystore.DEFAULT_LABEL) ? Keystore.DEFAULT_LABEL.substring(0, Keystore.DEFAULT_LABEL.length() - 2) : newKeystore.getLabel();
|
||||
if(newKeystore != keystore && keystore.getLabel().startsWith(newKeystoreLabel)) {
|
||||
duplicateFound = true;
|
||||
String remainder = keystore.getLabel().substring(newKeystore.getLabel().length());
|
||||
String remainder = keystore.getLabel().substring(newKeystoreLabel.length());
|
||||
if(remainder.length() == 0) {
|
||||
max = makeLabelsUnique(keystore, true);
|
||||
} else {
|
||||
|
@ -837,7 +838,11 @@ public class Wallet {
|
|||
|
||||
if(duplicateFound) {
|
||||
max++;
|
||||
newKeystore.setLabel(newKeystore.getLabel() + " " + max);
|
||||
if(newKeystore.getLabel().equals(Keystore.DEFAULT_LABEL)) {
|
||||
newKeystore.setLabel(Keystore.DEFAULT_LABEL.substring(0, Keystore.DEFAULT_LABEL.length() - 2) + " " + max);
|
||||
} else {
|
||||
newKeystore.setLabel(newKeystore.getLabel() + " " + max);
|
||||
}
|
||||
}
|
||||
|
||||
return max;
|
||||
|
|
|
@ -66,6 +66,25 @@ public class WalletTest {
|
|||
wallet.makeLabelsUnique(eekeystore2);
|
||||
Assert.assertEquals("Electrum 1", eekeystore.getLabel());
|
||||
Assert.assertEquals("Electrum 2", eekeystore2.getLabel());
|
||||
|
||||
Keystore defaultKeystore = new Keystore();
|
||||
wallet.getKeystores().add(defaultKeystore);
|
||||
Keystore defaultKeystore2 = new Keystore();
|
||||
wallet.makeLabelsUnique(defaultKeystore2);
|
||||
Assert.assertEquals("Keystore 2", defaultKeystore2.getLabel());
|
||||
wallet.getKeystores().add(defaultKeystore2);
|
||||
Keystore defaultKeystore3 = new Keystore();
|
||||
wallet.makeLabelsUnique(defaultKeystore3);
|
||||
Assert.assertEquals("Keystore 3", defaultKeystore3.getLabel());
|
||||
wallet.getKeystores().add(defaultKeystore3);
|
||||
Keystore defaultKeystore4 = new Keystore("Keystore");
|
||||
wallet.makeLabelsUnique(defaultKeystore4);
|
||||
Assert.assertEquals("Keystore 4", defaultKeystore4.getLabel());
|
||||
wallet.getKeystores().add(defaultKeystore4);
|
||||
Keystore defaultKeystore5 = new Keystore("Keystore 4");
|
||||
wallet.makeLabelsUnique(defaultKeystore5);
|
||||
Assert.assertEquals("Keystore 4 2", defaultKeystore5.getLabel());
|
||||
wallet.getKeystores().add(defaultKeystore5);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in a new issue