Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class LoginPresenter extends MvpBasePresenter<LoginContract.View>
- implements LoginContract.Presenter, MvpPresenter<LoginContract.View> {
- public static final String TAG = LoginPresenter.class.getSimpleName();
- AccountWebService accountWebService;
- BalanceWebService balanceWebService;
- RxHelper rxHelper;
- EventBusHelper eventBusHelper;
- SportsBookUser sportsBookUser;
- UserSessionHelper userSessionHelper;
- Subscription subscription;
- @Inject
- public LoginPresenter(AccountWebService accountWebService,
- BalanceWebService balanceWebService,
- RxHelper rxHelper, SportsBookUser sportsBookUser,
- UserSessionHelper userSessionHelper) {
- this.accountWebService = accountWebService;
- this.rxHelper = rxHelper;
- this.sportsBookUser = sportsBookUser;
- this.balanceWebService = balanceWebService;
- this.userSessionHelper = userSessionHelper;
- }
- @Override
- public void initializeAccount() {
- getView().showLoginProgress(false);
- getView().showLoginButton(true);
- getView().setLoginFieldEnabled(true);
- getView().setLoginResultMessageVisible(false);
- if (getView().getAuthToken().isEmpty()) {
- if (sportsBookUser.hasUser()) {
- getView().setLoginFieldEnabled(false);
- } else {
- getView().setLoginFieldEnabled(true);
- }
- } else {
- autoLogin();
- }
- }
- private void autoLogin() {
- subscription = accountWebService.autoLogin(getView().getAuthToken())
- .compose(rxHelper.getAndroidSchedulers())
- .subscribe(new Subscriber<LoginResponse>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- if (e instanceof ApiError) {
- ApiError apiError = (ApiError) e;
- getView().setLoginResultMessage(apiError.getErrorMessage());
- } else if (e instanceof SocketTimeoutException) {
- getView().setLoginResultMessage(R.string.network_timeout);
- } else {
- getView().setLoginResultMessage(R.string.error_contact_customer_service);
- }
- getView().showLoginButton(true);
- getView().setLoginFieldEnabled(true);
- getView().setLoginResultMessageVisible(true);
- getView().showLoginProgress(false);
- getView().setSignUpAvailable(true);
- }
- @Override
- public void onNext(LoginResponse loginResponse) {
- sportsBookUser.setLoginName(getView().getUsername());
- sportsBookUser.setToken(loginResponse.getAccessToken());
- requestSession(loginResponse.getSbLoginUrl());
- }
- });
- }
- @Override
- public void login() {
- boolean hasUsername = !getView().getUsername().isEmpty();
- boolean hasPassword = !getView().getPassword().isEmpty();
- if (hasUsername && hasPassword) {
- loadLoginApi();
- } else {
- getView().setUsernameError(!hasUsername);
- getView().setPasswordError(!hasPassword);
- }
- }
- private void loadLoginApi() {
- getView().setLoginResultMessageVisible(false);
- getView().setLoginFieldEnabled(false);
- getView().showLoginProgress(true);
- getView().showLoginButton(false);
- getView().setSignUpAvailable(false);
- subscription = accountWebService.login(getView().getUsername(), getView().getPassword())
- .compose(rxHelper.getAndroidSchedulers())
- .subscribe(new Subscriber<LoginResponse>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- if (e instanceof ApiError) {
- ApiError apiError = (ApiError) e;
- getView().setLoginResultMessage(apiError.getErrorMessage());
- } else if (e instanceof SocketTimeoutException) {
- getView().setLoginResultMessage(R.string.network_timeout);
- } else {
- getView().setLoginResultMessage(R.string.error_contact_customer_service);
- }
- getView().showLoginButton(true);
- getView().setLoginFieldEnabled(true);
- getView().setLoginResultMessageVisible(true);
- getView().showLoginProgress(false);
- getView().setSignUpAvailable(true);
- }
- @Override
- public void onNext(LoginResponse loginResponse) {
- sportsBookUser.setLoginName(getView().getUsername());
- sportsBookUser.setToken(loginResponse.getAccessToken());
- requestSession(loginResponse.getSbLoginUrl());
- }
- });
- }
- @Override
- public void requestSession(String baseUrl) {
- subscription = accountWebService.requestSession(baseUrl)
- .compose(rxHelper.getAndroidSchedulers())
- .subscribe(new Subscriber<ResponseBody>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- userSessionHelper.removeSession();
- getView().setLoginFieldEnabled(true);
- getView().showLoginButton(true);
- getView().showLoginProgress(false);
- getView().setLoginResultMessage(e.getMessage());
- getView().setLoginResultMessageVisible(true);
- getView().setSignUpAvailable(true);
- }
- @Override
- public void onNext(ResponseBody responseBody) {
- loadBalance();
- }
- });
- }
- @Override
- public void loadBalance() {
- subscription = balanceWebService.loadSportsBookBalance()
- .compose(rxHelper.getAndroidSchedulers())
- .subscribe(new Subscriber<String>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- if (e instanceof ParseError) {
- } else {
- }
- userSessionHelper.removeSession();
- getView().setLoginFieldEnabled(true);
- getView().showLoginButton(true);
- getView().showLoginProgress(false);
- getView().setLoginResultMessage(e.getMessage());
- getView().setLoginResultMessageVisible(true);
- getView().setSignUpAvailable(true);
- }
- @Override
- public void onNext(String s) {
- Log.d(TAG, "on Balance Success: " + s);
- getView().setLoginFieldEnabled(false);
- getView().showLoginButton(false);
- getView().showLoginProgress(false);
- getView().setLoginResultMessageVisible(false);
- getView().setSignUpAvailable(false);
- getView().loginSuccessful();
- }
- });
- }
- @Override
- public void detachView(boolean retainInstance) {
- super.detachView(retainInstance);
- if (subscription != null) {
- subscription.unsubscribe();
- }
- }
- @Override
- public void logout() {
- if (isViewAttached()) getView().setLoginFieldEnabled(true);
- userSessionHelper.removeSession();
- eventBusHelper.post(new NotifyLogoutEvent());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement