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

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;

import androidx.fragment.app.Fragment;

import com.common.lib_base.utils.LogUtils;
import com.common.lib_base.common.http.exception.BaseException;
import com.common.lib_base.common.http.rx.RxErrorHandler;


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

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

    // 当前类名
    public String mTag = getClass().getSimpleName() + "--";

    public RxErrorHandler mRxErrorHandler;

    protected Context mContext;
//    protected Activity mActivity;

    public ErrorHandlerSubscriber(Context context) {

        this.mContext = context;
//        this.mActivity = (Activity)context;

        mRxErrorHandler = new RxErrorHandler(mContext);

    }

    //课时19改造 ExErrorHandler以前通过构造方法传递，因为该类需要Context对象，所以改为内部new的形式创建,RecommendPresenter类中也不需要注入ExErrorHandler了
//    public ErrorHandlerSubscriber(RxErrorHandler rxErrorHandler) {
//        mRxErrorHandler = rxErrorHandler;
//    }


    @Override
    public void onError(Throwable e) {
        //打印错误
//        e.printStackTrace();
//
//        BaseException baseException = mRxErrorHandler.handleError(e);
//        mRxErrorHandler.showErrorMessage(baseException);


        BaseException baseException = mRxErrorHandler.handleError(e);

        if (baseException == null) {
            e.printStackTrace();
            LogUtils.e(mTag + "ErrorHandlerSubscriber--" + e.getMessage());
        } else {
            LogUtils.e(mTag + "ErrorHandlerSubscriber--" + e.getMessage());
            mRxErrorHandler.showErrorMessage(baseException);
            //token失效   测试了，该代码无效，放到了子类ProgressSubscriber中onError实现
//            if(BaseException.ERROR_TOKEN.equals(baseException.getCode()) ){
//                LogUtils.e("ErrorHandlerSubscriber   token失效");
//                toLogin();
//            }

        }


    }


    //测试了，该代码无效，放到了子类ProgressSubscriber中实现
//    private void toLogin() {
//
//        Intent intent = new Intent(mActivity, LoginActivity.class);
//        mActivity.startActivity(intent);
//    }


}
