Merge pull request #4506 from chimp1984/fix-revolut-account-id-bug

Fix revolut accountID bug
This commit is contained in:
Christoph Atteneder 2020-09-09 20:42:32 +02:00 committed by GitHub
commit 91d70ad8fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 7 deletions

View File

@ -173,4 +173,9 @@ public abstract class PaymentAccount implements PersistablePayload {
public String getOwnerId() { public String getOwnerId() {
return paymentAccountPayload.getOwnerId(); return paymentAccountPayload.getOwnerId();
} }
public void onAddToUser() {
// We are in the process to get added to the user. This is called just before saving the account and the
// last moment we could apply some special handling if needed (e.g. as it happens for Revolut)
}
} }

View File

@ -37,22 +37,34 @@ public final class RevolutAccount extends PaymentAccount {
} }
public void setUserName(String userName) { public void setUserName(String userName) {
((RevolutAccountPayload) paymentAccountPayload).setUserName(userName); revolutAccountPayload().setUserName(userName);
} }
public String getUserName() { public String getUserName() {
return ((RevolutAccountPayload) paymentAccountPayload).getUserName(); return (revolutAccountPayload()).getUserName();
} }
public String getAccountId() { public String getAccountId() {
return ((RevolutAccountPayload) paymentAccountPayload).getAccountId(); return (revolutAccountPayload()).getAccountId();
} }
public boolean userNameNotSet() { public boolean userNameNotSet() {
return ((RevolutAccountPayload) paymentAccountPayload).userNameNotSet(); return (revolutAccountPayload()).userNameNotSet();
} }
public boolean hasOldAccountId() { public boolean hasOldAccountId() {
return ((RevolutAccountPayload) paymentAccountPayload).hasOldAccountId(); return (revolutAccountPayload()).hasOldAccountId();
}
private RevolutAccountPayload revolutAccountPayload() {
return (RevolutAccountPayload) paymentAccountPayload;
}
@Override
public void onAddToUser() {
super.onAddToUser();
// At save we apply the userName to accountId in case it is empty for backward compatibility
revolutAccountPayload().maybeApplyUserNameToAccountId();
} }
} }

View File

@ -81,7 +81,7 @@ public final class RevolutAccountPayload extends PaymentAccountPayload {
excludeFromJsonDataMap); excludeFromJsonDataMap);
this.accountId = accountId; this.accountId = accountId;
setUserName(userName); this.userName = userName;
} }
@Override @Override
@ -169,7 +169,11 @@ public final class RevolutAccountPayload extends PaymentAccountPayload {
public void setUserName(String userName) { public void setUserName(String userName) {
this.userName = userName; this.userName = userName;
// We need to set accountId as pre v1.3.8 clients expect the accountId field }
// In case it is a new account we need to fill the accountId field to support not-updated traders who are not
// aware of the new userName field
public void maybeApplyUserNameToAccountId() {
if (accountId.isEmpty()) { if (accountId.isEmpty()) {
accountId = userName; accountId = userName;
} }

View File

@ -190,6 +190,8 @@ public class User implements PersistedDataHost {
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
public void addPaymentAccount(PaymentAccount paymentAccount) { public void addPaymentAccount(PaymentAccount paymentAccount) {
paymentAccount.onAddToUser();
boolean changed = paymentAccountsAsObservable.add(paymentAccount); boolean changed = paymentAccountsAsObservable.add(paymentAccount);
setCurrentPaymentAccount(paymentAccount); setCurrentPaymentAccount(paymentAccount);
if (changed) if (changed)