using System; using System.Collections.Generic; using System.Globalization; using Jellyfin.Plugin.MediaBarEnhanced.Configuration; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using Microsoft.Extensions.Logging; namespace Jellyfin.Plugin.MediaBarEnhanced { /// /// The main plugin. /// public class MediaBarEnhancedPlugin : 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 MediaBarEnhancedPlugin(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) { _scriptInjector.Inject(); } else if (!Configuration.IsEnabled && oldConfig.IsEnabled) { _scriptInjector.Remove(); } } /// public override string Name => "Media Bar Enhanced"; /// public override Guid Id => Guid.Parse("d7e11d57-819b-4bdd-a88d-53c5f5560225"); /// /// Gets the current plugin instance. /// public static MediaBarEnhancedPlugin? Instance { get; private set; } /// public IEnumerable GetPages() { return [ new PluginPageInfo { Name = Name, EnableInMainMenu = true, EmbeddedResourcePath = string.Format(CultureInfo.InvariantCulture, "{0}.Configuration.configPage.html", GetType().Namespace) } ]; } } }