diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/presenter/autodebitaccountlisting/AutoDebitAccountListingV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/presenter/autodebitaccountlisting/AutoDebitAccountListingV2Presenter.java index c8cafa9a..ed49bd26 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/presenter/autodebitaccountlisting/AutoDebitAccountListingV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/autodebitV2/presenter/autodebitaccountlisting/AutoDebitAccountListingV2Presenter.java @@ -1,5 +1,7 @@ package com.gmeremit.online.gmeremittance_native.autodebitV2.presenter.autodebitaccountlisting; +import android.os.Handler; + import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.autodebitV2.gateway.autodebitaccountlisting.AutoDebitAccountListingV2Gateway; import com.gmeremit.online.gmeremittance_native.autodebitV2.model.autodebitaccountlisting.AutoDebitAccount; @@ -21,7 +23,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; -public class AutoDebitAccountListingV2Presenter extends BasePresenter implements AutoDebitAccountListingV2PresenterInterface,AutoDebitAccountListingV2InteractorInterface { +public class AutoDebitAccountListingV2Presenter extends BasePresenter implements AutoDebitAccountListingV2PresenterInterface, AutoDebitAccountListingV2InteractorInterface { private final AutoDebitAccountListingV2ContractInterface view; private final AutoDebitAccountListingV2GatewayInterface gateway; @@ -29,14 +31,16 @@ public class AutoDebitAccountListingV2Presenter extends BasePresenter implements private List requiredHeader; private List availableLanguages; private String postUrl; + private boolean canRetry; public AutoDebitAccountListingV2Presenter(AutoDebitAccountListingV2PresenterInterface.AutoDebitAccountListingV2ContractInterface view) { - this.view=view; - this.gateway=new AutoDebitAccountListingV2Gateway(this); - requiredHeader=null; - postUrl=null; + this.view = view; + this.gateway = new AutoDebitAccountListingV2Gateway(this); + requiredHeader = null; + postUrl = null; this.compositeDisposable = new CompositeDisposable(); + canRetry=true; } @Override @@ -49,7 +53,7 @@ public class AutoDebitAccountListingV2Presenter extends BasePresenter implements @Override public void getAllAutoDebitAccountList() { compositeDisposable.add( - this.gateway.getAllAccountsFromNetwork(gateway.getAuth(),gateway.getUserID()) + this.gateway.getAllAccountsFromNetwork(gateway.getAuth(), gateway.getUserID()) .doOnSubscribe(disposable -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text))) .doFinally(() -> view.showProgressBar(false, "")) .subscribeOn(Schedulers.io()) @@ -62,7 +66,7 @@ public class AutoDebitAccountListingV2Presenter extends BasePresenter implements @Override public void deleteAutoDebitAccount(AutoDebitAccount accountData) { compositeDisposable.add( - this.gateway.deleteAccountFromNetwork(gateway.getAuth(),gateway.getUserID(),accountData.getKftcAccountId()) + this.gateway.deleteAccountFromNetwork(gateway.getAuth(), gateway.getUserID(), accountData.getKftcAccountId()) .doOnSubscribe(disposable -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text))) .doFinally(() -> view.showProgressBar(false, "")) .subscribeOn(Schedulers.io()) @@ -79,16 +83,15 @@ public class AutoDebitAccountListingV2Presenter extends BasePresenter implements @Override public WebRequestModel getWebRequestDataForAddingAccount(String preferredLanguage) { - return new WebRequestModel("Add Account",getOperationURL(preferredLanguage),this.requiredHeader); + return new WebRequestModel("Add Account", getOperationURL(preferredLanguage), this.requiredHeader); } public String getOperationURL(String language) { - return postUrl+"&lang="+language ; + return postUrl + "&lang=" + language; } - public class AutoDebitAccountListingObserver extends GenericApiObserverResponseV2 - { + public class AutoDebitAccountListingObserver extends GenericApiObserverResponseV2 { @Override protected Type setType() { return TypeToken.getParameterized(GenericResponseDataModel.class, AutoDebitModel.class).getType(); @@ -96,33 +99,48 @@ public class AutoDebitAccountListingV2Presenter extends BasePresenter implements @Override protected void onSuccess(GenericResponseDataModel t) { - if(t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) - { - requiredHeader=t.getData().getHeader(); - postUrl=t.getData().getURL(); - availableLanguages=t.getData().getLanguage(); - if(t.getData().getAccountList()!=null&&t.getData().getAccountList().size()>0) - view.showAllAccountsToUser(t.getData().getAccountList()); - } - else - { - requiredHeader=null; - postUrl=null; - availableLanguages=null; - view.showPopUpMessage(t.getMsg(),CustomAlertDialog.AlertType.FAILED,alertType -> view.exitView()); + if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) { + requiredHeader = t.getData().getHeader(); + postUrl = t.getData().getURL(); + availableLanguages = t.getData().getLanguage(); + if (t.getData().getAccountList() != null && t.getData().getAccountList().size() > 0) + view.showAllAccountsToUser(t.getData().getAccountList()); + } else { + //TODO temp solution + if (t.getMsg().toLowerCase().contains("object reference not set to an instance of an object.")&&canRetry) + { + canRetry=false; + view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text)); + new Handler().postDelayed(()->{ + compositeDisposable.add( + gateway.getAllAccountsFromNetwork(gateway.getAuth(), gateway.getUserID()) + .doFinally(() -> view.showProgressBar(false, "")) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new AutoDebitAccountListingObserver()) + ); + },2000); + + } + else { + requiredHeader = null; + postUrl = null; + availableLanguages = null; + view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView()); + } } } @Override public void onFailed(String message) { - requiredHeader=null; - view.showPopUpMessage(message,CustomAlertDialog.AlertType.FAILED,alertType -> view.exitView()); + requiredHeader = null; + view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView()); } @Override protected void onConnectionNotEstablished(String message) { - requiredHeader=null; - view.showPopUpMessage(message,CustomAlertDialog.AlertType.NO_INTERNET,alertType -> view.exitView()); + requiredHeader = null; + view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, alertType -> view.exitView()); } @Override @@ -133,41 +151,37 @@ public class AutoDebitAccountListingV2Presenter extends BasePresenter implements } } - public class AutoDebitAccountDeleteObserver extends GenericApiObserverResponseV2 - { + public class AutoDebitAccountDeleteObserver extends GenericApiObserverResponseV2 { private final AutoDebitAccount accountToBeDeleted; AutoDebitAccountDeleteObserver(AutoDebitAccount accountData) { - this.accountToBeDeleted=accountData; + this.accountToBeDeleted = accountData; } @Override protected Type setType() { - return TypeToken.getParameterized(GenericResponseDataModel.class,MessageResponseDataModel.class).getType(); + return TypeToken.getParameterized(GenericResponseDataModel.class, MessageResponseDataModel.class).getType(); } @Override protected void onSuccess(GenericResponseDataModel t) { - if(t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) - { + if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) { view.showToastMessage(t.getData().getMsg()); view.onAutoDebitAccountDeletedSuccessfully(accountToBeDeleted); - } - else - { - view.showPopUpMessage(t.getMsg(),CustomAlertDialog.AlertType.FAILED,null); + } else { + view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, null); } } @Override public void onFailed(String message) { - view.showPopUpMessage(message,CustomAlertDialog.AlertType.FAILED,null); + view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null); } @Override protected void onConnectionNotEstablished(String message) { - view.showPopUpMessage(message,CustomAlertDialog.AlertType.NO_INTERNET,null); + view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, null); } @Override