Advertisement
sprixes

LoginPresenter

Aug 22nd, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.55 KB | None | 0 0
  1. public class LoginPresenter extends MvpBasePresenter<LoginContract.View>
  2.         implements LoginContract.Presenter, MvpPresenter<LoginContract.View> {
  3.     public static final String TAG = LoginPresenter.class.getSimpleName();
  4.     AccountWebService accountWebService;
  5.     BalanceWebService balanceWebService;
  6.     RxHelper rxHelper;
  7.     EventBusHelper eventBusHelper;
  8.     SportsBookUser sportsBookUser;
  9.     UserSessionHelper userSessionHelper;
  10.     Subscription subscription;
  11.  
  12.     @Inject
  13.     public LoginPresenter(AccountWebService accountWebService,
  14.                           BalanceWebService balanceWebService,
  15.                           RxHelper rxHelper, SportsBookUser sportsBookUser,
  16.                           UserSessionHelper userSessionHelper) {
  17.         this.accountWebService = accountWebService;
  18.         this.rxHelper = rxHelper;
  19.         this.sportsBookUser = sportsBookUser;
  20.         this.balanceWebService = balanceWebService;
  21.         this.userSessionHelper = userSessionHelper;
  22.  
  23.     }
  24.  
  25.     @Override
  26.     public void initializeAccount() {
  27.         getView().showLoginProgress(false);
  28.         getView().showLoginButton(true);
  29.         getView().setLoginFieldEnabled(true);
  30.         getView().setLoginResultMessageVisible(false);
  31.         if (getView().getAuthToken().isEmpty()) {
  32.             if (sportsBookUser.hasUser()) {
  33.                 getView().setLoginFieldEnabled(false);
  34.             } else {
  35.                 getView().setLoginFieldEnabled(true);
  36.             }
  37.         } else {
  38.             autoLogin();
  39.         }
  40.     }
  41.  
  42.     private void autoLogin() {
  43.         subscription = accountWebService.autoLogin(getView().getAuthToken())
  44.                 .compose(rxHelper.getAndroidSchedulers())
  45.                 .subscribe(new Subscriber<LoginResponse>() {
  46.                     @Override
  47.                     public void onCompleted() {
  48.  
  49.                     }
  50.  
  51.                     @Override
  52.                     public void onError(Throwable e) {
  53.                         if (e instanceof ApiError) {
  54.                             ApiError apiError = (ApiError) e;
  55.                             getView().setLoginResultMessage(apiError.getErrorMessage());
  56.                         } else if (e instanceof SocketTimeoutException) {
  57.                             getView().setLoginResultMessage(R.string.network_timeout);
  58.                         } else {
  59.                             getView().setLoginResultMessage(R.string.error_contact_customer_service);
  60.                         }
  61.                         getView().showLoginButton(true);
  62.                         getView().setLoginFieldEnabled(true);
  63.                         getView().setLoginResultMessageVisible(true);
  64.                         getView().showLoginProgress(false);
  65.                         getView().setSignUpAvailable(true);
  66.                     }
  67.  
  68.                     @Override
  69.                     public void onNext(LoginResponse loginResponse) {
  70.                         sportsBookUser.setLoginName(getView().getUsername());
  71.                         sportsBookUser.setToken(loginResponse.getAccessToken());
  72.                         requestSession(loginResponse.getSbLoginUrl());
  73.                     }
  74.                 });
  75.     }
  76.  
  77.     @Override
  78.     public void login() {
  79.         boolean hasUsername = !getView().getUsername().isEmpty();
  80.         boolean hasPassword = !getView().getPassword().isEmpty();
  81.         if (hasUsername && hasPassword) {
  82.             loadLoginApi();
  83.         } else {
  84.             getView().setUsernameError(!hasUsername);
  85.             getView().setPasswordError(!hasPassword);
  86.         }
  87.     }
  88.  
  89.     private void loadLoginApi() {
  90.  
  91.         getView().setLoginResultMessageVisible(false);
  92.         getView().setLoginFieldEnabled(false);
  93.         getView().showLoginProgress(true);
  94.         getView().showLoginButton(false);
  95.         getView().setSignUpAvailable(false);
  96.  
  97.         subscription = accountWebService.login(getView().getUsername(), getView().getPassword())
  98.                 .compose(rxHelper.getAndroidSchedulers())
  99.                 .subscribe(new Subscriber<LoginResponse>() {
  100.                     @Override
  101.                     public void onCompleted() {
  102.  
  103.                     }
  104.  
  105.                     @Override
  106.                     public void onError(Throwable e) {
  107.                         if (e instanceof ApiError) {
  108.                             ApiError apiError = (ApiError) e;
  109.                             getView().setLoginResultMessage(apiError.getErrorMessage());
  110.                         } else if (e instanceof SocketTimeoutException) {
  111.                             getView().setLoginResultMessage(R.string.network_timeout);
  112.                         } else {
  113.                             getView().setLoginResultMessage(R.string.error_contact_customer_service);
  114.                         }
  115.                         getView().showLoginButton(true);
  116.                         getView().setLoginFieldEnabled(true);
  117.                         getView().setLoginResultMessageVisible(true);
  118.                         getView().showLoginProgress(false);
  119.                         getView().setSignUpAvailable(true);
  120.                     }
  121.  
  122.                     @Override
  123.                     public void onNext(LoginResponse loginResponse) {
  124.  
  125.                         sportsBookUser.setLoginName(getView().getUsername());
  126.                         sportsBookUser.setToken(loginResponse.getAccessToken());
  127.                         requestSession(loginResponse.getSbLoginUrl());
  128.                     }
  129.                 });
  130.     }
  131.  
  132.     @Override
  133.     public void requestSession(String baseUrl) {
  134.         subscription = accountWebService.requestSession(baseUrl)
  135.                 .compose(rxHelper.getAndroidSchedulers())
  136.                 .subscribe(new Subscriber<ResponseBody>() {
  137.                     @Override
  138.                     public void onCompleted() {
  139.  
  140.                     }
  141.  
  142.                     @Override
  143.                     public void onError(Throwable e) {
  144.                         userSessionHelper.removeSession();
  145.                         getView().setLoginFieldEnabled(true);
  146.                         getView().showLoginButton(true);
  147.                         getView().showLoginProgress(false);
  148.                         getView().setLoginResultMessage(e.getMessage());
  149.                         getView().setLoginResultMessageVisible(true);
  150.                         getView().setSignUpAvailable(true);
  151.                     }
  152.  
  153.                     @Override
  154.                     public void onNext(ResponseBody responseBody) {
  155.                         loadBalance();
  156.                     }
  157.                 });
  158.     }
  159.  
  160.     @Override
  161.     public void loadBalance() {
  162.         subscription = balanceWebService.loadSportsBookBalance()
  163.                 .compose(rxHelper.getAndroidSchedulers())
  164.                 .subscribe(new Subscriber<String>() {
  165.                     @Override
  166.                     public void onCompleted() {
  167.  
  168.                     }
  169.  
  170.                     @Override
  171.                     public void onError(Throwable e) {
  172.                         if (e instanceof ParseError) {
  173.  
  174.                         } else {
  175.  
  176.                         }
  177.  
  178.                         userSessionHelper.removeSession();
  179.                         getView().setLoginFieldEnabled(true);
  180.                         getView().showLoginButton(true);
  181.                         getView().showLoginProgress(false);
  182.                         getView().setLoginResultMessage(e.getMessage());
  183.                         getView().setLoginResultMessageVisible(true);
  184.                         getView().setSignUpAvailable(true);
  185.                     }
  186.  
  187.                     @Override
  188.                     public void onNext(String s) {
  189.                         Log.d(TAG, "on Balance Success: " + s);
  190.  
  191.                         getView().setLoginFieldEnabled(false);
  192.                         getView().showLoginButton(false);
  193.                         getView().showLoginProgress(false);
  194.                         getView().setLoginResultMessageVisible(false);
  195.                         getView().setSignUpAvailable(false);
  196.  
  197.                         getView().loginSuccessful();
  198.                     }
  199.                 });
  200.     }
  201.  
  202.  
  203.  
  204.     @Override
  205.     public void detachView(boolean retainInstance) {
  206.         super.detachView(retainInstance);
  207.         if (subscription != null) {
  208.             subscription.unsubscribe();
  209.         }
  210.     }
  211.  
  212.     @Override
  213.     public void logout() {
  214.         if (isViewAttached()) getView().setLoginFieldEnabled(true);
  215.         userSessionHelper.removeSession();
  216.         eventBusHelper.post(new NotifyLogoutEvent());
  217.     }
  218.  
  219.    
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement