From 002fc21308487eab7854177d9ce4bee86871fb06 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Wed, 29 Oct 2025 16:26:57 +0000 Subject: [PATCH] async loading of the remote emoji database - load the local one first - async task to load the remote db and if it succeeds overwrite the local db and load the remote one MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit emoiji.localimageurl is now a computed propery - need to fix the fact that the file extension is not known 😭 fetchRemoteDB automatically stores the db lcoally after fetching add storeDB(data: Data) to store the db from a data form Emoji.uiID is generated automatically fix hoarder.localEmojiDB path imessage extension scheme?? --- .../StickerSlackiMessageExtension.xcscheme | 1 + StickerSlack/Emoji/Emoji.swift | 14 ++++---- StickerSlack/EmojiHoarder.swift | 36 ++++++++++++------- StickerSlack/Views/EmojiPreview.swift | 1 - 4 files changed, 31 insertions(+), 21 deletions(-) diff --git a/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme b/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme index 84b7469..67d4b9b 100644 --- a/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme +++ b/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme @@ -74,6 +74,7 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" + askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> [Emoji] { if let localEmojiDB = try? Data(contentsOf: EmojiHoarder.localEmojiDB) { let decoded = try! decoder.decode([Emoji].self, from: localEmojiDB) @@ -49,11 +55,17 @@ class EmojiHoarder: ObservableObject { return [] } - func fetchRemoteDB() -> [Emoji]? { - guard let data = try? Data(contentsOf: endpoint) else { return nil } - decoder.dateDecodingStrategy = .iso8601 - let decoded: [SlackResponse] = try! decoder.decode([SlackResponse].self, from: data) - return SlackResponse.toEmojis(from: decoded) + func fetchRemoteDB() async -> [Emoji]? { + do { + let (data, _) = try await URLSession.shared.data(from: endpoint) + decoder.dateDecodingStrategy = .iso8601 + let decoded: [SlackResponse] = try! decoder.decode([SlackResponse].self, from: data) + storeDB(data: data) + return SlackResponse.toEmojis(from: decoded) + } catch { + print(error.localizedDescription) + fatalError() + } } func setPrefix(to: Int) { diff --git a/StickerSlack/Views/EmojiPreview.swift b/StickerSlack/Views/EmojiPreview.swift index be01a06..8c4afad 100644 --- a/StickerSlack/Views/EmojiPreview.swift +++ b/StickerSlack/Views/EmojiPreview.swift @@ -35,7 +35,6 @@ struct EmojiPreview: View { .resizable().scaledToFit() } else if phase.error != nil { ZStack { - Image(systemName: "xmark.app.fill") .resizable().scaledToFit() .padding()