mirror of
https://github.com/sparrowwallet/drongo.git
synced 2024-12-27 02:26:44 +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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(policyType.equals(PolicyType.MULTI) && (numSigs <= 1 || numSigs > keystores.size())) {
|
if(policyType.equals(PolicyType.MULTI) && (numSigs < 1 || numSigs > keystores.size())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -819,9 +819,10 @@ public class Wallet {
|
||||||
private int makeLabelsUnique(Keystore newKeystore, boolean duplicateFound) {
|
private int makeLabelsUnique(Keystore newKeystore, boolean duplicateFound) {
|
||||||
int max = 0;
|
int max = 0;
|
||||||
for(Keystore keystore : getKeystores()) {
|
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;
|
duplicateFound = true;
|
||||||
String remainder = keystore.getLabel().substring(newKeystore.getLabel().length());
|
String remainder = keystore.getLabel().substring(newKeystoreLabel.length());
|
||||||
if(remainder.length() == 0) {
|
if(remainder.length() == 0) {
|
||||||
max = makeLabelsUnique(keystore, true);
|
max = makeLabelsUnique(keystore, true);
|
||||||
} else {
|
} else {
|
||||||
|
@ -837,7 +838,11 @@ public class Wallet {
|
||||||
|
|
||||||
if(duplicateFound) {
|
if(duplicateFound) {
|
||||||
max++;
|
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;
|
return max;
|
||||||
|
|
|
@ -66,6 +66,25 @@ public class WalletTest {
|
||||||
wallet.makeLabelsUnique(eekeystore2);
|
wallet.makeLabelsUnique(eekeystore2);
|
||||||
Assert.assertEquals("Electrum 1", eekeystore.getLabel());
|
Assert.assertEquals("Electrum 1", eekeystore.getLabel());
|
||||||
Assert.assertEquals("Electrum 2", eekeystore2.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
|
@Test
|
||||||
|
|
Loading…
Reference in a new issue