fix: skip specials in playback order

close #601
This commit is contained in:
edde746
2026-03-02 07:32:20 +01:00
parent 229d6b24e1
commit 5f1c51ff6c
3 changed files with 13 additions and 3 deletions
@@ -99,7 +99,11 @@ class OfflineWatchProvider extends ChangeNotifier {
final episodes = _downloadProvider.getDownloadedEpisodesForShow(showRatingKey);
if (episodes.isEmpty) return episodes;
// Sort Season 0 (Specials) to the end so regular seasons play first
episodes.sort((a, b) {
final aIsSpecial = (a.parentIndex ?? 0) == 0;
final bIsSpecial = (b.parentIndex ?? 0) == 0;
if (aIsSpecial != bIsSpecial) return aIsSpecial ? 1 : -1;
final seasonCompare = (a.parentIndex ?? 0).compareTo(b.parentIndex ?? 0);
if (seasonCompare != 0) return seasonCompare;
return (a.index ?? 0).compareTo(b.index ?? 0);
+5 -2
View File
@@ -1677,8 +1677,11 @@ class _MediaDetailScreenState extends State<MediaDetailScreen> with WatchStateAw
return;
}
// Get the first season (usually Season 1, but could be Season 0 for specials)
final firstSeason = _seasons.first;
// Skip Season 0 (Specials) — prefer the first regular season
final firstSeason = _seasons.firstWhere(
(s) => (s.index ?? 0) > 0,
orElse: () => _seasons.first,
);
// Get episodes of the first season
List<PlexMetadata> episodes;
+4 -1
View File
@@ -910,9 +910,12 @@ class VideoPlayerScreenState extends State<VideoPlayerScreen> with WidgetsBindin
if (episodes.isEmpty) return;
// Sort by season then episode number
// Sort by season then episode number, with Season 0 (Specials) at the end
final sorted = List<PlexMetadata>.from(episodes)
..sort((a, b) {
final aIsSpecial = (a.parentIndex ?? 0) == 0;
final bIsSpecial = (b.parentIndex ?? 0) == 0;
if (aIsSpecial != bIsSpecial) return aIsSpecial ? 1 : -1;
final seasonCmp = (a.parentIndex ?? 0).compareTo(b.parentIndex ?? 0);
if (seasonCmp != 0) return seasonCmp;
return (a.index ?? 0).compareTo(b.index ?? 0);