Include hidden subtasks when clearing completed

pull/2744/head
Alex Baker 4 months ago
parent cf182aceab
commit e9afacb595

@ -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())
}

@ -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<TaskContainer> =
suspend fun fetchTasks(preferences: QueryPreferences, filter: Filter): List<TaskContainer> =
fetchTasks {
TaskListQuery.getQuery(preferences, filter)
}
@ -175,7 +175,7 @@ FROM recursive_tasks
""")
abstract suspend fun getParents(parent: Long): List<Long>
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)

@ -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)

Loading…
Cancel
Save