summaryrefslogtreecommitdiff
path: root/JuickNext/View/FeedView.swift
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2024-05-15 09:50:08 +0300
committerGravatar Vitaly Takmazov2024-05-15 09:50:08 +0300
commit891418e90fe29515364a236a2bb9c81e2a37ff65 (patch)
tree35422be50e4b38534ba5a0d442c90668d7d07500 /JuickNext/View/FeedView.swift
parent517bc874906e5b81cade91f5c7903736779fbeb0 (diff)
Refactor & reorganize project
* LoadableState -> Result
Diffstat (limited to 'JuickNext/View/FeedView.swift')
-rw-r--r--JuickNext/View/FeedView.swift57
1 files changed, 57 insertions, 0 deletions
diff --git a/JuickNext/View/FeedView.swift b/JuickNext/View/FeedView.swift
new file mode 100644
index 0000000..3a612e8
--- /dev/null
+++ b/JuickNext/View/FeedView.swift
@@ -0,0 +1,57 @@
+//
+// FeedView.swift
+// tst
+//
+// Created by Vitaly Takmazov on 10.12.2019.
+// Copyright © 2019 com.juick. All rights reserved.
+//
+
+import SwiftUI
+
+struct FeedView: View {
+ @ObservedObject var messageFetcher : MessageFetcher
+
+ let title: String
+
+ init(_ title: String, url: String) {
+ self.title = title
+ messageFetcher = MessageFetcher(url: url)
+ }
+
+ private var stateContent: AnyView {
+ switch messageFetcher.state {
+ case nil:
+ return AnyView(
+ ProgressView()
+ )
+ case .failure(let error):
+ return AnyView(
+ Text(error.localizedDescription)
+ )
+ case .success(let root):
+ return AnyView(
+ List(root) { (message: Message) in
+ MessageView(message: message)
+ }
+ )
+ }
+ }
+
+ var body: some View {
+ NavigationView {
+ VStack {
+ stateContent
+ }.toolbar {
+ ToolbarItem(placement: .principal) {
+ Text(title)
+ }
+ }
+ }
+ }
+}
+
+struct FeedView_Previews: PreviewProvider {
+ static var previews: some View {
+ FeedView("Discover", url: "https://api.juick.com/messages")
+ }
+}