Fix season handling

This commit is contained in:
Shadowghost
2024-06-09 18:47:21 +02:00
parent b25d6d1e48
commit e4078f984a
4 changed files with 41 additions and 20 deletions

View File

@@ -194,7 +194,7 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <param name="item">The item.</param>
/// <exception cref="InvalidOperationException">Unable to add + item.Name.</exception>
public void AddChild(BaseItem item)
public virtual void AddChild(BaseItem item)
{
item.SetParent(this);

View File

@@ -265,5 +265,20 @@ namespace MediaBrowser.Controller.Entities.TV
return hasChanges;
}
/// <inheritdoc />
public override void AddChild(BaseItem item)
{
if (item is Episode episode)
{
episode.SeriesPresentationUniqueKey = SeriesPresentationUniqueKey;
episode.SeriesId = SeriesId;
episode.SeriesName = SeriesName;
episode.SeasonId = Id;
episode.SeasonName = Name;
}
base.AddChild(item);
}
}
}

View File

@@ -350,17 +350,10 @@ namespace MediaBrowser.Controller.Entities.TV
public List<BaseItem> GetSeasonEpisodes(Season parentSeason, User user, DtoOptions options, bool shouldIncludeMissingEpisodes)
{
var queryFromSeries = ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons;
// add optimization when this setting is not enabled
var seriesKey = queryFromSeries ?
GetUniqueSeriesKey(this) :
GetUniqueSeriesKey(parentSeason);
var query = new InternalItemsQuery(user)
{
AncestorWithPresentationUniqueKey = queryFromSeries ? null : seriesKey,
SeriesPresentationUniqueKey = queryFromSeries ? seriesKey : null,
AncestorWithPresentationUniqueKey = null,
SeriesPresentationUniqueKey = GetUniqueSeriesKey(this),
IncludeItemTypes = new[] { BaseItemKind.Episode },
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
DtoOptions = options
@@ -506,5 +499,18 @@ namespace MediaBrowser.Controller.Entities.TV
return list;
}
/// <inheritdoc />
public override void AddChild(BaseItem item)
{
if (item is IHasSeries typedItem)
{
typedItem.SeriesId = Id;
typedItem.SeriesName = Name;
typedItem.SeriesPresentationUniqueKey = PresentationUniqueKey;
}
base.AddChild(item);
}
}
}