Bond-009 1 month ago committed by GitHub
commit fd04cf9ffc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,5 +1,3 @@
#nullable disable
#pragma warning disable CS1591 #pragma warning disable CS1591
using System; using System;
@ -83,12 +81,12 @@ namespace Emby.Server.Implementations.Dto
private ILiveTvManager LivetvManager => _livetvManagerFactory.Value; private ILiveTvManager LivetvManager => _livetvManagerFactory.Value;
/// <inheritdoc /> /// <inheritdoc />
public IReadOnlyList<BaseItemDto> GetBaseItemDtos(IReadOnlyList<BaseItem> items, DtoOptions options, User user = null, BaseItem owner = null) public IReadOnlyList<BaseItemDto> GetBaseItemDtos(IReadOnlyList<BaseItem> items, DtoOptions options, User? user = null, BaseItem? owner = null)
{ {
var accessibleItems = user is null ? items : items.Where(x => x.IsVisible(user)).ToList(); var accessibleItems = user is null ? items : items.Where(x => x.IsVisible(user)).ToList();
var returnItems = new BaseItemDto[accessibleItems.Count]; var returnItems = new BaseItemDto[accessibleItems.Count];
List<(BaseItem, BaseItemDto)> programTuples = null; List<(BaseItem, BaseItemDto)>? programTuples = null;
List<(BaseItemDto, LiveTvChannel)> channelTuples = null; List<(BaseItemDto, LiveTvChannel)>? channelTuples = null;
for (int index = 0; index < accessibleItems.Count; index++) for (int index = 0; index < accessibleItems.Count; index++)
{ {
@ -137,7 +135,7 @@ namespace Emby.Server.Implementations.Dto
return returnItems; return returnItems;
} }
public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null) public BaseItemDto GetBaseItemDto(BaseItem item, DtoOptions options, User? user = null, BaseItem? owner = null)
{ {
var dto = GetBaseItemDtoInternal(item, options, user, owner); var dto = GetBaseItemDtoInternal(item, options, user, owner);
if (item is LiveTvChannel tvChannel) if (item is LiveTvChannel tvChannel)
@ -167,7 +165,7 @@ namespace Emby.Server.Implementations.Dto
return dto; return dto;
} }
private static IList<BaseItem> GetTaggedItems(IItemByName byName, User user, DtoOptions options) private static IList<BaseItem> GetTaggedItems(IItemByName byName, User? user, DtoOptions options)
{ {
return byName.GetTaggedItems( return byName.GetTaggedItems(
new InternalItemsQuery(user) new InternalItemsQuery(user)
@ -177,7 +175,7 @@ namespace Emby.Server.Implementations.Dto
}); });
} }
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null) private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User? user = null, BaseItem? owner = null)
{ {
var dto = new BaseItemDto var dto = new BaseItemDto
{ {
@ -292,7 +290,7 @@ namespace Emby.Server.Implementations.Dto
} }
var path = mediaSource.Path; var path = mediaSource.Path;
string fileExtensionContainer = null; string? fileExtensionContainer = null;
if (!string.IsNullOrEmpty(path)) if (!string.IsNullOrEmpty(path))
{ {
@ -316,7 +314,8 @@ namespace Emby.Server.Implementations.Dto
} }
} }
public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem> taggedItems, User user = null) /// <inheritdoc />
public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem>? taggedItems, User? user = null)
{ {
var dto = GetBaseItemDtoInternal(item, options, user); var dto = GetBaseItemDtoInternal(item, options, user);
@ -486,10 +485,10 @@ namespace Emby.Server.Implementations.Dto
return images return images
.Select(p => GetImageCacheTag(item, p)) .Select(p => GetImageCacheTag(item, p))
.Where(i => i is not null) .Where(i => i is not null)
.ToArray(); .ToArray()!; // null values got filtered out
} }
private string GetImageCacheTag(BaseItem item, ItemImageInfo image) private string? GetImageCacheTag(BaseItem item, ItemImageInfo image)
{ {
try try
{ {
@ -508,7 +507,7 @@ namespace Emby.Server.Implementations.Dto
/// <param name="dto">The dto.</param> /// <param name="dto">The dto.</param>
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <param name="user">The requesting user.</param> /// <param name="user">The requesting user.</param>
private void AttachPeople(BaseItemDto dto, BaseItem item, User user = null) private void AttachPeople(BaseItemDto dto, BaseItem item, User? user = null)
{ {
// Ordering by person type to ensure actors and artists are at the front. // Ordering by person type to ensure actors and artists are at the front.
// This is taking advantage of the fact that they both begin with A // This is taking advantage of the fact that they both begin with A
@ -552,7 +551,7 @@ namespace Emby.Server.Implementations.Dto
var list = new List<BaseItemPerson>(); var list = new List<BaseItemPerson>();
var dictionary = people.Select(p => p.Name) Dictionary<string, Person> dictionary = people.Select(p => p.Name)
.Distinct(StringComparer.OrdinalIgnoreCase).Select(c => .Distinct(StringComparer.OrdinalIgnoreCase).Select(c =>
{ {
try try
@ -565,9 +564,9 @@ namespace Emby.Server.Implementations.Dto
return null; return null;
} }
}).Where(i => i is not null) }).Where(i => i is not null)
.Where(i => user is null || i.IsVisible(user)) .Where(i => user is null || i!.IsVisible(user))
.DistinctBy(x => x.Name, StringComparer.OrdinalIgnoreCase) .DistinctBy(x => x!.Name, StringComparer.OrdinalIgnoreCase)
.ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase); .ToDictionary(i => i!.Name, StringComparer.OrdinalIgnoreCase)!; // null values got filtered out
for (var i = 0; i < people.Count; i++) for (var i = 0; i < people.Count; i++)
{ {
@ -580,7 +579,7 @@ namespace Emby.Server.Implementations.Dto
Type = person.Type Type = person.Type
}; };
if (dictionary.TryGetValue(person.Name, out Person entity)) if (dictionary.TryGetValue(person.Name, out Person? entity))
{ {
baseItemPerson.PrimaryImageTag = GetTagAndFillBlurhash(dto, entity, ImageType.Primary); baseItemPerson.PrimaryImageTag = GetTagAndFillBlurhash(dto, entity, ImageType.Primary);
baseItemPerson.Id = entity.Id; baseItemPerson.Id = entity.Id;
@ -650,7 +649,7 @@ namespace Emby.Server.Implementations.Dto
return _libraryManager.GetGenreId(name); return _libraryManager.GetGenreId(name);
} }
private string GetTagAndFillBlurhash(BaseItemDto dto, BaseItem item, ImageType imageType, int imageIndex = 0) private string? GetTagAndFillBlurhash(BaseItemDto dto, BaseItem item, ImageType imageType, int imageIndex = 0)
{ {
var image = item.GetImageInfo(imageType, imageIndex); var image = item.GetImageInfo(imageType, imageIndex);
if (image is not null) if (image is not null)
@ -661,9 +660,14 @@ namespace Emby.Server.Implementations.Dto
return null; return null;
} }
private string GetTagAndFillBlurhash(BaseItemDto dto, BaseItem item, ItemImageInfo image) private string? GetTagAndFillBlurhash(BaseItemDto dto, BaseItem item, ItemImageInfo image)
{ {
var tag = GetImageCacheTag(item, image); var tag = GetImageCacheTag(item, image);
if (tag is null)
{
return null;
}
if (!string.IsNullOrEmpty(image.BlurHash)) if (!string.IsNullOrEmpty(image.BlurHash))
{ {
dto.ImageBlurHashes ??= new Dictionary<ImageType, Dictionary<string, string>>(); dto.ImageBlurHashes ??= new Dictionary<ImageType, Dictionary<string, string>>();
@ -716,7 +720,7 @@ namespace Emby.Server.Implementations.Dto
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <param name="owner">The owner.</param> /// <param name="owner">The owner.</param>
/// <param name="options">The options.</param> /// <param name="options">The options.</param>
private void AttachBasicFields(BaseItemDto dto, BaseItem item, BaseItem owner, DtoOptions options) private void AttachBasicFields(BaseItemDto dto, BaseItem item, BaseItem? owner, DtoOptions options)
{ {
if (options.ContainsField(ItemFields.DateCreated)) if (options.ContainsField(ItemFields.DateCreated))
{ {
@ -1097,7 +1101,7 @@ namespace Emby.Server.Implementations.Dto
} }
} }
BaseItem[] allExtras = null; BaseItem[]? allExtras = null;
if (options.ContainsField(ItemFields.SpecialFeatureCount)) if (options.ContainsField(ItemFields.SpecialFeatureCount))
{ {
@ -1134,7 +1138,7 @@ namespace Emby.Server.Implementations.Dto
dto.SeasonId = episode.SeasonId; dto.SeasonId = episode.SeasonId;
dto.SeriesId = episode.SeriesId; dto.SeriesId = episode.SeriesId;
Series episodeSeries = null; Series? episodeSeries = null;
// this block will add the series poster for episodes without a poster // this block will add the series poster for episodes without a poster
// TODO maybe remove the if statement entirely // TODO maybe remove the if statement entirely
@ -1162,8 +1166,10 @@ namespace Emby.Server.Implementations.Dto
} }
// Add SeriesInfo // Add SeriesInfo
if (item is Series series) Series? series;
if (item is Series tmp)
{ {
series = tmp;
dto.AirDays = series.AirDays; dto.AirDays = series.AirDays;
dto.AirTime = series.AirTime; dto.AirTime = series.AirTime;
dto.Status = series.Status?.ToString(); dto.Status = series.Status?.ToString();
@ -1264,7 +1270,7 @@ namespace Emby.Server.Implementations.Dto
} }
} }
private BaseItem GetImageDisplayParent(BaseItem currentItem, BaseItem originalItem) private BaseItem? GetImageDisplayParent(BaseItem currentItem, BaseItem originalItem)
{ {
if (currentItem is MusicAlbum musicAlbum) if (currentItem is MusicAlbum musicAlbum)
{ {
@ -1285,7 +1291,7 @@ namespace Emby.Server.Implementations.Dto
return parent; return parent;
} }
private void AddInheritedImages(BaseItemDto dto, BaseItem item, DtoOptions options, BaseItem owner) private void AddInheritedImages(BaseItemDto dto, BaseItem item, DtoOptions options, BaseItem? owner)
{ {
if (!item.SupportsInheritedParentImages) if (!item.SupportsInheritedParentImages)
{ {
@ -1305,7 +1311,7 @@ namespace Emby.Server.Implementations.Dto
return; return;
} }
BaseItem parent = null; BaseItem? parent = null;
var isFirst = true; var isFirst = true;
var imageTags = dto.ImageTags; var imageTags = dto.ImageTags;
@ -1378,7 +1384,7 @@ namespace Emby.Server.Implementations.Dto
} }
} }
private string GetMappedPath(BaseItem item, BaseItem ownerItem) private string GetMappedPath(BaseItem item, BaseItem? ownerItem)
{ {
var path = item.Path; var path = item.Path;

@ -26,8 +26,6 @@ public static class DtoExtensions
internal static DtoOptions AddClientFields( internal static DtoOptions AddClientFields(
this DtoOptions dtoOptions, ClaimsPrincipal user) this DtoOptions dtoOptions, ClaimsPrincipal user)
{ {
dtoOptions.Fields ??= Array.Empty<ItemFields>();
string? client = user.GetClient(); string? client = user.GetClient();
// No client in claim // No client in claim

@ -1,5 +1,3 @@
#nullable disable
#pragma warning disable CS1591 #pragma warning disable CS1591
using System; using System;

Loading…
Cancel
Save