package com.zhuinden.simplestackdemoexamplefragments.presentation.paths.statistics;
import android.support.annotation.Nullable;
import com.zhuinden.simplestackdemoexamplefragments.data.repository.TaskRepository;
import com.zhuinden.simplestackdemoexamplefragments.presentation.objects.Task;
import com.zhuinden.simplestackdemoexamplefragments.util.BasePresenter;
import com.zhuinden.statebundle.StateBundle;
import org.javatuples.Pair;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
/**
* Created by Owner on 2017. 01. 27..
*/
public class StatisticsPresenter
extends BasePresenter<StatisticsFragment, StatisticsPresenter> {
@Inject
public StatisticsPresenter() {
}
@Inject
TaskRepository tasksRepository;
Disposable disposable;
@Override
protected void onAttach(StatisticsFragment coordinator) {
disposable = Observable.combineLatest(tasksRepository.getActiveTasks(), //
tasksRepository.getCompletedTasks(), //
(activeTasks, completedTasks) -> Pair.with(activeTasks, completedTasks)) //
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(pairOfActiveAndCompletedTasks -> {
List<Task> activeTasks = pairOfActiveAndCompletedTasks.getValue0();
List<Task> completedTasks = pairOfActiveAndCompletedTasks.getValue1();
if(getFragment() != null) {
getFragment().showStatistics(activeTasks.size(), completedTasks.size());
}
});
}
@Override
protected void onDetach(StatisticsFragment coordinator) {
disposable.dispose();
}
@Override
public StateBundle toBundle() {
return new StateBundle();
}
@Override
public void fromBundle(@Nullable StateBundle bundle) {
}
}