initial pre-viable version of watch app

This commit is contained in:
2025-07-20 19:44:53 -04:00
parent 33b88cb8f0
commit 68d90160c6
35 changed files with 2108 additions and 179 deletions

View File

@ -0,0 +1,48 @@
import SwiftUI
import SwiftData
struct EntityAddEditView<T: EditableEntity, Content: View>: View {
@Environment(\.dismiss) private var dismiss
@Environment(\.modelContext) private var modelContext
@State var model: T
private let content: (Binding<T>) -> Content
init(model: T, @ViewBuilder content: @escaping (Binding<T>) -> Content) {
_model = State(initialValue: model)
self.content = content
}
var body: some View {
NavigationStack {
Form {
content($model)
}
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button("Cancel") {
dismiss()
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button("Save") {
// If the model is not in a context, it's a new one.
if model.modelContext == nil {
modelContext.insert(model)
}
// The save is in a do-catch block to handle potential errors,
// such as constraint violations.
do {
try modelContext.save()
dismiss()
} catch {
// In a real app, you'd want to present this error to the user.
print("Failed to save model: \(error.localizedDescription)")
}
}
}
}
}
}
}