aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/UserLibraryController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Api/Controllers/UserLibraryController.cs')
-rw-r--r--Jellyfin.Api/Controllers/UserLibraryController.cs32
1 files changed, 21 insertions, 11 deletions
diff --git a/Jellyfin.Api/Controllers/UserLibraryController.cs b/Jellyfin.Api/Controllers/UserLibraryController.cs
index 3ba7cc3169..c778d3f448 100644
--- a/Jellyfin.Api/Controllers/UserLibraryController.cs
+++ b/Jellyfin.Api/Controllers/UserLibraryController.cs
@@ -564,25 +564,35 @@ public class UserLibraryController : BaseJellyfinApiController
},
dtoOptions);
- var dtos = list.Select(i =>
+ var resolvedItems = new BaseItem[list.Count];
+ var childCounts = new int[list.Count];
+ for (int i = 0; i < list.Count; i++)
{
- var item = i.Item2[0];
+ var tuple = list[i];
+ var item = tuple.Item2[0];
var childCount = 0;
- if (i.Item1 is not null && (i.Item2.Count > 1 || i.Item1 is MusicAlbum || i.Item1 is Series ))
+ if (tuple.Item1 is not null && (tuple.Item2.Count > 1 || tuple.Item1 is MusicAlbum || tuple.Item1 is Series))
{
- item = i.Item1;
- childCount = i.Item2.Count;
+ item = tuple.Item1;
+ childCount = tuple.Item2.Count;
}
- var dto = _dtoService.GetBaseItemDto(item, dtoOptions, user);
-
- dto.ChildCount = childCount;
+ resolvedItems[i] = item;
+ childCounts[i] = childCount;
+ }
- return dto;
- });
+ // Fetch DTOs without visibility check since we've already done that in GetLatestItems and restore child counts afterwards
+ var dtos = _dtoService.GetBaseItemDtos(resolvedItems, dtoOptions, user, skipVisibilityCheck: true);
+ for (int i = 0; i < dtos.Count; i++)
+ {
+ if (childCounts[i] > 0)
+ {
+ dtos[i].ChildCount = childCounts[i];
+ }
+ }
- return Ok(dtos);
+ return Ok(dtos.AsEnumerable());
}
/// <summary>