diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Channels/ChannelManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Channels/ChannelManager.cs | 55 |
1 files changed, 19 insertions, 36 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index 9e7679f93..c12a1161b 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -1,6 +1,4 @@ -using System.Net; -using System.Text; -using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Channels; @@ -10,7 +8,6 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.Providers; -using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; @@ -24,9 +21,10 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Net; +using System.Text; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Server.Implementations.Library; namespace MediaBrowser.Server.Implementations.Channels { @@ -179,12 +177,9 @@ namespace MediaBrowser.Server.Implementations.Channels var internalResult = await GetChannelsInternal(query, cancellationToken).ConfigureAwait(false); - // Get everything - var fields = Enum.GetNames(typeof(ItemFields)) - .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) - .ToList(); + var dtoOptions = new DtoOptions(); - var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) + var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user)) .ToArray(); var result = new QueryResult<BaseItemDto> @@ -544,11 +539,6 @@ namespace MediaBrowser.Server.Implementations.Channels var internalResult = await GetLatestChannelItemsInternal(query, cancellationToken).ConfigureAwait(false); - // Get everything - var fields = Enum.GetNames(typeof(ItemFields)) - .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) - .ToList(); - var items = internalResult.Items; var totalRecordCount = internalResult.TotalRecordCount; @@ -563,7 +553,9 @@ namespace MediaBrowser.Server.Implementations.Channels totalRecordCount = items.Length; } - var returnItems = items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) + var dtoOptions = new DtoOptions(); + + var returnItems = items.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user)) .ToArray(); var result = new QueryResult<BaseItemDto> @@ -828,12 +820,9 @@ namespace MediaBrowser.Server.Implementations.Channels await RefreshIfNeeded(internalResult.Items, new Progress<double>(), cancellationToken).ConfigureAwait(false); - // Get everything - var fields = Enum.GetNames(typeof(ItemFields)) - .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) - .ToList(); + var dtoOptions = new DtoOptions(); - var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) + var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user)) .ToArray(); var result = new QueryResult<BaseItemDto> @@ -980,12 +969,9 @@ namespace MediaBrowser.Server.Implementations.Channels var internalResult = await GetChannelItemsInternal(query, new Progress<double>(), cancellationToken).ConfigureAwait(false); - // Get everything - var fields = Enum.GetNames(typeof(ItemFields)) - .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) - .ToList(); + var dtoOptions = new DtoOptions(); - var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) + var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user)) .ToArray(); var result = new QueryResult<BaseItemDto> @@ -1305,16 +1291,16 @@ namespace MediaBrowser.Server.Implementations.Channels } } - private async Task RefreshIfNeeded(BaseItem program, CancellationToken cancellationToken) + private readonly Task _cachedTask = Task.FromResult(true); + private Task RefreshIfNeeded(BaseItem program, CancellationToken cancellationToken) { - if (_refreshedItems.ContainsKey(program.Id)) + if (!_refreshedItems.ContainsKey(program.Id)) { - return; + _refreshedItems.TryAdd(program.Id, true); + return program.RefreshMetadata(cancellationToken); } - await program.RefreshMetadata(cancellationToken).ConfigureAwait(false); - - _refreshedItems.TryAdd(program.Id, true); + return _cachedTask; } internal IChannel GetChannelProvider(Channel channel) @@ -1407,12 +1393,9 @@ namespace MediaBrowser.Server.Implementations.Channels { var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(userId); - // Get everything - var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList(); - var folder = await GetInternalChannelFolder(userId, cancellationToken).ConfigureAwait(false); - return _dtoService.GetBaseItemDto(folder, fields, user); + return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user); } public async Task<Folder> GetInternalChannelFolder(string userId, CancellationToken cancellationToken) |
