Don't update completion date on subtasks

gtask_related_email
Alex Baker 5 years ago
parent c91ebff147
commit ce135dc98c

@ -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<Task> tasks = newArrayList(googleTaskDao.getChildTasks(item.getId()));
List<Long> 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<Task> 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);
}
}

Loading…
Cancel
Save