annotate LazyBear/Views/Search/SearchView.swift @ 393:0a4c399170c4

Implementing WatchlistCreator
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sun, 02 May 2021 12:41:20 +0200
parents 13f3578def61
children 5f21f7c23c5e
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 {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
12 @ObservedObject var search = Search()
393
0a4c399170c4 Implementing WatchlistCreator
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 392
diff changeset
13 @State private var searchedText = String()
389
db8bc3ed526a Implementing add to watchlist feature from SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 385
diff changeset
14 @Environment(\.presentationMode) private var presentationMode
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
15
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
16 var body: some View {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
17 NavigationView {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
18 VStack(alignment: .leading) {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
19 if search.showSearchList {
393
0a4c399170c4 Implementing WatchlistCreator
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 392
diff changeset
20 CompanyList(searchResult: search.data)
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
21 } else {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
22 VStack(alignment: .center) {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
23 Image("bearSleeping")
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
24 .resizable()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
25 .scaledToFit()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
26
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
27 Text("Are you looking for something?")
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
28 .font(.title2)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
29 .fontWeight(.semibold)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
30 .multilineTextAlignment(.center)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
31 .padding(.bottom)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
32
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
33 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
34 .multilineTextAlignment(.center)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
35 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
36 .padding(.horizontal)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
37 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
38 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
39 .navigationTitle("Search")
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
40 .navigationBarTitleDisplayMode(.inline)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
41 .navigationBarSearch($searchedText)
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
42 .onChange(of: searchedText, perform: { searchedText in
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
43 if !searchedText.isEmpty {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
44 // Encode string with spaces
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
45 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
46 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
47 } else {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
48 search.showSearchList = false
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
49 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
50 })
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
51 }
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
52 .navigationViewStyle(StackNavigationViewStyle())
358
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
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
56 struct SearchView_Previews: PreviewProvider {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
57 static var previews: some View {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
58 SearchView()
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 }