From 31321865e9ba81b41276795d4de8b9a2f2e6d43c Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Tue, 28 Oct 2025 16:31:31 +0000 Subject: [PATCH] added search added emojipack, currently unused using the cahcet id in emoji --- StickerSlack.xcodeproj/project.pbxproj | 6 ++++++ StickerSlack/Emoji/ApiEmoji.swift | 4 ++-- StickerSlack/Emoji/EmojiPack.swift | 13 +++++++++++++ StickerSlack/Emoji/SlackResponse.swift | 7 ++++++- StickerSlack/EmojiHoarder.swift | 3 +-- StickerSlack/Views/ContentView.swift | 25 +++++++++++++++++++------ 6 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 StickerSlack/Emoji/EmojiPack.swift diff --git a/StickerSlack.xcodeproj/project.pbxproj b/StickerSlack.xcodeproj/project.pbxproj index 082fada..7937a86 100644 --- a/StickerSlack.xcodeproj/project.pbxproj +++ b/StickerSlack.xcodeproj/project.pbxproj @@ -27,6 +27,8 @@ A9BE06DB2EA656B80033B213 /* EmojiHoarder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949B1F72EA04F2300215164 /* EmojiHoarder.swift */; }; A9BE06DC2EA657C70033B213 /* ApiEmoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = A940FE3C2EA232590016870B /* ApiEmoji.swift */; }; A9BE06DD2EA657CF0033B213 /* SlackResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949B1FA2EA0518800215164 /* SlackResponse.swift */; }; + A9D15B8A2EB1142C00404792 /* EmojiPack.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D15B892EB1142C00404792 /* EmojiPack.swift */; }; + A9D15B8B2EB1142C00404792 /* EmojiPack.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D15B892EB1142C00404792 /* EmojiPack.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -72,6 +74,7 @@ A969D6A82EA3F1AF00399C05 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; A969D6AA2EA3F1AF00399C05 /* MessagesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessagesViewController.swift; sourceTree = ""; }; A9773C2E2EA54AF000F3B753 /* EmojiPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPreview.swift; sourceTree = ""; }; + A9D15B892EB1142C00404792 /* EmojiPack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPack.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -151,6 +154,7 @@ A949B1FA2EA0518800215164 /* SlackResponse.swift */, A940FE3C2EA232590016870B /* ApiEmoji.swift */, A924C3712EA9127200F20781 /* Emoji.swift */, + A9D15B892EB1142C00404792 /* EmojiPack.swift */, ); path = Emoji; sourceTree = ""; @@ -292,6 +296,7 @@ A949B1F52EA04E8200215164 /* StickerSlackApp.swift in Sources */, A949B1FB2EA0518800215164 /* SlackResponse.swift in Sources */, A924C3732EA9127200F20781 /* Emoji.swift in Sources */, + A9D15B8B2EB1142C00404792 /* EmojiPack.swift in Sources */, A949B1F82EA04F2300215164 /* EmojiHoarder.swift in Sources */, A9773C2F2EA54AF000F3B753 /* EmojiPreview.swift in Sources */, ); @@ -306,6 +311,7 @@ A9BE06DB2EA656B80033B213 /* EmojiHoarder.swift in Sources */, A969D6AF2EA3F1AF00399C05 /* MessagesViewController.swift in Sources */, A9BE06DD2EA657CF0033B213 /* SlackResponse.swift in Sources */, + A9D15B8A2EB1142C00404792 /* EmojiPack.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/StickerSlack/Emoji/ApiEmoji.swift b/StickerSlack/Emoji/ApiEmoji.swift index e989893..3af9e18 100644 --- a/StickerSlack/Emoji/ApiEmoji.swift +++ b/StickerSlack/Emoji/ApiEmoji.swift @@ -42,8 +42,8 @@ struct ApiEmoji: EmojiProtocol { case urlString } - func toEmoji() -> Emoji { - return Emoji(apiEmoji: self) + func toEmoji(withID: UUID = UUID()) -> Emoji { + return Emoji(apiEmoji: self, id: withID) } func encode(to encoder: any Encoder) throws { diff --git a/StickerSlack/Emoji/EmojiPack.swift b/StickerSlack/Emoji/EmojiPack.swift new file mode 100644 index 0000000..314414e --- /dev/null +++ b/StickerSlack/Emoji/EmojiPack.swift @@ -0,0 +1,13 @@ +// +// EmojiPack.swift +// StickerSlack +// +// Created by neon443 on 28/10/2025. +// + +import Foundation + +struct EmojiPack: Identifiable, Codable { + var id: UUID + var emojiIDs: [UUID] +} diff --git a/StickerSlack/Emoji/SlackResponse.swift b/StickerSlack/Emoji/SlackResponse.swift index 1f44f96..b178432 100644 --- a/StickerSlack/Emoji/SlackResponse.swift +++ b/StickerSlack/Emoji/SlackResponse.swift @@ -17,6 +17,11 @@ struct SlackResponse: Identifiable, Codable { static func toEmojis(from response: [SlackResponse]?) -> [Emoji]? { guard let response else { return nil } - return response.map { ApiEmoji(name: $0.name, url: $0.imageUrl).toEmoji() } + return response.map { item in + ApiEmoji( + name: item.name, + url: item.imageUrl + ).toEmoji(withID: item.id) + } } } diff --git a/StickerSlack/EmojiHoarder.swift b/StickerSlack/EmojiHoarder.swift index 3be5056..2c2a6c4 100644 --- a/StickerSlack/EmojiHoarder.swift +++ b/StickerSlack/EmojiHoarder.swift @@ -28,7 +28,6 @@ class EmojiHoarder: ObservableObject { } self.emojis = fetched - self.filteredEmojis = emojis } func storeStickers(_ toStore: [UUID]) { @@ -63,7 +62,7 @@ class EmojiHoarder: ObservableObject { func filterEmojis(by searchTerm: String) { guard !searchTerm.isEmpty else { - self.filteredEmojis = emojis + self.filteredEmojis = [] return } Task { diff --git a/StickerSlack/Views/ContentView.swift b/StickerSlack/Views/ContentView.swift index 81f618b..251b1b8 100644 --- a/StickerSlack/Views/ContentView.swift +++ b/StickerSlack/Views/ContentView.swift @@ -18,7 +18,12 @@ struct ContentView: View { TabView { List { HStack { - Stepper("show?", value: $hoarder.prefix, step: 100) { $0 } + TextField("", text: $searchTerm) { + hoarder.filterEmojis(by: searchTerm) + } + + .autocorrectionDisabled() + .textFieldStyle(.roundedBorder) // Button("downloaded", systemImage: "arrow.down.circle.fill") { // <#code#> // } @@ -28,13 +33,20 @@ struct ContentView: View { EmojiPreview(emoji: emoji, image: emoji.image) .frame(maxWidth: 100) Spacer() - Button("", systemImage: "arrow.down.circle") { - Task { - try? await emoji.downloadImage() - emoji.refresh() + if emoji.isLocal { + Button("", systemImage: "trash") { + emoji.deleteImage() } + .buttonStyle(.plain) + } else { + Button("", systemImage: "arrow.down.circle") { + Task { + try? await emoji.downloadImage() + emoji.refresh() + } + } + .buttonStyle(.plain) } - .buttonStyle(.plain) } .id(emoji.uiID) .swipeActions(edge: .trailing, allowsFullSwipe: true) { @@ -49,6 +61,7 @@ struct ContentView: View { } // .searchable(text: $searchTerm, prompt: "Search") } + .searchable(text: $searchTerm) .tabItem { Label("home", systemImage: "house") }