mirror of
https://github.com/yattee/yattee.git
synced 2026-05-12 18:35:05 +00:00
Add tvOS Top Shelf extension
Surfaces Continue Watching, Recent Feed, and Recent Bookmarks in the
Apple TV Home top shelf when Yattee is focused. Tapping a tile opens
the video via the existing yattee://video/{id} deep link.
- New YatteeTopShelf app extension target (tvOS only). LD_ENTRY_POINT is
overridden to _NSExtensionMain; the tv-app-extension product type
defaults to _TVExtensionMain which is for the pre-tvOS-13 legacy API
and crashes modern TVTopShelfContentProvider subclasses at launch.
- Main app writes per-section JSON snapshots (capped at 10 items each)
to a shared App Group UserDefaults suite after bookmark, watch-history,
and feed-cache changes, plus an initial write on launch.
- Enabled-sections list is mirrored to the same App Group so the
extension can respect the user's selection without touching SwiftData.
- Settings → Top Shelf (tvOS only) lets the user toggle sections.
- Deep link playback shows a loading toast while video details are
fetched, and an error toast if no source is configured.
This commit is contained in:
@@ -140,6 +140,7 @@ extension DataManager {
|
||||
modelContext.insert(bookmark)
|
||||
save()
|
||||
}
|
||||
TopShelfSnapshotWriter.writeBookmarks(dataManager: self)
|
||||
}
|
||||
|
||||
/// Updates bookmark tags and note for a video.
|
||||
|
||||
@@ -69,6 +69,7 @@ extension DataManager {
|
||||
|
||||
// Queue for CloudKit sync
|
||||
cloudKitSync?.queueWatchEntrySave(entry)
|
||||
TopShelfSnapshotWriter.writeContinueWatching(dataManager: self)
|
||||
} catch {
|
||||
LoggingService.shared.logCloudKitError("Failed to update watch progress", error: error)
|
||||
}
|
||||
@@ -148,6 +149,7 @@ extension DataManager {
|
||||
modelContext.insert(watchEntry)
|
||||
save()
|
||||
}
|
||||
TopShelfSnapshotWriter.writeContinueWatching(dataManager: self)
|
||||
}
|
||||
|
||||
/// Clears all watch history.
|
||||
|
||||
Reference in New Issue
Block a user