using AutoCat.Utils; using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; using AutoCat.ViewModels; using AutoCat.Windows; using AutoCatCore.Services.Api; using AutoCatCore.Services.Storage; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace AutoCat; public class App : Application { public IHost AppHost { get; private set; } private static void RegisterDependencies(HostBuilderContext context, IServiceCollection services) { // Services services.AddSingleton(); services.AddSingleton(); // ViewModels services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); // Windows services.AddWindowFactory(); services.AddWindowFactory(); } public App() { AppHost = Host.CreateDefaultBuilder() .ConfigureServices(RegisterDependencies) .Build(); } public override void Initialize() { AvaloniaXamlLoader.Load(this); } public override void OnFrameworkInitializationCompleted() { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { var storageService = AppHost.Services.GetRequiredService(); desktop.MainWindow = storageService.IsLoggedIn ? AppHost.Services.GetRequiredService() : AppHost.Services.GetRequiredService(); } base.OnFrameworkInitializationCompleted(); } }