mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-16 22:26:16 -08:00
fix(dashboard): live rails find XMLTV programmes outside the global EPG sources
The dashboard's "Now on air on favorite channels" and "Recently watched Live TV" rails looked up XMLTV programmes scoped to the Settings-managed global EPG URLs only, with no fallback. A favourite whose guide lives in another playlist's XMLTV (or whose programmes are tagged with a source other than the channel row's) showed only the LIVE chip while its "See all" row — resolved by StreamResolverService, which never scopes by source — showed the programme. EpgLookupOptions gains a renderer-only `anySourceFallback`: after the scope (playlist sources, then global) has answered, the keys still without a programme are retried once through the source-less batch path and its cache. The dashboard rails pass it; the channel list keeps the strict scope. Regression E2E: playlist-declared XMLTV + a global XMLTV without the channel → the favourite's dashboard card shows the programme (fails on the old code with the subtitle in its place). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
4cce4acaad
commit
54071e2a4d
8 files changed
+367
-11
No files matched your search
@@ -978,7 +978,17 @@ These URLs are playlist-scoped by default:
|
||||
TTL expires.
|
||||
- Scoped lookups fall back only to Settings-managed EPG URLs for channels
|
||||
missing from the playlist-declared source. Playlist-local sources from other
|
||||
playlists are not treated as global fallback sources. Single-channel current
|
||||
playlists are not treated as global fallback sources. The one opt-out is
|
||||
`EpgLookupOptions.anySourceFallback` (renderer-only, never forwarded to the
|
||||
bridge): after the scope — playlist sources, then the global ones — has
|
||||
answered, the keys still without a programme are retried once against every
|
||||
imported source through the source-less batch path and its cache. The
|
||||
dashboard live rails pass it because they mix channels of every playlist
|
||||
and have no playlist scope to offer; without it a favourite whose guide
|
||||
only exists in another playlist's XMLTV showed no programme on the
|
||||
dashboard while its "See all" row — resolved by `StreamResolverService`,
|
||||
which never scopes by source — had one. The channel list keeps the strict
|
||||
scope. Single-channel current
|
||||
program lookups include the source URL set in their cache and in-flight keys,
|
||||
so playlist-local and global lookups deduplicate without reusing the wrong
|
||||
source scope. Batch current-program lookups use the same source-scoped
|
||||
|
||||
Reference in new issue
Block a user