annotate LazyBear/Views/Search/SearchView.swift @ 441:417148200aaf

Change background color and minor UI updates
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Sun, 20 Jun 2021 19:52:21 +0200
parents c78d5b5b3bda
children
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()
430
c78d5b5b3bda Minor updates
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 428
diff changeset
14 @Environment(\.presentationMode) private var searchViewPresentation
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) {
428
8c58ce834d95 Bug fixes and change assets
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 417
diff changeset
23 Image("suitBear")
358
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
428
8c58ce834d95 Bug fixes and change assets
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 417
diff changeset
33 Text("Use the search bar to find your favourite company. Type the stock symbol or name, I'll find it")
358
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
417
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
43 encodeAndRequest(searchedText)
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
44 })
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
45 }
441
417148200aaf Change background color and minor UI updates
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents: 430
diff changeset
46 .background(Color("customBackground").edgesIgnoringSafeArea(.all))
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
47 .navigationViewStyle(StackNavigationViewStyle())
358
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
48 }
417
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
49
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
50 /*
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
51 1) Check if searchedText is empty
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
52 2) Encode white spaces
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
53 3) Make API request
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
54 */
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
55 private func encodeAndRequest(_ searchedText: String) {
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
56 if !searchedText.isEmpty {
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
57 let encodedSearchedText = searchedText.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
58 search.request("https://api.lazybear.app/search/text=\(encodedSearchedText ?? "")")
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
59 } else {
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
60 search.showSearchList = false
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
61 }
5f21f7c23c5e Add comments and clean code
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 393
diff changeset
62 }
358
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
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
65 struct SearchView_Previews: PreviewProvider {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
66 static var previews: some View {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
67 SearchView()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
68 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
69 }