Mercurial > public > lazybear
annotate LazyBear/ContentView.swift @ 455:b560babcd5ed
WatchOS views implemented
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Mon, 28 Jun 2021 11:55:19 +0200 |
parents | 37c13ebda381 |
children | c6913f0ce46e |
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 |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
9 import CoreHaptics |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
11 struct ContentView: View { |
321
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
12 @State private var showWelcome = false |
449
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
13 @State var selectedTab: Tab = .home |
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 |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
16 @FetchRequest(entity: WatchlistCompany.entity(), sortDescriptors: []) var watchlistCompanies: FetchedResults<WatchlistCompany> |
395
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 { |
449
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
19 TabView(selection: $selectedTab) { |
385
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 } |
449
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
25 .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
|
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 } |
449
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
31 .tag(Tab.search) |
385
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 } |
449
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
37 .tag(Tab.profile) |
385
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
38 } |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
39 .onAppear(perform: onAppear) |
385
7aab87e16661
Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
378
diff
changeset
|
40 .sheet(isPresented: $showWelcome) { |
321
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
41 |
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
42 } |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
43 } |
321
8f8d5ad3dfa0
Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
307
diff
changeset
|
44 |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
45 /* |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
46 1) Create default watchlist if it doesn't exits |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
47 2) Show WelcomeView if is the first time that the app is opened |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
48 3) Prepare haptics |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
49 */ |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
50 private func onAppear() { |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
51 // Create watchlist |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
52 if watchlistCompanies.isEmpty { |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
53 let defaultCompanies: [DefaultCompanyModel] = parseJSON("DefaultCompanies.json") |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
54 for defaultCompany in defaultCompanies { |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
55 let watchlistCompany = WatchlistCompany(context: moc) |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
56 watchlistCompany.name = defaultCompany.name |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
57 watchlistCompany.symbol = defaultCompany.symbol |
425
4effac4733b0
Changing keys from API responses
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
408
diff
changeset
|
58 watchlistCompany.watchlistName = "Default watchlist" |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
59 } |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
60 |
395
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
61 do { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
62 try moc.save() |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
63 print("Default watchlist created") |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
64 } catch { |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
65 print(error.localizedDescription) |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
66 } |
a0cf8fe47044
Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
386
diff
changeset
|
67 } |
453
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
68 |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
69 // Show WelcomeView if is the first time that the app is opened |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
70 // let defaults = UserDefaults.standard |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
71 // |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
72 // if let isAppAlreadyLaunchedOnce = defaults.string(forKey: "IsAppAlreadyLaunchedOnce") { |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
73 // print("App already launched : \(isAppAlreadyLaunchedOnce)") |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
74 // self.showWelcome = true |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
75 // } |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
76 |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
77 // Prepare haptics |
37c13ebda381
Improve hierarchy and minor bugs fixed
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
449
diff
changeset
|
78 // hapticsManager.prepareHaptics() |
395
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 } |
449
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
81 extension ContentView { |
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
82 enum Tab: Hashable { |
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
83 case home |
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
84 case search |
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
85 case profile |
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
86 } |
4255f94d0767
Minor updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
425
diff
changeset
|
87 } |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
88 |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
89 struct ContentView_Previews: PreviewProvider { |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
90 static var previews: some View { |
165
125d268db489
Update UI
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
164
diff
changeset
|
91 ContentView() |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
92 } |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
93 } |