From 51691c32f3cad4bd81571885f78d51586e300a70 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Tue, 28 Oct 2025 13:07:55 +0000 Subject: [PATCH] trying to add a only show x thing --- StickerSlack/EmojiHoarder.swift | 21 +++++++++++++++++++++ StickerSlack/Views/ContentView.swift | 11 ++++++++++- StickerSlack/Views/EmojiPreview.swift | 1 - 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/StickerSlack/EmojiHoarder.swift b/StickerSlack/EmojiHoarder.swift index dae9b26..3be5056 100644 --- a/StickerSlack/EmojiHoarder.swift +++ b/StickerSlack/EmojiHoarder.swift @@ -18,6 +18,8 @@ class EmojiHoarder: ObservableObject { private let decoder = JSONDecoder() @Published var emojis: [Emoji] = [] + @Published var filteredEmojis: [Emoji] = [] + @Published var prefix: Int = 100 init() { guard let fetched = fetchRemoteDB() else { @@ -26,6 +28,7 @@ class EmojiHoarder: ObservableObject { } self.emojis = fetched + self.filteredEmojis = emojis } func storeStickers(_ toStore: [UUID]) { @@ -52,4 +55,22 @@ class EmojiHoarder: ObservableObject { let decoded: [SlackResponse] = try! decoder.decode([SlackResponse].self, from: data) return SlackResponse.toEmojis(from: decoded) } + + func setPrefix(to: Int) { + filterEmojis(by: "") + filteredEmojis = Array(filteredEmojis.prefix(prefix)) + } + + func filterEmojis(by searchTerm: String) { + guard !searchTerm.isEmpty else { + self.filteredEmojis = emojis + return + } + Task { + let filtered = emojis.filter { $0.name.localizedCaseInsensitiveContains(searchTerm) } + DispatchQueue.main.async { + self.filteredEmojis = filtered + } + } + } } diff --git a/StickerSlack/Views/ContentView.swift b/StickerSlack/Views/ContentView.swift index 12f8118..81f618b 100644 --- a/StickerSlack/Views/ContentView.swift +++ b/StickerSlack/Views/ContentView.swift @@ -11,11 +11,19 @@ import Haptics struct ContentView: View { @StateObject var hoarder: EmojiHoarder = EmojiHoarder() + @State var searchTerm: String = "" + var body: some View { NavigationView { TabView { List { - ForEach($hoarder.emojis, id: \.self) { $emoji in + HStack { + Stepper("show?", value: $hoarder.prefix, step: 100) { $0 } +// Button("downloaded", systemImage: "arrow.down.circle.fill") { +// <#code#> +// } + } + ForEach($hoarder.filteredEmojis, id: \.self) { $emoji in HStack { EmojiPreview(emoji: emoji, image: emoji.image) .frame(maxWidth: 100) @@ -39,6 +47,7 @@ struct ContentView: View { } } } +// .searchable(text: $searchTerm, prompt: "Search") } .tabItem { Label("home", systemImage: "house") diff --git a/StickerSlack/Views/EmojiPreview.swift b/StickerSlack/Views/EmojiPreview.swift index 7c7906c..c71cd74 100644 --- a/StickerSlack/Views/EmojiPreview.swift +++ b/StickerSlack/Views/EmojiPreview.swift @@ -17,7 +17,6 @@ struct EmojiPreview: View { var body: some View { VStack { Text(emoji.name) - Group { if let localImage = try? Data(contentsOf: emoji.localImageURL), let image = UIImage(data: localImage) {