okay uh might be slwoer

This commit is contained in:
neon443
2025-11-03 17:06:16 +00:00
parent a3bce28065
commit 3272560f29
2 changed files with 23 additions and 34 deletions

View File

@@ -20,7 +20,7 @@ class EmojiHoarder: ObservableObject {
@Published var emojis: [Emoji] = [] @Published var emojis: [Emoji] = []
@Published var trie: Trie = Trie() @Published var trie: Trie = Trie()
@Published var filteredEmojis: [String] = [] @Published var filteredEmojis: [Emoji] = []
init(localOnly: Bool = false) { init(localOnly: Bool = false) {
let localDB = loadLocalDB() let localDB = loadLocalDB()
@@ -110,8 +110,18 @@ class EmojiHoarder: ObservableObject {
} }
} }
func filterEmojis(by searchTerm: String) { // func filterEmojis(by searchTerm: String) {
filteredEmojis = trie.search(prefix: searchTerm) // 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) { // func filterEmojis(byCategory category: FilterCategory, searchTerm: String) {

View File

@@ -42,8 +42,8 @@ struct ContentView: View {
Text("\(hoarder.filteredEmojis.count) Emoji") Text("\(hoarder.filteredEmojis.count) Emoji")
if searchTerm.isEmpty { // if searchTerm.isEmpty {
ForEach($hoarder.emojis, id: \.self) { $emoji in ForEach($hoarder.filteredEmojis, id: \.self) { $emoji in
HStack { HStack {
EmojiPreview( EmojiPreview(
hoarder: hoarder, hoarder: hoarder,
@@ -51,18 +51,6 @@ struct ContentView: View {
) )
.frame(maxWidth: 100, maxHeight: 100) .frame(maxWidth: 100, maxHeight: 100)
Spacer() 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 { if emoji.isLocal {
Button("", systemImage: "trash") { Button("", systemImage: "trash") {
emoji.deleteImage() emoji.deleteImage()
@@ -81,32 +69,23 @@ struct ContentView: View {
.buttonStyle(.plain) .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") .navigationTitle("StickerSlack")
.onChange(of: searchTerm) { _ in .onChange(of: searchTerm) { _ in
hoarder.filterEmojis(by: searchTerm) // hoarder.filterEmojis(by: searchTerm)
hoarder.results(for: searchTerm)
} }
.refreshable { .refreshable {
Task.detached { Task.detached {
await hoarder.refreshDB() await hoarder.refreshDB()
await hoarder.filterEmojis(by: searchTerm)
} }
searchTerm = ""
} }
} }
.searchable(text: $searchTerm, placement: .automatic) .searchable(text: $searchTerm, placement: .automatic)