annotate LazyBear/Views/Home/HomeView.swift @ 449:4255f94d0767

Minor updates
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Wed, 23 Jun 2021 13:03:00 +0200
parents ffbb1dbab531
children 37c13ebda381
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 {
441
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
27 ScrollView(showsIndicators: false) {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
28 VStack {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
29 if let sectorPerformance = home.data.sectorPerformance {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
30 SectorRow(sectorPerformance: sectorPerformance)
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
31 .listRowInsets(EdgeInsets())
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
32 }
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
33
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
34 if let lists = home.data.lists {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
35 let listNames = Array(lists.keys.sorted())
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
36 ForEach(listNames, id: \.self) { listName in
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
37 StockRow(listName: listName, companies: lists[listName]!)
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
38 .listRowInsets(EdgeInsets())
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
39 }
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
40 }
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
41
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
42 if let latestCurrencies = home.data.latestCurrencies {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
43 CurrencyRow(latestCurrencies: latestCurrencies)
425
4effac4733b0 Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 424
diff changeset
44 .listRowInsets(EdgeInsets())
375
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
45 }
337
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
46 }
441
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
47 .onAppear { self.timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() } /// Restart timer
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
48 .onReceive(timer) { _ in home.request("https://api.lazybear.app/home/type=streaming", .streaming) } /// Receive timer notification
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
49 .onDisappear { self.timer.upstream.connect().cancel() } // Stop timer
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
50 .navigationTitle("\(dueDate, formatter: Self.taskDateFormat)")
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
51 .toolbar {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
52 ToolbarItem(placement: .navigationBarTrailing) {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
53 Button(action: { showTradingDates = true }) {
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
54 Image(systemName: "calendar.badge.clock")
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
55 }
337
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 }
441
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
59 .background(Color("customBackground").edgesIgnoringSafeArea(.all))
326
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
60 }
441
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 437
diff changeset
61 .navigationViewStyle(StackNavigationViewStyle())
337
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
62 .sheet(isPresented: $showTradingDates) {
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
63 if let dates = home.data.tradingDates {
443
ffbb1dbab531 InsiderRosterHelper implemented
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 441
diff changeset
64 TradingDatesSheet(dates: dates)
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
65 }
337
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
66 }
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
67 } else {
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
68 ProgressView()
339
e81c18164afb Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 338
diff changeset
69 .onAppear {
437
5ca468751db2 Change init to initial
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
70 home.request("https://api.lazybear.app/home/type=initial", .initial)
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 443
diff changeset
71
339
e81c18164afb Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 338
diff changeset
72 }
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
73
324
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 }
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
76 }
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
77
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
78 struct HomeView_Previews: PreviewProvider {
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
79 static var previews: some View {
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
80 HomeView()
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
81 }
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
82 }