From 52c54b1eacec5bae485776e6dcdf307e7c42cee4 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sun, 3 Dec 2023 01:29:20 -0600 Subject: [PATCH] Fix excessive querying (again) --- .../java/org/tasks/ui/TaskListViewModel.kt | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt index 2a736bace..c76861eb9 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt @@ -16,10 +16,10 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -110,20 +110,17 @@ class TaskListViewModel @Inject constructor( localBroadcastManager.registerRefreshReceiver(refreshReceiver) _state - .mapNotNull { state -> state.filter?.let { it to state.searchQuery } } + .filter { it.filter != null } + .map { it.copy(tasks = TasksResults.Loading) } .distinctUntilChanged() .throttleLatest(333) - .map { (filter, searchQuery) -> - taskDao.fetchTasks { - getQuery( - preferences = preferences, - filter = when { - searchQuery == null -> filter - searchQuery.isBlank() -> BuiltInFilterExposer.getMyTasksFilter(context.resources) - else -> context.createSearchQuery(searchQuery) - } - ) + .map { + val filter = when { + it.searchQuery == null -> it.filter!! + it.searchQuery.isBlank() -> BuiltInFilterExposer.getMyTasksFilter(context.resources) + else -> context.createSearchQuery(it.searchQuery) } + taskDao.fetchTasks { getQuery(preferences, filter) } } .onEach { tasks -> _state.update {