view LazyBear/Views/Search/SearchView.swift @ 358:280cbc5653b5

SearchView implemented
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Fri, 16 Apr 2021 17:03:48 +0200
parents 80bfa88c6b0f
children 8162ccc5ec5c
line wrap: on
line source

//
//  SearchView.swift
//  LazyBear
//
//  Created by Dennis Concepción Martín on 1/4/21.
//

import SwiftUI
import SwiftlySearch

struct SearchView: View {
    @ObservedObject var search = Search()
    @State private var searchedText = String()
    @EnvironmentObject var hudManager: HudManager
    
    var body: some View {
        NavigationView {
            VStack(alignment: .leading) {
                if search.showSearchList {
                    CompanyList(searchResult: search.data)
                } else {
                    VStack(alignment: .center) {
                        Image("bearSleeping")
                            .resizable()
                            .scaledToFit()
                        
                        Text("Are you looking for something?")
                            .font(.title2)
                            .fontWeight(.semibold)
                            .multilineTextAlignment(.center)
                            .padding(.bottom)
                        
                        Text("Use the search bar to find your favourite company. Type the stock symbol or name, we'll find it!")
                            .multilineTextAlignment(.center)
                    }
                    .padding(.horizontal)
                }
            }
            .navigationTitle("Search")
            .navigationBarTitleDisplayMode(.inline)
            .navigationBarSearch($searchedText)
            .onChange(of: searchedText, perform: { searchedText in
                if !searchedText.isEmpty {
                    // Encode string with spaces
                    let encodedSearchedText = searchedText.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
                    search.request("https://api.lazybear.app/search/\(encodedSearchedText ?? "")")
                } else {
                    search.showSearchList = false
                }
            })
            .toolbar {
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button(action: { self.hudManager.showSearchHelper = true }) {
                        Image(systemName: "questionmark.circle")
                    }
                }
            }
        }
    }
}

struct SearchView_Previews: PreviewProvider {
    static var previews: some View {
        SearchView()
    }
}