aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 21:42:53 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 21:42:53 -0400
commitb48d15296c1708545f358dc0ccbc48fea9b2cf00 (patch)
treee1d13ad0810dd614a4b3f8da5e05cbc8f52fcb30 /MediaBrowser.Server.Implementations/Library
parent6a2f6782d32603593c669632d825f29fb43f3ea6 (diff)
support custom ordering of user views
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
-rw-r--r--MediaBrowser.Server.Implementations/Library/MusicManager.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserViewManager.cs14
2 files changed, 15 insertions, 3 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/MusicManager.cs b/MediaBrowser.Server.Implementations/Library/MusicManager.cs
index df122e166..7ffbab860 100644
--- a/MediaBrowser.Server.Implementations/Library/MusicManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/MusicManager.cs
@@ -30,8 +30,8 @@ namespace MediaBrowser.Server.Implementations.Library
{
var artist = _libraryManager.GetArtist(name);
- var genres = _libraryManager.RootFolder
- .RecursiveChildren
+ var genres = user.RootFolder
+ .GetRecursiveChildren(user)
.OfType<Audio>()
.Where(i => i.HasArtist(name))
.SelectMany(i => i.Genres)
diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
index e3ac2025f..63aa3764c 100644
--- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
@@ -133,7 +133,19 @@ namespace MediaBrowser.Server.Implementations.Library
}
}
- return _libraryManager.Sort(list, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).Cast<Folder>();
+ var sorted = _libraryManager.Sort(list, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).ToList();
+
+ var orders = user.Configuration.OrderedViews.ToList();
+
+ return list
+ .OrderBy(i =>
+ {
+ var index = orders.IndexOf(i.Id.ToString("N"));
+
+ return index == -1 ? int.MaxValue : index;
+ })
+ .ThenBy(sorted.IndexOf)
+ .ThenBy(i => i.SortName);
}
public Task<UserView> GetUserView(string type, User user, string sortName, CancellationToken cancellationToken)