WIP - Complete App refactoring
This commit is contained in:
@@ -9,14 +9,14 @@ import Foundation
|
||||
import SwiftUI
|
||||
|
||||
|
||||
|
||||
/*
|
||||
struct RecipeListView: View {
|
||||
@EnvironmentObject var appState: AppState
|
||||
@EnvironmentObject var groceryList: GroceryList
|
||||
@State var categoryName: String
|
||||
@State var searchText: String = ""
|
||||
@Binding var showEditView: Bool
|
||||
@State var selectedRecipe: Recipe? = nil
|
||||
@State var selectedRecipe: CookbookApiRecipeV1? = nil
|
||||
|
||||
var body: some View {
|
||||
Group {
|
||||
@@ -56,7 +56,7 @@ struct RecipeListView: View {
|
||||
.searchable(text: $searchText, prompt: "Search recipes/keywords")
|
||||
.navigationTitle(categoryName == "*" ? String(localized: "Other") : categoryName)
|
||||
|
||||
.navigationDestination(for: Recipe.self) { recipe in
|
||||
.navigationDestination(for: CookbookApiRecipeV1.self) { recipe in
|
||||
RecipeView(viewModel: RecipeView.ViewModel(recipe: recipe))
|
||||
.environmentObject(appState)
|
||||
.environmentObject(groceryList)
|
||||
@@ -85,7 +85,7 @@ struct RecipeListView: View {
|
||||
}
|
||||
}
|
||||
|
||||
func recipesFiltered() -> [Recipe] {
|
||||
func recipesFiltered() -> [CookbookApiRecipeV1] {
|
||||
guard let recipes = appState.recipes[categoryName] else { return [] }
|
||||
guard searchText != "" else { return recipes }
|
||||
return recipes.filter { recipe in
|
||||
@@ -94,3 +94,86 @@ struct RecipeListView: View {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
/*
|
||||
|
||||
struct RecipeListView: View {
|
||||
@Bindable var cookbookState: CookbookState
|
||||
@State var selectedCategory: String
|
||||
@State var searchText: String = ""
|
||||
@Binding var showEditView: Bool
|
||||
|
||||
var body: some View {
|
||||
Group {
|
||||
let recipes = recipesFiltered()
|
||||
if !recipes.isEmpty {
|
||||
|
||||
List(recipesFiltered(), selection: $cookbookState.selectedAccountState.selectedRecipe) { recipe in
|
||||
RecipeCardView(state: cookbookState.selectedAccountState, recipe: recipe)
|
||||
.shadow(radius: 2)
|
||||
.background(
|
||||
NavigationLink {
|
||||
RecipeView(viewModel: RecipeView.ViewModel(recipeStub: recipe))
|
||||
.environment(cookbookState)
|
||||
} label: {
|
||||
EmptyView()
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
.opacity(0)
|
||||
)
|
||||
.frame(height: 85)
|
||||
.listRowInsets(EdgeInsets(top: 5, leading: 15, bottom: 5, trailing: 15))
|
||||
.listRowSeparatorTint(.clear)
|
||||
}
|
||||
.listStyle(.plain)
|
||||
|
||||
} else {
|
||||
VStack {
|
||||
Text("There are no recipes in this cookbook!")
|
||||
Button {
|
||||
Task {
|
||||
let _ = await cookbookState.selectedAccountState.getCategories()
|
||||
let _ = await cookbookState.selectedAccountState.getRecipeStubsForCategory(named: selectedCategory)
|
||||
}
|
||||
} label: {
|
||||
Text("Refresh")
|
||||
.bold()
|
||||
}
|
||||
.buttonStyle(.bordered)
|
||||
}.padding()
|
||||
}
|
||||
}
|
||||
.searchable(text: $searchText, prompt: "Search recipes/keywords")
|
||||
.navigationTitle(selectedCategory == "*" ? String(localized: "Other") : selectedCategory)
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .topBarTrailing) {
|
||||
Button {
|
||||
print("Add new recipe")
|
||||
showEditView = true
|
||||
} label: {
|
||||
Image(systemName: "plus.circle.fill")
|
||||
}
|
||||
}
|
||||
}
|
||||
.task {
|
||||
let _ = await cookbookState.selectedAccountState.getRecipeStubsForCategory(
|
||||
named: selectedCategory
|
||||
)
|
||||
}
|
||||
.refreshable {
|
||||
let _ = await cookbookState.selectedAccountState.getRecipeStubsForCategory(
|
||||
named: selectedCategory
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
func recipesFiltered() -> [RecipeStub] {
|
||||
guard let recipes = cookbookState.selectedAccountState.recipeStubs[selectedCategory] else { return [] }
|
||||
guard searchText != "" else { return recipes }
|
||||
return recipes.filter { recipe in
|
||||
recipe.name.lowercased().contains(searchText.lowercased()) || // check name for occurence of search term
|
||||
(recipe.keywords != nil && recipe.keywords!.lowercased().contains(searchText.lowercased())) // check keywords for search term
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user