Explorar el Código

update home screen sections

Luke Pulverenti hace 7 años
padre
commit
085470394e

+ 1 - 1
Emby.Dlna/ContentDirectory/ControlHandler.cs

@@ -1101,7 +1101,7 @@ namespace Emby.Dlna.ContentDirectory
                 StartIndex = query.StartIndex,
                 UserId = query.User.Id.ToString("N")
 
-            }, new List<Folder> { (Folder)parent }, query.DtoOptions);
+            }, new List<BaseItem> { parent }, query.DtoOptions);
 
             return ToResult(result);
         }

+ 1 - 7
Emby.Server.Implementations/IO/LibraryMonitor.cs

@@ -333,13 +333,7 @@ namespace Emby.Server.Implementations.IO
                         NotifyFilters.Attributes;
 
                     newWatcher.Created += watcher_Changed;
-
-                    // Seeing mono crashes on background threads we can't catch, testing if this might help
-                    if (_environmentInfo.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.Windows)
-                    {
-                        newWatcher.Deleted += watcher_Changed;
-                    }
-
+                    newWatcher.Deleted += watcher_Changed;
                     newWatcher.Renamed += watcher_Changed;
                     newWatcher.Changed += watcher_Changed;
 

+ 7 - 29
Emby.Server.Implementations/TV/TVSeriesManager.cs

@@ -56,37 +56,15 @@ namespace Emby.Server.Implementations.TV
                 return GetResult(GetNextUpEpisodes(request, user, new[] { presentationUniqueKey }, dtoOptions), request);
             }
 
-            if (limit.HasValue)
-            {
-                limit = limit.Value + 10;
-            }
-
-            var items = _libraryManager.GetItemList(new InternalItemsQuery(user)
-            {
-                IncludeItemTypes = new[] { typeof(Episode).Name },
-                OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.DatePlayed, SortOrder.Descending) },
-                SeriesPresentationUniqueKey = presentationUniqueKey,
-                Limit = limit,
-                ParentId = parentIdGuid,
-                Recursive = true,
-                DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions
-                {
-                    Fields = new ItemFields[]
-                    {
-                        ItemFields.SeriesPresentationUniqueKey
-                    }
-                },
-                GroupBySeriesPresentationUniqueKey = true
-
-            }).Cast<Episode>().Select(GetUniqueSeriesKey);
-
-            // Avoid implicitly captured closure
-            var episodes = GetNextUpEpisodes(request, user, items, dtoOptions);
+            var parents = user.RootFolder.GetChildren(user, true)
+                .Where(i => i is Folder)
+                .Where(i => !user.Configuration.LatestItemsExcludes.Contains(i.Id.ToString("N")))
+                .ToList();
 
-            return GetResult(episodes, request);
+            return GetNextUp(request, parents, dtoOptions);
         }
 
-        public QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders, DtoOptions dtoOptions)
+        public QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<BaseItem> parentsFolders, DtoOptions dtoOptions)
         {
             var user = _userManager.GetUserById(request.UserId);
 
@@ -134,7 +112,7 @@ namespace Emby.Server.Implementations.TV
                 },
                 GroupBySeriesPresentationUniqueKey = true
 
-            }, parentsFolders.Cast<BaseItem>().ToList()).Cast<Episode>().Select(GetUniqueSeriesKey);
+            }, parentsFolders).Cast<Episode>().Select(GetUniqueSeriesKey);
 
             // Avoid implicitly captured closure
             var episodes = GetNextUpEpisodes(request, user, items, dtoOptions);

+ 52 - 0
MediaBrowser.Api/UserLibrary/ItemsService.cs

@@ -26,6 +26,11 @@ namespace MediaBrowser.Api.UserLibrary
     {
     }
 
+    [Route("/Users/{UserId}/Items/Resume", "GET", Summary = "Gets items based on a query.")]
+    public class GetResumeItems : BaseItemsRequest, IReturn<QueryResult<BaseItemDto>>
+    {
+    }
+
     /// <summary>
     /// Class ItemsService
     /// </summary>
@@ -79,6 +84,53 @@ namespace MediaBrowser.Api.UserLibrary
             _authContext = authContext;
         }
 
