#nullable disable #pragma warning disable CA1002, CA2227, CS1591 using System; using System.Collections.Generic; using System.Globalization; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Providers { public class MetadataResult { // Images aren't always used so the allocation is a waste a lot of the time private List _images; private List<(string Url, ImageType Type)> _remoteImages; public MetadataResult() { ResultLanguage = "en"; } public List Images { get => _images ??= new List(); set => _images = value; } public List<(string Url, ImageType Type)> RemoteImages { get => _remoteImages ??= new List<(string Url, ImageType Type)>(); set => _remoteImages = value; } public List UserDataList { get; set; } public List People { get; set; } public bool HasMetadata { get; set; } public T Item { get; set; } public string ResultLanguage { get; set; } public string Provider { get; set; } public bool QueriedById { get; set; } public void AddPerson(PersonInfo p) { People ??= new List(); PeopleHelper.AddPerson(People, p); } /// /// Not only does this clear, but initializes the list so that services can differentiate between a null list and zero people. /// public void ResetPeople() { if (People is null) { People = new List(); } else { People.Clear(); } } public UserItemData GetOrAddUserData(string userId) { UserDataList ??= new List(); UserItemData userData = null; foreach (var i in UserDataList) { if (string.Equals(userId, i.UserId.ToString("N", CultureInfo.InvariantCulture), StringComparison.OrdinalIgnoreCase)) { userData = i; } } if (userData is null) { userData = new UserItemData() { UserId = new Guid(userId) }; UserDataList.Add(userData); } return userData; } } }