package com.zhuinden.simplestackdemoexamplemvp.presentation.paths.taskdetail; import com.zhuinden.simplestack.Backstack; import com.zhuinden.simplestackdemoexamplemvp.data.repository.TaskRepository; import com.zhuinden.simplestackdemoexamplemvp.presentation.objects.Task; import com.zhuinden.simplestackdemoexamplemvp.presentation.paths.addoredittask.AddOrEditTaskKey; import com.zhuinden.simplestackdemoexamplemvp.util.BasePresenter; import com.zhuinden.simplestackdemoexamplemvp.util.Strings; import javax.inject.Inject; import io.reactivex.android.schedulers.AndroidSchedulers; /** * Created by Owner on 2017. 01. 27.. */ public class TaskDetailPresenter extends BasePresenter<TaskDetailView, TaskDetailPresenter> { @Inject public TaskDetailPresenter() { } @Inject TaskRepository taskRepository; @Inject Backstack backstack; TaskDetailKey taskDetailKey; String taskId; Task task; @Override protected void onAttach(TaskDetailView view) { taskDetailKey = Backstack.getKey(view.getContext()); this.taskId = taskDetailKey.taskId(); taskRepository.findTask(taskId).observeOn(AndroidSchedulers.mainThread()).subscribe(taskOptional -> { if(taskOptional.isPresent()) { task = taskOptional.get(); view.showTask(task); } else { task = null; view.showMissingTask(); } }); } @Override protected void onDetach(TaskDetailView view) { } public void editTask() { if(Strings.isNullOrEmpty(taskId)) { getView().showMissingTask(); return; } backstack.goTo(AddOrEditTaskKey.createWithTaskId(Backstack.getKey(getView().getContext()), 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(); } } }