Browse Source

Fix TotalRecordCount calculation

Shadowghost 2 năm trước cách đây
mục cha
commit
81746666de

+ 8 - 1
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -1264,7 +1264,14 @@ namespace Emby.Server.Implementations.Library
                 AddUserToQuery(query, query.User, allowExternalContent);
                 AddUserToQuery(query, query.User, allowExternalContent);
             }
             }
 
 
-            return _itemRepository.GetItemList(query);
+            var itemList = _itemRepository.GetItemList(query);
+            var user = query.User;
+            if (user is not null)
+            {
+                return itemList.Where(i => i.IsVisible(user)).ToList();
+            }
+
+            return itemList;
         }
         }
 
 
         public List<BaseItem> GetItemList(InternalItemsQuery query)
         public List<BaseItem> GetItemList(InternalItemsQuery query)

+ 1 - 1
Emby.Server.Implementations/Playlists/PlaylistsFolder.cs

@@ -42,7 +42,7 @@ namespace Emby.Server.Implementations.Playlists
 
 
             query.Recursive = true;
             query.Recursive = true;
             query.IncludeItemTypes = new[] { BaseItemKind.Playlist };
             query.IncludeItemTypes = new[] { BaseItemKind.Playlist };
-            return LibraryManager.GetItemsResult(query);
+            return QueryWithPostFiltering2(query);
         }
         }
 
 
         public override string GetClientTypeName()
         public override string GetClientTypeName()

+ 2 - 4
Jellyfin.Api/Controllers/ItemsController.cs

@@ -512,12 +512,10 @@ public class ItemsController : BaseJellyfinApiController
             result = new QueryResult<BaseItem>(itemsArray);
             result = new QueryResult<BaseItem>(itemsArray);
         }
         }
 
 
-        // result might include items not accessible by the user, DtoService will remove them
-        var accessibleItems = _dtoService.GetBaseItemDtos(result.Items, dtoOptions, user);
         return new QueryResult<BaseItemDto>(
         return new QueryResult<BaseItemDto>(
             startIndex,
             startIndex,
-            accessibleItems.Count,
-            accessibleItems);
+            result.TotalRecordCount,
+            _dtoService.GetBaseItemDtos(result.Items, dtoOptions, user));
     }
     }
 
 
     /// <summary>
     /// <summary>

+ 2 - 2
MediaBrowser.Controller/Entities/Folder.cs

@@ -730,7 +730,7 @@ namespace MediaBrowser.Controller.Entities
             return LibraryManager.GetItemsResult(query);
             return LibraryManager.GetItemsResult(query);
         }
         }
 
 
-        private QueryResult<BaseItem> QueryWithPostFiltering2(InternalItemsQuery query)
+        protected QueryResult<BaseItem> QueryWithPostFiltering2(InternalItemsQuery query)
         {
         {
             var startIndex = query.StartIndex;
             var startIndex = query.StartIndex;
             var limit = query.Limit;
             var limit = query.Limit;
@@ -1272,7 +1272,7 @@ namespace MediaBrowser.Controller.Entities
         {
         {
             ArgumentNullException.ThrowIfNull(user);
             ArgumentNullException.ThrowIfNull(user);
 
 
-            return GetChildren(user, includeLinkedChildren, null);
+            return GetChildren(user, includeLinkedChildren, new InternalItemsQuery(user));
         }
         }
 
 
         public virtual List<BaseItem> GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query)
         public virtual List<BaseItem> GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query)