From b8979ed8b076b015a92221ae15ee6715f06dea83 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Wed, 24 Aug 2022 11:46:53 +0200 Subject: [PATCH] use compact parameter to improve paynym search performance --- .../sparrow/paynym/PayNymController.java | 2 +- .../sparrow/paynym/PayNymService.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymController.java b/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymController.java index ef474c22..538afb22 100644 --- a/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymController.java +++ b/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymController.java @@ -229,7 +229,7 @@ public class PayNymController { followingList.setItems(FXCollections.observableList(new ArrayList<>())); findPayNym.setVisible(true); - AppServices.getPayNymService().getPayNym(nymIdentifier).subscribe(searchedPayNym -> { + AppServices.getPayNymService().getPayNym(nymIdentifier, true).subscribe(searchedPayNym -> { findPayNym.setVisible(false); List searchList = new ArrayList<>(); searchList.add(searchedPayNym); diff --git a/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymService.java b/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymService.java index 447ce041..536c2a63 100644 --- a/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymService.java +++ b/src/main/java/com/sparrowwallet/sparrow/paynym/PayNymService.java @@ -191,14 +191,14 @@ public class PayNymService { .map(Optional::get); } - public Observable> fetchPayNym(String nymIdentifier) { + public Observable> fetchPayNym(String nymIdentifier, boolean compact) { Map headers = new HashMap<>(); headers.put("content-type", "application/json"); HashMap body = new HashMap<>(); body.put("nym", nymIdentifier); - String url = getHostUrl() + "/api/v1/nym"; + String url = getHostUrl() + "/api/v1/nym" + (compact ? "?compact=true" : ""); if(log.isInfoEnabled()) { log.info("Fetching PayNym using " + url); } @@ -211,10 +211,18 @@ public class PayNymService { } public Observable getPayNym(String nymIdentifier) { - return fetchPayNym(nymIdentifier).map(nymMap -> { + return getPayNym(nymIdentifier, false); + } + + public Observable getPayNym(String nymIdentifier, boolean compact) { + return fetchPayNym(nymIdentifier, compact).map(nymMap -> { List> codes = (List>)nymMap.get("codes"); PaymentCode code = new PaymentCode((String)codes.stream().filter(codeMap -> codeMap.get("segwit") == Boolean.FALSE).map(codeMap -> codeMap.get("code")).findFirst().orElse(codes.get(0).get("code"))); + if(compact) { + return new PayNym(code, (String)nymMap.get("nymID"), (String)nymMap.get("nymName"), (Boolean)nymMap.get("segwit"), Collections.emptyList(), Collections.emptyList()); + } + List> followingMaps = (List>)nymMap.get("following"); List following = followingMaps.stream().map(followingMap -> { return PayNym.fromString((String)followingMap.get("code"), (String)followingMap.get("nymId"), (String)followingMap.get("nymName"), (Boolean)followingMap.get("segwit"), Collections.emptyList(), Collections.emptyList());