diff --git a/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailView.swift b/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailView.swift index 4324ed6..7590433 100644 --- a/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailView.swift +++ b/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailView.swift @@ -116,6 +116,14 @@ struct PlantDetailView: View { .task { await viewModel.loadCareInfo() } + .onAppear { + // Reload schedule from Core Data every time the view appears. + // .task only runs on first appearance; this ensures task completion + // states are always current when navigating back to this view. + Task { + await viewModel.refreshSchedule() + } + } .refreshable { await viewModel.refresh() } diff --git a/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailViewModel.swift b/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailViewModel.swift index cd1db0b..0200b63 100644 --- a/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailViewModel.swift +++ b/PlantGuide/Presentation/Scenes/PlantDetail/PlantDetailViewModel.swift @@ -144,6 +144,12 @@ final class PlantDetailViewModel { isLoading = false } + /// Reloads the care schedule from the repository. + /// Call on view reappearance to pick up persisted task completions. + func refreshSchedule() async { + await loadExistingSchedule() + } + /// Loads an existing care schedule from the repository private func loadExistingSchedule() async { do {