@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user