From d899e84ddc79629b2bcb0c225926a16a7875d2fd Mon Sep 17 00:00:00 2001 From: yonson2023 <122909161+yonson2023@users.noreply.github.com> Date: Mon, 11 Dec 2023 12:27:09 -0600 Subject: [PATCH] Add HolderName to Pix account. --- .../core/payment/payload/PaymentAccountPayload.java | 1 + .../core/payment/payload/PixAccountPayload.java | 13 ++++++++++--- .../desktop/components/paymentmethods/PixForm.java | 13 +++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/bisq/core/payment/payload/PaymentAccountPayload.java b/core/src/main/java/bisq/core/payment/payload/PaymentAccountPayload.java index e766931db9c..27250705344 100644 --- a/core/src/main/java/bisq/core/payment/payload/PaymentAccountPayload.java +++ b/core/src/main/java/bisq/core/payment/payload/PaymentAccountPayload.java @@ -136,6 +136,7 @@ public String getHolderName() { } public void setHolderName(String holderName) { + // an empty string must result in the mapping removing the entry. excludeFromJsonDataMap.compute(HOLDER_NAME, (k, v) -> Strings.emptyToNull(holderName)); } diff --git a/core/src/main/java/bisq/core/payment/payload/PixAccountPayload.java b/core/src/main/java/bisq/core/payment/payload/PixAccountPayload.java index 9393c4b0e3e..b444fa5c0cf 100644 --- a/core/src/main/java/bisq/core/payment/payload/PixAccountPayload.java +++ b/core/src/main/java/bisq/core/payment/payload/PixAccountPayload.java @@ -21,6 +21,8 @@ import com.google.protobuf.Message; +import org.apache.commons.lang3.ArrayUtils; + import java.nio.charset.StandardCharsets; import java.util.HashMap; @@ -84,16 +86,21 @@ public static PixAccountPayload fromProto(protobuf.PaymentAccountPayload proto) @Override public String getPaymentDetails() { - return Res.get(paymentMethodId) + " - " + Res.getWithCol("payment.pix.key") + " " + pixKey; + return Res.get(paymentMethodId) + " - " + getPaymentDetailsForTradePopup().replace("\n", ", "); } @Override public String getPaymentDetailsForTradePopup() { - return getPaymentDetails(); + return (getHolderName().isEmpty() ? "" : Res.getWithCol("payment.account.owner") + " " + getHolderName() + "\n") + + Res.getWithCol("payment.pix.key") + " " + pixKey; } @Override public byte[] getAgeWitnessInputData() { - return super.getAgeWitnessInputData(pixKey.getBytes(StandardCharsets.UTF_8)); + // holderName will be included as part of the witness data. + // older accounts that don't have holderName still retain their existing witness. + return super.getAgeWitnessInputData(ArrayUtils.addAll( + pixKey.getBytes(StandardCharsets.UTF_8), + getHolderName().getBytes(StandardCharsets.UTF_8))); } } diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/PixForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/PixForm.java index 342087e6d0d..945198a088f 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/PixForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/PixForm.java @@ -45,6 +45,8 @@ public static int addFormForBuyer(GridPane gridPane, int gridRow, PaymentAccountPayload paymentAccountPayload) { addTopLabelTextFieldWithCopyIcon(gridPane, gridRow, 1, Res.get("payment.pix.key"), ((PixAccountPayload) paymentAccountPayload).getPixKey(), Layout.COMPACT_FIRST_ROW_AND_GROUP_DISTANCE); + addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.account.owner"), + paymentAccountPayload.getHolderName()); return gridRow; } @@ -70,6 +72,14 @@ public void addFormForAddAccount() { updateFromInputs(); }); + InputTextField holderNameInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, + Res.get("payment.account.owner")); + holderNameInputTextField.setValidator(inputValidator); + holderNameInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { + account.setHolderName(newValue); + updateFromInputs(); + }); + addTopLabelTextField(gridPane, ++gridRow, Res.get("shared.currency"), account.getSingleTradeCurrency().getNameAndCode()); addTopLabelTextField(gridPane, ++gridRow, Res.get("shared.country"), account.getCountry().name); addLimitations(false); @@ -90,6 +100,8 @@ public void addFormForEditAccount() { TextField field = addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.pix.key"), account.getPixKey()).second; field.setMouseTransparent(false); + addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.account.owner"), + account.getHolderName()); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.currency"), account.getSingleTradeCurrency().getNameAndCode()); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.country"), account.getCountry().name); addLimitations(true); @@ -98,6 +110,7 @@ public void addFormForEditAccount() { @Override public void updateAllInputsValid() { allInputsValid.set(isAccountNameValid() + && inputValidator.validate(account.getHolderName()).isValid && inputValidator.validate(account.getPixKey()).isValid); } }