Mercurial > public > lazybear
annotate LazyBear/Views/Home/HomeView.swift @ 425:4effac4733b0
Changing keys from API responses
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Wed, 16 Jun 2021 13:46:01 +0200 |
parents | 6dd97877f575 |
children | 5ca468751db2 |
rev | line source |
---|---|
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // HomeView.swift |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 28/3/21. |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 struct HomeView: View { |
346
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
11 @ObservedObject var home = Home() |
417
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
401
diff
changeset
|
12 |
326
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
13 @State private var showTradingDates = false |
417
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
401
diff
changeset
|
14 @State private var timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() /// Set recurrent price request |
326
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
15 |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
16 static let taskDateFormat: DateFormatter = { |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
17 let formatter = DateFormatter() |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
18 formatter.dateStyle = .medium |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
19 return formatter |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
20 }() |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
21 |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
22 let dueDate = Date() |
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
23 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
24 var body: some View { |
346
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
25 if home.showView { |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
26 NavigationView { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
27 List { |
346
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
28 if let sectorPerformance = home.data.sectorPerformance { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
29 SectorRow(sectorPerformance: sectorPerformance) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
30 .listRowInsets(EdgeInsets()) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
31 } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
32 |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
33 if let lists = home.data.lists { |
425
4effac4733b0
Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
424
diff
changeset
|
34 let listNames = Array(lists.keys.sorted()) |
4effac4733b0
Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
424
diff
changeset
|
35 ForEach(listNames, id: \.self) { listName in |
4effac4733b0
Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
424
diff
changeset
|
36 StockRow(listName: listName, companies: lists[listName]!) |
4effac4733b0
Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
424
diff
changeset
|
37 .listRowInsets(EdgeInsets()) |
375
f3cb5bdea8e5
Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
357
diff
changeset
|
38 } |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
39 } |
425
4effac4733b0
Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
424
diff
changeset
|
40 |
349
5ccceb527178
Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
41 if let latestCurrencies = home.data.latestCurrencies { |
5ccceb527178
Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
42 CurrencyRow(latestCurrencies: latestCurrencies) |
5ccceb527178
Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
43 .listRowInsets(EdgeInsets()) |
5ccceb527178
Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
44 } |
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
45 } |
417
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
401
diff
changeset
|
46 .onAppear { self.timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() } /// Restart timer |
5f21f7c23c5e
Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
401
diff
changeset
|
47 .onReceive(timer) { _ in home.request("https://api.lazybear.app/home/type=streaming", .streaming) } /// Receive timer notification |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
338
diff
changeset
|
48 .onDisappear { self.timer.upstream.connect().cancel() } // Stop timer |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
49 .navigationTitle("\(dueDate, formatter: Self.taskDateFormat)") |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
50 .navigationBarTitleDisplayMode(.inline) |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
51 .navigationViewStyle(StackNavigationViewStyle()) |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
52 .toolbar { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
53 ToolbarItem(placement: .navigationBarTrailing) { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
54 Button(action: { showTradingDates = true }) { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
55 Image(systemName: "calendar.badge.clock") |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
56 } |
326
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
57 } |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
58 } |
2fabdc393675
Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
324
diff
changeset
|
59 } |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
60 .sheet(isPresented: $showTradingDates) { |
346
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
61 if let dates = home.data.tradingDates { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
62 TradingDates(dates: dates) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
343
diff
changeset
|
63 } |
337
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
64 } |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
65 } else { |
31f2838b2de7
Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
336
diff
changeset
|
66 ProgressView() |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
338
diff
changeset
|
67 .onAppear { |
401
f843c6382529
Add Enumeration to Networks files
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
399
diff
changeset
|
68 home.request("https://api.lazybear.app/home/type=init", .initial) |
339
e81c18164afb
Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
338
diff
changeset
|
69 } |
349
5ccceb527178
Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
70 |
324
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
71 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
72 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
73 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
74 |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
75 struct HomeView_Previews: PreviewProvider { |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
76 static var previews: some View { |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
77 HomeView() |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
78 } |
3e64824cca3e
Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
79 } |