Fix showing completed tasks in subtask filter

pull/2906/head
Alex Baker 4 weeks ago
parent 5ec02011f8
commit d6e0c0bdcf

@ -30,6 +30,7 @@ interface Filter : FilterListItem, Parcelable {
fun supportsHiddenTasks(): Boolean = true fun supportsHiddenTasks(): Boolean = true
fun supportsSubtasks(): Boolean = true fun supportsSubtasks(): Boolean = true
fun supportsSorting(): Boolean = true fun supportsSorting(): Boolean = true
fun disableHeaders(): Boolean = !supportsSorting()
} }
@Deprecated("Use manual ordering") @Deprecated("Use manual ordering")

@ -0,0 +1,34 @@
package org.tasks.filters
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.FilterListItem
import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
import org.tasks.data.dao.TaskDao
import org.tasks.data.entity.Task
import org.tasks.data.sql.Criterion
import org.tasks.data.sql.QueryTemplate
@Parcelize
data class SubtaskFilter(
private val parent: Long,
) : Filter {
@IgnoredOnParcel
override val title: String = "subtasks"
@IgnoredOnParcel
override val sql: String =
QueryTemplate()
.where(
Criterion.and(
TaskDao.TaskCriteria.activeAndVisible(),
Task.PARENT.eq(parent)
)
)
.toString()
override fun disableHeaders() = true
override fun areItemsTheSame(other: FilterListItem): Boolean =
other is SubtaskFilter && parent == other.parent
}

@ -9,12 +9,8 @@ import androidx.fragment.app.activityViewModels
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.data.sql.Criterion
import org.tasks.data.sql.QueryTemplate
import com.todoroo.astrid.activity.MainActivityViewModel import com.todoroo.astrid.activity.MainActivityViewModel
import com.todoroo.astrid.api.FilterImpl
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import org.tasks.data.entity.Task
import com.todoroo.astrid.service.TaskCompleter import com.todoroo.astrid.service.TaskCompleter
import com.todoroo.astrid.service.TaskCreator import com.todoroo.astrid.service.TaskCreator
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@ -23,7 +19,8 @@ import org.tasks.R
import org.tasks.compose.collectAsStateLifecycleAware import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.compose.edit.SubtaskRow import org.tasks.compose.edit.SubtaskRow
import org.tasks.data.dao.GoogleTaskDao import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible import org.tasks.data.entity.Task
import org.tasks.filters.SubtaskFilter
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.tasklist.SectionedDataSource import org.tasks.tasklist.SectionedDataSource
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
@ -47,7 +44,7 @@ class SubtaskControlSet : TaskEditControlFragment() {
override fun createView(savedInstanceState: Bundle?) { override fun createView(savedInstanceState: Bundle?) {
viewModel.task.takeIf { it.id > 0 }?.let { viewModel.task.takeIf { it.id > 0 }?.let {
listViewModel.setFilter(FilterImpl("subtasks", getQueryTemplate(it))) listViewModel.setFilter(SubtaskFilter(it.id))
} }
} }
@ -112,13 +109,5 @@ class SubtaskControlSet : TaskEditControlFragment() {
companion object { companion object {
val TAG = R.string.TEA_ctrl_subtask_pref val TAG = R.string.TEA_ctrl_subtask_pref
private fun getQueryTemplate(task: Task): String = QueryTemplate()
.where(
Criterion.and(
activeAndVisible(),
Task.PARENT.eq(task.id)
)
)
.toString()
} }
} }

@ -30,11 +30,11 @@ import org.tasks.R
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.compose.throttleLatest import org.tasks.compose.throttleLatest
import org.tasks.data.dao.DeletionDao
import org.tasks.data.entity.Task
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.data.dao.TaskDao
import org.tasks.data.TaskListQuery.getQuery import org.tasks.data.TaskListQuery.getQuery
import org.tasks.data.dao.DeletionDao
import org.tasks.data.dao.TaskDao
import org.tasks.data.entity.Task
import org.tasks.data.fetchTasks import org.tasks.data.fetchTasks
import org.tasks.db.QueryUtils import org.tasks.db.QueryUtils
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
@ -156,7 +156,7 @@ class TaskListViewModel @Inject constructor(
tasks = TasksResults.Results( tasks = TasksResults.Results(
SectionedDataSource( SectionedDataSource(
tasks = tasks, tasks = tasks,
disableHeaders = !it.filter.supportsSorting() disableHeaders = it.filter.disableHeaders()
|| (it.filter.supportsManualSort() && preferences.isManualSort) || (it.filter.supportsManualSort() && preferences.isManualSort)
|| (it.filter is AstridOrderingFilter && preferences.isAstridSort), || (it.filter is AstridOrderingFilter && preferences.isAstridSort),
groupMode = preferences.groupMode, groupMode = preferences.groupMode,

Loading…
Cancel
Save