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; + } + } } }