diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2026-02-21 22:38:07 +0100 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2026-02-21 22:38:07 +0100 |
| commit | ae5420d4ae09dec7d62d1d0861dfc823a180d93b (patch) | |
| tree | cff54cca2310defe253700b14f83488a1061617c /MediaBrowser.Controller/Entities/Folder.cs | |
| parent | 0f1a6fe4c27fa4c91b7e8dcd577960c568fa3c03 (diff) | |
Handle linkedChildren in GetPlayedAndTotalCountBatch and optimize filter
Diffstat (limited to 'MediaBrowser.Controller/Entities/Folder.cs')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 525a4bc334..7c66dc6e36 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -880,14 +880,12 @@ namespace MediaBrowser.Controller.Entities var user = query.User; - Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager); - IEnumerable<BaseItem> items; int totalItemCount = 0; if (query.User is null) { - items = Children.Where(filter); + items = UserViewBuilder.Filter(Children, user, query, UserDataManager, LibraryManager); totalItemCount = items.Count(); } else @@ -902,7 +900,12 @@ namespace MediaBrowser.Controller.Entities NameLessThan = query.NameLessThan }; - items = GetChildren(user, true, out totalItemCount, childQuery).Where(filter); + items = UserViewBuilder.Filter( + GetChildren(user, true, out totalItemCount, childQuery), + user, + query, + UserDataManager, + LibraryManager); } return PostFilterAndSort(items, query); @@ -1337,8 +1340,7 @@ namespace MediaBrowser.Controller.Entities .Where(e => e.IsVisible(user)) .ToArray(); - var realChildren = visibleChildren - .Where(e => query is null || UserViewBuilder.FilterItem(e, query)) + var realChildren = UserViewBuilder.Filter(visibleChildren, query.User, query, UserDataManager, LibraryManager) .ToArray(); var childCount = realChildren.Length; @@ -1722,15 +1724,14 @@ namespace MediaBrowser.Controller.Entities int playedCount; int totalCount; - if (precomputedCounts.HasValue && LinkedChildren.Length == 0) + if (precomputedCounts.HasValue) { // Use batch-fetched counts (avoids N+1 queries) (playedCount, totalCount) = precomputedCounts.Value; } else { - // Fall back to per-item query for LinkedChildren items (BoxSets, Playlists) - // or when no batch data is available + // Fall back to per-item query when no batch data is available var query = new InternalItemsQuery(user); if (LinkedChildren.Length > 0) |
