# HG changeset patch # User Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> # Date 1612465649 -3600 # Node ID 4c172ff9af20e357a51084ee6be9a3cd10a34b79 # Parent 16f8514cc5e67c36f0a4038ce35a7c3a1a4950dd Add optional values to all the models diff -r 16f8514cc5e6 -r 4c172ff9af20 LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate Binary file LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed diff -r 16f8514cc5e6 -r 4c172ff9af20 lazybear/Models/HistoricalPricesModel.swift --- a/lazybear/Models/HistoricalPricesModel.swift Mon Feb 01 20:19:32 2021 +0100 +++ b/lazybear/Models/HistoricalPricesModel.swift Thu Feb 04 20:07:29 2021 +0100 @@ -8,8 +8,8 @@ import Foundation struct HistoricalPricesModel: Codable { - var date: String - var close: Double + var date: String? + var close: Double? var volume: Float? var change: Double? var changePercent: Double? diff -r 16f8514cc5e6 -r 4c172ff9af20 lazybear/Models/QuoteModel.swift --- a/lazybear/Models/QuoteModel.swift Mon Feb 01 20:19:32 2021 +0100 +++ b/lazybear/Models/QuoteModel.swift Thu Feb 04 20:07:29 2021 +0100 @@ -8,7 +8,7 @@ import Foundation struct QuoteModel: Codable { - var latestPrice: Float - var changePercent: Double + var latestPrice: Float? + var changePercent: Double? } diff -r 16f8514cc5e6 -r 4c172ff9af20 lazybear/Views/InsiderTransactions.swift --- a/lazybear/Views/InsiderTransactions.swift Mon Feb 01 20:19:32 2021 +0100 +++ b/lazybear/Views/InsiderTransactions.swift Thu Feb 04 20:07:29 2021 +0100 @@ -39,7 +39,6 @@ let path = "/stable/stock/\(symbol)/insider-transactions?token=" self.url = baseUrl + path + token - print(url) } } diff -r 16f8514cc5e6 -r 4c172ff9af20 lazybear/Views/Price.swift --- a/lazybear/Views/Price.swift Mon Feb 01 20:19:32 2021 +0100 +++ b/lazybear/Views/Price.swift Thu Feb 04 20:07:29 2021 +0100 @@ -16,9 +16,7 @@ // <--------- API Job ---------> @State private var url = String() { didSet { requestPrice() }} @State private var showingView = false - @State var latestPrice = Float() - @State var changePercent = Double() { didSet { self.showingView = true }} - @State private var negativeChange = false + @State private var data = [QuoteModel]() { didSet { self.showingView = true }} // <--------- API Job ---------> // Set recurrent price request. Real-time prices @@ -28,13 +26,13 @@ VStack(alignment: .trailing) { if self.showingView { Group { - Text("\(latestPrice, specifier: "%.2f")") + Text("\(data[0].latestPrice ?? 0, specifier: "%.2f")") .fontWeight(.semibold) - Text("\(changePercent*100, specifier: "%.2f")%") + Text("\(data[0].changePercent ?? 0 * 100, specifier: "%.2f")%") .font(.subheadline) .foregroundColor(.white) - .background(Color(negativeChange ? .red : .green).cornerRadius(5)) + //.background(Color(negativeChange ? .red : .green).cornerRadius(5)) } .if(showVertical) { content in HStack { content } @@ -58,13 +56,10 @@ private func requestPrice() { request(url: url, model: QuoteModel.self) { result in - self.latestPrice = result.latestPrice - if self.changePercent >= 0 { self.negativeChange = true } - self.changePercent = result.changePercent + self.data = [QuoteModel(latestPrice: result.latestPrice, changePercent: result.changePercent)] } } } - // Wrap content if some condition is satisfied extension View { @ViewBuilder @@ -77,6 +72,7 @@ } } + struct Price_Previews: PreviewProvider { static var previews: some View { Price(symbol: "AAPL", showVertical: false) diff -r 16f8514cc5e6 -r 4c172ff9af20 lazybear/Views/Stock.swift --- a/lazybear/Views/Stock.swift Mon Feb 01 20:19:32 2021 +0100 +++ b/lazybear/Views/Stock.swift Thu Feb 04 20:07:29 2021 +0100 @@ -50,7 +50,7 @@ getUrl(range: period[selectedPeriod]) }) - let prices = data.map { $0.close } + let prices = data.map { $0.close ?? 0 } if showingLineChart { let normalPrices = normalize(prices) LineChart(dataPoints: normalPrices, lineColor: colorLineChart(prices: prices) ? .green : .red, lineWidth: 2)