WIP - Complete App refactoring
This commit is contained in:
@@ -9,14 +9,14 @@ import Foundation
|
||||
import SwiftUI
|
||||
|
||||
// MARK: - Recipe Metadata Section
|
||||
|
||||
/*
|
||||
struct RecipeMetadataSection: View {
|
||||
@EnvironmentObject var appState: AppState
|
||||
@ObservedObject var viewModel: RecipeView.ViewModel
|
||||
@Environment(CookbookState.self) var cookbookState
|
||||
@State var viewModel: RecipeView.ViewModel
|
||||
|
||||
@State var keywords: [RecipeKeyword] = []
|
||||
var categories: [String] {
|
||||
appState.categories.map({ category in category.name })
|
||||
cookbookState.selectedAccountState.categories.map({ category in category.name })
|
||||
}
|
||||
|
||||
@State var presentKeywordSheet: Bool = false
|
||||
@@ -28,11 +28,11 @@ struct RecipeMetadataSection: View {
|
||||
// Category
|
||||
SecondaryLabel(text: "Category")
|
||||
HStack {
|
||||
TextField("Category", text: $viewModel.observableRecipeDetail.recipeCategory)
|
||||
TextField("Category", text: $viewModel.recipe.recipeCategory)
|
||||
.lineLimit(1)
|
||||
.textFieldStyle(.roundedBorder)
|
||||
|
||||
Picker("Choose", selection: $viewModel.observableRecipeDetail.recipeCategory) {
|
||||
Picker("Choose", selection: $viewModel.recipe.recipeCategory) {
|
||||
Text("").tag("")
|
||||
ForEach(categories, id: \.self) { item in
|
||||
Text(item)
|
||||
@@ -45,10 +45,10 @@ struct RecipeMetadataSection: View {
|
||||
// Keywords
|
||||
SecondaryLabel(text: "Keywords")
|
||||
|
||||
if !viewModel.observableRecipeDetail.keywords.isEmpty {
|
||||
if !viewModel.recipe.keywords.isEmpty {
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
HStack {
|
||||
ForEach(viewModel.observableRecipeDetail.keywords, id: \.self) { keyword in
|
||||
ForEach(viewModel.recipe.keywords, id: \.self) { keyword in
|
||||
Text(keyword)
|
||||
.padding(5)
|
||||
.background(RoundedRectangle(cornerRadius: 20).foregroundStyle(Color.primary.opacity(0.1)))
|
||||
@@ -70,11 +70,11 @@ struct RecipeMetadataSection: View {
|
||||
Button {
|
||||
presentServingsPopover.toggle()
|
||||
} label: {
|
||||
Text("\(viewModel.observableRecipeDetail.recipeYield) Serving(s)")
|
||||
Text("\(viewModel.recipe.recipeYield) Serving(s)")
|
||||
.lineLimit(1)
|
||||
}
|
||||
.popover(isPresented: $presentServingsPopover) {
|
||||
PickerPopoverView(isPresented: $presentServingsPopover, value: $viewModel.observableRecipeDetail.recipeYield, items: 1..<99, title: "Servings", titleKey: "Servings")
|
||||
PickerPopoverView(isPresented: $presentServingsPopover, value: $viewModel.recipe.recipeYield, items: 1..<99, title: "Servings", titleKey: "Servings")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,7 +82,7 @@ struct RecipeMetadataSection: View {
|
||||
.background(RoundedRectangle(cornerRadius: 20).foregroundStyle(Color.primary.opacity(0.1)))
|
||||
.padding([.horizontal, .bottom], 5)
|
||||
.sheet(isPresented: $presentKeywordSheet) {
|
||||
KeywordPickerView(title: "Keywords", searchSuggestions: appState.allKeywords, selection: $viewModel.observableRecipeDetail.keywords)
|
||||
KeywordPickerView(title: "Keywords", searchSuggestions: cookbookState.selectedAccountState.keywords, selection: $viewModel.recipe.keywords)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -126,22 +126,22 @@ fileprivate struct PickerPopoverView<Item: Hashable & CustomStringConvertible, C
|
||||
// MARK: - RecipeView More Information Section
|
||||
|
||||
struct MoreInformationSection: View {
|
||||
@ObservedObject var viewModel: RecipeView.ViewModel
|
||||
@State var viewModel: RecipeView.ViewModel
|
||||
|
||||
var body: some View {
|
||||
CollapsibleView(titleColor: .secondary, isCollapsed: !UserSettings.shared.expandInfoSection) {
|
||||
VStack(alignment: .leading) {
|
||||
if let dateCreated = viewModel.recipeDetail.dateCreated {
|
||||
if let dateCreated = viewModel.recipe.dateCreated {
|
||||
Text("Created: \(Date.convertISOStringToLocalString(isoDateString: dateCreated) ?? "")")
|
||||
}
|
||||
if let dateModified = viewModel.recipeDetail.dateModified {
|
||||
if let dateModified = viewModel.recipe.dateModified {
|
||||
Text("Last modified: \(Date.convertISOStringToLocalString(isoDateString: dateModified) ?? "")")
|
||||
}
|
||||
if viewModel.observableRecipeDetail.url != "", let url = URL(string: viewModel.observableRecipeDetail.url) {
|
||||
if viewModel.recipe.url != "", let url = URL(string: viewModel.recipe.url ?? "") {
|
||||
HStack(alignment: .top) {
|
||||
Text("URL:")
|
||||
Link(destination: url) {
|
||||
Text(viewModel.observableRecipeDetail.url)
|
||||
Text(viewModel.recipe.url ?? "")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -157,3 +157,5 @@ struct MoreInformationSection: View {
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user