aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/ItemsService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/ItemsService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs25
1 files changed, 19 insertions, 6 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 9194cdb35..ce7905b42 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -149,6 +149,24 @@ namespace MediaBrowser.Api.UserLibrary
item = user == null ? _libraryManager.RootFolder : user.RootFolder;
}
+ if (!string.IsNullOrEmpty(request.Ids))
+ {
+ var query = GetItemsQuery(request, user);
+ var specificItems = _libraryManager.GetItemList(query).ToArray();
+ if (query.SortBy.Length == 0)
+ {
+ var ids = query.ItemIds.ToList();
+
+ // Try to preserve order
+ specificItems = specificItems.OrderBy(i => ids.IndexOf(i.Id.ToString("N"))).ToArray();
+ }
+ return new QueryResult<BaseItem>
+ {
+ Items = specificItems.ToArray(),
+ TotalRecordCount = specificItems.Length
+ };
+ }
+
// Default list type = children
var folder = item as Folder;
@@ -157,16 +175,11 @@ namespace MediaBrowser.Api.UserLibrary
folder = user == null ? _libraryManager.RootFolder : _libraryManager.GetUserRootFolder();
}
- if (request.Recursive || !string.IsNullOrEmpty(request.Ids))
+ if (request.Recursive || !string.IsNullOrEmpty(request.Ids) || user == null)
{
return await folder.GetItems(GetItemsQuery(request, user)).ConfigureAwait(false);
}
- if (user == null)
- {
- return await folder.GetItems(GetItemsQuery(request, null)).ConfigureAwait(false);
- }
-
var userRoot = item as UserRootFolder;
if (userRoot == null)