diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs index 34f7e69e7..bb2427574 100644 --- a/MediaBrowser.Api/ApiService.cs +++ b/MediaBrowser.Api/ApiService.cs @@ -31,9 +31,14 @@ namespace MediaBrowser.Api UserItemData = Kernel.Instance.GetUserItemData(userId, item.Id), Type = item.GetType().Name, IsFolder = (item is Folder), - ParentId = item.Parent == null ? Guid.Empty : item.Parent.Id + ParentLogoItemId = GetParentLogoItemId(item) }; + if (item.Parent != null) + { + wrapper.ParentId = item.Parent.Id; + } + if (includeChildren) { var folder = item as Folder; @@ -46,5 +51,25 @@ namespace MediaBrowser.Api return wrapper; } + + private static Guid? GetParentLogoItemId(BaseItem item) + { + if (string.IsNullOrEmpty(item.LogoImagePath)) + { + var parent = item.Parent; + + while (parent != null) + { + if (!string.IsNullOrEmpty(parent.LogoImagePath)) + { + return parent.Id; + } + + parent = parent.Parent; + } + } + + return null; + } } } diff --git a/MediaBrowser.Model/Entities/ApiBaseItem.cs b/MediaBrowser.Model/Entities/ApiBaseItem.cs index 341b1c77f..0ec9ed7c6 100644 --- a/MediaBrowser.Model/Entities/ApiBaseItem.cs +++ b/MediaBrowser.Model/Entities/ApiBaseItem.cs @@ -26,7 +26,7 @@ namespace MediaBrowser.Model.Entities public bool IsFolder { get; set; } - public Guid ParentId { get; set; } + public Guid? ParentId { get; set; } public string Type { get; set; } @@ -39,5 +39,10 @@ namespace MediaBrowser.Model.Entities { return Type.Equals(type, StringComparison.OrdinalIgnoreCase); } + + /// + /// If the item does not have a logo, this will hold the Id of the Parent that has one. + /// + public Guid? ParentLogoItemId { get; set; } } }