diff --git a/StickerSlack/Emoji/EmojiHoarder.swift b/StickerSlack/Emoji/EmojiHoarder.swift index aea5900..5330637 100644 --- a/StickerSlack/Emoji/EmojiHoarder.swift +++ b/StickerSlack/Emoji/EmojiHoarder.swift @@ -25,6 +25,7 @@ class EmojiHoarder: ObservableObject { @Published var trie: Trie = Trie() // @Published var filteredEmojis: [String] = [] @Published var downloadedEmojis: Set = [] + @Published var downloadedEmojisArr: [String] = [] @Published var searchTerm: String = "" init(localOnly: Bool = false, skipIndex: Bool = false) { @@ -119,9 +120,11 @@ class EmojiHoarder: ObservableObject { func buildDownloadedEmojis() { downloadedEmojis = [] + downloadedEmojisArr = [] for emoji in emojis { guard emoji.isLocal else { continue } downloadedEmojis.insert(emoji.name) + downloadedEmojisArr.append(emoji.name) } } @@ -175,6 +178,7 @@ class EmojiHoarder: ObservableObject { try? await emoji.downloadImage() await MainActor.run { self.downloadedEmojis.insert(emoji.name) + self.downloadedEmojisArr.append(emoji.name) self.trie.dict[emoji.name]?.refresh() Haptic.success.trigger() } @@ -185,6 +189,7 @@ class EmojiHoarder: ObservableObject { func delete(emoji: Emoji) { emoji.deleteImage() downloadedEmojis.remove(emoji.name) + downloadedEmojisArr.removeAll(where: { $0 == emoji.name }) self.trie.dict[emoji.name]?.refresh() Haptic.heavy.trigger() } diff --git a/StickerSlack/SwiftUI/DownloadedView.swift b/StickerSlack/SwiftUI/DownloadedView.swift index 6473bb5..52678ce 100644 --- a/StickerSlack/SwiftUI/DownloadedView.swift +++ b/StickerSlack/SwiftUI/DownloadedView.swift @@ -28,8 +28,8 @@ struct DownloadedView: View { let columns: Int = max(1, Int((UIScreen.main.bounds.width - 2*spacing) / (minColWidth + spacing))) let layout = Array(repeating: col, count: columns) LazyVGrid(columns: layout, spacing: spacing) { - ForEach(hoarder.emojis, id: \.self) { emoji in - if hoarder.downloadedEmojis.contains(emoji.name) { + ForEach(hoarder.downloadedEmojisArr, id: \.self) { name in + if let emoji = hoarder.trie.dict[name] { ZStack { Rectangle() .foregroundStyle(isDark ? .black : .white)