diff options
| author | Michalis Adamidis <gsnerf@gsnerf.de> | 2014-08-24 19:53:53 +0200 |
|---|---|---|
| committer | Michalis Adamidis <gsnerf@gsnerf.de> | 2014-08-24 19:53:53 +0200 |
| commit | 5740a4c22d676d0050e875b0bd5455f5a303f5bd (patch) | |
| tree | 8cbdc9a742be677fd96b1be32bb74a294d8722c4 /MediaBrowser.Server.Implementations/Playlists | |
| parent | 7b8050ed382e1e39399c6d1b06637cd07ac6b8d5 (diff) | |
| parent | 58a38d0d1ddb89439b763e7bc50e8b84105f68fe (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Conflicts:
MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
Diffstat (limited to 'MediaBrowser.Server.Implementations/Playlists')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs index 3cdea07935..ee2114aa4d 100644 --- a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs +++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs @@ -6,6 +6,7 @@ using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Playlists; using System; using System.Collections.Generic; using System.IO; @@ -39,7 +40,7 @@ namespace MediaBrowser.Server.Implementations.Playlists return GetPlaylistsFolder(userId).GetChildren(user, true).OfType<Playlist>(); } - public async Task<Playlist> CreatePlaylist(PlaylistCreationOptions options) + public async Task<PlaylistCreationResult> CreatePlaylist(PlaylistCreationRequest options) { var name = options.Name; @@ -81,7 +82,7 @@ namespace MediaBrowser.Server.Implementations.Playlists if (folder != null) { options.MediaType = folder.GetRecursiveChildren() - .Where(i => !i.IsFolder) + .Where(i => !i.IsFolder && i.SupportsAddingToPlaylist) .Select(i => i.MediaType) .FirstOrDefault(i => !string.IsNullOrWhiteSpace(i)); } @@ -99,6 +100,8 @@ namespace MediaBrowser.Server.Implementations.Playlists throw new ArgumentException("A playlist media type is required."); } + var user = _userManager.GetUserById(new Guid(options.UserId)); + var path = Path.Combine(parentFolder.Path, folderName); path = GetTargetPath(path); @@ -125,10 +128,13 @@ namespace MediaBrowser.Server.Implementations.Playlists if (options.ItemIdList.Count > 0) { - await AddToPlaylist(playlist.Id.ToString("N"), options.ItemIdList); + await AddToPlaylistInternal(playlist.Id.ToString("N"), options.ItemIdList, user); } - return playlist; + return new PlaylistCreationResult + { + Id = playlist.Id.ToString("N") + }; } finally { @@ -147,14 +153,21 @@ namespace MediaBrowser.Server.Implementations.Playlists return path; } - private IEnumerable<BaseItem> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType) + private IEnumerable<BaseItem> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType, User user) { var items = itemIds.Select(i => _libraryManager.GetItemById(i)).Where(i => i != null); - return Playlist.GetPlaylistItems(playlistMediaType, items, null); + return Playlist.GetPlaylistItems(playlistMediaType, items, user); + } + + public Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds, string userId) + { + var user = string.IsNullOrWhiteSpace(userId) ? null : _userManager.GetUserById(new Guid(userId)); + + return AddToPlaylistInternal(playlistId, itemIds, user); } - public async Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds) + private async Task AddToPlaylistInternal(string playlistId, IEnumerable<string> itemIds, User user) { var playlist = _libraryManager.GetItemById(playlistId) as Playlist; @@ -166,7 +179,9 @@ namespace MediaBrowser.Server.Implementations.Playlists var list = new List<LinkedChild>(); var itemList = new List<BaseItem>(); - var items = GetPlaylistItems(itemIds, playlist.MediaType).ToList(); + var items = GetPlaylistItems(itemIds, playlist.MediaType, user) + .Where(i => i.SupportsAddingToPlaylist) + .ToList(); foreach (var item in items) { @@ -177,8 +192,8 @@ namespace MediaBrowser.Server.Implementations.Playlists playlist.LinkedChildren.AddRange(list); await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); - await playlist.RefreshMetadata(new MetadataRefreshOptions{ - + await playlist.RefreshMetadata(new MetadataRefreshOptions + { ForceSave = true }, CancellationToken.None).ConfigureAwait(false); |
