Mercurial > public > lazybear
annotate LazyBear/ContentView.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 | f9611c94d636 |
children | 4255f94d0767 |
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 |
378
6802c2393203
Implementing ProfileView (Watchlists)
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
377
diff
changeset
|
12 @State var selectedView = 1 |
321
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
13 |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
14 @Environment(\.managedObjectContext) private var moc |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
15 @FetchRequest(entity: WatchlistCompany.entity(), sortDescriptors: []) |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
16 var watchlistCompanies: FetchedResults<WatchlistCompany> |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
17 |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
18 var body: some View { |
385
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
19 TabView(selection: $selectedView) { |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
20 HomeView() |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
21 .tabItem { |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
22 Image(systemName: "house") |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
23 Text("Home") |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
24 } |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
25 .tag(1) // Do not remove tags. It causes an odd behaviour when showView is activated |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
26 SearchView() |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
27 .tabItem { |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
28 Image(systemName: "magnifyingglass") |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
29 Text("Search") |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
30 } |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
31 .tag(2) |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
32 ProfileView() |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
33 .tabItem { |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
34 Image(systemName: "person") |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
35 Text("Profile") |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
36 } |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
37 .tag(3) |
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
38 } |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
39 .onAppear { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
40 // isAppAlreadyLaunchedOnce() |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
41 createDefaultWatchlist() |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
42 } |
385
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
43 .sheet(isPresented: $showWelcome) { |
321
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
44 |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
45 } |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
46 } |
321
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
47 |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
48 /* |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
49 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
|
50 */ |
321
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
51 // private func isAppAlreadyLaunchedOnce() { |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
52 // let defaults = UserDefaults.standard |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
53 // |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
54 // 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
|
55 // print("App already launched : \(isAppAlreadyLaunchedOnce)") |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
56 // self.showWelcome = true |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
57 // } |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
58 // } |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
59 |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
60 /* |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
61 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
|
62 */ |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
63 private func createDefaultWatchlist() { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
64 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
|
65 if watchlistCompanies.isEmpty { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
66 for tupleCompany in defaultCompanies { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
67 let watchlistCompany = WatchlistCompany(context: moc) |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
68 watchlistCompany.symbol = tupleCompany.0 |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
69 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
|
70 watchlistCompany.watchlistName = "Default watchlist" |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
71 } |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
72 do { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
73 try moc.save() |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
74 print("Default watchlist created") |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
75 } catch { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
76 print(error.localizedDescription) |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
77 } |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
78 } |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
79 } |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
80 } |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
81 |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
82 struct ContentView_Previews: PreviewProvider { |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
83 static var previews: some View { |
165
125d268db489
Update UI
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
164
diff
changeset
|
84 ContentView() |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
85 } |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
86 } |