Fix HomeView data staleness on new watch entries, tab switches, and settings dismissal

Post watchHistoryDidChange notification when a new watch entry is inserted
during local playback progress updates (but not on every progress tick).
Reload Home data when switching back to the Home tab and when the Customize
Home sheet is dismissed.
This commit is contained in:
Arkadiusz Fal
2026-02-23 17:31:47 +01:00
parent caa19a742b
commit 451fb3df26
2 changed files with 14 additions and 1 deletions

View File

@@ -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)
}
// Note: No CloudKit queueing - use updateWatchProgress() when sync is needed
} catch {
LoggingService.shared.logCloudKitError("Failed to update watch progress locally", error: error)

View File

@@ -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()
}