diff --git a/StickerSlack/Emoji/Emoji.swift b/StickerSlack/Emoji/Emoji.swift index 23996a4..63d71d6 100644 --- a/StickerSlack/Emoji/Emoji.swift +++ b/StickerSlack/Emoji/Emoji.swift @@ -32,14 +32,17 @@ struct Emoji: EmojiProtocol { ) } - init(name: String, url: String) { + init( + name: String, + url: String, + image: UIImage = UIImage() + ) { self.name = name self.urlString = url - grabImage() + self.uiImage = UIImage() } enum CodingKeys: CodingKey { - case name case urlString } @@ -50,8 +53,13 @@ struct Emoji: EmojiProtocol { try container.encode(self.urlString, forKey: .urlString) } - mutating func grabImage() { - uiImage = UIImage(data: try! Data(contentsOf: url))! + func grabImage() async -> Emoji { + let req = URLRequest(url: url, cachePolicy: .reloadRevalidatingCacheData, timeoutInterval: 10) + guard let response = try? await URLSession.shared.data(for: req) else { + return self + } + print(UIImage(data: response.0)) + return Emoji(name: name, url: urlString, image: UIImage(data: response.0)!) } } diff --git a/StickerSlack/EmojiHoarder.swift b/StickerSlack/EmojiHoarder.swift index 8d388bc..8564a57 100644 --- a/StickerSlack/EmojiHoarder.swift +++ b/StickerSlack/EmojiHoarder.swift @@ -29,6 +29,11 @@ class EmojiHoarder: ObservableObject { 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) } + emojis = decoded.prefix(100).map { Emoji(name: $0.name, url: $0.imageUrl) } + Task { + for i in 0..