using System; using System.Collections.Generic; using System.Globalization; using Jellyfin.Plugin.Seasonals.Configuration; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using Microsoft.Extensions.Logging; namespace Jellyfin.Plugin.Seasonals; /// /// The main plugin. /// public class SeasonalsPlugin : BasePlugin, IHasWebPages { private readonly ScriptInjector _scriptInjector; private readonly ILoggerFactory _loggerFactory; /// /// Initializes a new instance of the class. /// /// Instance of the interface. /// Instance of the interface. /// Instance of the interface. public SeasonalsPlugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer, ILoggerFactory loggerFactory) : base(applicationPaths, xmlSerializer) { Instance = this; _loggerFactory = loggerFactory; _scriptInjector = new ScriptInjector(applicationPaths, loggerFactory.CreateLogger()); if (Configuration.IsEnabled) { _scriptInjector.Inject(); } else { _scriptInjector.Remove(); } } /// public override void UpdateConfiguration(BasePluginConfiguration configuration) { var oldConfig = Configuration; base.UpdateConfiguration(configuration); if (Configuration.IsEnabled != oldConfig.IsEnabled) { if (Configuration.IsEnabled) { _scriptInjector.Inject(); } else { _scriptInjector.Remove(); } } } /// public override string Name => "Seasonals"; /// public override Guid Id => Guid.Parse("ef1e863f-cbb0-4e47-9f23-f0cbb1826ad4"); /// /// Gets the current plugin instance. /// public static SeasonalsPlugin? Instance { get; private set; } /// public IEnumerable GetPages() { return new[] { new PluginPageInfo { Name = Name, EnableInMainMenu = true, EmbeddedResourcePath = string.Format(CultureInfo.InvariantCulture, "{0}.Configuration.configPage.html", GetType().Namespace) } }; } }