+        public object Get(GetResumeItems request)
+        {
+            var user = _userManager.GetUserById(request.UserId);
+
+            var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId);
+
+            var options = GetDtoOptions(_authContext, request);
+
+            var ancestorIds = new List<string>();
+
+            var excludeFolderIds = user.Configuration.LatestItemsExcludes;
+            if (!parentIdGuid.HasValue && excludeFolderIds.Length > 0)
+            {
+                ancestorIds = user.RootFolder.GetChildren(user, true)
+                    .Where(i => i is Folder)
+                    .Where(i => !excludeFolderIds.Contains(i.Id.ToString("N")))
+                    .Select(i => i.Id.ToString("N"))
+                    .ToList();
+            }
+
+            var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user)
+            {
+                OrderBy = new[] { ItemSortBy.DatePlayed }.Select(i => new Tuple<string, SortOrder>(i, SortOrder.Descending)).ToArray(),
+                IsResumable = true,
+                StartIndex = request.StartIndex,
+                Limit = request.Limit,
+                ParentId = parentIdGuid,
+                Recursive = true,
+                DtoOptions = options,
+                MediaTypes = request.GetMediaTypes(),
+                IsVirtualItem = false,
+                CollapseBoxSetItems = false,
+                EnableTotalRecordCount = request.EnableTotalRecordCount,
+                AncestorIds = ancestorIds.ToArray()
+            });
+
+            var returnItems = _dtoService.GetBaseItemDtos(itemsResult.Items, options, user);
+
+            var result = new QueryResult<BaseItemDto>
+            {
+                TotalRecordCount = itemsResult.TotalRecordCount,
+                Items = returnItems
+            };
+
+            return ToOptimizedSerializedResultUsingCache(result);
+        }
+
         /// <summary>
         /// Gets the specified request.
         /// </summary>

+ 6 - 9
MediaBrowser.Controller/Entities/UserViewBuilder.cs

@@ -238,12 +238,9 @@ namespace MediaBrowser.Controller.Entities
                     {
                         if (queryParent is UserView)
                         {
-                            return GetResult(GetMediaFolders(user).SelectMany(i => i.GetChildren(user, true)), queryParent, query);
-                        }
-                        else
-                        {
-                            return GetResult(queryParent.GetChildren(user, true), queryParent, query);
+                            return GetResult(GetMediaFolders(user).OfType<Folder>().SelectMany(i => i.GetChildren(user, true)), queryParent, query);
                         }
+                        return GetResult(queryParent.GetChildren(user, true), queryParent, query);
                     }
             }
         }
@@ -1681,7 +1678,7 @@ namespace MediaBrowser.Controller.Entities
             return true;
         }
 
-        private IEnumerable<Folder> GetMediaFolders(User user)
+        private IEnumerable<BaseItem> GetMediaFolders(User user)
         {
             if (user == null)
             {
@@ -1696,7 +1693,7 @@ namespace MediaBrowser.Controller.Entities
                 .Where(i => user.IsFolderGrouped(i.Id) && UserView.IsEligibleForGrouping(i));
         }
 
-        private List<Folder> GetMediaFolders(User user, IEnumerable<string> viewTypes)
+        private List<BaseItem> GetMediaFolders(User user, IEnumerable<string> viewTypes)
         {
             if (user == null)
             {
@@ -1717,14 +1714,14 @@ namespace MediaBrowser.Controller.Entities
                 }).ToList();
         }
 
-        private List<Folder> GetMediaFolders(Folder parent, User user, IEnumerable<string> viewTypes)
+        private List<BaseItem> GetMediaFolders(Folder parent, User user, IEnumerable<string> viewTypes)
         {
             if (parent == null || parent is UserView)
             {
                 return GetMediaFolders(user, viewTypes);
             }
 
-            return new List<Folder> { parent };
+            return new List<BaseItem> { parent };
         }
 
         private async Task<QueryResult<BaseItem>> GetLiveTvView(Folder queryParent, User user, InternalItemsQuery query)

+ 1 - 1
MediaBrowser.Controller/TV/ITVSeriesManager.cs

@@ -15,6 +15,6 @@ namespace MediaBrowser.Controller.TV
         /// <summary>
         /// Gets the next up.
         /// </summary>
-        QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<Folder> parentsFolders, DtoOptions options);
+        QueryResult<BaseItem> GetNextUp(NextUpQuery request, List<BaseItem> parentsFolders, DtoOptions options);
     }
 }

+ 1 - 3
MediaBrowser.Providers/Manager/ItemImageProvider.cs

@@ -204,9 +204,7 @@ namespace MediaBrowser.Providers.Manager
 
         private bool HasImage(IHasMetadata item, ImageType type)
         {
-            var image = item.GetImageInfo(type, 0);
-
-            return image != null;
+            return item.HasImage(type);
         }
 
         /// <summary>