diff --git a/StickerSlack/Emoji/EmojiHoarder.swift b/StickerSlack/Emoji/EmojiHoarder.swift index 60f7b9b..cf3c225 100644 --- a/StickerSlack/Emoji/EmojiHoarder.swift +++ b/StickerSlack/Emoji/EmojiHoarder.swift @@ -21,7 +21,7 @@ class EmojiHoarder: ObservableObject { @Published var emojis: [Emoji] = [] @Published var trie: Trie = Trie() - @Published var filteredEmojis: [String] = [] +// @Published var filteredEmojis: [String] = [] @Published var downloadedEmojis: Set = [] @Published var searchTerm: String = "" @@ -29,7 +29,6 @@ class EmojiHoarder: ObservableObject { let localDB = loadLocalDB() withAnimation { self.emojis = localDB } if !skipIndex { buildTrie() } - withAnimation { self.filteredEmojis = [] } guard !localOnly else { return } Task.detached { @@ -68,7 +67,6 @@ class EmojiHoarder: ObservableObject { trie.root = TrieNode() trie.dict = [:] downloadedEmojis = [] - filteredEmojis = [] } func buildTrie() { @@ -143,10 +141,6 @@ class EmojiHoarder: ObservableObject { } } - func filterEmojis(by searchTerm: String) { - withAnimation { filteredEmojis = trie.search(prefix: searchTerm) } - } - func download(emoji: Emoji) { Task.detached { try? await emoji.downloadImage() diff --git a/StickerSlack/SwiftUI/SearchView.swift b/StickerSlack/SwiftUI/SearchView.swift index 9910ada..81f7d95 100644 --- a/StickerSlack/SwiftUI/SearchView.swift +++ b/StickerSlack/SwiftUI/SearchView.swift @@ -10,19 +10,21 @@ import SwiftUI struct SearchView: View { @ObservedObject var hoarder: EmojiHoarder + @State var filterResult: [String] = [] + var body: some View { NavigationStack { List { - Text("\(hoarder.searchTerm.isEmpty ? hoarder.emojis.count : hoarder.filteredEmojis.count) Emoji") + Text("\(hoarder.searchTerm.isEmpty ? hoarder.emojis.count : filterResult.count) Emoji") - ForEach(hoarder.filteredEmojis, id: \.self) { name in + ForEach(filterResult, id: \.self) { name in if let emoji = hoarder.trie.dict[name] { EmojiRow(hoarder: hoarder, emoji: emoji) } } } .onChange(of: hoarder.searchTerm) { _ in - hoarder.filterEmojis(by: hoarder.searchTerm) + filterResult = hoarder.trie.search(prefix: hoarder.searchTerm) } } .searchable(text: $hoarder.searchTerm)