diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt index da427e5bc..ef7bf5142 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt @@ -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) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/TasksViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/TasksViewModel.kt index 8e52f6e3d..e353dacb4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/TasksViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/TasksViewModel.kt @@ -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): List { @@ -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): RealmQuery? { if (!unfilteredData.isValid) { return null