diff --git a/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java b/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java index 44ceda229c3..1bd9a1000a5 100644 --- a/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java +++ b/src/main/java/bisq/desktop/components/paymentmethods/BankForm.java @@ -52,6 +52,9 @@ import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; + import javafx.collections.FXCollections; import javafx.util.StringConverter; @@ -234,6 +237,7 @@ static int addFormForBuyer(GridPane gridPane, int gridRow, PaymentAccountPayload private boolean useHolderID; private final Runnable closeHandler; private ComboBox currencyComboBox; + private boolean accountNrInputTextFieldEdited; BankForm(PaymentAccount paymentAccount, AccountAgeWitnessService accountAgeWitnessService, InputValidator inputValidator, GridPane gridPane, int gridRow, BSFormatter formatter, Runnable closeHandler) { @@ -288,6 +292,7 @@ public void addFormForDisplayAccount() { @Override public void addFormForAddAccount() { + accountNrInputTextFieldEdited = false; gridRowFrom = gridRow + 1; Tuple3 tuple3 = addLabelComboBoxComboBox(gridPane, ++gridRow, Res.get("payment.country")); @@ -346,6 +351,9 @@ public Country fromString(String s) { branchIdInputTextField.setText(""); nationalAccountIdInputTextField.setText(""); accountNrInputTextField.setText(""); + accountNrInputTextField.focusedProperty().addListener((observable, oldValue, newValue) -> { + if (newValue) accountNrInputTextFieldEdited = true; + }); accountTypeComboBox.getSelectionModel().clearSelection(); accountTypeComboBox.setItems(FXCollections.observableArrayList(BankUtil.getAccountTypeValues(countryCode))); @@ -617,7 +625,7 @@ protected void autoFillNameTextField() { if (BankUtil.isNationalAccountIdRequired(countryCode)) { String nationalAccountId = nationalAccountIdInputTextField.getText(); - if (countryCode.equals("AR") && nationalAccountId.length() == 22) { + if (countryCode.equals("AR") && nationalAccountId.length() == 22 && !accountNrInputTextFieldEdited) { branchIdInputTextField.setText(nationalAccountId.substring(3,7)); accountNrInputTextField.setText(nationalAccountId.substring(8,21)); } diff --git a/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java b/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java index f3cc8a33a08..5e183b19b53 100644 --- a/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java +++ b/src/main/java/bisq/desktop/components/paymentmethods/CashDepositForm.java @@ -249,6 +249,7 @@ public static int addFormForBuyer(GridPane gridPane, int gridRow, PaymentAccount private boolean useHolderID; private ComboBox currencyComboBox; private final EmailValidator emailValidator; + private boolean accountNrInputTextFieldEdited; public CashDepositForm(PaymentAccount paymentAccount, AccountAgeWitnessService accountAgeWitnessService, InputValidator inputValidator, @@ -318,6 +319,7 @@ public void addFormForDisplayAccount() { @Override public void addFormForAddAccount() { + accountNrInputTextFieldEdited = false; gridRowFrom = gridRow + 1; Tuple3 tuple3 = FormBuilder.addLabelComboBoxComboBox(gridPane, ++gridRow, Res.get("payment.country")); @@ -375,6 +377,9 @@ public Country fromString(String s) { branchIdInputTextField.setText(""); nationalAccountIdInputTextField.setText(""); accountNrInputTextField.setText(""); + accountNrInputTextField.focusedProperty().addListener((observable, oldValue, newValue) -> { + if (newValue) accountNrInputTextFieldEdited = true; + }); accountTypeComboBox.getSelectionModel().clearSelection(); accountTypeComboBox.setItems(FXCollections.observableArrayList(BankUtil.getAccountTypeValues(countryCode))); @@ -662,7 +667,7 @@ protected void autoFillNameTextField() { if (BankUtil.isNationalAccountIdRequired(countryCode)) { String nationalAccountId = nationalAccountIdInputTextField.getText(); - if (countryCode.equals("AR") && nationalAccountId.length() == 22) { + if (countryCode.equals("AR") && nationalAccountId.length() == 22 && !accountNrInputTextFieldEdited) { branchIdInputTextField.setText(nationalAccountId.substring(3,7)); accountNrInputTextField.setText(nationalAccountId.substring(8,21)); } diff --git a/src/main/java/bisq/desktop/util/validation/AccountNrValidator.java b/src/main/java/bisq/desktop/util/validation/AccountNrValidator.java index 41619234595..5222674a217 100644 --- a/src/main/java/bisq/desktop/util/validation/AccountNrValidator.java +++ b/src/main/java/bisq/desktop/util/validation/AccountNrValidator.java @@ -102,12 +102,6 @@ public ValidationResult validate(String input) { } else { return super.validate(null); } - case "AR": - length = 13; - if (isNumberWithFixedLength(input, length)) - return super.validate(input); - else - return new ValidationResult(false, Res.get("validation.sortCodeNumber", getLabel(), length)); default: return super.validate(input); } diff --git a/src/test/java/bisq/desktop/util/validation/AccountNrValidatorTest.java b/src/test/java/bisq/desktop/util/validation/AccountNrValidatorTest.java index 6be03de6c39..75047bec165 100644 --- a/src/test/java/bisq/desktop/util/validation/AccountNrValidatorTest.java +++ b/src/test/java/bisq/desktop/util/validation/AccountNrValidatorTest.java @@ -24,6 +24,6 @@ public void testValidationForArgentina() { AccountNrValidator validator = new AccountNrValidator("AR"); assertTrue(validator.validate("4009041813520").isValid); - assertFalse(validator.validate("40090418135201").isValid); + assertTrue(validator.validate("035-005198/5").isValid); } }