annotate LazyBear/ContentView.swift @ 395:a0cf8fe47044

Fix minor bugs
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Fri, 07 May 2021 11:43:47 +0200
parents 3599d303d1a0
children f9611c94d636
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
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)
346
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 341
diff changeset
38 // Text("The Last Tab")
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 341
diff changeset
39 // .tabItem {
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 341
diff changeset
40 // Image(systemName: "4.square.fill")
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 341
diff changeset
41 // Text("Forth")
80bfa88c6b0f Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 341
diff changeset
42 // }
385
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
43 }
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
44 .onAppear {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
45 // isAppAlreadyLaunchedOnce()
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
46 createDefaultWatchlist()
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
47 }
385
7aab87e16661 Delete HelperView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 378
diff changeset
48 .sheet(isPresented: $showWelcome) {
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
49
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
50 }
163
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
51 }
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
52
395
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
53 /*
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
54 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
55 */
321
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
56 // private func isAppAlreadyLaunchedOnce() {
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
57 // let defaults = UserDefaults.standard
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
58 //
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
59 // 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
60 // print("App already launched : \(isAppAlreadyLaunchedOnce)")
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
61 // self.showWelcome = true
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
62 // }
8f8d5ad3dfa0 Preparing backend requests
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 307
diff changeset
63 // }
395
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 /*
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
66 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
67 */
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
68 private func createDefaultWatchlist() {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
69 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
70 if watchlistCompanies.isEmpty {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
71 for tupleCompany in defaultCompanies {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
72 let watchlistCompany = WatchlistCompany(context: moc)
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
73 watchlistCompany.symbol = tupleCompany.0
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
74 watchlistCompany.name = tupleCompany.1
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
75 watchlistCompany.watchlist = "Default watchlist"
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
76 }
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
77 do {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
78 try moc.save()
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
79 print("Default watchlist created")
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
80 } catch {
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
81 print(error.localizedDescription)
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
82 }
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
83 }
a0cf8fe47044 Fix minor bugs
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 386
diff changeset
84 }
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
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
87 struct ContentView_Previews: PreviewProvider {
9d519f230f26 Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
88 static var previews: some View {
165
125d268db489 Update UI
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 164
diff changeset
89 ContentView()
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 }