@ -29,13 +29,15 @@ using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.Movies ;
using MediaBrowser.Controller.Entities.TV ;
using MediaBrowser.Controller.IO ;
using MediaBrowser.Controller.Plugins ;
using MediaBrowser.Model.Globalization ;
using MediaBrowser.Model.Tasks ;
namespace Emby.Server.Implementations.Channels
{
public class ChannelManager : IChannelManager
{
private IChannel [ ] _channels ;
internal IChannel [ ] Channels { get ; private set ; }
private readonly IUserManager _userManager ;
private readonly IUserDataManager _userDataManager ;
@ -76,12 +78,12 @@ namespace Emby.Server.Implementations.Channels
public void AddParts ( IEnumerable < IChannel > channels )
{
_c hannels = channels . ToArray ( ) ;
C hannels = channels . ToArray ( ) ;
}
private IEnumerable < IChannel > GetAllChannels ( )
{
return _c hannels
return C hannels
. OrderBy ( i = > i . Name ) ;
}
@ -1559,4 +1561,76 @@ namespace Emby.Server.Implementations.Channels
return await _libraryManager . GetNamedView ( name , "channels" , "zz_" + name , cancellationToken ) . ConfigureAwait ( false ) ;
}
}
public class ChannelsEntryPoint : IServerEntryPoint
{
private readonly IServerConfigurationManager _config ;
private readonly IChannelManager _channelManager ;
private readonly ITaskManager _taskManager ;
private readonly IFileSystem _fileSystem ;
public ChannelsEntryPoint ( IChannelManager channelManager , ITaskManager taskManager , IServerConfigurationManager config , IFileSystem fileSystem )
{
_channelManager = channelManager ;
_taskManager = taskManager ;
_config = config ;
_fileSystem = fileSystem ;
}
public void Run ( )
{
var channels = ( ( ChannelManager ) _channelManager ) . Channels
. Select ( i = > i . GetType ( ) . FullName . GetMD5 ( ) . ToString ( "N" ) )
. ToArray ( ) ;
var channelsString = string . Join ( "," , channels ) ;
if ( ! string . Equals ( channelsString , GetSavedLastChannels ( ) , StringComparison . OrdinalIgnoreCase ) )
{
_taskManager . QueueIfNotRunning < RefreshChannelsScheduledTask > ( ) ;
SetSavedLastChannels ( channelsString ) ;
}
}
private string DataPath
{
get { return Path . Combine ( _config . ApplicationPaths . DataPath , "channels.txt" ) ; }
}
private string GetSavedLastChannels ( )
{
try
{
return _fileSystem . ReadAllText ( DataPath ) ;
}
catch
{
return string . Empty ;
}
}
private void SetSavedLastChannels ( string value )
{
try
{
if ( string . IsNullOrWhiteSpace ( value ) )
{
_fileSystem . DeleteFile ( DataPath ) ;
}
else
{
_fileSystem . WriteAllText ( DataPath , value ) ;
}
}
catch
{
}
}
public void Dispose ( )
{
}
}
}