AutoCatAvalonia/AutoCat/App.axaml.cs

59 lines
1.7 KiB
C#

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 partial class App : Application
{
public IHost AppHost { get; private set; }
private static void RegisterDependencies(HostBuilderContext context, IServiceCollection services)
{
// Services
services.AddSingleton<IStorageService, StorageService>();
services.AddSingleton<IApiService, ApiService>();
// ViewModels
services.AddTransient<HistoryViewModel>();
services.AddTransient<AuthWindowViewModel>();
services.AddTransient<MainWindowViewModel>();
// Windows
services.AddWindowFactory<AuthWindow>();
services.AddWindowFactory<MainWindow>();
}
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<IStorageService>();
desktop.MainWindow = storageService.IsLoggedIn
? AppHost.Services.GetRequiredService<MainWindow>()
: AppHost.Services.GetRequiredService<AuthWindow>();
}
base.OnFrameworkInitializationCompleted();
}
}