diff --git a/Jellyfin.Api/Controllers/LiveTvController.cs b/Jellyfin.Api/Controllers/LiveTvController.cs index 2b26c01f88..a15ff0f529 100644 --- a/Jellyfin.Api/Controllers/LiveTvController.cs +++ b/Jellyfin.Api/Controllers/LiveTvController.cs @@ -656,7 +656,7 @@ public class LiveTvController : BaseJellyfinApiController var query = new InternalItemsQuery(user) { - ChannelIds = body.ChannelIds, + ChannelIds = body.ChannelIds ?? [], HasAired = body.HasAired, IsAiring = body.IsAiring, EnableTotalRecordCount = body.EnableTotalRecordCount, @@ -666,15 +666,15 @@ public class LiveTvController : BaseJellyfinApiController MaxEndDate = body.MaxEndDate, StartIndex = body.StartIndex, Limit = body.Limit, - OrderBy = RequestHelpers.GetOrderBy(body.SortBy, body.SortOrder), + OrderBy = RequestHelpers.GetOrderBy(body.SortBy ?? [], body.SortOrder ?? []), IsNews = body.IsNews, IsMovie = body.IsMovie, IsSeries = body.IsSeries, IsKids = body.IsKids, IsSports = body.IsSports, SeriesTimerId = body.SeriesTimerId, - Genres = body.Genres, - GenreIds = body.GenreIds + Genres = body.Genres ?? [], + GenreIds = body.GenreIds ?? [] }; if (!body.LibrarySeriesId.IsEmpty()) @@ -690,7 +690,7 @@ public class LiveTvController : BaseJellyfinApiController var dtoOptions = new DtoOptions { Fields = body.Fields } .AddClientFields(User) - .AddAdditionalDtoOptions(body.EnableImages, body.EnableUserData, body.ImageTypeLimit, body.EnableImageTypes); + .AddAdditionalDtoOptions(body.EnableImages, body.EnableUserData, body.ImageTypeLimit, body.EnableImageTypes ?? []); return await _liveTvManager.GetPrograms(query, dtoOptions, CancellationToken.None).ConfigureAwait(false); } diff --git a/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs b/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs index 8482b1cf1c..633729c119 100644 --- a/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs +++ b/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs @@ -17,7 +17,7 @@ public class GetProgramsDto /// Gets or sets the channels to return guide information for. /// [JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))] - public IReadOnlyList ChannelIds { get; set; } = Array.Empty(); + public IReadOnlyList? ChannelIds { get; set; } /// /// Gets or sets optional. Filter by user id. @@ -26,110 +26,95 @@ public class GetProgramsDto /// /// Gets or sets the minimum premiere start date. - /// Optional. /// public DateTime? MinStartDate { get; set; } /// /// Gets or sets filter by programs that have completed airing, or not. - /// Optional. /// public bool? HasAired { get; set; } /// /// Gets or sets filter by programs that are currently airing, or not. - /// Optional. /// public bool? IsAiring { get; set; } /// /// Gets or sets the maximum premiere start date. - /// Optional. /// public DateTime? MaxStartDate { get; set; } /// /// Gets or sets the minimum premiere end date. - /// Optional. /// public DateTime? MinEndDate { get; set; } /// /// Gets or sets the maximum premiere end date. - /// Optional. /// public DateTime? MaxEndDate { get; set; } /// /// Gets or sets filter for movies. - /// Optional. /// public bool? IsMovie { get; set; } /// /// Gets or sets filter for series. - /// Optional. /// public bool? IsSeries { get; set; } /// /// Gets or sets filter for news. - /// Optional. /// public bool? IsNews { get; set; } /// /// Gets or sets filter for kids. - /// Optional. /// public bool? IsKids { get; set; } /// /// Gets or sets filter for sports. - /// Optional. /// public bool? IsSports { get; set; } /// /// Gets or sets the record index to start at. All items with a lower index will be dropped from the results. - /// Optional. /// public int? StartIndex { get; set; } /// /// Gets or sets the maximum number of records to return. - /// Optional. /// public int? Limit { get; set; } /// /// Gets or sets specify one or more sort orders, comma delimited. Options: Name, StartDate. - /// Optional. /// [JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))] - public IReadOnlyList SortBy { get; set; } = Array.Empty(); + public IReadOnlyList? SortBy { get; set; } /// - /// Gets or sets sort Order - Ascending,Descending. + /// Gets or sets sort order. /// [JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))] - public IReadOnlyList SortOrder { get; set; } = Array.Empty(); + public IReadOnlyList? SortOrder { get; set; } /// /// Gets or sets the genres to return guide information for. /// [JsonConverter(typeof(JsonPipeDelimitedArrayConverterFactory))] - public IReadOnlyList Genres { get; set; } = Array.Empty(); + public IReadOnlyList? Genres { get; set; } /// /// Gets or sets the genre ids to return guide information for. /// [JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))] - public IReadOnlyList GenreIds { get; set; } = Array.Empty(); + public IReadOnlyList? GenreIds { get; set; } /// /// Gets or sets include image information in output. - /// Optional. /// public bool? EnableImages { get; set; } @@ -140,39 +125,33 @@ public class GetProgramsDto /// /// Gets or sets the max number of images to return, per image type. - /// Optional. /// public int? ImageTypeLimit { get; set; } /// /// Gets or sets the image types to include in the output. - /// Optional. /// [JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))] - public IReadOnlyList EnableImageTypes { get; set; } = Array.Empty(); + public IReadOnlyList? EnableImageTypes { get; set; } /// /// Gets or sets include user data. - /// Optional. /// public bool? EnableUserData { get; set; } /// /// Gets or sets filter by series timer id. - /// Optional. /// public string? SeriesTimerId { get; set; } /// /// Gets or sets filter by library series id. - /// Optional. /// public Guid LibrarySeriesId { get; set; } /// - /// Gets or sets specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines. - /// Optional. + /// Gets or sets specify additional fields of information to return in the output. /// [JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))] - public IReadOnlyList Fields { get; set; } = Array.Empty(); + public IReadOnlyList? Fields { get; set; } }