Mercurial > public > lazybear
view LazyBear/Views/Home/TradingDates.swift @ 339:e81c18164afb
Fixing backend API Requests
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sat, 03 Apr 2021 13:02:40 +0200 |
parents | 31f2838b2de7 |
children | 80bfa88c6b0f |
line wrap: on
line source
// // TradingDate.swift // LazyBear // // Created by Dennis Concepción Martín on 30/3/21. // import SwiftUI enum DateType { case holidays, trading } struct TradingDates: View { @State private var dates = [TradingDatesModel]() @State private var showingView = false private let baseUrl = Bundle.main.infoDictionary?["IEX_URL"] as? String ?? "Empty url" private let apiKey = Bundle.main.infoDictionary?["IEX_API"] as? String ?? "Empty key" var body: some View { NavigationView { ScrollView { VStack(spacing: 20) { ForEach(getArrayOfDates(), id: \.self) { date in TradingDatesItem(date: date) } } .padding() } .onAppear { requestDates(.holidays) } .navigationTitle("Holiday dates") .navigationBarTitleDisplayMode(.inline) } } private func requestDates(_ dateType: DateType) { switch dateType { case .trading: let tradingUrl = "\(baseUrl)/ref-data/us/dates/trade/next/10?token=\(apiKey)" genericRequest(url: tradingUrl, model: [TradingDatesModel].self) { self.dates = $0 self.showingView = true } case.holidays: let holidaysUrl = "\(baseUrl)/ref-data/us/dates/holiday/next/10?token=\(apiKey)" genericRequest(url: holidaysUrl, model: [TradingDatesModel].self) { self.dates = $0 self.showingView = true } } } private func getArrayOfDates() -> [Date] { // Get array of the string dates let stringDates = self.dates.map { $0.date } // Convert string to date let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" // Append dates to a Date array var dates = [Date]() for stringDate in stringDates { dates.append(dateFormatter.date(from: stringDate)!) } return dates } } struct TradingDate_Previews: PreviewProvider { static var previews: some View { // Format is YYY-MM-DD TradingDates() } }