annotate LazyBear/ContentView.swift @ 450:4b8031e696e8

Change Bazooka to Alamofire Alamofire is compatible with WatchOS and MacOS
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Sat, 26 Jun 2021 16:36:53 +0200
parents 4255f94d0767
children 37c13ebda381
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
1 //
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
2 // ContentView.swift
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
3 // LazyBear
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
4 //
296
b481783c32c0 Start version 4
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 287
diff changeset
5 // Created by Dennis Concepción Martín on 21/3/21.
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
6 //
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
7
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
8 import SwiftUI
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
9
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
10 struct ContentView: View {
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
11 @State private var showWelcome = false
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
12 @State var selectedTab: Tab = .home
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
13 @StateObject var hapticsManager = HapticsManager()
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
14
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
15 @Environment(\.managedObjectContext) private var moc
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
16 @FetchRequest(entity: WatchlistCompany.entity(), sortDescriptors: [])
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
17 var watchlistCompanies: FetchedResults<WatchlistCompany>
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
18
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
19 var body: some View {
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
20 TabView(selection: $selectedTab) {
385
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
21 HomeView()
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
22 .tabItem {
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
23 Image(systemName: "house")
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
24 Text("Home")
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
25 }
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
26 .tag(Tab.home) /// Do not remove tags. It causes an odd behaviour when showView is activated
385
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
27 SearchView()
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
28 .tabItem {
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
29 Image(systemName: "magnifyingglass")
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
30 Text("Search")
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
31 }
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
32 .tag(Tab.search)
385
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
33 ProfileView()
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
34 .tabItem {
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
35 Image(systemName: "person")
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
36 Text("Profile")
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
37 }
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
38 .tag(Tab.profile)
385
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
39 }
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
40 .onAppear {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
41 // isAppAlreadyLaunchedOnce()
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
42 hapticsManager.prepareHaptics()
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
43 createDefaultWatchlist()
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
44 }
385
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
45 .sheet(isPresented: $showWelcome) {
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
46
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
47 }
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
48 }
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
49
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
50 /*
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
51 Check if app is already launched one -> If not show welcome
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
52 */
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
53 // private func isAppAlreadyLaunchedOnce() {
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
54 // let defaults = UserDefaults.standard
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
55 //
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
56 // if let isAppAlreadyLaunchedOnce = defaults.string(forKey: "IsAppAlreadyLaunchedOnce") {
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
57 // print("App already launched : \(isAppAlreadyLaunchedOnce)")
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
58 // self.showWelcome = true
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
59 // }
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
60 // }
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
61
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
62 /*
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
63 Check if exist default watchlist (Core Data) -> if not, create it
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
64 */
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
65 private func createDefaultWatchlist() {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
66 let defaultCompanies = [("TSLA", "Tesla Inc"), ("AAPL", "Apple Inc"), ("MSFT", "Microsoft Corporation"), ("GS", "Goldman Sachs Group, Inc.")]
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
67 if watchlistCompanies.isEmpty {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
68 for tupleCompany in defaultCompanies {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
69 let watchlistCompany = WatchlistCompany(context: moc)
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
70 watchlistCompany.symbol = tupleCompany.0
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
71 watchlistCompany.name = tupleCompany.1
425
4effac4733b0 Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 408
diff changeset
72 watchlistCompany.watchlistName = "Default watchlist"
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
73 }
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
74 do {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
75 try moc.save()
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
76 print("Default watchlist created")
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
77 } catch {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
78 print(error.localizedDescription)
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
79 }
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
80 }
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
81 }
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
82 }
449
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
83 extension ContentView {
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
84 enum Tab: Hashable {
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
85 case home
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
86 case search
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
87 case profile
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
88 }
4255f94d0767 Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 425
diff changeset
89 }
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
90
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
91 struct ContentView_Previews: PreviewProvider {
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
92 static var previews: some View {
165
125d268db489 Update UI
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 164
diff changeset
93 ContentView()
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
94 }
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
95 }