public async void Play() { try { var item = _item; if (!_playbackManager.CanPlay(item)) { return; } if (item.IsVideo && (item.Chapters == null || item.MediaStreams == null)) { item = await _apiClient.GetItemAsync(item.Id, _apiClient.CurrentUserId); } else if (item.IsAudio && (item.MediaStreams == null)) { item = await _apiClient.GetItemAsync(item.Id, _apiClient.CurrentUserId); } else if (string.IsNullOrEmpty(item.Path)) { item = await _apiClient.GetItemAsync(item.Id, _apiClient.CurrentUserId); } await _playbackManager.Play(new PlayOptions(item)); } catch (Exception) { _presentation.ShowDefaultErrorMessage(); } }
private async void PlayAllFromHere(object commandParameter) { var itemViewModel = commandParameter as ItemViewModel; if (itemViewModel != null) { try { var items = _listItems.SkipWhile(i => i != itemViewModel) .Where(i => _playbackManager.CanPlay(i.Item)) .ToList(); if (items.Count > 0) { var result = await _apiClient.GetItemsAsync(new ItemQuery { UserId = _apiClient.CurrentUserId, Fields = new[] { ItemFields.Path, ItemFields.Chapters, ItemFields.MediaSources, ItemFields.ParentId }, Ids = items.Select(i => i.Item.Id).ToArray() }); await _playbackManager.Play(new PlayOptions(result.Items)); } } catch (Exception) { _presentationManager.ShowDefaultErrorMessage(); } } }