diff --git a/StickerSlack/Emoji/SlackResponse.swift b/StickerSlack/Emoji/SlackResponse.swift index 799a8d3..51d32fe 100644 --- a/StickerSlack/Emoji/SlackResponse.swift +++ b/StickerSlack/Emoji/SlackResponse.swift @@ -8,23 +8,24 @@ import Foundation struct SlackResponse: Codable { - var ok: Bool - var emoji: [String:String] + var name: String + var imageUrl: String + var alias: String? - func toEmojis() -> [Emoji] { - let initialMap = emoji.map { - Emoji(name: $0.key, url: $0.value) - } - return initialMap.map { - var ret = $0 - if ret.urlString.prefix(6) == "alias:" { - if let orig = initialMap.first(where: { - $0.name == "\(ret.urlString.dropFirst(6))" - }) { - ret.urlString = orig.urlString - } - } - return ret - } - } +// func toEmojis() -> [Emoji] { +// let initialMap = emoji.map { +// Emoji(name: $0.key, url: $0.value) +// } +// return initialMap.map { +// var ret = $0 +// if ret.urlString.prefix(6) == "alias:" { +// if let orig = initialMap.first(where: { +// $0.name == "\(ret.urlString.dropFirst(6))" +// }) { +// ret.urlString = orig.urlString +// } +// } +// return ret +// } +// } } diff --git a/StickerSlack/EmojiHoarder.swift b/StickerSlack/EmojiHoarder.swift index 33840b3..8d388bc 100644 --- a/StickerSlack/EmojiHoarder.swift +++ b/StickerSlack/EmojiHoarder.swift @@ -10,24 +10,25 @@ import SwiftUI import Combine class EmojiHoarder: ObservableObject { - private let endpoint: URL = URL(string: "https://slack.com/api/emoji.list")! - @Published var kys = "" + private let endpoint: URL = URL(string: "https://cachet.dunkirk.sh/emojis")! - @Published var testBundle: SlackResponse + @Published var emojis: [Emoji] = [] init() { - self.kys = "" +// guard let testURL = Bundle.main.url(forResource: "testData", withExtension: "json") else { +// fatalError("") +// } +// guard let data = try? Data(contentsOf: testURL) else { +// self.testBundle = SlackResponse(ok: false, emoji: [:]) +// return +// } +// guard let decoded = try? JSONDecoder().decode(SlackResponse.self, from: data) else { +// fatalError("couldnt decode :sob:") +// } +// self.testBundle = decoded - guard let testURL = Bundle.main.url(forResource: "testData", withExtension: "json") else { - fatalError("") - } - guard let data = try? Data(contentsOf: testURL) else { - self.testBundle = SlackResponse(ok: false, emoji: [:]) - return - } - guard let decoded = try? JSONDecoder().decode(SlackResponse.self, from: data) else { - fatalError("couldnt decode :sob:") - } - self.testBundle = decoded + let data = try! Data(contentsOf: endpoint) + let decoded: [SlackResponse] = try! JSONDecoder().decode([SlackResponse].self, from: data) + emojis = decoded.prefix(10).map { Emoji(name: $0.name, url: $0.imageUrl) } } } diff --git a/StickerSlack/Views/ContentView.swift b/StickerSlack/Views/ContentView.swift index 49e8800..e0382d7 100644 --- a/StickerSlack/Views/ContentView.swift +++ b/StickerSlack/Views/ContentView.swift @@ -14,7 +14,7 @@ struct ContentView: View { NavigationStack { TabView { List { - ForEach(hoarder.testBundle.toEmojis(), id: \.self) { emoji in + ForEach(hoarder.emojis, id: \.self) { emoji in Text(emoji.name) emoji.image }