import SwiftUI import SwiftData struct HabitListView: View { @Environment(\.modelContext) private var context @Environment(\.scenePhase) private var scenePhase @Query(sort: \Habit.createdAt) private var habits: [Habit] @State private var showingAdd = false var body: some View { NavigationStack { Group { if habits.isEmpty { ContentUnavailableView( "Keine Gewohnheiten", systemImage: "checklist", description: Text("Tippe auf +, um deine erste Gewohnheit anzulegen.") ) } else { List { ForEach(habits) { habit in NavigationLink { HabitDetailView(habit: habit) } label: { HabitRowView(habit: habit) } } .onDelete(perform: delete) } } } .navigationTitle("Heute") .toolbar { ToolbarItem(placement: .topBarTrailing) { Button { showingAdd = true } label: { Label("Hinzufügen", systemImage: "plus") } } } .sheet(isPresented: $showingAdd) { AddHabitView() } } .task { WidgetSync.refresh(context) } .onChange(of: scenePhase) { _, phase in if phase == .active { WidgetSync.refresh(context) } } } private func delete(at offsets: IndexSet) { for index in offsets { let habit = habits[index] NotificationManager.cancel(for: habit) context.delete(habit) } WidgetSync.refresh(context) } } #Preview { HabitListView() .modelContainer(for: [Habit.self, HabitEntry.self], inMemory: true) }