view lazybear/Views/Company.swift @ 127:5110adf17b22

Clean code, add ViewSelector
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sun, 07 Feb 2021 17:05:18 +0100
parents a1acd9f4e8c8
children 57d22236ccbd
line wrap: on
line source

//
//  Company.swift
//  LazyBear
//
//  Created by Dennis Concepción Martín on 22/1/21.
//

import SwiftUI

struct Company: View {
    var name: String
    var symbol: String
    @State var viewSelected = 0
    
    @Environment(\.presentationMode) var presentationMode
    @Environment(\.managedObjectContext) private var viewContext  // Core data
    
    var body: some View {
        VStack {
            if viewSelected == 0 {
                StockAndNews(name: name, symbol: symbol)
            } else if viewSelected == 1 {
                Transactions(symbol: symbol)
            }
        } .onAppear { saveSearch(name: name, symbol: symbol) }
        
        .navigationBarTitle(symbol, displayMode: .inline)
        .navigationBarItems(trailing:
            HStack {
                AddWatchlist(symbol: symbol, name: name)
                    .padding(.trailing)
                
                ViewSelector(viewSelected: $viewSelected)
            }
        )
    }
    
    private func saveSearch(name: String, symbol: String) {
        let searched = RecentSearch(context: viewContext)
        searched.name = name
        searched.symbol = symbol
        searched.date = Date()
        do {
            try viewContext.save()
            print("Search saved")
        } catch {
            print(error.localizedDescription)
        }
    }
}

struct Company_Previews: PreviewProvider {
    static var previews: some View {
        Company(name: "Apple Inc", symbol: "AAPL")
    }
}