annotate LazyBear/Views/Search/SearchView.swift @ 376:8162ccc5ec5c

SearchView updated
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Wed, 21 Apr 2021 16:43:57 +0200
parents 280cbc5653b5
children 7aab87e16661
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()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
13 @State private var searchedText = String()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
14 @EnvironmentObject var hudManager: HudManager
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 {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
20 CompanyList(searchResult: search.data)
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 .toolbar {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
52 ToolbarItem(placement: .navigationBarTrailing) {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
53 Button(action: { self.hudManager.showSearchHelper = true }) {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
54 Image(systemName: "questionmark.circle")
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 }
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 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
61
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
62 struct SearchView_Previews: PreviewProvider {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
63 static var previews: some View {
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
64 SearchView()
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
65 }
280cbc5653b5 SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents: 346
diff changeset
66 }