package com.yydcdut.note.presenters.login.impl; import android.app.Activity; import android.content.Context; import com.yydcdut.note.R; import com.yydcdut.note.injector.ContextLife; import com.yydcdut.note.model.rx.RxUser; import com.yydcdut.note.presenters.login.ILoginPresenter; import com.yydcdut.note.utils.NetworkUtils; import com.yydcdut.note.utils.YLog; import com.yydcdut.note.views.IView; import com.yydcdut.note.views.login.ILoginView; import javax.inject.Inject; import rx.android.schedulers.AndroidSchedulers; /** * Created by yuyidong on 15/11/16. */ public class LoginPresenterImpl implements ILoginPresenter { private ILoginView mLoginView; private Context mContext; private Activity mActivity; private RxUser mRxUser; @Inject public LoginPresenterImpl(Activity activity, @ContextLife("Activity") Context context, RxUser rxUser) { mActivity = activity; mContext = context; mRxUser = rxUser; } @Override public Context getContext() { return mContext; } @Override public void attachView(IView iView) { mLoginView = (ILoginView) iView; } @Override public void detachView() { } @Override public boolean checkInternet() { if (!NetworkUtils.isNetworkConnected(mContext)) { //没有网络 mLoginView.showSnackBar(mContext.getResources().getString(R.string.toast_no_connection)); return false; } return true; } @Override public void loginQQ() { mRxUser.isLoginQQ() .observeOn(AndroidSchedulers.mainThread()) .subscribe(aBoolean -> { if (aBoolean) { mLoginView.showSnackBar(mContext.getResources().getString(R.string.toast_already_login)); } else { mRxUser.loginQQ(mActivity) .doOnSubscribe(() -> mLoginView.showProgressBar()) .subscribeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe((iUser -> { mLoginView.hideProgressBar(); mLoginView.finishActivityWithResult(RESULT_DATA_QQ); }), ((throwable -> { YLog.e(throwable); mLoginView.hideProgressBar(); mLoginView.showSnackBarWithAction(mContext.getResources().getString(R.string.toast_fail), mContext.getResources().getString(R.string.toast_retry), (() -> loginQQ())); }))); } }, (throwable -> YLog.e(throwable))); } @Override public void loginEvernote() { mRxUser.isLoginEvernote() .observeOn(AndroidSchedulers.mainThread()) .subscribe(aBoolean -> { if (aBoolean) { mLoginView.showSnackBar(mContext.getResources().getString(R.string.toast_already_login)); } else { mRxUser.loginEvernote(mActivity).subscribe(); } }, (throwable -> YLog.e(throwable))); } @Override public void onEvernoteLoginFinished(boolean successful) { if (successful) { mRxUser.saveEvernote() .observeOn(AndroidSchedulers.mainThread()) .subscribe((iUser -> mLoginView.finishActivityWithResult(RESULT_DATA_EVERNOTE)), (throwable -> { YLog.e(throwable); mLoginView.showSnackBarWithAction(mContext.getResources().getString(R.string.toast_fail), mContext.getResources().getString(R.string.toast_retry), (() -> mRxUser.loginEvernote(mActivity).subscribe((bool) -> { }, (throwable1 -> YLog.e(throwable1)) ))); })); } else { mLoginView.showSnackBarWithAction(mContext.getResources().getString(R.string.toast_fail), mContext.getResources().getString(R.string.toast_retry), (() -> mRxUser.loginEvernote(mActivity).subscribe((bool) -> { }, (throwable -> YLog.e(throwable))))); } } }