mirror of
https://github.com/yattee/yattee.git
synced 2026-04-09 17:16:57 +00:00
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:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user