115 lines
4.4 KiB
C#
115 lines
4.4 KiB
C#
using System.IO;
|
|
using System.Windows;
|
|
using iBrain.Models;
|
|
using iBrain.ViewModels;
|
|
using iBrain.Views.Controls;
|
|
using JetBrains.Annotations;
|
|
using Livia.Models;
|
|
using Livia.Models.Data;
|
|
using Livia.Properties;
|
|
using Livia.Utility.DependencyInjection;
|
|
using Livia.ViewModels;
|
|
using Livia.Views;
|
|
using Livia.Views.Utility;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Velopack;
|
|
|
|
namespace iBrain;
|
|
|
|
/// <summary>
|
|
/// Interaction logic for App.xaml
|
|
/// </summary>
|
|
public partial class App
|
|
{
|
|
|
|
private readonly ILogger _logger;
|
|
private readonly IServiceProvider _serviceProvider;
|
|
private readonly IWarningSystem _warningSystem;
|
|
private readonly IProcessManager _processManager;
|
|
private readonly ISerialKeyManager _serialKeyManager;
|
|
[UsedImplicitly] private Mutex? _mutex;
|
|
|
|
public App()
|
|
{
|
|
ServiceConfigurations.AppName = "ibrain";
|
|
VelopackApp.Build().Run();
|
|
ServiceProviderFactory.Init(sc =>
|
|
{
|
|
sc.AddSingleton<ILiviaControlViewModel, BuptIBrainControlViewModel>();
|
|
sc.AddSingleton<IDataBlockLoader, BuptIBrainDataBlockLoader>();
|
|
sc.AddSingleton<IServerHandler, BuptIBrainServerHandler>();
|
|
});
|
|
|
|
InitializeComponent();
|
|
_serviceProvider = ServiceProviderFactory.ServiceProvider;
|
|
_logger = ActivatorUtilities.GetServiceOrCreateInstance<ILogger<App>>(ServiceProviderFactory.ServiceProvider);
|
|
_warningSystem = ActivatorUtilities.GetServiceOrCreateInstance<IWarningSystem>(ServiceProviderFactory.ServiceProvider);
|
|
_serialKeyManager = ActivatorUtilities.GetServiceOrCreateInstance<ISerialKeyManager>(ServiceProviderFactory.ServiceProvider);
|
|
_processManager = ActivatorUtilities.GetServiceOrCreateInstance<IProcessManager>(ServiceProviderFactory.ServiceProvider);
|
|
_logger.LogInformation("App Starting");
|
|
SettingsLogger.Init();
|
|
|
|
AppHelper helper = ActivatorUtilities.GetServiceOrCreateInstance<AppHelper>(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();
|
|
}
|
|
|
|
Settings.Default.ShowSelectReportModuleDialog = false;
|
|
Settings.Default.ShowSortedDownloadButton = false;
|
|
MainWindowViewModel.ShowRemainingQuota = false;
|
|
MainWindowViewModel.ShowCheckReportsButton = false;
|
|
MainWindowViewModel.ShowExportReportButton = false;
|
|
SettingsWindowViewModel.ShowExportReportSettings = false;
|
|
LoginControlViewModel.ShowMessage2 = false;
|
|
LoginControlViewModel.ShowMessage3 = false;
|
|
Settings.Default.ServerAddress = "127.0.0.1";
|
|
Settings.Default.ServerPort = 30489;
|
|
|
|
if (File.Exists(Path.Join(Directory.GetCurrentDirectory(), "iBrain_cmd", "main", "main.exe")))
|
|
{
|
|
bool success = _processManager.Start([
|
|
new ServerFileLocation("main.exe", Path.Join(Directory.GetCurrentDirectory(), "iBrain_cmd", "main")),
|
|
new ServerFileLocation("data-storage.exe", Path.Join(Directory.GetCurrentDirectory(), "iBrain_cmd", "data_storage"))
|
|
]);
|
|
if (!success)
|
|
{
|
|
_warningSystem.ShowDialog(WarningWindowKind.Error, true, "SystemCrashing");
|
|
_logger.LogError("Cannot start process");
|
|
Current.Shutdown();
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
MainWindow mainWindow = ActivatorUtilities.CreateInstance<MainWindow>(_serviceProvider);
|
|
mainWindow.AddMainControl(new BuptIBrainControl(ActivatorUtilities.GetServiceOrCreateInstance<ILiviaControlViewModel>(ServiceProviderFactory.ServiceProvider)));
|
|
MainWindow = mainWindow;
|
|
|
|
if (!_serialKeyManager.Validate())
|
|
{
|
|
ValidateSerialKeyDialog dialog = new();
|
|
bool result = dialog.ShowDialog() ?? false;
|
|
if (!result)
|
|
{
|
|
_logger.LogWarning("ValidateSerialKeyDialog closed without success, shutting down");
|
|
Current.Shutdown();
|
|
}
|
|
}
|
|
|
|
mainWindow.Show();
|
|
|
|
_logger.LogInformation("App Started");
|
|
}
|
|
} |