annotate LazyBear/Views/Search/SearchView.swift @ 391:8ec37b2baafd

Implementing CreateNewWatchlist
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Fri, 30 Apr 2021 20:25:52 +0200
parents 6303385b3629
children 13f3578def61
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
338
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
1 //
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
2 // SearchView.swift
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
3 // LazyBear
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
4 //
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 1/4/21.
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
6 //
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
7
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
8 import SwiftUI
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
9 import SwiftlySearch
71a9c0e61783 Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff changeset
10
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
11 struct SearchView: View {
391
8ec37b2baafd Implementing CreateNewWatchlist
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 390
diff changeset
12 // Only unseful when it's called from Profile View
8ec37b2baafd Implementing CreateNewWatchlist
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 390
diff changeset
13 var calledFromProfileView: Bool?
8ec37b2baafd Implementing CreateNewWatchlist
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 390
diff changeset
14 var newWatchlistClass: NewWatchlistClass?
8ec37b2baafd Implementing CreateNewWatchlist
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 390
diff changeset
15
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
16 @ObservedObject var search = Search()
389
db8bc3ed526a Implementing add to watchlist feature from SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 385
diff changeset
17 @Environment(\.presentationMode) private var presentationMode
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
18 @State private var searchedText = String()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
19
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
20 var body: some View {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
21 NavigationView {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
22 VStack(alignment: .leading) {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
23 if search.showSearchList {
391
8ec37b2baafd Implementing CreateNewWatchlist
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 390
diff changeset
24 CompanyList(searchResult: search.data, calledFromProfileView: calledFromProfileView, newWatchlistClass: newWatchlistClass)
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
25 } else {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
26 VStack(alignment: .center) {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
27 Image("bearSleeping")
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
28 .resizable()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
29 .scaledToFit()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
30
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
31 Text("Are you looking for something?")
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
32 .font(.title2)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
33 .fontWeight(.semibold)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
34 .multilineTextAlignment(.center)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
35 .padding(.bottom)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
36
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
37 Text("Use the search bar to find your favourite company. Type the stock symbol or name, we'll find it!")
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
38 .multilineTextAlignment(.center)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
39 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
40 .padding(.horizontal)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
41 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
42 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
43 .navigationTitle("Search")
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
44 .navigationBarTitleDisplayMode(.inline)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
45 .navigationBarSearch($searchedText)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
46 .onChange(of: searchedText, perform: { searchedText in
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
47 if !searchedText.isEmpty {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
48 // Encode string with spaces
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
49 let encodedSearchedText = searchedText.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
376
8162ccc5ec5c SearchView updated
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 358
diff changeset
50 search.request("https://api.lazybear.app/search/text=\(encodedSearchedText ?? "")")
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
51 } else {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
52 search.showSearchList = false
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
53 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
54 })
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
55 }
390
6303385b3629 Companies added to watchlists now are correctly updated
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 389
diff changeset
56 .navigationViewStyle(StackNavigationViewStyle())
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
57 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
58 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
59
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
60 struct SearchView_Previews: PreviewProvider {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
61 static var previews: some View {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
62 SearchView()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
63 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
64 }