mirror of
https://github.com/sparrowwallet/drongo.git
synced 2024-12-25 09:36: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) {
|
||||
Set<String> labels = getKeystores().stream().map(Keystore::getLabel).collect(Collectors.toSet());
|
||||
if(!labels.add(newKeystore.getLabel())) {
|
||||
makeLabelsUnique(newKeystore, false);
|
||||
}
|
||||
}
|
||||
|
||||
private int makeLabelsUnique(Keystore newKeystore, boolean duplicateFound) {
|
||||
int max = 0;
|
||||
|
@ -1800,6 +1803,8 @@ public class Wallet extends Persistable implements Comparable<Wallet> {
|
|||
max++;
|
||||
if(newKeystore.getLabel().equals(Keystore.DEFAULT_LABEL)) {
|
||||
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 {
|
||||
newKeystore.setLabel(newKeystore.getLabel() + " " + max);
|
||||
}
|
||||
|
|
|
@ -85,12 +85,19 @@ public class WalletTest {
|
|||
wallet.getKeystores().add(defaultKeystore3);
|
||||
Keystore defaultKeystore4 = new Keystore("Keystore");
|
||||
wallet.makeLabelsUnique(defaultKeystore4);
|
||||
Assert.assertEquals("Keystore 4", defaultKeystore4.getLabel());
|
||||
Assert.assertEquals("Keystore", defaultKeystore4.getLabel());
|
||||
wallet.getKeystores().add(defaultKeystore4);
|
||||
Keystore defaultKeystore5 = new Keystore("Keystore 4");
|
||||
Keystore defaultKeystore5 = new Keystore("Keystore 3");
|
||||
wallet.makeLabelsUnique(defaultKeystore5);
|
||||
Assert.assertEquals("Keystore 4 2", defaultKeystore5.getLabel());
|
||||
Assert.assertEquals("Keystore 3 2", defaultKeystore5.getLabel());
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue