package com.dangxy.readhub.model.wait;

import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.RecyclerView;

import com.dangxy.readhub.room.Wait;
import com.dangxy.readhub.room.WaitDataBase;

import java.util.List;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

/**
 * @author dangxueyi
 * @description
 * @date 2017/12/30
 */

public class WaitPresenter implements WaitContract.IWaitPresenter, SwipeRefreshLayout.OnRefreshListener {
    private WaitContract.IWaitView iTopicView;
    private SwipeRefreshLayout mSwipeRefreshLayout;
    private boolean isRefresh;
    private RecyclerView mRecyclerView;

    public WaitPresenter(WaitContract.IWaitView iTopicView) {
        this.iTopicView = iTopicView;
    }

    public void setRefresh(SwipeRefreshLayout swipeRefreshLayout, RecyclerView recyclerView) {
        this.mSwipeRefreshLayout = swipeRefreshLayout;
        this.mRecyclerView = recyclerView;
        mSwipeRefreshLayout.setOnRefreshListener(this);
    }

    @Override
    public void getData() {
        WaitDataBase.getDatabase().waitDao().findAll()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<List<Wait>>() {
                    @Override
                    public void accept(List<Wait> waitList) throws Exception {
                        if (isRefresh) {
                            mSwipeRefreshLayout.setRefreshing(false);
                            isRefresh = false;
                            iTopicView.setRefresh(waitList);
                        } else {
                            iTopicView.hideLoading();
                            iTopicView.getTopicEntity(waitList);

                        }

                    }
                });
    }

    @Override
    public void onRefresh() {
        isRefresh = true;
        getData();
    }
}