update searchview to use btter search display method

This commit is contained in:
neon443
2025-11-13 14:49:47 +00:00
parent 920497ca56
commit d7858bf449
2 changed files with 6 additions and 10 deletions

View File

@@ -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<String> = []
@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()

View File

@@ -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)