diff options
author | 2024-05-15 09:50:08 +0300 | |
---|---|---|
committer | 2024-05-15 09:50:08 +0300 | |
commit | 891418e90fe29515364a236a2bb9c81e2a37ff65 (patch) | |
tree | 35422be50e4b38534ba5a0d442c90668d7d07500 /JuickNext/View/FeedView.swift | |
parent | 517bc874906e5b81cade91f5c7903736779fbeb0 (diff) |
Refactor & reorganize project
* LoadableState -> Result
Diffstat (limited to 'JuickNext/View/FeedView.swift')
-rw-r--r-- | JuickNext/View/FeedView.swift | 57 |
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") + } +} |