diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2026-07-28 12:42:34 +0200 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2026-07-28 12:43:12 +0200 |
| commit | eed664b7d351ae9a22b0722b18d65dcff3fc185d (patch) | |
| tree | c7a74f40096024617667ab266a65dc5a10d3ec9b /MediaBrowser.Controller | |
| parent | 5b550517b2ca64fee0d060f537901a2bc6604a64 (diff) | |
Fix played/unplayed filter for empty Series and BoxSets
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs | 8 |
2 files changed, 8 insertions, 7 deletions
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 9ba103cc8b..aed11e5cc3 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -461,11 +461,12 @@ namespace MediaBrowser.Controller.Entities var counts = libraryManager.GetPlayedAndTotalCountBatch(folderIds, user); var isPlayedValue = query.IsPlayed.Value; - return itemList.Where(i => + return itemList.Where(item => { - if (i.IsFolder && counts.TryGetValue(i.Id, out var c)) + if (item is Folder) { - return (c.Total > 0 && c.Played == c.Total) == isPlayedValue; + var itemCount = counts.GetValueOrDefault(item.Id); + return (itemCount.Played >= itemCount.Total) == isPlayedValue; } return true; diff --git a/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs b/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs index 2e29cbdbba..e74cc38f7a 100644 --- a/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs +++ b/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs @@ -79,14 +79,14 @@ public interface IItemQueryHelpers Guid ancestorId); /// <summary> - /// Builds an <see cref="IQueryable{Guid}"/> of folder IDs whose descendants are all played - /// for the given user. Composable into outer queries to avoid an extra DB roundtrip. + /// Builds an <see cref="IQueryable{Guid}"/> of folder IDs that have at least one unplayed + /// descendant for the given user. Composable into outer queries to avoid an extra DB roundtrip. /// </summary> /// <param name="context">The database context the resulting query is bound to.</param> /// <param name="folderIds">A query yielding candidate folder IDs.</param> /// <param name="user">The user for access filtering and played status.</param> - /// <returns>An <see cref="IQueryable{Guid}"/> of fully-played folder IDs.</returns> - IQueryable<Guid> GetFullyPlayedFolderIdsQuery( + /// <returns>An <see cref="IQueryable{Guid}"/> of folder IDs with unplayed descendants.</returns> + IQueryable<Guid> GetFoldersWithUnplayedItemsQuery( JellyfinDbContext context, IQueryable<Guid> folderIds, User user); |
