diff --git a/StickerSlack.xcodeproj/project.pbxproj b/StickerSlack.xcodeproj/project.pbxproj index 45ed103..2702097 100644 --- a/StickerSlack.xcodeproj/project.pbxproj +++ b/StickerSlack.xcodeproj/project.pbxproj @@ -39,6 +39,9 @@ A9B9A8302EB2CD0B004C9245 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = A924C3712EA9127200F20781 /* Emoji.swift */; }; A9B9A8312EB2CD14004C9245 /* FilterCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = A935437A2EB2A3C800BB80A4 /* FilterCategory.swift */; }; A9B9A8322EB2CD29004C9245 /* SlackResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949B1FA2EA0518800215164 /* SlackResponse.swift */; }; + A9BBC5182EB8FA4500FFE82F /* ViewModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BBC5172EB8FA4500FFE82F /* ViewModifiers.swift */; }; + A9BBC5192EB8FA4500FFE82F /* ViewModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9BBC5172EB8FA4500FFE82F /* ViewModifiers.swift */; }; + 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 */; }; A9C172DE2EB8C9AC008A7885 /* Trie.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C172DB2EB8C9AC008A7885 /* Trie.swift */; }; @@ -101,6 +104,7 @@ A986A6CB2EB659E000B6E0FA /* StickerBrowserDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerBrowserDataSource.swift; sourceTree = ""; }; A9B9A8232EB2CCB5004C9245 /* StickerSlackTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StickerSlackTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; A9D15B892EB1142C00404792 /* EmojiPack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPack.swift; sourceTree = ""; }; A9E2ECD72EB74CE00038B2D6 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; @@ -193,6 +197,7 @@ A949B1F92EA0517800215164 /* Emoji */, A9104C812EB4022E00D160EA /* Extensions */, A949B1EE2EA04E8200215164 /* Views */, + A9BBC5172EB8FA4500FFE82F /* ViewModifiers.swift */, ); path = StickerSlack; sourceTree = ""; @@ -396,6 +401,7 @@ A924C3732EA9127200F20781 /* Emoji.swift in Sources */, A9D15B8B2EB1142C00404792 /* EmojiPack.swift in Sources */, A949B1F82EA04F2300215164 /* EmojiHoarder.swift in Sources */, + A9BBC5182EB8FA4500FFE82F /* ViewModifiers.swift in Sources */, A9773C2F2EA54AF000F3B753 /* EmojiPreview.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -407,6 +413,7 @@ A986A6C32EB6598100B6E0FA /* FilterCategory.swift in Sources */, A986A6CD2EB659E000B6E0FA /* MessagesViewController.swift in Sources */, A986A6CE2EB659E000B6E0FA /* StickerBrowserDataSource.swift in Sources */, + A9BBC5192EB8FA4500FFE82F /* ViewModifiers.swift in Sources */, A9C172DE2EB8C9AC008A7885 /* Trie.swift in Sources */, A986A6C42EB6598500B6E0FA /* SlackResponse.swift in Sources */, A986A6C22EB6597600B6E0FA /* Emoji.swift in Sources */, @@ -421,6 +428,7 @@ A9104C7F2EB4022500D160EA /* MSSticker.swift in Sources */, A9B9A8302EB2CD0B004C9245 /* Emoji.swift in Sources */, A9B9A82F2EB2CCED004C9245 /* EmojiHoarder.swift in Sources */, + A9BBC51A2EB8FA4500FFE82F /* ViewModifiers.swift in Sources */, A9C172DC2EB8C9AC008A7885 /* Trie.swift in Sources */, A9B9A8322EB2CD29004C9245 /* SlackResponse.swift in Sources */, A9B9A82E2EB2CCBE004C9245 /* StickerSlackTests.swift in Sources */, diff --git a/StickerSlack/Emoji/Trie.swift b/StickerSlack/Emoji/Trie.swift index 9dda06d..1fbfbc4 100644 --- a/StickerSlack/Emoji/Trie.swift +++ b/StickerSlack/Emoji/Trie.swift @@ -16,7 +16,6 @@ class TrieNode: ObservableObject { class Trie: ObservableObject { @Published var root: TrieNode = TrieNode() - @Published var allItems: [String] = [] func insert(word: String) { let word = word.lowercased() @@ -35,7 +34,6 @@ class Trie: ObservableObject { currentNode.isEndOfWord = true } } - self.allItems.append(word) } func search(for query: String) -> Bool { @@ -52,7 +50,7 @@ class Trie: ObservableObject { } func search(prefix prefixQuery: String) -> [String] { - guard !prefixQuery.isEmpty else { return allItems } + guard !prefixQuery.isEmpty else { return [] } let prefixQuery = prefixQuery.lowercased() var currentNode = root @@ -127,19 +125,16 @@ struct TrieTestingView: View { .textFieldStyle(.roundedBorder) .border(.orange) .onChange(of: filterTerm) { _ in - filterResult = trie.search(prefix: filterTerm) + withAnimation { filterResult = trie.search(prefix: filterTerm) } } + Text("\(filterResult.count)") + .modifier(numericTextCompat()) + List(filterResult, id: \.self) { item in Text(item) } -// .id(id) Text("\(trie.root.children.count)") - -// List { -// TrieNodeView(trieNode: trie.root) -// } -// .id(id) } } } diff --git a/StickerSlack/ViewModifiers.swift b/StickerSlack/ViewModifiers.swift new file mode 100644 index 0000000..03112b8 --- /dev/null +++ b/StickerSlack/ViewModifiers.swift @@ -0,0 +1,19 @@ +// +// ViewModifiers.swift +// StickerSlack +// +// Created by neon443 on 03/11/2025. +// + +import Foundation +import SwiftUI + +struct numericTextCompat: ViewModifier { + func body(content: Content) -> some View { + if #available(iOS 16, *) { + content.contentTransition(.numericText()) + } else { + content.transition(.opacity) + } + } +}