Skip to content

feat(iptv): add Watch Live and Stream Now guide actions - #604

Merged
ProdigyV21 merged 7 commits into
ProdigyV21:mainfrom
Saelon600:fix/iptv-epg-temporal-actions
Aug 25, 2026
Merged

feat(iptv): add Watch Live and Stream Now guide actions#604
ProdigyV21 merged 7 commits into
ProdigyV21:mainfrom
Saelon600:fix/iptv-epg-temporal-actions

Conversation

@Saelon600

@Saelon600 Saelon600 commented Aug 24, 2026

Copy link
Copy Markdown

Summary

  • Separates channel-row selections from EPG programme-cell selections so missing guide metadata cannot enter programme-action logic.
  • Keeps the action matrix consistent across touch, D-pad, the main guide, and the fullscreen guide:
    • first selection of a live channel/programme tunes the mini-player
    • second selection on the playing live programme resolves the optional streaming action
    • past programmes play only when catch-up is available
    • unavailable past and future programmes remain no-op and retain guide focus
  • Adds a Watch Live / Stream Now dialog after a confident TMDB movie or series match.
  • Adds a device-local IPTV setting to enable or disable EPG streaming actions; disabling it preserves second-click live fullscreen behavior.
  • Resolves current programme metadata across duplicate channels on separate playlists using normalized EPG/channel identities.

Matching and fallback safety

  • Rejects sports, news, weather, shopping, and teleshopping channels before metadata lookup.
  • Requires a complete normalized title match; punctuation differences such as Spiderman / Spider-Man are accepted, but sequels and prefix matches are not.
  • Uses title/description year hints to disambiguate remakes and movie/series results.
  • Fails closed on ambiguous or unmatched results and opens live TV fullscreen instead of showing a misleading Stream Now action.
  • Invalidates stale asynchronous lookups so an older result cannot open a dialog for a newer selection.
  • Watch Live explicitly clears catch-up programme state and uses the live channel stream.

Testing

  • Channel-row first/second selection, with and without current EPG metadata.
  • Duplicate channel/programme entries on separate playlists share current guide metadata; unrelated channels remain isolated.
  • Live EPG first/second selection and setting-disabled fallback.
  • Past catch-up available/unavailable behavior.
  • Future no-op/focus retention.
  • Fullscreen/main guide clock and action parity.
  • Sports/mixed-group filtering, exact-title matching, punctuation normalization, year disambiguation, ambiguous-title rejection, and stale lookup invalidation.
  • Focused EPG action tests.
  • Full Sideload unit suite.
  • Sideload Kotlin compilation.
  • git diff --check.

Scope

Android Live TV guide actions and the device-local IPTV setting only. No playlist/category grouping, responsive-layout, backend, or app-version changes.

Separate channel-row and programme-cell actions, keep main and fullscreen guides on one clock, play catch-up only when available, and leave unavailable past/future programmes as no-ops.
@github-actions github-actions Bot added the area: android Changes to the Android app or Gradle build label Aug 24, 2026
Keep live, catch-up, and future guide actions explicit while resolving second selections on the playing live programme to a conservative TMDB match. Show Watch Live and Stream Now only for confident movie or series matches, fail closed for ambiguous or non-VOD channels, guard stale lookups, and expose a device-local setting.
@Saelon600 Saelon600 changed the title fix(iptv): make guide selections respect programme state feat(iptv): add Watch Live and Stream Now guide actions Aug 24, 2026
tormox and others added 5 commits August 24, 2026 15:06
Revalidate the selected programme against the latest live guide slot before publishing Watch Live or Stream Now actions. Suppress results after a programme ends, rolls over, or disappears from the current guide state.
Resolve current programme metadata through normalized EPG and channel identities when duplicate channels live on different playlists, while preserving direct-channel precedence and stale-result guards.
Build guide identity aliases from the full enriched channel set rather than the currently visible provider filter, so duplicate channels on hidden playlists can supply current programme metadata.
Use displayedCurrentProgram() to source the current programme directly from
effectiveGuideNowNext — the same data the EPG grid is already showing — instead
of the identity-key aliasing that failed across playlists. Add
resolveVodWithEagerFetch() for second-click on channels without prefetched EPG
data: triggers an immediate network fetch, then proceeds to VOD resolution.
@ProdigyV21
ProdigyV21 merged commit 6db00fc into ProdigyV21:main Aug 25, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: android Changes to the Android app or Gradle build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants