mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-24 14:08:44 -04:00
Merge pull request #5027 from crobibero/episode-first-up
This commit is contained in:
commit
65c09f82c5
3 changed files with 33 additions and 3 deletions
|
@ -143,10 +143,31 @@ namespace Emby.Server.Implementations.TV
|
||||||
var allNextUp = seriesKeys
|
var allNextUp = seriesKeys
|
||||||
.Select(i => GetNextUp(i, currentUser, dtoOptions));
|
.Select(i => GetNextUp(i, currentUser, dtoOptions));
|
||||||
|
|
||||||
|
// If viewing all next up for all series, remove first episodes
|
||||||
|
// But if that returns empty, keep those first episodes (avoid completely empty view)
|
||||||
|
var alwaysEnableFirstEpisode = !string.IsNullOrEmpty(request.SeriesId);
|
||||||
|
var anyFound = false;
|
||||||
|
|
||||||
return allNextUp
|
return allNextUp
|
||||||
.Where(i =>
|
.Where(i =>
|
||||||
{
|
{
|
||||||
return i.Item1 != DateTime.MinValue;
|
if (request.DisableFirstEpisode)
|
||||||
|
{
|
||||||
|
return i.Item1 != DateTime.MinValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alwaysEnableFirstEpisode || i.Item1 != DateTime.MinValue)
|
||||||
|
{
|
||||||
|
anyFound = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!anyFound && i.Item1 == DateTime.MinValue)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
})
|
})
|
||||||
.Select(i => i.Item2())
|
.Select(i => i.Item2())
|
||||||
.Where(i => i != null);
|
.Where(i => i != null);
|
||||||
|
|
|
@ -67,6 +67,7 @@ namespace Jellyfin.Api.Controllers
|
||||||
/// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
|
/// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
|
||||||
/// <param name="enableUserData">Optional. Include user data.</param>
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
||||||
/// <param name="enableTotalRecordCount">Whether to enable the total records count. Defaults to true.</param>
|
/// <param name="enableTotalRecordCount">Whether to enable the total records count. Defaults to true.</param>
|
||||||
|
/// <param name="disableFirstEpisode">Whether to disable sending the first episode in a series as next up.</param>
|
||||||
/// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the next up episodes.</returns>
|
/// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the next up episodes.</returns>
|
||||||
[HttpGet("NextUp")]
|
[HttpGet("NextUp")]
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
@ -81,7 +82,8 @@ namespace Jellyfin.Api.Controllers
|
||||||
[FromQuery] int? imageTypeLimit,
|
[FromQuery] int? imageTypeLimit,
|
||||||
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,
|
||||||
[FromQuery] bool? enableUserData,
|
[FromQuery] bool? enableUserData,
|
||||||
[FromQuery] bool enableTotalRecordCount = true)
|
[FromQuery] bool enableTotalRecordCount = true,
|
||||||
|
[FromQuery] bool disableFirstEpisode = false)
|
||||||
{
|
{
|
||||||
var options = new DtoOptions { Fields = fields }
|
var options = new DtoOptions { Fields = fields }
|
||||||
.AddClientFields(Request)
|
.AddClientFields(Request)
|
||||||
|
@ -95,7 +97,8 @@ namespace Jellyfin.Api.Controllers
|
||||||
SeriesId = seriesId,
|
SeriesId = seriesId,
|
||||||
StartIndex = startIndex,
|
StartIndex = startIndex,
|
||||||
UserId = userId ?? Guid.Empty,
|
UserId = userId ?? Guid.Empty,
|
||||||
EnableTotalRecordCount = enableTotalRecordCount
|
EnableTotalRecordCount = enableTotalRecordCount,
|
||||||
|
DisableFirstEpisode = disableFirstEpisode
|
||||||
},
|
},
|
||||||
options);
|
options);
|
||||||
|
|
||||||
|
|
|
@ -64,10 +64,16 @@ namespace MediaBrowser.Model.Querying
|
||||||
|
|
||||||
public bool EnableTotalRecordCount { get; set; }
|
public bool EnableTotalRecordCount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether do disable sending first episode as next up.
|
||||||
|
/// </summary>
|
||||||
|
public bool DisableFirstEpisode { get; set; }
|
||||||
|
|
||||||
public NextUpQuery()
|
public NextUpQuery()
|
||||||
{
|
{
|
||||||
EnableImageTypes = Array.Empty<ImageType>();
|
EnableImageTypes = Array.Empty<ImageType>();
|
||||||
EnableTotalRecordCount = true;
|
EnableTotalRecordCount = true;
|
||||||
|
DisableFirstEpisode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue