Skip to content

Sort movies and series by release date/year descending by default - #173

Open
disclosurez wants to merge 3 commits into
Davidona:masterfrom
disclosurez:sorting-changes
Open

Sort movies and series by release date/year descending by default#173
disclosurez wants to merge 3 commits into
Davidona:masterfrom
disclosurez:sorting-changes

Conversation

@disclosurez

@disclosurez disclosurez commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Default sort mode (LIBRARY) now sorts movies and series by effective year descending — newest first.

What changed

  • Sorting: applyMovieBrowseQuery/applySeriesBrowseQuery LIBRARY mode uses year descending (movieReleaseScore/seriesReleaseScore with no addedAt/lastModified fallback)
  • Year extraction: XtreamProvider.toMovie extracts year from parenthetical (YYYY) in name; false positives fixed (Blade Runner 2049, Death Race 2050 no longer extract year from title)
  • DAO queries: COALESCE(release_date, year) DESC ordering for page queries; restoreYearsFromName() + clearInvalidYears() one-time DB cleanup
  • Fresh/Preview rows: Movies use getByReleaseDate (release date ordering) instead of getFreshPreview (added_at ordering)
  • Series: Sorted by latest episode release date via LEFT JOIN
  • Dashboard/Home tab: Recent Movies and Recent Series shelves use release date ordering instead of added_at/last_modified
  • Pro layout: Fresh and Top Rated rows now have "See All" buttons
  • Defaults: VodDuplicateHandlingMode defaults to GROUPED
  • Fix: Added getByReleaseDate to MovieRepository interface and implementation (was missing from the original interface)

Files changed

  • app/.../movies/MoviesScreen.kt — See All buttons on Fresh/Top Rated rows
  • app/.../series/SeriesScreen.kt — See All buttons on Fresh/Top Rated rows
  • app/.../dashboard/DashboardViewModel.kt — use release date ordering
  • app/.../movies/MoviesViewModel.kt — fresh row uses getByReleaseDate
  • app/.../series/SeriesViewModel.kt — fresh row uses getByReleaseDate
  • app/.../settings/SettingsStateBindings.kt — GROUPED default
  • app/.../settings/SettingsUiStateModel.kt — GROUPED default
  • data/.../dao/Daos.kt — COALESCE ordering, restoreYearsFromName, clearInvalidYears
  • data/.../xtream/XtreamProvider.kt — parenthetical-only year extraction
  • data/.../repository/MovieRepositoryImpl.kt — movieReleaseScore, LIBRARY sort, getByReleaseDate
  • data/.../repository/SeriesRepositoryImpl.kt — seriesReleaseScore, LIBRARY sort
  • domain/.../model/VodDuplicateHandlingMode.kt — GROUPED default
  • domain/.../repository/MovieRepository.kt — added getByReleaseDate

- MovieRepositoryImpl: movieReleaseScore/LIBRARY sort by effective year
  descending (releaseDate > DB year > name extraction), no addedAt fallback
- SeriesRepositoryImpl: seriesReleaseScore/LIBRARY sort by effective year
  descending (releaseDate > name extraction), no lastModified fallback
- XtreamProvider.toMovie: extract year from parenthetical (YYYY) in name
- Daos: COALESCE(release_date, year) DESC ordering for page queries,
  restoreYearsFromName() + clearInvalidYears() DB cleanup
- Movies/Series Fresh row uses release date ordering for previews
- Series catalog sorted by latest episode release date via LEFT JOIN
- VodDuplicateHandlingMode default changed to GROUPED
@disclosurez

Copy link
Copy Markdown
Contributor Author

The issue with provider-added order (added_at) is that batch-synced items all share the same timestamp, so within a batch the fallback is alphabetical — Despicable Me (2010) before Despicable Me 3 (2017) because ( sorts before 3. Year sorting gives a predictable, useful order regardless of sync timing.

The old added_at behavior is still available via the sort menu — this PR only changes the default to year-descending.

Fixes compilation error: MoviesViewModel references getByReleaseDate
which existed in SeriesRepository but was missing from MovieRepository.
- Movies/Series Pro layout: Fresh and Top Rated rows now have See All buttons
  that navigate to the full filtered library view
- Home tab: Recent Movies and Recent Series shelves now use release date
  ordering instead of added_at/last_modified
disclosurez added a commit to disclosurez/StreamVault-IPTV that referenced this pull request Jul 18, 2026
- applyMovieBrowseQuery/applySeriesBrowseQuery LIBRARY sort by year descending
- movieReleaseScore/seriesReleaseScore with no addedAt/lastModified fallback
- XtreamProvider.toMovie extracts year from parenthetical (YYYY) in name
- DAO queries use COALESCE(release_date, year) DESC ordering
- Fresh/preview rows use getByReleaseDate ordering
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant