Include owner name for Monese & Satispay accounts

This commit is contained in:
jmacxx 2021-10-31 13:52:33 -05:00 committed by Christoph Atteneder
parent 6f41558ae0
commit f5c653b92a
No known key found for this signature in database
GPG key ID: CD5DC1C529CDFD3B
6 changed files with 68 additions and 20 deletions

View file

@ -34,6 +34,14 @@ public final class MoneseAccount extends PaymentAccount {
return new MoneseAccountPayload(paymentMethod.getId(), id); return new MoneseAccountPayload(paymentMethod.getId(), id);
} }
public void setHolderName(String accountId) {
((MoneseAccountPayload) paymentAccountPayload).setHolderName(accountId);
}
public String getHolderName() {
return ((MoneseAccountPayload) paymentAccountPayload).getHolderName();
}
public void setMobileNr(String accountId) { public void setMobileNr(String accountId) {
((MoneseAccountPayload) paymentAccountPayload).setMobileNr(accountId); ((MoneseAccountPayload) paymentAccountPayload).setMobileNr(accountId);
} }

View file

@ -34,6 +34,14 @@ public final class SatispayAccount extends CountryBasedPaymentAccount {
return new SatispayAccountPayload(paymentMethod.getId(), id); return new SatispayAccountPayload(paymentMethod.getId(), id);
} }
public void setHolderName(String accountId) {
((SatispayAccountPayload) paymentAccountPayload).setHolderName(accountId);
}
public String getHolderName() {
return ((SatispayAccountPayload) paymentAccountPayload).getHolderName();
}
public void setMobileNr(String accountId) { public void setMobileNr(String accountId) {
((SatispayAccountPayload) paymentAccountPayload).setMobileNr(accountId); ((SatispayAccountPayload) paymentAccountPayload).setMobileNr(accountId);
} }

View file

