Mercurial > public > lazybear
annotate LazyBear/Views/Search/SearchView.swift @ 385:7aab87e16661
Delete HelperView
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sat, 24 Apr 2021 00:41:56 +0200 |
parents | 8162ccc5ec5c |
children | db8bc3ed526a |
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 |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
15 var body: some View { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
16 NavigationView { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
17 VStack(alignment: .leading) { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
18 if search.showSearchList { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
19 CompanyList(searchResult: search.data) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
20 } else { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
21 VStack(alignment: .center) { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
22 Image("bearSleeping") |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
23 .resizable() |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
24 .scaledToFit() |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
25 |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
26 Text("Are you looking for something?") |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
27 .font(.title2) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
28 .fontWeight(.semibold) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
29 .multilineTextAlignment(.center) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
30 .padding(.bottom) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
31 |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
32 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
|
33 .multilineTextAlignment(.center) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
34 } |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
35 .padding(.horizontal) |
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 } |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
38 .navigationTitle("Search") |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
39 .navigationBarTitleDisplayMode(.inline) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
40 .navigationBarSearch($searchedText) |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
41 .onChange(of: searchedText, perform: { searchedText in |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
42 if !searchedText.isEmpty { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
43 // Encode string with spaces |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
44 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
|
45 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
|
46 } else { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
47 search.showSearchList = false |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
48 } |
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 } |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
52 } |
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 struct SearchView_Previews: PreviewProvider { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
55 static var previews: some View { |
280cbc5653b5
SearchView implemented
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
346
diff
changeset
|
56 SearchView() |
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 } |