From 11cebac1b400ac8fdf20a0c702c7a455ace42931 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Mon, 1 Dec 2025 15:07:44 +0000 Subject: [PATCH] starting to add emojipacks --- EmojiPackManager.swift | 24 +++++++++++++++++++ StickerSlack.xcodeproj/project.pbxproj | 16 +++++++++++++ .../Emoji/Categorisation/EmojiPack.swift | 20 ++++++++++++++++ StickerSlack/Emoji/EmojiHoarder.swift | 1 + .../SwiftUI/Emoji/EmojiPackView.swift | 23 ++++++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 EmojiPackManager.swift create mode 100644 StickerSlack/SwiftUI/Emoji/EmojiPackView.swift diff --git a/EmojiPackManager.swift b/EmojiPackManager.swift new file mode 100644 index 0000000..eeb3320 --- /dev/null +++ b/EmojiPackManager.swift @@ -0,0 +1,24 @@ +// +// EmojiPackManager.swift +// StickerSlack +// +// Created by neon443 on 01/12/2025. +// + +import SwiftUI + +struct EmojiPackManager: View { + @ObservedObject var hoarder: EmojiHoarder + + var body: some View { + ForEach(hoarder.emojiPacks) { pack in + EmojiPackView(pack: pack) + } + } +} + +#Preview { + EmojiPackManager( + hoarder: EmojiHoarder(localOnly: true, skipIndex: true) + ) +} diff --git a/StickerSlack.xcodeproj/project.pbxproj b/StickerSlack.xcodeproj/project.pbxproj index ac583bf..66d1a11 100644 --- a/StickerSlack.xcodeproj/project.pbxproj +++ b/StickerSlack.xcodeproj/project.pbxproj @@ -65,6 +65,12 @@ A9BBC51A2EB8FA4500FFE82F /* ViewModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BBC5172EB8FA4500FFE82F /* ViewModifiers.swift */; }; A9C172DC2EB8C9AC008A7885 /* Trie.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C172DB2EB8C9AC008A7885 /* Trie.swift */; }; A9C172DD2EB8C9AC008A7885 /* Trie.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C172DB2EB8C9AC008A7885 /* Trie.swift */; }; + A9CD6C352EDDE22800B7F421 /* EmojiPackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9CD6C342EDDE22800B7F421 /* EmojiPackView.swift */; }; + A9CD6C362EDDE22800B7F421 /* EmojiPackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9CD6C342EDDE22800B7F421 /* EmojiPackView.swift */; }; + A9CD6C382EDDE37500B7F421 /* EmojiPackManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9CD6C372EDDE37500B7F421 /* EmojiPackManager.swift */; }; + A9CD6C392EDDE37500B7F421 /* EmojiPackManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9CD6C372EDDE37500B7F421 /* EmojiPackManager.swift */; }; + A9CD6C3A2EDDE6B500B7F421 /* EmojiPack.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D15B892EB1142C00404792 /* EmojiPack.swift */; }; + A9CD6C3B2EDDE6B500B7F421 /* EmojiPack.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D15B892EB1142C00404792 /* EmojiPack.swift */; }; A9D15B8B2EB1142C00404792 /* EmojiPack.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9D15B892EB1142C00404792 /* EmojiPack.swift */; }; A9EB72392EB93FDB00658CEB /* EmojiCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9EB72382EB93FDB00658CEB /* EmojiCollectionView.swift */; }; A9EB72472EB948C400658CEB /* EmojiRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9EB72462EB948C400658CEB /* EmojiRow.swift */; }; @@ -143,6 +149,8 @@ A9B9A82C2EB2CCBE004C9245 /* StickerSlackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerSlackTests.swift; sourceTree = ""; }; A9BBC5172EB8FA4500FFE82F /* ViewModifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModifiers.swift; sourceTree = ""; }; A9C172DB2EB8C9AC008A7885 /* Trie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Trie.swift; sourceTree = ""; }; + A9CD6C342EDDE22800B7F421 /* EmojiPackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPackView.swift; sourceTree = ""; }; + A9CD6C372EDDE37500B7F421 /* EmojiPackManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPackManager.swift; sourceTree = ""; }; A9D15B892EB1142C00404792 /* EmojiPack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPack.swift; sourceTree = ""; }; A9E2ECD72EB74CE00038B2D6 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; A9EB72382EB93FDB00658CEB /* EmojiCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiCollectionView.swift; sourceTree = ""; }; @@ -229,6 +237,7 @@ children = ( A9773C2E2EA54AF000F3B753 /* EmojiPreview.swift */, A9EB72462EB948C400658CEB /* EmojiRow.swift */, + A9CD6C342EDDE22800B7F421 /* EmojiPackView.swift */, ); path = Emoji; sourceTree = ""; @@ -260,6 +269,7 @@ A949B1D62EA04C0B00215164 = { isa = PBXGroup; children = ( + A9CD6C372EDDE37500B7F421 /* EmojiPackManager.swift */, A9E2ECD72EB74CE00038B2D6 /* Config.xcconfig */, A949B1F22EA04E8200215164 /* StickerSlack */, A9104C742EB3AE4700D160EA /* Resources */, @@ -487,6 +497,7 @@ buildActionMask = 2147483647; files = ( A949B1F42EA04E8200215164 /* ContentView.swift in Sources */, + A9CD6C382EDDE37500B7F421 /* EmojiPackManager.swift in Sources */, A949B1F52EA04E8200215164 /* StickerSlackApp.swift in Sources */, A9104C802EB4022500D160EA /* MSSticker.swift in Sources */, A957C1772ECD008E00EA3EE9 /* Bundle.swift in Sources */, @@ -498,6 +509,7 @@ A957C17A2ECE542D00EA3EE9 /* GifManager.swift in Sources */, A955B3F52EC22EE900E1732D /* SearchView.swift in Sources */, A935437B2EB2A3C800BB80A4 /* FilterCategory.swift in Sources */, + A9CD6C352EDDE22800B7F421 /* EmojiPackView.swift in Sources */, A9C172DD2EB8C9AC008A7885 /* Trie.swift in Sources */, A955B3F22EC22E9700E1732D /* BrowseView.swift in Sources */, A9EB724F2EB94A6B00658CEB /* TrieTestingView.swift in Sources */, @@ -518,6 +530,7 @@ files = ( A957C17B2ECE542D00EA3EE9 /* GifManager.swift in Sources */, A986A6C32EB6598100B6E0FA /* FilterCategory.swift in Sources */, + A9CD6C3A2EDDE6B500B7F421 /* EmojiPack.swift in Sources */, A9EB724B2EB94A5700658CEB /* Trie.swift in Sources */, A986A6CD2EB659E000B6E0FA /* MessagesViewController.swift in Sources */, A986A6CE2EB659E000B6E0FA /* StickerBrowserDataSource.swift in Sources */, @@ -538,6 +551,7 @@ A9B9A8302EB2CD0B004C9245 /* Emoji.swift in Sources */, A955B3F12EC22E9700E1732D /* BrowseView.swift in Sources */, A9B9A82F2EB2CCED004C9245 /* EmojiHoarder.swift in Sources */, + A9CD6C3B2EDDE6B500B7F421 /* EmojiPack.swift in Sources */, A921C2E32ED071C900E57B1A /* ListRow.swift in Sources */, A9EB724A2EB948E000658CEB /* EmojiCollectionView.swift in Sources */, A9EB724D2EB94A6B00658CEB /* TrieTestingView.swift in Sources */, @@ -545,7 +559,9 @@ A955B3ED2EC22C4A00E1732D /* DownloadedView.swift in Sources */, A9C172DC2EB8C9AC008A7885 /* Trie.swift in Sources */, A957C1752ECCE2CE00EA3EE9 /* SettingsView.swift in Sources */, + A9CD6C362EDDE22800B7F421 /* EmojiPackView.swift in Sources */, A9EB72472EB948C400658CEB /* EmojiRow.swift in Sources */, + A9CD6C392EDDE37500B7F421 /* EmojiPackManager.swift in Sources */, A955B3F62EC22EE900E1732D /* SearchView.swift in Sources */, A9B9A8322EB2CD29004C9245 /* SlackResponse.swift in Sources */, A957C1782ECD008E00EA3EE9 /* Bundle.swift in Sources */, diff --git a/StickerSlack/Emoji/Categorisation/EmojiPack.swift b/StickerSlack/Emoji/Categorisation/EmojiPack.swift index ade684d..98138dc 100644 --- a/StickerSlack/Emoji/Categorisation/EmojiPack.swift +++ b/StickerSlack/Emoji/Categorisation/EmojiPack.swift @@ -9,5 +9,25 @@ import Foundation struct EmojiPack: Identifiable, Codable { var id: UUID + var name: String + var description: String var emojiNames: [String] + + static var test: EmojiPack { + EmojiPack( + id: UUID(), + name: "test pack", + description: "neon443's debug emoji pack", + emojiNames: [ + "pf", + "heavysob", + "yay", + "skulk", + "loll", + "bleh", + "uhh", + "communist" + ] + ) + } } diff --git a/StickerSlack/Emoji/EmojiHoarder.swift b/StickerSlack/Emoji/EmojiHoarder.swift index ffa437d..4470d37 100644 --- a/StickerSlack/Emoji/EmojiHoarder.swift +++ b/StickerSlack/Emoji/EmojiHoarder.swift @@ -21,6 +21,7 @@ class EmojiHoarder: ObservableObject { private let decoder = JSONDecoder() @Published var emojis: [Emoji] = [] + @Published var emojiPacks: [EmojiPack] = [] @Published var trie: Trie = Trie() @Published var downloadedEmojis: Set = [] diff --git a/StickerSlack/SwiftUI/Emoji/EmojiPackView.swift b/StickerSlack/SwiftUI/Emoji/EmojiPackView.swift new file mode 100644 index 0000000..551300c --- /dev/null +++ b/StickerSlack/SwiftUI/Emoji/EmojiPackView.swift @@ -0,0 +1,23 @@ +// +// EmojiPackView.swift +// StickerSlack +// +// Created by neon443 on 01/12/2025. +// + +import SwiftUI + +struct EmojiPackView: View { + @State var pack: EmojiPack + + var body: some View { + Text(pack.name) + .bold() + Text(pack.description) + .foregroundStyle(.gray) + } +} + +#Preview { + EmojiPackView(pack: .test) +}