Mercurial > public > lazybear
view LazyBear/UI/NewsView.swift @ 243:46b503fcb0f9
Implement Insiders
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Fri, 05 Mar 2021 20:44:09 +0000 |
parents | 108fe992c703 |
children | 724916624385 |
line wrap: on
line source
// // NewsView.swift // LazyBear // // Created by Dennis Concepción Martín on 20/2/21. // import SwiftUI struct NewsView: View { var symbol: String @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) var userSettings: FetchedResults<UserSettings> @State private var news = [NewsModel]() var body: some View { VStack(alignment: .leading) { HStack { Image(systemName: "newspaper.fill") .foregroundColor(Color(.systemYellow)) .imageScale(.large) Text("Recent news") .font(.title2) .fontWeight(.semibold) Spacer() } .padding() let language = userSettings.first?.newsLanguage ?? "en" ForEach(news, id: \.self) { new in if language == new.lang { NewsRow(new: new) Divider() } } } .onAppear { request(url: getUrl(), model: [NewsModel].self) { self.news = $0 } } } private func getUrl() -> String { let baseUrl = Bundle.main.infoDictionary?["IEX_URL"] as? String ?? "Empty url" let apiKey = Bundle.main.infoDictionary?["IEX_API"] as? String ?? "Empty key" let url = "\(baseUrl)/stock/\(symbol)/news/last/30?token=\(apiKey)" return url } } struct NewsView_Previews: PreviewProvider { static var previews: some View { NewsView(symbol: "aapl") } }