package licola.demo.com.huabandemo.Module.User;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import java.util.List;
import org.greenrobot.eventbus.EventBus;
import licola.demo.com.huabandemo.API.Fragment.OnPinsFragmentInteractionListener;
import licola.demo.com.huabandemo.API.Fragment.OnRefreshFragmentInteractionListener;
import licola.demo.com.huabandemo.API.HttpsAPI.UserAPI;
import licola.demo.com.huabandemo.Adapter.RecyclerPinsHeadCardAdapter;
import licola.demo.com.huabandemo.Base.BaseRecyclerHeadFragment;
import licola.demo.com.huabandemo.Entity.ListPinsBean;
import licola.demo.com.huabandemo.Entity.PinsMainEntity;
import licola.demo.com.huabandemo.HttpUtils.RetrofitClient;
import licola.demo.com.huabandemo.Util.Logger;
import rx.Subscriber;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
/**
* Created by LiCola on 2016/04/08 15:05
*/
public class UserLikeFragment extends
BaseRecyclerHeadFragment<RecyclerPinsHeadCardAdapter, List<PinsMainEntity>> {
private static final String TAG = "UserPinsFragment";
private int mMax;
private OnPinsFragmentInteractionListener mListener;
private OnRefreshFragmentInteractionListener mRefreshListener;
@Override
protected String getTAG() {
return this.toString();
}
public static UserLikeFragment newInstance(String key) {
UserLikeFragment fragment = new UserLikeFragment();
Bundle args = new Bundle();
args.putString(TYPE_KEY, key);
fragment.setArguments(args);
return fragment;
}
@Override
protected Subscription getHttpFirst() {
return RetrofitClient.createService(UserAPI.class)
.httpsUserLikePinsRx(mAuthorization,mKey,mLimit)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(ListPinsBean::getPins)
.filter(getFilterFunc1())
.subscribe(new Action1<List<PinsMainEntity>>() {
@Override
public void call(List<PinsMainEntity> pinsAndUserEntities) {
Logger.d();
mAdapter.setListNotify(pinsAndUserEntities);
mMax=getMax(pinsAndUserEntities);
}
},getErrorAction(),getCompleteAction());
}
private int getMax(List<PinsMainEntity> bean) {
return bean.get(bean.size() - 1).getSeq();
}
private Action1<Throwable> getErrorAction() {
return throwable -> {
Logger.d(throwable.toString());
checkException(throwable);
mRefreshListener.OnRefreshState(false);
};
}
private Action0 getCompleteAction() {
return () -> {
Logger.d();
mRefreshListener.OnRefreshState(false);
};
}
@Override
protected Subscription getHttpScroll() {
return RetrofitClient.createService(UserAPI.class)
.httpsUserLikePinsMaxRx(mAuthorization,mKey, mMax, mLimit)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map(ListPinsBean::getPins)
.filter(getFilterFunc1())
.subscribe(new Subscriber<List<PinsMainEntity>>() {
@Override
public void onCompleted() {
Logger.d();
}
@Override
public void onError(Throwable e) {
Logger.d(e.toString());
checkException(e);
}
@Override
public void onNext(List<PinsMainEntity> pinsAndUserEntities) {
Logger.d();
mAdapter.addListNotify(pinsAndUserEntities);
mMax = getMax(pinsAndUserEntities);
}
});
}
@Override
protected View getHeadView() {
return null;
}
@Override
protected int getAdapterPosition() {
return mAdapter.getAdapterPosition();
}
@Override
protected void initListener() {
super.initListener();
mAdapter.setOnClickItemListener(new RecyclerPinsHeadCardAdapter.OnAdapterListener() {
@Override
public void onClickImage(PinsMainEntity bean, View view) {
EventBus.getDefault().postSticky(bean);
mListener.onClickPinsItemImage(bean, view);
}
@Override
public void onClickTitleInfo(PinsMainEntity bean, View view) {
EventBus.getDefault().postSticky(bean);
mListener.onClickPinsItemText(bean, view);
}
@Override
public void onClickInfoGather(PinsMainEntity bean, View view) {
Logger.d();
}
@Override
public void onClickInfoLike(PinsMainEntity bean, View view) {
Logger.d();
}
});
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if ((context instanceof OnPinsFragmentInteractionListener)&&(context instanceof OnRefreshFragmentInteractionListener)) {
mListener = (OnPinsFragmentInteractionListener) context;
mRefreshListener= (OnRefreshFragmentInteractionListener) context;
} else {
throwRuntimeException(context);
}
if (context instanceof UserActivity){
mAuthorization=((UserActivity) context).mAuthorization;
}
}
@Override
protected RecyclerPinsHeadCardAdapter setAdapter() {
return new RecyclerPinsHeadCardAdapter(mRecyclerView);
}
}