diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-06-19 02:21:51 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-06-19 02:21:51 -0400 |
| commit | 963450f17a1d0c6487f55c0b78779c3070f5a594 (patch) | |
| tree | be5750566a0ee766404a2e22769d1a270697b29e /MediaBrowser.Server.Implementations/Session | |
| parent | 0edd4e71fb54b808ab7a6d87cfd10010f1db0120 (diff) | |
| parent | 759f5a856064450acdb4c26839d6d890afb99a17 (diff) | |
Merge pull request #1860 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Server.Implementations/Session')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Session/SessionManager.cs | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 098fe0b4d..a54fa0a29 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -932,7 +932,7 @@ namespace MediaBrowser.Server.Implementations.Session return session.SessionController.SendGeneralCommand(command, cancellationToken); } - public Task SendPlayCommand(string controllingSessionId, string sessionId, PlayRequest command, CancellationToken cancellationToken) + public async Task SendPlayCommand(string controllingSessionId, string sessionId, PlayRequest command, CancellationToken cancellationToken) { var session = GetSessionToRemoteControl(sessionId); @@ -950,7 +950,14 @@ namespace MediaBrowser.Server.Implementations.Session } else { - items = command.ItemIds.SelectMany(i => TranslateItemForPlayback(i, user)) + var list = new List<BaseItem>(); + foreach (var itemId in command.ItemIds) + { + var subItems = await TranslateItemForPlayback(itemId, user).ConfigureAwait(false); + list.AddRange(subItems); + } + + items = list .Where(i => i.LocationType != LocationType.Virtual) .ToList(); } @@ -1013,10 +1020,10 @@ namespace MediaBrowser.Server.Implementations.Session command.ControllingUserId = controllingSession.UserId.Value.ToString("N"); } - return session.SessionController.SendPlayCommand(command, cancellationToken); + await session.SessionController.SendPlayCommand(command, cancellationToken).ConfigureAwait(false); } - private IEnumerable<BaseItem> TranslateItemForPlayback(string id, User user) + private async Task<List<BaseItem>> TranslateItemForPlayback(string id, User user) { var item = _libraryManager.GetItemById(id); @@ -1037,25 +1044,27 @@ namespace MediaBrowser.Server.Implementations.Session }); return FilterToSingleMediaType(items) - .OrderBy(i => i.SortName); + .OrderBy(i => i.SortName) + .ToList(); } if (item.IsFolder) { var folder = (Folder)item; - var items = folder.GetItems(new InternalItemsQuery(user) + var itemsResult = await folder.GetItems(new InternalItemsQuery(user) { Recursive = true, IsFolder = false - }).Result.Items; + }).ConfigureAwait(false); - return FilterToSingleMediaType(items) - .OrderBy(i => i.SortName); + return FilterToSingleMediaType(itemsResult.Items) + .OrderBy(i => i.SortName) + .ToList(); } - return new[] { item }; + return new List<BaseItem> { item }; } private IEnumerable<BaseItem> FilterToSingleMediaType(IEnumerable<BaseItem> items) |
