From e9afacb5950d93d42a0af9ae4c965663f8407f61 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sun, 28 Jan 2024 11:55:20 -0600 Subject: [PATCH] Include hidden subtasks when clearing completed --- .../ui/editviewmodel/TaskListViewModelTest.kt | 16 ++++++++++++++++ app/src/main/java/org/tasks/data/TaskDao.kt | 6 +++--- .../main/java/org/tasks/ui/TaskListViewModel.kt | 9 ++++++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/src/androidTest/java/org/tasks/ui/editviewmodel/TaskListViewModelTest.kt b/app/src/androidTest/java/org/tasks/ui/editviewmodel/TaskListViewModelTest.kt index 5c7eec3da..cd116f01e 100644 --- a/app/src/androidTest/java/org/tasks/ui/editviewmodel/TaskListViewModelTest.kt +++ b/app/src/androidTest/java/org/tasks/ui/editviewmodel/TaskListViewModelTest.kt @@ -141,5 +141,21 @@ class TaskListViewModelTest : InjectingTestCase() { assertTrue(taskDao.fetch(child)!!.isDeleted) } + @Test + fun clearHiddenSubtask() = runBlocking { + preferences.showCompleted = false + val parent = taskDao.createNew(Task()) + val child = taskDao.createNew( + Task( + parent = parent, + completionDate = now(), + ) + ) + + clearCompleted() + + assertTrue(taskDao.fetch(child)!!.isDeleted) + } + private suspend fun clearCompleted() = viewModel.markDeleted(viewModel.getTasksToClear()) } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/data/TaskDao.kt b/app/src/main/java/org/tasks/data/TaskDao.kt index 3bb00c8b8..aac76a7f3 100644 --- a/app/src/main/java/org/tasks/data/TaskDao.kt +++ b/app/src/main/java/org/tasks/data/TaskDao.kt @@ -21,7 +21,7 @@ import org.tasks.BuildConfig import org.tasks.data.Alarm.Companion.TYPE_SNOOZE import org.tasks.db.SuspendDbUtils.chunkedMap import org.tasks.db.SuspendDbUtils.eachChunk -import org.tasks.preferences.Preferences +import org.tasks.preferences.QueryPreferences import org.tasks.time.DateTimeUtils.currentTimeMillis import timber.log.Timber @@ -113,7 +113,7 @@ abstract class TaskDao(private val database: Database) { result } - suspend fun fetchTasks(preferences: Preferences, filter: Filter): List = + suspend fun fetchTasks(preferences: QueryPreferences, filter: Filter): List = fetchTasks { TaskListQuery.getQuery(preferences, filter) } @@ -175,7 +175,7 @@ FROM recursive_tasks """) abstract suspend fun getParents(parent: Long): List - internal suspend fun setCollapsed(preferences: Preferences, filter: Filter, collapsed: Boolean) { + internal suspend fun setCollapsed(preferences: QueryPreferences, filter: Filter, collapsed: Boolean) { fetchTasks(preferences, filter) .filter(TaskContainer::hasChildren) .map(TaskContainer::id) diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt index 1c09bce9c..2b73f46ea 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt @@ -40,6 +40,7 @@ import org.tasks.data.TaskListQuery.getQuery import org.tasks.db.QueryUtils import org.tasks.extensions.Context.openUri import org.tasks.preferences.Preferences +import org.tasks.preferences.QueryPreferences import javax.inject.Inject @HiltViewModel @@ -118,7 +119,13 @@ class TaskListViewModel @Inject constructor( val deleteFilter = FilterImpl( sql = QueryUtils.removeOrder(QueryUtils.showHiddenAndCompleted(filter.sql!!)), ) - val completed = taskDao.fetchTasks(preferences, deleteFilter) + val completed = taskDao.fetchTasks( + object : QueryPreferences by preferences { + override val showCompleted: Boolean + get() = true + }, + deleteFilter + ) .filter(TaskContainer::isCompleted) .filterNot(TaskContainer::isReadOnly) .map(TaskContainer::id)