package com.betaseries.betaseries.ui.episodes.unseen;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.betaseries.betaseries.R;
import com.betaseries.betaseries.controllers.EventImageViewController;
import com.betaseries.betaseries.model.Episode;
import com.betaseries.betaseries.model.Show;
import com.betaseries.betaseries.ui.AbstractFragment;
import com.betaseries.betaseries.ui.episodes.detail.EpisodeDetailActivity;
import com.betaseries.betaseries.ui.show.detail.ShowDetailActivity;
import com.github.florent37.carpaccio.Carpaccio;
import com.github.florent37.carpaccio.controllers.adapter.CarpaccioRecyclerViewAdapter;
import com.github.florent37.carpaccio.controllers.adapter.Holder;
import com.github.florent37.carpaccio.controllers.adapter.OnHeaderClickListener;
import com.github.florent37.carpaccio.controllers.adapter.OnItemClickListener;
import com.github.florent37.carpaccio.controllers.adapter.OnItemSwipedListener;
import com.github.florent37.carpaccio.controllers.adapter.RecyclerViewCallbackAdapter;
import butterknife.Bind;
import butterknife.ButterKnife;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Created by florentchampigny on 11/08/15.
*/
public class UnseenEpisodesFragment extends AbstractFragment {
public static final String SHOW = "SHOW";
public static UnseenEpisodesFragment newInstance(Show show) {
UnseenEpisodesFragment fragment = new UnseenEpisodesFragment();
Bundle args = new Bundle();
args.putSerializable(SHOW, show);
fragment.setArguments(args);
return fragment;
}
@Bind(R.id.carpaccio)
Carpaccio carpaccio;
@Bind(R.id.recyclerView)
RecyclerView recyclerView;
Show show;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
show = (Show) getArguments().getSerializable(SHOW);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_unseen_episodes, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
}
@Override
public void onStart() {
super.onStart();
carpaccio.mapList("episode", show.getUnseen());
carpaccio.mapObject("show", this.show);
{
carpaccio.getAdapter("episode").setRecyclerViewCallback(new RecyclerViewCallbackAdapter() {
@Override
public Holder onCreateViewHolder(View view, int viewType) {
return new EpisodeViewHolder(view);
}
@Override
public void onBind(Object object, Holder holder, int position) {
super.onBind(object, holder, position);
EpisodeViewHolder.class.cast(holder).setCardVisible(object);
}
});
}
carpaccio
.onItemSwiped("episode", new OnItemSwipedListener<Episode>() {
@Override
public boolean canSwipe(int i, Episode episode) {
return !episode.isSwiped() || episode.isVoted();
}
@Override
public boolean onItemSwiped(Episode episode, int i, Holder holder, RecyclerView.Adapter adapter) {
if (!episode.isSwiped()) {
episode.setSwiped(true);
return false;
} else {
betaSeriesAPI.episodeMarquerVu(episode.getId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(vu -> {
EpisodeViewHolder.class.cast(holder).reinitStars();
betaSeriesAPI.episodeNoter(episode.getId(), episode.getNoteUser()).subscribe(o2 -> {
});
}
);
return true;
}
}
})
.onItemClick("episode", new OnItemClickListener<Episode>() {
@Override
public boolean isClickable(Episode episode, int i, Holder holder) {
return !episode.isSwiped();
}
@Override
public void onItemClick(Episode episode, int i, Holder holder) {
if (!episode.isSwiped()) {
ActivityCompat.startActivity(getActivity(), EpisodeDetailActivity.newInstance(getActivity(), show, episode), null);
}
}
})
.onHeaderClick("episode", (object, position, holder) -> {
if(object instanceof Show)
startActivity(ShowDetailActivity.newInstance(getActivity(),(Show)object));
});
//timeout
carpaccio.postDelayed(() -> {
if (getActivity() != null) getActivity().supportStartPostponedEnterTransition();
}, 2500);
}
@Override
public void onResume() {
super.onResume();
eventBus.register(this);
}
@Override
public void onPause() {
super.onPause();
eventBus.unregister(this);
}
public void onEvent(EventImageViewController.EventImage eventImage) {
if (eventImage.url.equals(show.getUrlShow()) && getActivity() != null)
getActivity().supportStartPostponedEnterTransition();
}
}