From ce2a9df78203f66974f4557fb8755b4a45d7e68d Mon Sep 17 00:00:00 2001 From: Hafiz Date: Sat, 21 Jun 2025 13:57:07 -0500 Subject: [PATCH] Fix to-do's not moving off screen when being checked off Fix to-do's task fragment showing filter active when none were --- .../fragments/tasks/TaskRecyclerViewFragment.kt | 17 ++++++++++++----- .../habitica/ui/viewmodels/TasksViewModel.kt | 9 ++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) 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 ef7bf5142..b1724e5f3 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 @@ -581,12 +581,19 @@ open class TaskRecyclerViewFragment : if (it != null) { when (taskType) { TaskType.TODO -> { - viewModel.setActiveFilter( - TaskType.TODO, - viewModel.getTaskFilterPreference(TaskType.TODO) - ) + // Handle case where a initial filter preference for to-dos were set for FILTER_ALL + if (viewModel.getTaskFilterPreference(TaskType.TODO) == Task.FILTER_ALL) { + viewModel.setActiveFilter( + TaskType.TODO, + Task.FILTER_ACTIVE + ) + } else { + viewModel.setActiveFilter( + TaskType.TODO, + viewModel.getTaskFilterPreference(TaskType.TODO) + ) + } } - TaskType.DAILY -> { if (!viewModel.initialPreferenceFilterSet) { viewModel.initialPreferenceFilterSet = true 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 aec24462b..84d806996 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,9 +199,12 @@ constructor( if (activeFilters[type] == null) { return false } - return if (TaskType.TODO == type) { - Task.FILTER_ACTIVE != activeFilters[type] + when(activeFilters[type]) { + Task.FILTER_ACTIVE -> false + Task.FILTER_ALL -> false + else -> true + } } else { Task.FILTER_ALL != activeFilters[type] } @@ -289,7 +292,7 @@ constructor( fun getTaskFilterPreference( type: TaskType ): String { - return sharedPreferences.getString("filter_${type.value}", Task.FILTER_ALL) ?: Task.FILTER_ALL + return sharedPreferences.getString("filter_${type.value}", Task.FILTER_ALL) ?: if (TaskType.TODO == type) Task.FILTER_ACTIVE else Task.FILTER_ALL } fun createQuery(unfilteredData: OrderedRealmCollection): RealmQuery? {