package com.common.lib_base.common.http.rx.subscriber;

import android.content.Context;
import android.content.Intent;

import com.common.lib_base.mvp.view.BaseView;
import com.common.lib_base.utils.LogUtils;
import com.common.lib_base.common.http.exception.BaseException;

import io.reactivex.disposables.Disposable;


/**
 * Created by admin on 2018/3/16.
 *
 * @version $Rev$
 * @time 2018/3/16 15:09
 * @des ${TODO}
 * @updateAuthor $Author$
 * @updateDate $Date$
 * @updateDes ${TODO}
 */

public abstract class ProgressSubscriber<T> extends ErrorHandlerSubscriber<T> {


    private BaseView mView;


    public ProgressSubscriber(Context context, BaseView view) {
        super(context);
        this.mView = view;

    }



    public boolean isShowProgress(){
        return true;
    }



    @Override
    public void onSubscribe(Disposable d) {
        if(isShowProgress()){
            mView.showLoading();
        }
    }

//    @Override
//    public void onStart() {
//        if(isShowProgress()){
//            mView.showLoading();
//        }
//    }
//
//    @Override
//    public void onCompleted() {
//        mView.dismissLoading();
//    }

    @Override
    public void onComplete() {
        mView.dismissLoading();

    }

    @Override
    public void onError(Throwable e) {


        LogUtils.e("ProgressSubscriber-->onError");
        LogUtils.e("ProgressSubscriber-->onError--"+e.toString());

        e.printStackTrace();

        BaseException baseException =  mRxErrorHandler.handleError(e);
        LogUtils.e("ProgressSubscriber-->onError-->code:"+baseException.getCode());
        LogUtils.e("ProgressSubscriber-->onError-->Message:"+baseException.getDispalyMessage());


        mView.showError(baseException.getDispalyMessage()+"");



        //token失效
        if(BaseException.ERROR_TOKEN.equals(baseException.getCode()+"") ){
            LogUtils.e("ProgressSubscriber   token失效");
            // 可以这边处理直接跳转。也可以这边不处理，放到base的Activity/fragment中去checkLogin判断弹框跳转
//            toLogin();
        }








    }

    private void toLogin() {

//        Intent intent = new Intent(mActivity, LoginSmsActivity.class);
//        mActivity.startActivity(intent);
    }

//    Context mContext;

//    ProgressDialog dialog;

//    private ProgressDialogHandler mProgressDialogHandler;
//
//    private Disposable mDisposable;

//    private BaseView mView;
//
//    public ProgressSubscriber(Context context, BaseView view) {
//        super(context);
//        this.mView = view;
////        mProgressDialogHandler = new ProgressDialogHandler(mContext,true,this);
//    }
//
//
//    //    public ProgressDialogSubscriber(Context context, RxErrorHandler rxErrorHandler) {
////        super(rxErrorHandler);
////        mContext = context;
////    }
//
//    protected boolean isShowProgress(){
//        return true;
//    }
//
////    protected boolean isShowProgressDialog(){
////        return  true;
////    }
//
////    @Override
////    public void onCancelProgress() {
////
////        mDisposable.dispose();
////    }
//
//    public void onSubscribe(Disposable d) {
//
////        mDisposable = d;
//        if(isShowProgress()){
//            this.mProgressDialogHandler.showProgressDialog();
//        }
//
//    }
//
//
//    @Override
//    public void onStart() {
//        if(isShowProgress()){
//            showProgressDialog();
//        }
//    }
//
//    @Override
//    public void onCompleted() {
////        if(isShowProgress()){
////            dimissProgressDialog();
////        }
//        mView.dismissLoading();
//
//    }
//
//    @Override
//    public void onError(Throwable e) {
////        super.onError(e);
//        BaseException baseException =  mRxErrorHandler.handleError(e);
//        mView.showError(baseException.getDispalyMessage());
//    }
//
//    private void initProgressDialog(){
//        if(dialog==null){
//            dialog = new ProgressDialog(mContext);
//            dialog.setMessage("loading");
//        }
//
//
//    }
//
//
//    public void showProgressDialog(){
//        initProgressDialog();
//        dialog.show();
//    }
//
//    public void dimissProgressDialog(){
//
//        if(dialog!=null&&dialog.isShowing()){
//            dialog.dismiss();
//        }
//    }



}
