// // FeedView.swift // tst // // Created by Vitaly Takmazov on 10.12.2019. // Copyright © 2019 com.juick. All rights reserved. // import SwiftUI struct FeedView: View { @Environment(\.horizontalSizeClass) private var size @ObservedObject var messageFetcher : MessageFetcher let feed: Feed init(_ feed: Feed) { self.feed = feed messageFetcher = MessageFetcher(url: feed.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 { let content = VStack { stateContent }.screenTitle(title: feed.title) let view = (size == .compact) ? AnyView( NavigationView { content }) : AnyView(content) view } } struct FeedView_Previews: PreviewProvider { static var previews: some View { FeedView(Feed(title:"Discover", url: "https://api.juick.com/messages", imageName: "Discover")) } }