From eed664b7d351ae9a22b0722b18d65dcff3fc185d Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Tue, 28 Jul 2026 12:42:34 +0200 Subject: Fix played/unplayed filter for empty Series and BoxSets --- MediaBrowser.Controller/Entities/UserViewBuilder.cs | 7 ++++--- MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'MediaBrowser.Controller') 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); /// - /// Builds an of folder IDs whose descendants are all played - /// for the given user. Composable into outer queries to avoid an extra DB roundtrip. + /// Builds an of folder IDs that have at least one unplayed + /// descendant for the given user. Composable into outer queries to avoid an extra DB roundtrip. /// /// The database context the resulting query is bound to. /// A query yielding candidate folder IDs. /// The user for access filtering and played status. - /// An of fully-played folder IDs. - IQueryable GetFullyPlayedFolderIdsQuery( + /// An of folder IDs with unplayed descendants. + IQueryable GetFoldersWithUnplayedItemsQuery( JellyfinDbContext context, IQueryable folderIds, User user); -- cgit v1.2.3