Don't update completion date on subtasks

gtask_related_email
Alex Baker 6 years ago
parent c91ebff147
commit ce135dc98c

@ -1,10 +1,12 @@
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import static com.google.common.collect.Lists.newArrayList;
import static com.todoroo.andlib.utility.DateUtilities.now; import static com.todoroo.andlib.utility.DateUtilities.now;
import static java.util.Collections.singletonList;
import com.google.common.collect.Iterables;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import java.util.Collections;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.data.CaldavDao; import org.tasks.data.CaldavDao;
@ -35,17 +37,23 @@ public class TaskCompleter {
public void setComplete(Task item, boolean completed) { public void setComplete(Task item, boolean completed) {
long completionDate = completed ? now() : 0L; long completionDate = completed ? now() : 0L;
setComplete(singletonList(item), completionDate); setComplete(Collections.singletonList(item), completionDate);
setComplete(googleTaskDao.getChildTasks(item.getId()), completionDate); List<Task> tasks = newArrayList(googleTaskDao.getChildTasks(item.getId()));
List<Long> caldavChildren = caldavDao.getChildren(item.getId()); List<Long> caldavChildren = caldavDao.getChildren(item.getId());
if (!caldavChildren.isEmpty()) { if (!caldavChildren.isEmpty()) {
setComplete(taskDao.fetch(caldavChildren), completionDate); tasks.addAll(taskDao.fetch(caldavChildren));
} }
setComplete(
newArrayList(Iterables.filter(tasks, t -> t.isCompleted() != completed)), completionDate);
} }
private void setComplete(List<Task> tasks, long completionDate) { private void setComplete(List<Task> tasks, long completionDate) {
for (Task task : tasks) { for (int i = 0; i < tasks.size(); i++) {
Task task = tasks.get(i);
task.setCompletionDate(completionDate); task.setCompletionDate(completionDate);
if (i < tasks.size() - 1) {
task.putTransitory(TaskDao.TRANS_SUPPRESS_REFRESH, true);
}
taskDao.save(task); taskDao.save(task);
} }
} }

Loading…
Cancel
Save