annotate LazyBear/Views/Home/HomeView.swift @ 399:5c99883c7964

Implementing networking in CompanyView
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sat, 15 May 2021 12:31:40 +0200
parents 6303385b3629
children f843c6382529
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()
326
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
12 @State private var showTradingDates = false
343
ab909fc9ce55 Implement batch requests HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 342
diff changeset
13
341
4e6c47a81b80 Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 339
diff changeset
14 // Set recurrent price request
4e6c47a81b80 Testing UserProfile
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 339
diff changeset
15 @State private var timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect()
326
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
16
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
17 static let taskDateFormat: DateFormatter = {
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
18 let formatter = DateFormatter()
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
19 formatter.dateStyle = .medium
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
20 return formatter
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
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
23 let dueDate = Date()
324
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
24
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
25 var body: some View {
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
26 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
27 NavigationView {
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
28 List {
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
29 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
30 SectorRow(sectorPerformance: sectorPerformance)
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
31 .listRowInsets(EdgeInsets())
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
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
34 if let lists = home.data.lists {
375
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
35 if let gainers = lists.gainers {
379
a7e2c5a7b4f6 Implement onDelete in watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 375
diff changeset
36 StockRow(listName: "Gainers", list: gainers, intradayPrices: home.data.intradayPrices, addOnDelete: false)
375
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
37 .listRowInsets(EdgeInsets())
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
38 }
375
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
39 if let losers = lists.losers {
379
a7e2c5a7b4f6 Implement onDelete in watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 375
diff changeset
40 StockRow(listName: "Losers", list: losers, intradayPrices: home.data.intradayPrices, addOnDelete: false)
375
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
41 .listRowInsets(EdgeInsets())
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
42 }
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
43 if let mostActive = lists.mostactive {
379
a7e2c5a7b4f6 Implement onDelete in watchlists
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 375
diff changeset
44 StockRow(listName: "Most active", list: mostActive, intradayPrices: home.data.intradayPrices, addOnDelete: false)
375
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
45 .listRowInsets(EdgeInsets())
f3cb5bdea8e5 Update Codable requests in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 357
diff changeset
46 }
337
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
47 }
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
48 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
49 CurrencyRow(latestCurrencies: latestCurrencies)
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
50 .listRowInsets(EdgeInsets())
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
51 }
324
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
52 }
399
5c99883c7964 Implementing networking in CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 390
diff changeset
53 .onAppear { self.timer = Timer.publish(every: 10, on: .main, in: .common).autoconnect() } // Start timer
5c99883c7964 Implementing networking in CompanyView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 390
diff changeset
54 .onReceive(timer) { _ in home.request("https://api.lazybear.app/home/type=streaming", isInitRequest: false) } // Receive timer notification
339
e81c18164afb Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 338
diff changeset
55 .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
56 .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
57 .navigationBarTitleDisplayMode(.inline)
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
58 .navigationViewStyle(StackNavigationViewStyle())
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
59 .toolbar {
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
60 ToolbarItem(placement: .navigationBarTrailing) {
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
61 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
62 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
63 }
326
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
64 }
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
65 }
2fabdc393675 Testing networking in HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 324
diff changeset
66 }
337
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
67 .sheet(isPresented: $showTradingDates) {
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
68 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
69 TradingDates(dates: dates)
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 343
diff changeset
70 }
337
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
71 }
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
72 } else {
31f2838b2de7 Improving API requests with DispatchGroup
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 336
diff changeset
73 ProgressView()
339
e81c18164afb Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 338
diff changeset
74 .onAppear {
390
6303385b3629 Companies added to watchlists now are correctly updated
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 379
diff changeset
75 home.request("https://api.lazybear.app/home/type=init", isInitRequest: true)
339
e81c18164afb Fixing backend API Requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 338
diff changeset
76 }
349
5ccceb527178 Implementing new internal API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
77
324
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 }
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
80 }
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 struct HomeView_Previews: PreviewProvider {
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
83 static var previews: some View {
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
84 HomeView()
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
85 }
3e64824cca3e Working on HomeView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
86 }