diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java b/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java index 4cf1e0ade..708910118 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java +++ b/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java @@ -22,7 +22,10 @@ import org.tasks.data.DeletionDao; import org.tasks.data.GoogleTaskAccount; import org.tasks.data.GoogleTaskDao; import org.tasks.data.GoogleTaskList; +import org.tasks.data.TaskContainer; import org.tasks.jobs.WorkManager; +import org.tasks.preferences.Preferences; +import org.tasks.ui.TaskListViewModel; public class TaskDeleter { @@ -31,6 +34,7 @@ public class TaskDeleter { private final LocalBroadcastManager localBroadcastManager; private final GoogleTaskDao googleTaskDao; private final CaldavDao caldavDao; + private final Preferences preferences; private final DeletionDao deletionDao; @Inject @@ -40,13 +44,15 @@ public class TaskDeleter { TaskDao taskDao, LocalBroadcastManager localBroadcastManager, GoogleTaskDao googleTaskDao, - CaldavDao caldavDao) { + CaldavDao caldavDao, + Preferences preferences) { this.deletionDao = deletionDao; this.workManager = workManager; this.taskDao = taskDao; this.localBroadcastManager = localBroadcastManager; this.googleTaskDao = googleTaskDao; this.caldavDao = caldavDao; + this.preferences = preferences; } public int purgeDeleted() { @@ -82,12 +88,15 @@ public class TaskDeleter { public int clearCompleted(Filter filter) { List completed = new ArrayList<>(); - String query = + Filter deleteFilter = new Filter(null, null); + deleteFilter.setFilterQueryOverride( filter .getOriginalSqlQuery() .replace(isVisible().toString(), all.toString()) - .replace(notCompleted().toString(), all.toString()); - for (Task task : taskDao.fetchFiltered(query)) { + .replace(notCompleted().toString(), all.toString())); + List tasks = taskDao.fetchTasks( + hasSubtasks -> TaskListViewModel.getQuery(preferences, deleteFilter, hasSubtasks)); + for (TaskContainer task : tasks) { if (task.isCompleted()) { completed.add(task.getId()); }