diff options
| -rw-r--r-- | Sora/Views/Post/Grid/PostGridView.swift | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/Sora/Views/Post/Grid/PostGridView.swift b/Sora/Views/Post/Grid/PostGridView.swift index 165ac01..8e077c3 100644 --- a/Sora/Views/Post/Grid/PostGridView.swift +++ b/Sora/Views/Post/Grid/PostGridView.swift @@ -8,6 +8,7 @@ struct PostGridView: View { @Binding var selectedTab: Int @State private var viewStates: [UUID: PostGridViewState] = [:] @State private var isSearchablePresented = false + @State private var cachedSuggestions: [Either<BooruTag, BooruSearchQuery>] = [] @Environment(\.isSearching) private var isSearching @@ -53,6 +54,13 @@ struct PostGridView: View { ) } } + .onAppear { + if settings.searchSuggestionsMode == .tags { + cachedSuggestions = manager.allTags.map { tag in + Either<BooruTag, BooruSearchQuery>.left(tag) + } + } + } .onSubmit(of: .search) { manager.performSearch(settings: settings) } @@ -201,22 +209,16 @@ struct PostGridView: View { } private func searchSuggestionsItems() -> [Either<BooruTag, BooruSearchQuery>] { - let items: [Either<BooruTag, BooruSearchQuery>] - switch settings.searchSuggestionsMode { case .tags: - items = manager.allTags - .map { Either<BooruTag, BooruSearchQuery>.left($0) } + return cachedSuggestions case .history: - items = settings.searchHistory - .map { Either<BooruTag, BooruSearchQuery>.right($0) } + return settings.searchHistory.map { .right($0) } case .disabled: - items = [] + return [] } - - return items } private func updateViewState( |