package com.edufound.reader.fragment;

import android.annotation.SuppressLint;
import android.graphics.Rect;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridLayout;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.Space;

import com.baidu.duer.bot.directive.payload.AmountInfo;
import com.baidu.duer.botsdk.BotIntent;
import com.edufound.reader.R;
import com.edufound.reader.activity.SafflowerActivity;
import com.edufound.reader.base.BaseMvpFragment;
import com.edufound.reader.bean.UserEventEnum;
import com.edufound.reader.contract.CharacterFragmentContract;
import com.edufound.reader.presenter.CharacterFragmentPresenter;
import com.edufound.reader.util.Consts;
import com.edufound.reader.util.EfunboxUtil;
import com.edufound.reader.util.GlideUtils;
import com.jakewharton.rxbinding4.view.RxView;
import com.jakewharton.rxbinding4.view.RxViewGroup;
import com.jakewharton.rxbinding4.view.ViewGroupHierarchyChangeEvent;
import com.orhanobut.logger.Logger;

import java.util.HashMap;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;

import io.reactivex.rxjava3.annotations.Nullable;
import io.reactivex.rxjava3.functions.Consumer;

public class CharacterFragment extends BaseMvpFragment<CharacterFragmentPresenter> implements CharacterFragmentContract.View {


    View mRootView;
    HorizontalScrollView mScrollView;
    GridLayout mGridLayout;
    Space mBottomView;
    Rect mScreenRect;
    boolean isNeedLoad = false;

    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void initView(View view) {
        mRootView = view;
        mPresenter = new CharacterFragmentPresenter(getContext());
        mPresenter.attachView(this);
        mScreenRect = new Rect(0, 0, Consts.getScreenSize()[0], Consts.getScreenSize()[1]);
        //初始化左侧广告UI
        ImageView mCharacterImage = view.findViewById(R.id.fragment_main_character_img);
        GlideUtils.loadImageSizeKipMemoryCache(getContext(), "http://reader-apk.ai160.com/reader-apk/res/character_image_1.png", mCharacterImage);
        mScrollView = view.findViewById(R.id.fragment_main_character_scrollview);
        mGridLayout = view.findViewById(R.id.fragment_my_recyclerview);
        mBottomView = view.findViewById(R.id.fragment_main_character_bottomview);
        addUiClick(mCharacterImage, o -> {
            if (EfunboxUtil.checkLogin(getActivity())) {
                mPresenter.getUserApi().postUserEvent(getActivity(), UserEventEnum.EVENT_INTEGRAL.getEvent());
                toNextActivity(SafflowerActivity.class);
            }
        });

        mPresenter.getExampleAll();


    }


    @Override
    protected int getLayoutId() {
        return R.layout.fragment_main_character;
    }

    @SuppressLint("AutoDispose")
    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void initViewListener() {
        RxView.scrollChangeEvents(mScrollView).subscribe(viewScrollChangeEvent -> {
            if (mBottomView.getLocalVisibleRect(mScreenRect)) {
                if (isNeedLoad) {
                    isNeedLoad = false;
                    mPresenter.initGridLayout(mGridLayout);
                }
            } else {
                isNeedLoad = true;
            }
        });


    }

    @Override
    public void showLoading() {

    }

    @Override
    public void hideLoading() {

    }

    @Override
    public void onError(String errMessage) {

    }

    @Override
    public ViewGroup getRootView() {
        return (ViewGroup) mRootView;
    }

    @Override
    public void addUiClick(View view, Consumer onNext) {
        addUiClickListener(view, onNext);
    }

    @Override
    public void getExampleAllSuccess() {
        mPresenter.initGridLayout(mGridLayout);
    }

    @Override
    public Space getBottomView() {
        return mBottomView;
    }

    @Override
    public void onDestroy() {
        isNeedLoad = true;
        mPresenter.onDestory(mGridLayout);
        super.onDestroy();
    }

    @Override
    public void onGetDisconnect() {

    }

    @Override
    public void onGetMobileConnect() {

    }

    @Override
    public void onGetWifiConnect() {

    }


    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mPresenter.onDestory(mGridLayout);
    }
}