Browse Source

allow any linked paynym contact to be renamed

terminal
Craig Raw 3 years ago
parent
commit
c02da607e7
  1. 2
      src/main/java/com/sparrowwallet/sparrow/control/PayNymCell.java
  2. 15
      src/main/java/com/sparrowwallet/sparrow/paynym/PayNym.java
  3. 15
      src/main/java/com/sparrowwallet/sparrow/paynym/PayNymController.java

2
src/main/java/com/sparrowwallet/sparrow/control/PayNymCell.java

@ -89,7 +89,7 @@ public class PayNymCell extends ListCell<PayNym> {
setText(null); setText(null);
setGraphic(pane); setGraphic(pane);
if(payNymController != null && payNym.nymId() == null) { if(payNymController != null && payNymController.isLinked(payNym)) {
setContextMenu(new PayNymCellContextMenu(payNym)); setContextMenu(new PayNymCellContextMenu(payNym));
} else { } else {
setContextMenu(null); setContextMenu(null);

15
src/main/java/com/sparrowwallet/sparrow/paynym/PayNym.java

@ -84,14 +84,23 @@ public class PayNym {
PaymentCode externalPaymentCode = bip47Wallet.getKeystores().get(0).getExternalPaymentCode(); PaymentCode externalPaymentCode = bip47Wallet.getKeystores().get(0).getExternalPaymentCode();
String nymName = externalPaymentCode.toAbbreviatedString(); String nymName = externalPaymentCode.toAbbreviatedString();
String walletNymName = getNymName(bip47Wallet);
if(walletNymName != null) {
nymName = walletNymName;
}
boolean segwit = bip47Wallet.getScriptType() != ScriptType.P2PKH;
return new PayNym(externalPaymentCode, null, nymName, segwit, Collections.emptyList(), Collections.emptyList());
}
public static String getNymName(Wallet bip47Wallet) {
if(bip47Wallet.getLabel() != null) { if(bip47Wallet.getLabel() != null) {
String suffix = " " + bip47Wallet.getScriptType().getName(); String suffix = " " + bip47Wallet.getScriptType().getName();
if(bip47Wallet.getLabel().endsWith(suffix)) { if(bip47Wallet.getLabel().endsWith(suffix)) {
nymName = bip47Wallet.getLabel().substring(0, bip47Wallet.getLabel().length() - suffix.length()); return bip47Wallet.getLabel().substring(0, bip47Wallet.getLabel().length() - suffix.length());
} }
} }
boolean segwit = bip47Wallet.getScriptType() != ScriptType.P2PKH; return null;
return new PayNym(externalPaymentCode, null, nymName, segwit, Collections.emptyList(), Collections.emptyList());
} }
} }

15
src/main/java/com/sparrowwallet/sparrow/paynym/PayNymController.java

@ -317,25 +317,24 @@ public class PayNymController {
followingPayNyms.addAll(walletPayNym.following()); followingPayNyms.addAll(walletPayNym.following());
} }
Map<PaymentCode, PayNym> followingPayNymMap = followingPayNyms.stream().collect(Collectors.toMap(PayNym::paymentCode, Function.identity())); Map<PaymentCode, PayNym> payNymMap = followingPayNyms.stream().collect(Collectors.toMap(PayNym::paymentCode, Function.identity(), (u, v) -> u, LinkedHashMap::new));
followingPayNyms.addAll(getExistingWalletPayNyms(followingPayNymMap)); followingList.setItems(FXCollections.observableList(getExistingWalletPayNyms(payNymMap)));
followingList.setItems(FXCollections.observableList(followingPayNyms));
} }
private List<PayNym> getExistingWalletPayNyms(Map<PaymentCode, PayNym> followingPayNymMap) { private List<PayNym> getExistingWalletPayNyms(Map<PaymentCode, PayNym> payNymMap) {
Map<PaymentCode, PayNym> existingPayNyms = new LinkedHashMap<>();
List<Wallet> childWallets = new ArrayList<>(getMasterWallet().getChildWallets()); List<Wallet> childWallets = new ArrayList<>(getMasterWallet().getChildWallets());
childWallets.sort(Comparator.comparingInt(o -> -o.getScriptType().ordinal())); childWallets.sort(Comparator.comparingInt(o -> -o.getScriptType().ordinal()));
for(Wallet childWallet : childWallets) { for(Wallet childWallet : childWallets) {
if(childWallet.isBip47()) { if(childWallet.isBip47()) {
PaymentCode externalPaymentCode = childWallet.getKeystores().get(0).getExternalPaymentCode(); PaymentCode externalPaymentCode = childWallet.getKeystores().get(0).getExternalPaymentCode();
if(!existingPayNyms.containsKey(externalPaymentCode) && !followingPayNymMap.containsKey(externalPaymentCode)) { String walletNymName = PayNym.getNymName(childWallet);
existingPayNyms.put(externalPaymentCode, PayNym.fromWallet(childWallet)); if(payNymMap.get(externalPaymentCode) == null || (walletNymName != null && !walletNymName.equals(payNymMap.get(externalPaymentCode).nymName()))) {
payNymMap.put(externalPaymentCode, PayNym.fromWallet(childWallet));
} }
} }
} }
return new ArrayList<>(existingPayNyms.values()); return new ArrayList<>(payNymMap.values());
} }
private void addWalletIfNotificationTransactionPresent(List<PayNym> following) { private void addWalletIfNotificationTransactionPresent(List<PayNym> following) {

Loading…
Cancel
Save