// // 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 .loading: return AnyView( ProgressView() ) case .fetched(let result): switch result { 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 { stateContent .navigationBarTitle(Text(title), displayMode: .inline) } } } struct FeedView_Previews: PreviewProvider { static var previews: some View { FeedView("Discover", url: "https://api.juick.com/messages") } }