Use DI for ILiveTvService

This commit is contained in:
Patrick Barron 2024-01-17 12:35:48 -05:00
parent 775b7eadef
commit 34269dee58
4 changed files with 8 additions and 25 deletions

View File

@ -695,8 +695,6 @@ namespace Emby.Server.Implementations
GetExports<IMetadataSaver>(),
GetExports<IExternalId>());
Resolve<ILiveTvManager>().AddParts(GetExports<ILiveTvService>());
Resolve<IMediaSourceManager>().AddParts(GetExports<IMediaSourceProvider>());
}

View File

@ -67,12 +67,6 @@ namespace MediaBrowser.Controller.LiveTv
/// <returns>Task.</returns>
Task CancelSeriesTimer(string id);
/// <summary>
/// Adds the parts.
/// </summary>
/// <param name="services">The services.</param>
void AddParts(IEnumerable<ILiveTvService> services);
/// <summary>
/// Gets the timer.
/// </summary>

View File

@ -28,6 +28,7 @@ public static class LiveTvServiceCollectionExtensions
services.AddSingleton<ITunerHostManager, TunerHostManager>();
services.AddSingleton<IGuideManager, GuideManager>();
services.AddSingleton<ILiveTvService, EmbyTV.EmbyTV>();
services.AddSingleton<ITunerHost, HdHomerunHost>();
services.AddSingleton<ITunerHost, M3UTunerHost>();
services.AddSingleton<IListingsProvider, SchedulesDirect>();

View File

@ -47,10 +47,9 @@ namespace Jellyfin.LiveTv
private readonly ILocalizationManager _localization;
private readonly IChannelManager _channelManager;
private readonly LiveTvDtoService _tvDtoService;
private readonly ILiveTvService[] _services;
private readonly IListingsProvider[] _listingProviders;
private ILiveTvService[] _services = Array.Empty<ILiveTvService>();
public LiveTvManager(
IServerConfigurationManager config,
ILogger<LiveTvManager> logger,
@ -62,6 +61,7 @@ namespace Jellyfin.LiveTv
ILocalizationManager localization,
IChannelManager channelManager,
LiveTvDtoService liveTvDtoService,
IEnumerable<ILiveTvService> services,
IEnumerable<IListingsProvider> listingProviders)
{
_config = config;
@ -74,7 +74,12 @@ namespace Jellyfin.LiveTv
_userDataManager = userDataManager;
_channelManager = channelManager;
_tvDtoService = liveTvDtoService;
_services = services.ToArray();
_listingProviders = listingProviders.ToArray();
var defaultService = _services.OfType<EmbyTV.EmbyTV>().First();
defaultService.TimerCreated += OnEmbyTvTimerCreated;
defaultService.TimerCancelled += OnEmbyTvTimerCancelled;
}
public event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCancelled;
@ -98,21 +103,6 @@ namespace Jellyfin.LiveTv
return EmbyTV.EmbyTV.Current.GetActiveRecordingPath(id);
}
/// <inheritdoc />
public void AddParts(IEnumerable<ILiveTvService> services)
{
_services = services.ToArray();
foreach (var service in _services)
{
if (service is EmbyTV.EmbyTV embyTv)
{
embyTv.TimerCreated += OnEmbyTvTimerCreated;
embyTv.TimerCancelled += OnEmbyTvTimerCancelled;
}
}
}
private void OnEmbyTvTimerCancelled(object sender, GenericEventArgs<string> e)
{
var timerId = e.Argument;