package com.zhuinden.simplestackdemoexamplefragments.presentation.paths.taskdetail;
import android.support.annotation.Nullable;
import com.zhuinden.simplestack.Backstack;
import com.zhuinden.simplestackdemoexamplefragments.data.repository.TaskRepository;
import com.zhuinden.simplestackdemoexamplefragments.presentation.objects.Task;
import com.zhuinden.simplestackdemoexamplefragments.presentation.paths.addoredittask.AddOrEditTaskKey;
import com.zhuinden.simplestackdemoexamplefragments.util.BasePresenter;
import com.zhuinden.simplestackdemoexamplefragments.util.Strings;
import com.zhuinden.statebundle.StateBundle;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
/**
* Created by Owner on 2017. 01. 27..
*/
public class TaskDetailPresenter
extends BasePresenter<TaskDetailFragment, TaskDetailPresenter> {
@Inject
public TaskDetailPresenter() {
}
@Inject
TaskRepository taskRepository;
@Inject
Backstack backstack;
TaskDetailKey taskDetailKey;
String taskId;
Task task;
@Override
protected void onAttach(TaskDetailFragment coordinator) {
taskDetailKey = coordinator.getKey();
this.taskId = taskDetailKey.taskId();
taskRepository.findTask(taskId).observeOn(AndroidSchedulers.mainThread()).subscribe(taskOptional -> {
if(taskOptional.isPresent()) {
task = taskOptional.get();
coordinator.showTask(task);
} else {
task = null;
coordinator.showMissingTask();
}
});
}
@Override
protected void onDetach(TaskDetailFragment coordinator) {
}
public void editTask() {
if(Strings.isNullOrEmpty(taskId)) {
getFragment().showMissingTask();
return;
}
backstack.goTo(AddOrEditTaskKey.createWithTaskId(getFragment().getKey(), taskId));
}
public void completeTask(Task task) {
taskRepository.setTaskCompleted(task);
}
public void activateTask(Task task) {
taskRepository.setTaskActive(task);
}
public void deleteTask() {
if(task != null) {
taskRepository.deleteTask(task);
backstack.goBack();
}
}
@Override
public StateBundle toBundle() {
return new StateBundle();
}
@Override
public void fromBundle(@Nullable StateBundle bundle) {
}
}