diff --git a/core/src/main/java/bisq/core/payment/PaymentAccount.java b/core/src/main/java/bisq/core/payment/PaymentAccount.java index 970abf414ca..2faf2b538df 100644 --- a/core/src/main/java/bisq/core/payment/PaymentAccount.java +++ b/core/src/main/java/bisq/core/payment/PaymentAccount.java @@ -58,6 +58,9 @@ public abstract class PaymentAccount implements PersistablePayload { public PaymentAccountPayload paymentAccountPayload; @Setter protected String accountName; + @Setter + protected String persistedAccountName; + protected final List tradeCurrencies = new ArrayList<>(); @Setter @Nullable @@ -117,6 +120,7 @@ public static PaymentAccount fromProto(protobuf.PaymentAccount proto, CoreProtoR account.setId(proto.getId()); account.setCreationDate(proto.getCreationDate()); account.setAccountName(proto.getAccountName()); + account.setPersistedAccountName(proto.getAccountName()); account.getTradeCurrencies().addAll(tradeCurrencies); account.setPaymentAccountPayload(coreProtoResolver.fromProto(proto.getPaymentAccountPayload())); @@ -248,7 +252,11 @@ public String getMessageForAccountCreation() { return null; } - public void revertChanges() { + public void onPersistChanges() { + setPersistedAccountName(getAccountName()); + } + public void revertChanges() { + setAccountName(getPersistedAccountName()); } } diff --git a/core/src/main/java/bisq/core/payment/SepaAccount.java b/core/src/main/java/bisq/core/payment/SepaAccount.java index f3deb1eb91f..435f6649b5c 100644 --- a/core/src/main/java/bisq/core/payment/SepaAccount.java +++ b/core/src/main/java/bisq/core/payment/SepaAccount.java @@ -79,8 +79,15 @@ public void removeAcceptedCountry(String countryCode) { ((SepaAccountPayload) paymentAccountPayload).removeAcceptedCountry(countryCode); } + @Override + public void onPersistChanges() { + super.onPersistChanges(); + ((SepaAccountPayload) paymentAccountPayload).onPersistChanges(); + } + @Override public void revertChanges() { + super.revertChanges(); ((SepaAccountPayload) paymentAccountPayload).revertChanges(); } } diff --git a/core/src/main/java/bisq/core/payment/SepaInstantAccount.java b/core/src/main/java/bisq/core/payment/SepaInstantAccount.java index 50caaafd094..3c778cfaeec 100644 --- a/core/src/main/java/bisq/core/payment/SepaInstantAccount.java +++ b/core/src/main/java/bisq/core/payment/SepaInstantAccount.java @@ -79,8 +79,15 @@ public void removeAcceptedCountry(String countryCode) { ((SepaInstantAccountPayload) paymentAccountPayload).removeAcceptedCountry(countryCode); } + @Override + public void onPersistChanges() { + super.onPersistChanges(); + ((SepaInstantAccountPayload) paymentAccountPayload).onPersistChanges(); + } + @Override public void revertChanges() { + super.revertChanges(); ((SepaInstantAccountPayload) paymentAccountPayload).revertChanges(); } } diff --git a/core/src/main/java/bisq/core/payment/payload/SepaAccountPayload.java b/core/src/main/java/bisq/core/payment/payload/SepaAccountPayload.java index 4405fa6aac9..695359a202e 100644 --- a/core/src/main/java/bisq/core/payment/payload/SepaAccountPayload.java +++ b/core/src/main/java/bisq/core/payment/payload/SepaAccountPayload.java @@ -140,6 +140,11 @@ public void removeAcceptedCountry(String countryCode) { acceptedCountryCodes.remove(countryCode); } + public void onPersistChanges() { + persistedAcceptedCountryCodes.clear(); + persistedAcceptedCountryCodes.addAll(acceptedCountryCodes); + } + public void revertChanges() { acceptedCountryCodes.clear(); acceptedCountryCodes.addAll(persistedAcceptedCountryCodes); diff --git a/core/src/main/java/bisq/core/payment/payload/SepaInstantAccountPayload.java b/core/src/main/java/bisq/core/payment/payload/SepaInstantAccountPayload.java index 29cde1b7487..379b81a456c 100644 --- a/core/src/main/java/bisq/core/payment/payload/SepaInstantAccountPayload.java +++ b/core/src/main/java/bisq/core/payment/payload/SepaInstantAccountPayload.java @@ -135,6 +135,11 @@ public void removeAcceptedCountry(String countryCode) { acceptedCountryCodes.remove(countryCode); } + public void onPersistChanges() { + persistedAcceptedCountryCodes.clear(); + persistedAcceptedCountryCodes.addAll(acceptedCountryCodes); + } + public void revertChanges() { acceptedCountryCodes.clear(); acceptedCountryCodes.addAll(persistedAcceptedCountryCodes); diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralSepaForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralSepaForm.java index 98aa9826910..65d57a489b8 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralSepaForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/GeneralSepaForm.java @@ -40,7 +40,6 @@ public abstract class GeneralSepaForm extends PaymentMethodForm { static final String IBAN = "IBAN"; private TextField currencyTextField; - InputTextField ibanInputTextField; private FiatCurrency euroCurrency = CurrencyUtil.getFiatCurrency("EUR").get(); @@ -55,7 +54,7 @@ protected void autoFillNameTextField() { TradeCurrency singleTradeCurrency = this.paymentAccount.getSingleTradeCurrency(); String currency = singleTradeCurrency != null ? singleTradeCurrency.getCode() : null; if (currency != null) { - String iban = ibanInputTextField.getText(); + String iban = getIban(); if (iban.length() > 9) iban = StringUtils.abbreviate(iban, 9); String method = Res.get(paymentAccount.getPaymentMethod().getId()); @@ -139,4 +138,6 @@ public Country fromString(String s) { } abstract boolean isCountryAccepted(String countryCode); + + protected abstract String getIban(); } diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/PaymentMethodForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/PaymentMethodForm.java index 96698b0a0e0..4b9a4dfba74 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/PaymentMethodForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/PaymentMethodForm.java @@ -124,19 +124,21 @@ public TradeCurrency fromString(String s) { } protected void addAccountNameTextFieldWithAutoFillToggleButton() { + boolean isEditMode = paymentAccount.getPersistedAccountName() != null; Tuple3 tuple = addTopLabelInputTextFieldSlideToggleButton(gridPane, ++gridRow, Res.get("payment.account.name"), Res.get("payment.useCustomAccountName")); accountNameTextField = tuple.second; accountNameTextField.setPrefWidth(300); - accountNameTextField.setEditable(false); + accountNameTextField.setEditable(isEditMode); accountNameTextField.setValidator(inputValidator); accountNameTextField.setFocusTraversable(false); + accountNameTextField.setText(paymentAccount.getAccountName()); accountNameTextField.textProperty().addListener((ov, oldValue, newValue) -> { paymentAccount.setAccountName(newValue); updateAllInputsValid(); }); useCustomAccountNameToggleButton = tuple.third; - useCustomAccountNameToggleButton.setSelected(false); + useCustomAccountNameToggleButton.setSelected(isEditMode); useCustomAccountNameToggleButton.setOnAction(e -> { boolean selected = useCustomAccountNameToggleButton.isSelected(); accountNameTextField.setEditable(selected); diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaForm.java index af9aa3ee401..66176fba7f4 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaForm.java @@ -90,7 +90,7 @@ public void addFormForAddAccount() { updateFromInputs(); }); - ibanInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, IBAN); + InputTextField ibanInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, IBAN); ibanInputTextField.setTextFormatter(new TextFormatter<>(new IBANNormalizer())); ibanInputTextField.setValidator(ibanValidator); ibanInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { @@ -139,7 +139,7 @@ public void updateAllInputsValid() { @Override public void addFormForDisplayAccount() { gridRowFrom = gridRow; - addTopLabelTextField(gridPane, gridRow, Res.get("payment.account.name"), sepaAccount.getAccountName(), Layout.FIRST_ROW_AND_GROUP_DISTANCE); + addAccountNameTextFieldWithAutoFillToggleButton(); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.paymentMethod"), Res.get(sepaAccount.getPaymentMethod().getId())); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.account.owner"), sepaAccount.getHolderName()); @@ -170,4 +170,9 @@ void addAcceptedCountry(String countryCode) { boolean isCountryAccepted(String countryCode) { return sepaAccount.getAcceptedCountryCodes().contains(countryCode); } + + @Override + protected String getIban() { + return sepaAccount.getIban(); + } } diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaInstantForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaInstantForm.java index 05b5966df88..8bbc9ed04df 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaInstantForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/SepaInstantForm.java @@ -91,7 +91,7 @@ public void addFormForAddAccount() { updateFromInputs(); }); - ibanInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, IBAN); + InputTextField ibanInputTextField = FormBuilder.addInputTextField(gridPane, ++gridRow, IBAN); ibanInputTextField.setTextFormatter(new TextFormatter<>(new IBANNormalizer())); ibanInputTextField.setValidator(ibanValidator); ibanInputTextField.textProperty().addListener((ov, oldValue, newValue) -> { @@ -140,7 +140,7 @@ public void updateAllInputsValid() { @Override public void addFormForDisplayAccount() { gridRowFrom = gridRow; - addTopLabelTextField(gridPane, gridRow, Res.get("payment.account.name"), sepaInstantAccount.getAccountName(), Layout.FIRST_ROW_AND_GROUP_DISTANCE); + addAccountNameTextFieldWithAutoFillToggleButton(); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("shared.paymentMethod"), Res.get(sepaInstantAccount.getPaymentMethod().getId())); addCompactTopLabelTextField(gridPane, ++gridRow, Res.get("payment.account.owner"), sepaInstantAccount.getHolderName()); @@ -171,4 +171,9 @@ void addAcceptedCountry(String countryCode) { boolean isCountryAccepted(String countryCode) { return sepaInstantAccount.getAcceptedCountryCodes().contains(countryCode); } + + @Override + protected String getIban() { + return sepaInstantAccount.getIban(); + } } diff --git a/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsDataModel.java b/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsDataModel.java index a228300f774..f029c7690a3 100644 --- a/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsDataModel.java +++ b/desktop/src/main/java/bisq/desktop/main/account/content/fiataccounts/FiatAccountsDataModel.java @@ -125,6 +125,7 @@ public void onSaveNewAccount(PaymentAccount paymentAccount) { } public void onUpdateAccount(PaymentAccount paymentAccount) { + paymentAccount.onPersistChanges(); user.requestPersistence(); }