59 lines
1.7 KiB
C#
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();
|
|
}
|
|
} |