Mercurial > public > lazybear
annotate LazyBearWatchOS Extension/Views/WatchOSCompanyView.swift @ 460:57471e7bcf08
Testing ComplicationsView
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Sat, 03 Jul 2021 15:51:54 +0100 |
parents | b560babcd5ed |
children |
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 { |
460
57471e7bcf08
Testing ComplicationsView
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
455
diff
changeset
|
39 company.request("https://api.lazybear.app/company/symbol=\(symbol)/type=initial/range=5d/watch=true", .initial) |
455
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 } |