From ce135dc98c3c6bc54a87aa54d67e65741bb230f1 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 14 Nov 2019 16:13:44 -0600 Subject: [PATCH] Don't update completion date on subtasks --- .../todoroo/astrid/service/TaskCompleter.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCompleter.java b/app/src/main/java/com/todoroo/astrid/service/TaskCompleter.java index 5576a627d..ae2a4b524 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCompleter.java +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCompleter.java @@ -1,10 +1,12 @@ package com.todoroo.astrid.service; +import static com.google.common.collect.Lists.newArrayList; 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.data.Task; +import java.util.Collections; import java.util.List; import javax.inject.Inject; import org.tasks.data.CaldavDao; @@ -35,17 +37,23 @@ public class TaskCompleter { public void setComplete(Task item, boolean completed) { long completionDate = completed ? now() : 0L; - setComplete(singletonList(item), completionDate); - setComplete(googleTaskDao.getChildTasks(item.getId()), completionDate); + setComplete(Collections.singletonList(item), completionDate); + List tasks = newArrayList(googleTaskDao.getChildTasks(item.getId())); List caldavChildren = caldavDao.getChildren(item.getId()); 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 tasks, long completionDate) { - for (Task task : tasks) { + for (int i = 0; i < tasks.size(); i++) { + Task task = tasks.get(i); task.setCompletionDate(completionDate); + if (i < tasks.size() - 1) { + task.putTransitory(TaskDao.TRANS_SUPPRESS_REFRESH, true); + } taskDao.save(task); } }