use compact parameter to improve paynym search performance

This commit is contained in:
Craig Raw 2022-08-24 11:46:53 +02:00
parent c24f953e52
commit b8979ed8b0
2 changed files with 12 additions and 4 deletions

View file

@ -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<PayNym> searchList = new ArrayList<>();
searchList.add(searchedPayNym);

View file

@ -191,14 +191,14 @@ public class PayNymService {
.map(Optional::get);
}
public Observable<Map<String, Object>> fetchPayNym(String nymIdentifier) {
public Observable<Map<String, Object>> fetchPayNym(String nymIdentifier, boolean compact) {
Map<String, String> headers = new HashMap<>();
headers.put("content-type", "application/json");
HashMap<String, Object> 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<PayNym> getPayNym(String nymIdentifier) {
return fetchPayNym(nymIdentifier).map(nymMap -> {
return getPayNym(nymIdentifier, false);
}
public Observable<PayNym> getPayNym(String nymIdentifier, boolean compact) {
return fetchPayNym(nymIdentifier, compact).map(nymMap -> {
List<Map<String, Object>> codes = (List<Map<String, Object>>)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<Map<String, Object>> followingMaps = (List<Map<String, Object>>)nymMap.get("following");
List<PayNym> 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());