Persists todo task filter preferences for each task type

Saves the active to-do task filter to shared preferences,  restoring the selected filter when the user returns.
This commit is contained in:
Hafiz 2025-06-03 15:30:31 -05:00 committed by Phillip Thelen
parent 49e1f2f9d1
commit 5139f74efa
2 changed files with 13 additions and 7 deletions

View file

@ -580,11 +580,12 @@ open class TaskRecyclerViewFragment :
viewModel.userViewModel.user.observeOnce(this) {
if (it != null) {
when (taskType) {
TaskType.TODO ->
TaskType.TODO -> {
viewModel.setActiveFilter(
TaskType.TODO,
Task.FILTER_ACTIVE
viewModel.getTaskFilterPreference(TaskType.TODO)
)
}
TaskType.DAILY -> {
if (!viewModel.initialPreferenceFilterSet) {

View file

@ -199,11 +199,8 @@ constructor(
if (activeFilters[type] == null) {
return false
}
return if (TaskType.TODO == type) {
Task.FILTER_ACTIVE != activeFilters[type]
} else {
Task.FILTER_ALL != activeFilters[type]
}
return Task.FILTER_ALL != activeFilters[type]
}
fun filter(tasks: List<Task>): List<Task> {
@ -259,6 +256,8 @@ constructor(
activeFilters[type] = activeFilter
filterSets[type]?.value = Triple(searchQuery, activeFilter, tags)
sharedPreferences.edit { putString("filter_${type.value}", activeFilter) }
if (activeFilters[TaskType.TODO] == Task.FILTER_COMPLETED) {
viewModelScope.launchCatching {
taskRepository.retrieveCompletedTodos()
@ -283,6 +282,12 @@ constructor(
}
}
fun getTaskFilterPreference(
type: TaskType
): String {
return sharedPreferences.getString("filter_${type.value}", Task.FILTER_ALL) ?: Task.FILTER_ALL
}
fun createQuery(unfilteredData: OrderedRealmCollection<Task>): RealmQuery<Task>? {
if (!unfilteredData.isValid) {
return null