// // AddExerciseToWorkout.swift // WorkoutsPlus // // Created by Felix Förtsch on 22.08.24. // import SwiftUI import SwiftData struct AddWorkoutItemToWorkout: View { @Environment(\.modelContext) private var modelContext @Query(sort: \Exercise.name) private var exercises: [Exercise] @State var workout: Workout // TODO: Add (i) Button that allows editing an exercise (maybe requires NavigationStack?) var body: some View { Group { List { Section(header: Text("Utilities")) { // AddExerciseToWorkoutListItem(WorkoutItem(workoutItems: []), workout) } Section(header: Text("Excersises")) { if !exercises.isEmpty { ForEach(exercises) { exercise in AddItemButton(label: exercise.name) { let workoutItem = WorkoutItem(from: exercise) addWorkoutItemtoWorkout(workoutItem) } } } else { ContentUnavailableView { // TODO: Add Button that allows adding an exercise Label("No Exercises", systemImage: Exercise.systemImage) } } } } } } private func addWorkoutItemtoWorkout(_ workoutItem: WorkoutItem) { workout.add(workoutItem: workoutItem) // TODO: Handle saving in a way the user knows when it's saved // modelContext.save() } } #Preview("With Sample Data") { AddWorkoutItemToWorkout(workout: Workout.sampleData) .modelContainer(SampleData.shared.modelContainer) } #Preview("Empty Database") { AddWorkoutItemToWorkout(workout: Workout.sampleData) .modelContainer(for: Exercise.self, inMemory: true) }