Mercurial > public > lazybear
diff LazyBear/Views/Profile/Helpers/ProfileStockRow.swift @ 432:3ca32ff79630
Fixes RenameSheetList bug
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sat, 19 Jun 2021 20:13:25 +0200 |
parents | |
children | 37c13ebda381 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Views/Profile/Helpers/ProfileStockRow.swift Sat Jun 19 20:13:25 2021 +0200 @@ -0,0 +1,78 @@ +// +// ProfileStockRow.swift +// LazyBear +// +// Created by Dennis Concepción Martín on 19/6/21. +// + +import SwiftUI + +struct ProfileStockRow: View { + var watchlistName: String + var companies: [CompanyModel] + + @State private var showWatchlistSheet = false + @State private var willRenameWatchlist = false + @State private var showRenameWatchlistSheet = false + @Environment(\.managedObjectContext) private var moc + + var body: some View { + VStack(alignment: .leading) { + HStack(alignment: .bottom) { + VStack(alignment: .leading) { + Text(watchlistName) + .font(.title3) + .fontWeight(.semibold) + .padding([.top, .horizontal]) + + Text("Real-time quotes") + .font(.caption) + .opacity(0.5) + .padding(.horizontal) + } + + Spacer() + Button("See all", action: { showWatchlistSheet = true }) + .buttonStyle(BorderlessButtonStyle()) + .padding(.horizontal) + } + + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 20) { + ForEach(companies, id: \.self) { company in + StockItem(company: company) + } + } + .padding() + } + .frame(height: 250) + } + .padding(.bottom) + .sheet(isPresented: $showWatchlistSheet, onDismiss: didDismissWatchlistSheet) { + WatchlistSheet(listName: watchlistName, apiCompanies: companies, willRenameWatchlist: $willRenameWatchlist) + .environment(\.managedObjectContext, self.moc) + } + .sheet(isPresented: $showRenameWatchlistSheet) { + RenameListSheet(oldWatchlistName: watchlistName) + .environment(\.managedObjectContext, self.moc) + } + } + + /* + If user wants to rename watchlist -> when WatchlistSheet is dismissed, show RenameListSheet + */ + private func didDismissWatchlistSheet() { + if willRenameWatchlist { + showRenameWatchlistSheet = true + } + } +} + +struct ProfileStockRow_Previews: PreviewProvider { + static var previews: some View { + ProfileStockRow( + watchlistName: "mostactive", + companies: [CompanyModel(symbol: "aapl", companyName: "Apple Inc", latestPrice: 120.3, changePercent: 0.03, intradayPrices: [120.3])] + ) + } +}