2
0
Эх сурвалжийг харах

Added ParentLogoItemId to indicate what parent item has a logo

LukePulverenti Luke Pulverenti luke pulverenti 13 жил өмнө
parent
commit
00c22a3454

+ 26 - 1
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;
+        }
     }
 }

+ 6 - 1
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);
         }
+
+        /// <summary>
+        /// If the item does not have a logo, this will hold the Id of the Parent that has one.
+        /// </summary>
+        public Guid? ParentLogoItemId { get; set; }
     }
 }