annotate LazyBearWatchOS Extension/Views/WatchOSCompanyView.swift @ 457:c6913f0ce46e

Minor UI Updates
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Mon, 28 Jun 2021 14:03:50 +0200
parents b560babcd5ed
children 57471e7bcf08
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
455
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 //
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
2 // WatchOSCompanyView.swift
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
3 // LazyBearWatchOS Extension
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
4 //
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 27/06/2021.
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6 //
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
7
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 import SwiftUI
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
10 struct WatchOSCompanyView: View {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11 var symbol: String
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
12 @ObservedObject var company = Company()
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13 @State private var timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() /// Set recurrent price request
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
14
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
15 var body: some View {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
16 if company.showView {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
17 ScrollView {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
18 VStack(alignment: .leading) {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
19 Text(symbol)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
20 .fontWeight(.semibold)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
21
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
22 WatchOSChartHelper(company: company)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
23 .padding(.bottom)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
24
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
25 NavigationLink("Latest news", destination: WatchOSNewsList(latestNews: company.data.latestNews).navigationTitle("Latest news"))
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
26
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
27 Text("Real-time data")
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
28 .font(.footnote)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
29 .opacity(0.7)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
30 .padding(.top)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
31 }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
32 .onAppear { self.timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() } /// Start timer
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
33 .onDisappear { self.timer.upstream.connect().cancel() } /// Stop timer
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
34 .onReceive(timer) { _ in company.request("https://api.lazybear.app/company/symbol=\(symbol)/type=initial/range=5d", .streaming) }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
35 }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
36 } else {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
37 ProgressView()
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
38 .onAppear {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
39 company.request("https://api.lazybear.app/company/symbol=\(symbol)/type=initial/range=5d", .initial)
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
40 }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
41 }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
42 }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
43 }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
44
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
45 struct WatchOSCompanyView_Previews: PreviewProvider {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
46 static var previews: some View {
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
47 WatchOSCompanyView(symbol: "AAPL")
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
48 .navigationTitle("Apple Inc")
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
49 }
b560babcd5ed WatchOS views implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
50 }