diff --git a/DevLog/Presentation/ViewModel/SearchViewModel.swift b/DevLog/Presentation/ViewModel/SearchViewModel.swift index 25f3791d..2e56e10f 100644 --- a/DevLog/Presentation/ViewModel/SearchViewModel.swift +++ b/DevLog/Presentation/ViewModel/SearchViewModel.swift @@ -98,6 +98,7 @@ final class SearchViewModel: Store { case .setSearching(let isSearching): state.isSearching = isSearching case .setSearchQuery(let query): + guard state.searchQuery != query else { return [] } state.searchQuery = query state.showAllTodos = false state.showAllWebPages = false diff --git a/DevLog/Presentation/ViewModel/TodoListViewModel.swift b/DevLog/Presentation/ViewModel/TodoListViewModel.swift index f64a79de..24134f88 100644 --- a/DevLog/Presentation/ViewModel/TodoListViewModel.swift +++ b/DevLog/Presentation/ViewModel/TodoListViewModel.swift @@ -310,6 +310,7 @@ private extension TodoListViewModel { guard state.hasMore, !state.isLoading, pendingTask == nil else { return [] } return [.loadNextPage] case .setSearchText(let text): + guard state.searchText != text else { return [] } state.searchText = text state.showAllSearchResults = false let trimmed = text.trimmingCharacters(in: .whitespacesAndNewlines)