diff --git a/StickerSlack.xcodeproj/project.pbxproj b/StickerSlack.xcodeproj/project.pbxproj index 28fc215..082fada 100644 --- a/StickerSlack.xcodeproj/project.pbxproj +++ b/StickerSlack.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + A9112EAC2EAFFDB0006739E2 /* Haptics in Frameworks */ = {isa = PBXBuildFile; productRef = A9112EAB2EAFFDB0006739E2 /* Haptics */; }; A924C3722EA9127200F20781 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = A924C3712EA9127200F20781 /* Emoji.swift */; }; A924C3732EA9127200F20781 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = A924C3712EA9127200F20781 /* Emoji.swift */; }; A924C3782EA9225800F20781 /* Haptics in Frameworks */ = {isa = PBXBuildFile; productRef = A924C3772EA9225800F20781 /* Haptics */; }; @@ -23,7 +24,6 @@ A969D6AE2EA3F1AF00399C05 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A969D6A92EA3F1AF00399C05 /* MainInterface.storyboard */; }; A969D6AF2EA3F1AF00399C05 /* MessagesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A969D6AA2EA3F1AF00399C05 /* MessagesViewController.swift */; }; A9773C2F2EA54AF000F3B753 /* EmojiPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9773C2E2EA54AF000F3B753 /* EmojiPreview.swift */; }; - A986A6682EAAB41000B6E0FA /* Haptics in Frameworks */ = {isa = PBXBuildFile; productRef = A986A6672EAAB41000B6E0FA /* Haptics */; }; 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 */; }; @@ -80,7 +80,7 @@ buildActionMask = 2147483647; files = ( A924C3782EA9225800F20781 /* Haptics in Frameworks */, - A986A6682EAAB41000B6E0FA /* Haptics in Frameworks */, + A9112EAC2EAFFDB0006739E2 /* Haptics in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -195,7 +195,7 @@ name = StickerSlack; packageProductDependencies = ( A924C3772EA9225800F20781 /* Haptics */, - A986A6672EAAB41000B6E0FA /* Haptics */, + A9112EAB2EAFFDB0006739E2 /* Haptics */, ); productName = StickerSlack; productReference = A949B1DF2EA04C0B00215164 /* StickerSlack.app */; @@ -248,7 +248,7 @@ mainGroup = A949B1D62EA04C0B00215164; minimizedProjectReferenceProxies = 1; packageReferences = ( - A986A6662EAAB41000B6E0FA /* XCRemoteSwiftPackageReference "Haptics" */, + A9112EAA2EAFFDB0006739E2 /* XCRemoteSwiftPackageReference "Haptics" */, ); preferredProjectObjectVersion = 77; productRefGroup = A949B1E02EA04C0B00215164 /* Products */; @@ -635,9 +635,9 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - A986A6662EAAB41000B6E0FA /* XCRemoteSwiftPackageReference "Haptics" */ = { + A9112EAA2EAFFDB0006739E2 /* XCRemoteSwiftPackageReference "Haptics" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "http://github.com/neon443/Haptics"; + repositoryURL = "https://github.com/neon443/Haptics"; requirement = { branch = main; kind = branch; @@ -646,13 +646,13 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - A924C3772EA9225800F20781 /* Haptics */ = { + A9112EAB2EAFFDB0006739E2 /* Haptics */ = { isa = XCSwiftPackageProductDependency; + package = A9112EAA2EAFFDB0006739E2 /* XCRemoteSwiftPackageReference "Haptics" */; productName = Haptics; }; - A986A6672EAAB41000B6E0FA /* Haptics */ = { + A924C3772EA9225800F20781 /* Haptics */ = { isa = XCSwiftPackageProductDependency; - package = A986A6662EAAB41000B6E0FA /* XCRemoteSwiftPackageReference "Haptics" */; productName = Haptics; }; /* End XCSwiftPackageProductDependency section */ diff --git a/StickerSlack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/StickerSlack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 0f1d098..242b6ac 100644 --- a/StickerSlack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/StickerSlack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,10 +1,10 @@ { - "originHash" : "62caf5d3b5c5f962753f0e93862d5d90e6fcd2157c5fef072880f7c4ca348c7c", + "originHash" : "1d3269ec6ef7a3d9a10b9d3cc53bfd207a07ae67b8f251b18da218e827fd0bff", "pins" : [ { "identity" : "haptics", "kind" : "remoteSourceControl", - "location" : "http://github.com/neon443/Haptics", + "location" : "https://github.com/neon443/Haptics", "state" : { "branch" : "main", "revision" : "90e080694752c1af657d2f7ac2dce22eaf439391" diff --git a/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme b/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme index 67d4b9b..84b7469 100644 --- a/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme +++ b/StickerSlack.xcodeproj/xcshareddata/xcschemes/StickerSlackiMessageExtension.xcscheme @@ -74,7 +74,6 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES" - askForAppToLaunch = "Yes" launchAutomaticallySubstyle = "2"> [Emoji] { - return from.map { ApiEmoji(name: $0.name, url: $0.imageUrl).toEmoji() } + static func toEmojis(from response: [SlackResponse]?) -> [Emoji]? { + guard let response else { return nil } + return response.map { ApiEmoji(name: $0.name, url: $0.imageUrl).toEmoji() } } } diff --git a/StickerSlack/EmojiHoarder.swift b/StickerSlack/EmojiHoarder.swift index a3628f8..327f6f0 100644 --- a/StickerSlack/EmojiHoarder.swift +++ b/StickerSlack/EmojiHoarder.swift @@ -15,22 +15,38 @@ class EmojiHoarder: ObservableObject { static let localEmojiDB: URL = EmojiHoarder.container.appendingPathExtension("localEmojiDB.json") private let endpoint: URL = URL(string: "https://cachet.dunkirk.sh/emojis")! - @Published var emojis: [Emoji] + @Published var emojis: [Emoji] = [] init() { - if let localEmojiDB = try? Data(contentsOf: EmojiHoarder.localEmojiDB) { - let decoded = try! JSONDecoder().decode([Emoji].self, from: localEmojiDB) - self.emojis = decoded + guard let fetched = fetchRemoteDB() else { + self.emojis = loadLocalDB() return } - guard let data = try? Data(contentsOf: endpoint) else { fatalError("cachet unreachable") } - - let decoded: [SlackResponse] = try! JSONDecoder().decode([SlackResponse].self, from: data) - self.emojis = SlackResponse.toEmojis(from: decoded) - + self.emojis = fetched + } + + func storeStickers(_ toStore: [UUID]) { + for stickerId in toStore { + print(stickerId) + } + } + + func storeDB() { try! JSONEncoder().encode(emojis).write(to: EmojiHoarder.localEmojiDB) } -// func storeStickers + func loadLocalDB() -> [Emoji] { + if let localEmojiDB = try? Data(contentsOf: EmojiHoarder.localEmojiDB) { + let decoded = try! JSONDecoder().decode([Emoji].self, from: localEmojiDB) + return decoded + } + return [] + } + + func fetchRemoteDB() -> [Emoji]? { + guard let data = try? Data(contentsOf: endpoint) else { fatalError("cachet unreachable") } + let decoded: [SlackResponse] = try! JSONDecoder().decode([SlackResponse].self, from: data) + return SlackResponse.toEmojis(from: decoded) + } }