using JetBrains.Annotations; using Livia.Models.Data; using Livia.Models; using Livia.Properties; using Livia.Utility.DependencyInjection; using Livia.Views.Utility; using Microsoft.Extensions.DependencyInjection; using System.Windows; using LiviaAdmin.Views; using Microsoft.Extensions.Logging; namespace LiviaAdmin; /// /// Interaction logic for App.xaml /// public partial class App { private readonly ILogger _logger; private readonly IServiceProvider _serviceProvider; private readonly IWarningSystem _warningSystem; [UsedImplicitly] private Mutex? _mutex; public App() { ServiceConfigurations.AppName = "cereflow"; ServiceProviderFactory.Init(_ => { }); InitializeComponent(); _serviceProvider = ServiceProviderFactory.ServiceProvider; _logger = ActivatorUtilities.GetServiceOrCreateInstance>(ServiceProviderFactory.ServiceProvider); _warningSystem = ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider); _logger.LogInformation("App Starting"); SettingsLogger.Init(); AppHelper helper = ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider); Dispatcher.UnhandledException += helper.OnDispatcherUnhandledException; helper.UpdateSettings(); helper.LoadStrings(); } private void OnStartup(object sender, StartupEventArgs eventArgs) { _mutex = new Mutex(true, "Livia", out bool isNewInstance); if (!isNewInstance) { _warningSystem.ShowDialog(WarningWindowKind.Warning, true, "InstanceIsRunningError"); Current.Shutdown(); } MainWindow mainWindow = ActivatorUtilities.CreateInstance(_serviceProvider); MainWindow = mainWindow; mainWindow.Show(); _logger.LogInformation("App Started"); } }