|
@@ -192,7 +192,6 @@ namespace Emby.Server.Implementations.TV
|
|
AncestorWithPresentationUniqueKey = null,
|
|
AncestorWithPresentationUniqueKey = null,
|
|
SeriesPresentationUniqueKey = seriesKey,
|
|
SeriesPresentationUniqueKey = seriesKey,
|
|
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
|
IncludeItemTypes = new[] { BaseItemKind.Episode },
|
|
- OrderBy = new[] { (ItemSortBy.ParentIndexNumber, SortOrder.Descending), (ItemSortBy.IndexNumber, SortOrder.Descending) },
|
|
|
|
IsPlayed = true,
|
|
IsPlayed = true,
|
|
Limit = 1,
|
|
Limit = 1,
|
|
ParentIndexNumberNotEquals = 0,
|
|
ParentIndexNumberNotEquals = 0,
|
|
@@ -203,11 +202,10 @@ namespace Emby.Server.Implementations.TV
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
- if (rewatching)
|
|
|
|
- {
|
|
|
|
- // find last watched by date played, not by newest episode watched
|
|
|
|
- lastQuery.OrderBy = new[] { (ItemSortBy.DatePlayed, SortOrder.Descending), (ItemSortBy.ParentIndexNumber, SortOrder.Descending), (ItemSortBy.IndexNumber, SortOrder.Descending) };
|
|
|
|
- }
|
|
|
|
|
|
+ // If rewatching is enabled, sort first by date played and then by season and episode numbers
|
|
|
|
+ lastQuery.OrderBy = rewatching
|
|
|
|
+ ? new[] { (ItemSortBy.DatePlayed, SortOrder.Descending), (ItemSortBy.ParentIndexNumber, SortOrder.Descending), (ItemSortBy.IndexNumber, SortOrder.Descending) }
|
|
|
|
+ : new[] { (ItemSortBy.ParentIndexNumber, SortOrder.Descending), (ItemSortBy.IndexNumber, SortOrder.Descending) };
|
|
|
|
|
|
var lastWatchedEpisode = _libraryManager.GetItemList(lastQuery).Cast<Episode>().FirstOrDefault();
|
|
var lastWatchedEpisode = _libraryManager.GetItemList(lastQuery).Cast<Episode>().FirstOrDefault();
|
|
|
|
|
|
@@ -223,23 +221,19 @@ namespace Emby.Server.Implementations.TV
|
|
IsPlayed = rewatching,
|
|
IsPlayed = rewatching,
|
|
IsVirtualItem = false,
|
|
IsVirtualItem = false,
|
|
ParentIndexNumberNotEquals = 0,
|
|
ParentIndexNumberNotEquals = 0,
|
|
- DtoOptions = dtoOptions,
|
|
|
|
- MinIndexNumber = lastWatchedEpisode?.IndexNumberEnd ?? lastWatchedEpisode?.IndexNumber,
|
|
|
|
- MinParentIndexNumber = lastWatchedEpisode?.ParentIndexNumber
|
|
|
|
|
|
+ DtoOptions = dtoOptions
|
|
};
|
|
};
|
|
|
|
|
|
- Episode nextEpisode;
|
|
|
|
- if (rewatching)
|
|
|
|
- {
|
|
|
|
- nextQuery.Limit = 2;
|
|
|
|
- // get watched episode after most recently watched
|
|
|
|
- nextEpisode = _libraryManager.GetItemList(nextQuery).Cast<Episode>().ElementAtOrDefault(1);
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
|
|
+ // Locate the next up episode based on the last watched episode's season and episode number
|
|
|
|
+ var lastWatchedParentIndexNumber = lastWatchedEpisode?.ParentIndexNumber;
|
|
|
|
+ var lastWatchedIndexNumber = lastWatchedEpisode?.IndexNumberEnd ?? lastWatchedEpisode?.IndexNumber;
|
|
|
|
+ if (lastWatchedParentIndexNumber.HasValue && lastWatchedIndexNumber.HasValue)
|
|
{
|
|
{
|
|
- nextEpisode = _libraryManager.GetItemList(nextQuery).Cast<Episode>().FirstOrDefault();
|
|
|
|
|
|
+ nextQuery.MinParentAndIndexNumber = (lastWatchedParentIndexNumber.Value, lastWatchedIndexNumber.Value + 1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ var nextEpisode = _libraryManager.GetItemList(nextQuery).Cast<Episode>().FirstOrDefault();
|
|
|
|
+
|
|
if (_configurationManager.Configuration.DisplaySpecialsWithinSeasons)
|
|
if (_configurationManager.Configuration.DisplaySpecialsWithinSeasons)
|
|
{
|
|
{
|
|
var consideredEpisodes = _libraryManager.GetItemList(new InternalItemsQuery(user)
|
|
var consideredEpisodes = _libraryManager.GetItemList(new InternalItemsQuery(user)
|