diff --git a/Yattee/Data/DataManager+WatchHistory.swift b/Yattee/Data/DataManager+WatchHistory.swift index e9ba8798..cdc96422 100644 --- a/Yattee/Data/DataManager+WatchHistory.swift +++ b/Yattee/Data/DataManager+WatchHistory.swift @@ -23,6 +23,7 @@ extension DataManager { let existing = try modelContext.fetch(descriptor) if let existingEntry = existing.first { existingEntry.updateProgress(seconds: seconds, duration: duration) + save() } else { let newEntry = WatchEntry.from(video: video) newEntry.watchedSeconds = seconds @@ -30,8 +31,10 @@ extension DataManager { newEntry.duration = duration } modelContext.insert(newEntry) + save() + // Notify HomeView when a new entry is inserted (not on every progress update) + NotificationCenter.default.post(name: .watchHistoryDidChange, object: nil) } - save() // Note: No CloudKit queueing - use updateWatchProgress() when sync is needed } catch { LoggingService.shared.logCloudKitError("Failed to update watch progress locally", error: error) diff --git a/Yattee/Views/Home/HomeView.swift b/Yattee/Views/Home/HomeView.swift index bf8a0009..e2866ac1 100644 --- a/Yattee/Views/Home/HomeView.swift +++ b/Yattee/Views/Home/HomeView.swift @@ -134,6 +134,16 @@ struct HomeView: View { loadData() } } + .onChange(of: appEnvironment?.navigationCoordinator.selectedTab) { _, newTab in + if newTab == .home { + loadData() + } + } + .onChange(of: showingCustomizeHome) { _, isShowing in + if !isShowing { + loadData() + } + } .onReceive(NotificationCenter.default.publisher(for: .bookmarksDidChange)) { _ in loadBookmarksData() }