Skip to content

feat(iptv): group Live TV categories by playlist order - #603

Merged
ProdigyV21 merged 2 commits into
ProdigyV21:mainfrom
Saelon600:feat/iptv-playlist-category-navigation
Aug 25, 2026
Merged

feat(iptv): group Live TV categories by playlist order#603
ProdigyV21 merged 2 commits into
ProdigyV21:mainfrom
Saelon600:feat/iptv-playlist-category-navigation

Conversation

@Saelon600

@Saelon600 Saelon600 commented Aug 24, 2026

Copy link
Copy Markdown

Summary

  • Groups Live TV categories under their configured IPTV playlist/provider instead of flattening similarly named groups together.
  • Preserves the saved playlist order in provider filters, TV category navigation, and touch category navigation.
  • Keeps configured playlists visible when a large paged channel window currently contains channels from only one provider.
  • Adds focused coverage for playlist ordering, category isolation, and paged-count behavior.
  • Preserves unmatched Stalker and other-source categories in dedicated sections for hybrid configurations.
  • Keeps the legacy flat category list when only one populated source exists.

Why

Multi-playlist setups can contain the same category names from different providers. Flattening those categories makes navigation ambiguous and can mix channels from the wrong playlist.

Testing

  • PlaylistCategorySectionsTest
    • sections follow configured playlist order
    • categories do not mix between playlists
    • provider filters preserve saved reorder
    • paged counts retain all configured playlists
    • hybrid playlist + Stalker categories remain visible
    • single-source navigation remains flat without a collapsed parent
  • ./gradlew :app:compileSideloadDebugKotlin
  • ./gradlew :app:testSideloadDebugUnitTest
  • git diff --check

Scope

Android Live TV provider/category navigation only. No EPG actions, VOD lookup, playback rules, responsive layout, backend, or app version changes.

Keep provider filters and TV/touch category sections aligned with configured playlist order, including paged channel counts, while preserving playlist-scoped groups and focus navigation.
@github-actions github-actions Bot added the area: android Changes to the Android app or Gradle build label Aug 24, 2026
@ProdigyV21

Copy link
Copy Markdown
Owner

Thanks for this contribution. Grouping categories by playlist is a useful improvement for multi-playlist setups, and the ordering/isolation logic looks good. The exact merge also compiles and the focused tests pass.

There are two things to fix before merging:

  1. Hybrid playlist + Stalker setups lose Stalker categories. buildPlaylistCategorySections() only includes IDs from config.playlists, but once any playlist section exists, the TV and touch UIs replace the complete global category list with those sections. Stalker channels use the stalker: source ID and are not in config.playlists, so their groups disappear from category navigation. Please preserve unmatched categories in a Stalker/Other section, or model Stalker as its own section, and add a hybrid-source test.

  2. A single playlist now adds an unnecessary collapsed parent. Users with only one playlist must open that playlist row before reaching their categories. Please either apply this grouping only when multiple sources are configured, or automatically expand the sole section.

Once those are handled, this should be a strong improvement and ready for another check.

Keep unmatched Stalker/other categories in dedicated sections for hybrid setups, while retaining the legacy flat category list when only one populated source exists.
@Saelon600

Copy link
Copy Markdown
Author

Addressed both review items in cd254013:

  • Hybrid playlist + Stalker/other categories are now preserved as explicit unmatched-source sections, without changing the original category playlist IDs.
  • A single populated source now returns to the legacy flat category list, so users do not get an unnecessary collapsed parent.
  • Added focused hybrid Stalker and single-source regression tests; the full Sideload unit suite and Kotlin compilation pass.

@ProdigyV21
ProdigyV21 merged commit 1340088 into ProdigyV21:main Aug 25, 2026
1 check 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