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
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
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 }