@ -38,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
@Getter @Getter
@Slf4j @Slf4j
public final class MoneseAccountPayload extends PaymentAccountPayload { public final class MoneseAccountPayload extends PaymentAccountPayload {
private String holderName = "";
private String mobileNr = ""; private String mobileNr = "";
public MoneseAccountPayload(String paymentMethod, String id) { public MoneseAccountPayload(String paymentMethod, String id) {
@ -46,6 +47,7 @@ public final class MoneseAccountPayload extends PaymentAccountPayload {
private MoneseAccountPayload(String paymentMethod, private MoneseAccountPayload(String paymentMethod,
String id, String id,
String holderName,
String mobileNr, String mobileNr,
long maxTradePeriod, long maxTradePeriod,
Map<String, String> excludeFromJsonDataMap) { Map<String, String> excludeFromJsonDataMap) {
@ -54,19 +56,23 @@ public final class MoneseAccountPayload extends PaymentAccountPayload {
maxTradePeriod, maxTradePeriod,
excludeFromJsonDataMap); excludeFromJsonDataMap);
this.holderName = holderName;
this.mobileNr = mobileNr; this.mobileNr = mobileNr;
} }
@Override @Override
public Message toProtoMessage() { public Message toProtoMessage() {
return getPaymentAccountPayloadBuilder() return getPaymentAccountPayloadBuilder()
.setMoneseAccountPayload(protobuf.MoneseAccountPayload.newBuilder().setMobileNr(mobileNr)) .setMoneseAccountPayload(protobuf.MoneseAccountPayload.newBuilder()
.setHolderName(holderName)
.setMobileNr(mobileNr))
.build(); .build();
} }
public static MoneseAccountPayload fromProto(protobuf.PaymentAccountPayload proto) { public static MoneseAccountPayload fromProto(protobuf.PaymentAccountPayload proto) {
return new MoneseAccountPayload(proto.getPaymentMethodId(), return new MoneseAccountPayload(proto.getPaymentMethodId(),
proto.getId(), proto.getId(),
proto.getMoneseAccountPayload().getHolderName(),
proto.getMoneseAccountPayload().getMobileNr(), proto.getMoneseAccountPayload().getMobileNr(),
proto.getMaxTradePeriod(), proto.getMaxTradePeriod(),
new HashMap<>(proto.getExcludeFromJsonDataMap())); new HashMap<>(proto.getExcludeFromJsonDataMap()));
@ -74,7 +80,7 @@ public final class MoneseAccountPayload extends PaymentAccountPayload {
@Override @Override
public String getPaymentDetails() { public String getPaymentDetails() {
return Res.get(paymentMethodId) + " - " + Res.getWithCol("payment.mobile") + " " + mobileNr; return Res.get(paymentMethodId) + " - " + Res.getWithCol("payment.account.userName") + " " + holderName;
} }
@Override @Override
@ -84,6 +90,6 @@ public final class MoneseAccountPayload extends PaymentAccountPayload {
@Override @Override
public byte[] getAgeWitnessInputData() { public byte[] getAgeWitnessInputData() {
return super.getAgeWitnessInputData(mobileNr.getBytes(StandardCharsets.UTF_8)); return super.getAgeWitnessInputData(holderName.getBytes(StandardCharsets.UTF_8));
} }
} }

View file

@ -38,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
@Getter @Getter
@Slf4j @Slf4j
public final class SatispayAccountPayload extends CountryBasedPaymentAccountPayload { public final class SatispayAccountPayload extends CountryBasedPaymentAccountPayload {
private String holderName = "";
private String mobileNr = ""; private String mobileNr = "";
public SatispayAccountPayload(String paymentMethod, String id) { public SatispayAccountPayload(String paymentMethod, String id) {
@ -47,6 +48,7 @@ public final class SatispayAccountPayload extends CountryBasedPaymentAccountPayl
private SatispayAccountPayload(String paymentMethod, private SatispayAccountPayload(String paymentMethod,
String id, String id,
String countryCode, String countryCode,
String holderName,
String mobileNr, String mobileNr,
long maxTradePeriod, long maxTradePeriod,
Map<String, String> excludeFromJsonDataMap) { Map<String, String> excludeFromJsonDataMap) {
@ -56,12 +58,14 @@ public final class SatispayAccountPayload extends CountryBasedPaymentAccountPayl
maxTradePeriod, maxTradePeriod,
excludeFromJsonDataMap); excludeFromJsonDataMap);
this.holderName = holderName;
this.mobileNr = mobileNr; this.mobileNr = mobileNr;
} }
@Override @Override
public Message toProtoMessage() { public Message toProtoMessage() {
protobuf.SatispayAccountPayload.Builder builder = protobuf.SatispayAccountPayload.newBuilder() protobuf.SatispayAccountPayload.Builder builder = protobuf.SatispayAccountPayload.newBuilder()
.setHolderName(holderName)
.setMobileNr(mobileNr); .setMobileNr(mobileNr);
final protobuf.CountryBasedPaymentAccountPayload.Builder countryBasedPaymentAccountPayload = getPaymentAccountPayloadBuilder() final protobuf.CountryBasedPaymentAccountPayload.Builder countryBasedPaymentAccountPayload = getPaymentAccountPayloadBuilder()
.getCountryBasedPaymentAccountPayloadBuilder() .getCountryBasedPaymentAccountPayloadBuilder()
@ -73,18 +77,19 @@ public final class SatispayAccountPayload extends CountryBasedPaymentAccountPayl
public static SatispayAccountPayload fromProto(protobuf.PaymentAccountPayload proto) { public static SatispayAccountPayload fromProto(protobuf.PaymentAccountPayload proto) {
protobuf.CountryBasedPaymentAccountPayload countryBasedPaymentAccountPayload = proto.getCountryBasedPaymentAccountPayload(); protobuf.CountryBasedPaymentAccountPayload countryBasedPaymentAccountPayload = proto.getCountryBasedPaymentAccountPayload();
protobuf.SatispayAccountPayload paytmAccountPayloadPB = countryBasedPaymentAccountPayload.getSatispayAccountPayload(); protobuf.SatispayAccountPayload accountPayloadPB = countryBasedPaymentAccountPayload.getSatispayAccountPayload();
return new SatispayAccountPayload(proto.getPaymentMethodId(), return new SatispayAccountPayload(proto.getPaymentMethodId(),
proto.getId(), proto.getId(),
countryBasedPaymentAccountPayload.getCountryCode(), countryBasedPaymentAccountPayload.getCountryCode(),
paytmAccountPayloadPB.getMobileNr(), accountPayloadPB.getHolderName(),
accountPayloadPB.getMobileNr(),
proto.getMaxTradePeriod(), proto.getMaxTradePeriod(),
new HashMap<>(proto.getExcludeFromJsonDataMap())); new HashMap<>(proto.getExcludeFromJsonDataMap()));
} }
@Override @Override
public String getPaymentDetails() { public String getPaymentDetails() {
return Res.get(paymentMethodId) + " - " + Res.getWithCol("payment.mobile") + " " + mobileNr; return Res.get(paymentMethodId) + " - " + Res.getWithCol("payment.account.userName") + " " + holderName;
} }
@Override @Override
@ -94,6 +99,6 @@ public final class SatispayAccountPayload extends CountryBasedPaymentAccountPayl
@Override @Override
public byte[] getAgeWitnessInputData() { public byte[] getAgeWitnessInputData() {
return super.getAgeWitnessInputData(mobileNr.getBytes(StandardCharsets.UTF_8)); return super.getAgeWitnessInputData(holderName.getBytes(StandardCharsets.UTF_8));
} }
} }

View file

@ -31,7 +31,6 @@ import bisq.core.payment.payload.MoneseAccountPayload;
import bisq.core.util.coin.CoinFormatter; import bisq.core.util.coin.CoinFormatter;
import bisq.core.util.validation.InputValidator; import bisq.core.util.validation.InputValidator;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane; import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
@ -41,11 +40,14 @@ import static bisq.desktop.util.FormBuilder.addTopLabelTextField;
public class MoneseForm extends PaymentMethodForm { public class MoneseForm extends PaymentMethodForm {
private final MoneseAccount account; private final MoneseAccount account;
private InputTextField holderNameInputTextField;
private InputTextField mobileNrInputTextField; private InputTextField mobileNrInputTextField;
public static int addFormForBuyer(GridPane gridPane, int gridRow, public static int addFormForBuyer(GridPane gridPane, int gridRow,
PaymentAccountPayload paymentAccountPayload) { PaymentAccountPayload paymentAccountPayload) {
addCompactTopLabelTextFieldWithCopyIcon(gridPane, ++gridRow, Res.get("payment.mobile"), addCompactTopLabelTextFieldWithCopyIcon(gridPane, ++gridRow, 0, Res.get("payment.account.owner"),
((MoneseAccountPayload) paymentAccountPayload).getHolderName());
addCompactTopLabelTextFieldWithCopyIcon(gridPane, gridRow, 1, Res.get("payment.mobile"),
((MoneseAccountPayload) paymentAccountPayload).getMobileNr()); ((MoneseAccountPayload) paymentAccountPayload).getMobileNr());
return gridRow; return gridRow;
} }
@ -61,6 +63,13 @@ public class MoneseForm extends PaymentMethodForm {
public void addFormForAddAccount() { public void addFormForAddAccount() {
gridRowFrom = gridRow + 1; gridRowFrom = gridRow + 1;
holderNameInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, Res.get("payment.account.owner"));
holderNameInputTextField.setValidator(inputValidator);
holderNameInputTextField.textProperty().addListener((ov, oldValue, newValue) -> {
account.setHolderName(newValue.trim());
updateFromInputs();
});
mobileNrInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, Res.get("payment.mobile")); mobileNrInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, Res.get("payment.mobile"));
mobileNrInputTextField.setValidator(inputValidator); mobileNrInputTextField.setValidator(inputValidator);
mobileNrInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { mobileNrInputTextField.textProperty().addListener((ov, oldValue, newValue) -> {
@ -99,9 +108,10 @@ public class MoneseForm extends PaymentMethodForm {
account.getAccountName(), Layout.FIRST_ROW_AND_GROUP_DISTANCE); account.getAccountName(), Layout.FIRST_ROW_AND_GROUP_DISTANCE);
addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.paymentMethod"), addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.paymentMethod"),
Res.get(account.getPaymentMethod().getId())); Res.get(account.getPaymentMethod().getId()));
TextField field = addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.mobile"), addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.account.owner"), account.getHolderName())
account.getMobileNr()).second; .second.setMouseTransparent(false);
field.setMouseTransparent(false); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.mobile"), account.getMobileNr())
.second.setMouseTransparent(false);
addLimitations(true); addLimitations(true);
addCurrenciesGrid(false); addCurrenciesGrid(false);
} }
@ -109,7 +119,7 @@ public class MoneseForm extends PaymentMethodForm {
@Override @Override
public void updateAllInputsValid() { public void updateAllInputsValid() {
allInputsValid.set(isAccountNameValid() allInputsValid.set(isAccountNameValid()
&& account.getMobileNr() != null && inputValidator.validate(account.getHolderName()).isValid
&& inputValidator.validate(account.getMobileNr()).isValid && inputValidator.validate(account.getMobileNr()).isValid
&& account.getTradeCurrencies().size() > 0); && account.getTradeCurrencies().size() > 0);
} }

View file

@ -32,21 +32,23 @@ import bisq.core.payment.payload.SatispayAccountPayload;
import bisq.core.util.coin.CoinFormatter; import bisq.core.util.coin.CoinFormatter;
import bisq.core.util.validation.InputValidator; import bisq.core.util.validation.InputValidator;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import static bisq.desktop.util.FormBuilder.addCompactTopLabelTextField; import static bisq.desktop.util.FormBuilder.addCompactTopLabelTextField;
import static bisq.desktop.util.FormBuilder.addCompactTopLabelTextFieldWithCopyIcon;
import static bisq.desktop.util.FormBuilder.addTopLabelTextField; import static bisq.desktop.util.FormBuilder.addTopLabelTextField;
import static bisq.desktop.util.FormBuilder.addTopLabelTextFieldWithCopyIcon;
public class SatispayForm extends PaymentMethodForm { public class SatispayForm extends PaymentMethodForm {
private final SatispayAccount account; private final SatispayAccount account;
private InputTextField holderNameField;
private InputTextField mobileNrInputTextField; private InputTextField mobileNrInputTextField;
public static int addFormForBuyer(GridPane gridPane, int gridRow, public static int addFormForBuyer(GridPane gridPane, int gridRow,
PaymentAccountPayload paymentAccountPayload) { PaymentAccountPayload paymentAccountPayload) {
addTopLabelTextFieldWithCopyIcon(gridPane, gridRow, 1, Res.get("payment.mobile"), addCompactTopLabelTextFieldWithCopyIcon(gridPane, ++gridRow, 0, Res.get("payment.account.owner"),
((SatispayAccountPayload) paymentAccountPayload).getMobileNr(), Layout.COMPACT_FIRST_ROW_AND_GROUP_DISTANCE); ((SatispayAccountPayload) paymentAccountPayload).getHolderName());
addCompactTopLabelTextFieldWithCopyIcon(gridPane, gridRow, 1, Res.get("payment.mobile"),
((SatispayAccountPayload) paymentAccountPayload).getMobileNr());
return gridRow; return gridRow;
} }
@ -65,6 +67,13 @@ public class SatispayForm extends PaymentMethodForm {
gridRowFrom = gridRow + 1; gridRowFrom = gridRow + 1;
holderNameField = FormBuilder.addInputTextField(gridPane, ++gridRow, Res.get("payment.account.owner"));
holderNameField.setValidator(inputValidator);
holderNameField.textProperty().addListener((ov, oldValue, newValue) -> {
account.setHolderName(newValue.trim());
updateFromInputs();
});
mobileNrInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, Res.get("payment.mobile")); mobileNrInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, Res.get("payment.mobile"));
mobileNrInputTextField.setValidator(inputValidator); mobileNrInputTextField.setValidator(inputValidator);
mobileNrInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { mobileNrInputTextField.textProperty().addListener((ov, oldValue, newValue) -> {
@ -90,9 +99,10 @@ public class SatispayForm extends PaymentMethodForm {
account.getAccountName(), Layout.FIRST_ROW_AND_GROUP_DISTANCE); account.getAccountName(), Layout.FIRST_ROW_AND_GROUP_DISTANCE);
addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.paymentMethod"), addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.paymentMethod"),
Res.get(account.getPaymentMethod().getId())); Res.get(account.getPaymentMethod().getId()));
TextField field = addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.mobile"), addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.account.owner"), account.getHolderName())
account.getMobileNr()).second; .second.setMouseTransparent(false);
field.setMouseTransparent(false); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.mobile"), account.getMobileNr())
.second.setMouseTransparent(false);
addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.currency"), account.getSingleTradeCurrency().getNameAndCode()); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.currency"), account.getSingleTradeCurrency().getNameAndCode());
addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.country"), account.getCountry().name); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.country"), account.getCountry().name);
addLimitations(true); addLimitations(true);
@ -101,6 +111,7 @@ public class SatispayForm extends PaymentMethodForm {
@Override @Override
public void updateAllInputsValid() { public void updateAllInputsValid() {
allInputsValid.set(isAccountNameValid() allInputsValid.set(isAccountNameValid()
&& inputValidator.validate(account.getHolderName()).isValid
&& inputValidator.validate(account.getMobileNr()).isValid); && inputValidator.validate(account.getMobileNr()).isValid);
} }
} }