Mercurial > public > lazybear
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 |
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 } |