From ca5989cb17b324ee481b92ddf3cd1ea47af85cbe Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 17 May 2014 17:23:48 -0400 Subject: [PATCH] fix channel query by category --- MediaBrowser.Model/Dto/BaseItemDto.cs | 6 ++++++ .../Channels/ChannelManager.cs | 5 +++++ MediaBrowser.Server.Implementations/Dto/DtoService.cs | 8 ++++++++ .../Session/WebSocketController.cs | 10 +++++++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index c469d97d62..9f88261841 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -133,6 +133,12 @@ namespace MediaBrowser.Model.Dto /// The custom rating. public string CustomRating { get; set; } + /// + /// Gets or sets the channel identifier. + /// + /// The channel identifier. + public string ChannelId { get; set; } + /// /// Gets or sets the overview. /// diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index b3984bb6c2..cfa642add2 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -385,6 +385,11 @@ namespace MediaBrowser.Server.Implementations.Channels private async Task GetChannelItemEntity(ChannelItemInfo info, string internalChannnelId, CancellationToken cancellationToken) { + if (string.IsNullOrEmpty(internalChannnelId)) + { + throw new ArgumentNullException("internalChannnelId"); + } + BaseItem item; Guid id; var isNew = false; diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index bf77f18696..ceb39da038 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; @@ -1140,6 +1141,13 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.MediaSources = GetMediaSources(tvChannel); } + + var channelItem = item as IChannelItem; + + if (channelItem != null) + { + dto.ChannelId = channelItem.ChannelId; + } } public List GetMediaSources(BaseItem item) diff --git a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs index 6f4dd0a723..05eef611f5 100644 --- a/MediaBrowser.Server.Implementations/Session/WebSocketController.cs +++ b/MediaBrowser.Server.Implementations/Session/WebSocketController.cs @@ -14,7 +14,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.Session { - public class WebSocketController : ISessionController + public class WebSocketController : ISessionController, IDisposable { public SessionInfo Session { get; private set; } public IReadOnlyList Sockets { get; private set; } @@ -244,5 +244,13 @@ namespace MediaBrowser.Server.Implementations.Session return Task.WhenAll(tasks); } + + public void Dispose() + { + foreach (var socket in Sockets.ToList()) + { + socket.Closed -= connection_Closed; + } + } } }