using System.Threading.Tasks; using Emby.Server.Implementations.Browser; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Extensions; using MediaBrowser.Controller.Plugins; using Microsoft.Extensions.Configuration; namespace Emby.Server.Implementations.EntryPoints { /// /// Class StartupWizard. /// public sealed class StartupWizard : IServerEntryPoint { private readonly IServerApplicationHost _appHost; private readonly IConfiguration _appConfig; private readonly IServerConfigurationManager _config; private readonly IStartupOptions _startupOptions; /// /// Initializes a new instance of the class. /// /// The application host. /// The application configuration. /// The configuration manager. /// The application startup options. public StartupWizard( IServerApplicationHost appHost, IConfiguration appConfig, IServerConfigurationManager config, IStartupOptions startupOptions) { _appHost = appHost; _appConfig = appConfig; _config = config; _startupOptions = startupOptions; } /// public Task RunAsync() { Run(); return Task.CompletedTask; } private void Run() { if (!_appHost.CanLaunchWebBrowser) { return; } // Always launch the startup wizard if possible when it has not been completed if (!_config.Configuration.IsStartupWizardCompleted && _appConfig.HostWebClient()) { BrowserLauncher.OpenWebApp(_appHost); return; } // Do nothing if the web app is configured to not run automatically if (!_config.Configuration.AutoRunWebApp || _startupOptions.NoAutoRunWebApp) { return; } // Launch the swagger page if the web client is not hosted, otherwise open the web client if (_appConfig.HostWebClient()) { BrowserLauncher.OpenWebApp(_appHost); } else { BrowserLauncher.OpenSwaggerPage(_appHost); } } /// public void Dispose() { } } }