diff --git a/StickerSlack/Emoji/SlackResponse.swift b/StickerSlack/Emoji/SlackResponse.swift index 1989b98..44dcb64 100644 --- a/StickerSlack/Emoji/SlackResponse.swift +++ b/StickerSlack/Emoji/SlackResponse.swift @@ -11,14 +11,14 @@ struct SlackResponse: Codable { var ok: Bool var emoji: [String:String] - func toEmojiResponse() -> [SlackEmojiResponse] { + func toEmojis() -> [Emoji] { return emoji.map { - SlackEmojiResponse(name: $0.key, url: $0.value) + Emoji(name: $0.key, url: $0.value) } } } -struct SlackEmojiResponse: Codable { +struct Emoji: Codable, Hashable { var name: String var url: String diff --git a/StickerSlack/EmojiHoarder.swift b/StickerSlack/EmojiHoarder.swift index 3cca52a..33840b3 100644 --- a/StickerSlack/EmojiHoarder.swift +++ b/StickerSlack/EmojiHoarder.swift @@ -12,4 +12,22 @@ import Combine class EmojiHoarder: ObservableObject { private let endpoint: URL = URL(string: "https://slack.com/api/emoji.list")! @Published var kys = "" + + @Published var testBundle: SlackResponse + + 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 + } } diff --git a/StickerSlack/Views/ContentView.swift b/StickerSlack/Views/ContentView.swift index 877237d..72059a6 100644 --- a/StickerSlack/Views/ContentView.swift +++ b/StickerSlack/Views/ContentView.swift @@ -8,16 +8,25 @@ import SwiftUI struct ContentView: View { - var body: some View { - TabView { - Text("hi") + @StateObject var hoarder: EmojiHoarder = EmojiHoarder() + + var body: some View { + NavigationStack { + TabView { + List { + ForEach(hoarder.testBundle.toEmojis(), id: \.self) { emoji in + Text(emoji.name) + Text(emoji.url) + } + } .tabItem { Label("home", systemImage: "house") } + } } - } + } } #Preview { - ContentView() + ContentView() }