Select Git revision
App.axaml.cs
App.axaml.cs 3.35 KiB
using System;
using System.IO;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Input;
using Avalonia.Markup.Xaml;
using Blacklight.Util;
using Blacklight.ViewModels;
using Blacklight.Views;
using Lightquark.NET;
using Microsoft.Extensions.DependencyInjection;
namespace Blacklight;
public partial class App : Application
{
public static IServiceProvider? Services { get; set; }
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
var services = new ServiceCollection();
services.AddSingleton<MainWindowViewModel>();
services.AddSingleton<ViewNavigationService>();
services.AddSingleton<Client>();
services.AddSingleton<ClientViewModel>();
services.AddSingleton<LoginViewModel>();
var serviceProvider = services.BuildServiceProvider();
Services = serviceProvider;
serviceProvider.GetRequiredService<ViewNavigationService>();
var mainWindowViewModel = serviceProvider.GetRequiredService<MainWindowViewModel>();
var loginViewModel = serviceProvider.GetRequiredService<LoginViewModel>();
var client = serviceProvider.GetRequiredService<Client>();
client.OnLogOut = () =>
{
mainWindowViewModel.CurrentViewModel = loginViewModel;
var path = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "blacklight", "login.json");
try
{
Console.WriteLine("Deleting login.json");
File.Delete(path);
}
catch (Exception ex)
{
Console.Error.WriteLine(ex);
}
};
var clientViewModel = serviceProvider.GetRequiredService<ClientViewModel>();
switch (ApplicationLifetime)
{
case IClassicDesktopStyleApplicationLifetime desktopLifetime:
{
var mainWindow = new MainWindow
{
DataContext = mainWindowViewModel
};
mainWindow.Closing += (_, _) =>
{