mirror of
https://github.com/sparrowwallet/drongo.git
synced 2024-12-26 01:56:44 +00:00
improve renaming wallet keystore labels for uniqueness
This commit is contained in:
parent
bae4ce6605
commit
2b7b650fae
2 changed files with 16 additions and 4 deletions
|
@ -1773,8 +1773,11 @@ public class Wallet extends Persistable implements Comparable<Wallet> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void makeLabelsUnique(Keystore newKeystore) {
|
public void makeLabelsUnique(Keystore newKeystore) {
|
||||||
|
Set<String> labels = getKeystores().stream().map(Keystore::getLabel).collect(Collectors.toSet());
|
||||||
|
if(!labels.add(newKeystore.getLabel())) {
|
||||||
makeLabelsUnique(newKeystore, false);
|
makeLabelsUnique(newKeystore, false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private int makeLabelsUnique(Keystore newKeystore, boolean duplicateFound) {
|
private int makeLabelsUnique(Keystore newKeystore, boolean duplicateFound) {
|
||||||
int max = 0;
|
int max = 0;
|
||||||
|
@ -1800,6 +1803,8 @@ public class Wallet extends Persistable implements Comparable<Wallet> {
|
||||||
max++;
|
max++;
|
||||||
if(newKeystore.getLabel().equals(Keystore.DEFAULT_LABEL)) {
|
if(newKeystore.getLabel().equals(Keystore.DEFAULT_LABEL)) {
|
||||||
newKeystore.setLabel(Keystore.DEFAULT_LABEL.substring(0, Keystore.DEFAULT_LABEL.length() - 2) + " " + max);
|
newKeystore.setLabel(Keystore.DEFAULT_LABEL.substring(0, Keystore.DEFAULT_LABEL.length() - 2) + " " + max);
|
||||||
|
} else if(newKeystore.getLabel().length() + Integer.toString(max).length() + 1 > Keystore.MAX_LABEL_LENGTH) {
|
||||||
|
newKeystore.setLabel(newKeystore.getLabel().substring(0, Keystore.MAX_LABEL_LENGTH - (Integer.toString(max).length() + 1)) + " " + max);
|
||||||
} else {
|
} else {
|
||||||
newKeystore.setLabel(newKeystore.getLabel() + " " + max);
|
newKeystore.setLabel(newKeystore.getLabel() + " " + max);
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,12 +85,19 @@ public class WalletTest {
|
||||||
wallet.getKeystores().add(defaultKeystore3);
|
wallet.getKeystores().add(defaultKeystore3);
|
||||||
Keystore defaultKeystore4 = new Keystore("Keystore");
|
Keystore defaultKeystore4 = new Keystore("Keystore");
|
||||||
wallet.makeLabelsUnique(defaultKeystore4);
|
wallet.makeLabelsUnique(defaultKeystore4);
|
||||||
Assert.assertEquals("Keystore 4", defaultKeystore4.getLabel());
|
Assert.assertEquals("Keystore", defaultKeystore4.getLabel());
|
||||||
wallet.getKeystores().add(defaultKeystore4);
|
wallet.getKeystores().add(defaultKeystore4);
|
||||||
Keystore defaultKeystore5 = new Keystore("Keystore 4");
|
Keystore defaultKeystore5 = new Keystore("Keystore 3");
|
||||||
wallet.makeLabelsUnique(defaultKeystore5);
|
wallet.makeLabelsUnique(defaultKeystore5);
|
||||||
Assert.assertEquals("Keystore 4 2", defaultKeystore5.getLabel());
|
Assert.assertEquals("Keystore 3 2", defaultKeystore5.getLabel());
|
||||||
wallet.getKeystores().add(defaultKeystore5);
|
wallet.getKeystores().add(defaultKeystore5);
|
||||||
|
|
||||||
|
Keystore longKeystore1 = new Keystore("1234567890ABCDEFG");
|
||||||
|
wallet.getKeystores().add(longKeystore1);
|
||||||
|
Keystore longKeystore2 = new Keystore("1234567890ABCDEFG");
|
||||||
|
wallet.makeLabelsUnique(longKeystore2);
|
||||||
|
Assert.assertEquals("1234567890ABCD 1", longKeystore1.getLabel());
|
||||||
|
Assert.assertEquals("1234567890ABCD 2", longKeystore2.getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in a new issue