From 3272560f29768d2a799139208d86c311fecb09af Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:06:16 +0000 Subject: [PATCH] okay uh might be slwoer --- StickerSlack/EmojiHoarder.swift | 16 +++++++++-- StickerSlack/Views/ContentView.swift | 41 +++++++--------------------- 2 files changed, 23 insertions(+), 34 deletions(-) diff --git a/StickerSlack/EmojiHoarder.swift b/StickerSlack/EmojiHoarder.swift index 6e8c32e..540ca7f 100644 --- a/StickerSlack/EmojiHoarder.swift +++ b/StickerSlack/EmojiHoarder.swift @@ -20,7 +20,7 @@ class EmojiHoarder: ObservableObject { @Published var emojis: [Emoji] = [] @Published var trie: Trie = Trie() - @Published var filteredEmojis: [String] = [] + @Published var filteredEmojis: [Emoji] = [] init(localOnly: Bool = false) { let localDB = loadLocalDB() @@ -110,8 +110,18 @@ class EmojiHoarder: ObservableObject { } } - func filterEmojis(by searchTerm: String) { - filteredEmojis = trie.search(prefix: searchTerm) +// func filterEmojis(by searchTerm: String) { +// filteredEmojis = trie.search(prefix: searchTerm) +// } + + func results(for query: String) -> [Emoji] { + guard !query.isEmpty else { + filteredEmojis = emojis + return emojis + } + let names = Set(trie.search(prefix: query)) + filteredEmojis = emojis.filter { names.contains($0.name) } + return filteredEmojis } // func filterEmojis(byCategory category: FilterCategory, searchTerm: String) { diff --git a/StickerSlack/Views/ContentView.swift b/StickerSlack/Views/ContentView.swift index 91cba8a..d634754 100644 --- a/StickerSlack/Views/ContentView.swift +++ b/StickerSlack/Views/ContentView.swift @@ -42,8 +42,8 @@ struct ContentView: View { Text("\(hoarder.filteredEmojis.count) Emoji") - if searchTerm.isEmpty { - ForEach($hoarder.emojis, id: \.self) { $emoji in +// if searchTerm.isEmpty { + ForEach($hoarder.filteredEmojis, id: \.self) { $emoji in HStack { EmojiPreview( hoarder: hoarder, @@ -51,18 +51,6 @@ struct ContentView: View { ) .frame(maxWidth: 100, maxHeight: 100) Spacer() - Button("", systemImage: "checkmark") { - if let sticker = emoji.sticker { - if sticker.validate() { - print("validation of \(emoji.name) succeeded") - Haptic.success.trigger() - } else { - print("validation of \(emoji.name) failed") - Haptic.error.trigger() - } - } - } - .buttonStyle(.plain) if emoji.isLocal { Button("", systemImage: "trash") { emoji.deleteImage() @@ -81,32 +69,23 @@ struct ContentView: View { .buttonStyle(.plain) } } - .swipeActions(edge: .trailing, allowsFullSwipe: true) { - if emoji.isLocal { - Button("Remove", systemImage: "trash") { - emoji.deleteImage() - emoji.refresh() - } - .tint(.red) - } - } } - } else { - ForEach(hoarder.filteredEmojis, id: \.self) { name in - Text(name) -// EmojiPreview(hoarder: hoarder, emoji: hoarder.emojis.first!) - } - } +// } else { +// ForEach(hoarder.filteredEmojis, id: \.self) { name in +// Text(name) +// } +// } } .navigationTitle("StickerSlack") .onChange(of: searchTerm) { _ in - hoarder.filterEmojis(by: searchTerm) +// hoarder.filterEmojis(by: searchTerm) + hoarder.results(for: searchTerm) } .refreshable { Task.detached { await hoarder.refreshDB() - await hoarder.filterEmojis(by: searchTerm) } + searchTerm = "" } } .searchable(text: $searchTerm, placement: .automatic)