using Harmonia.Core.Extensions; using Harmonia.WinUI.Caching; using Harmonia.WinUI.Messaging; using Harmonia.WinUI.Session; using Harmonia.WinUI.Storage; using Harmonia.WinUI.ViewModels; using Microsoft.Extensions.DependencyInjection; using Microsoft.UI.Xaml; using System; namespace Harmonia.WinUI; public partial class App : Application { private Window? _mainWindow; public static IServiceProvider ServiceProvider { get; private set; } static App() { ServiceCollection services = new(); services.AddSingleton(); //services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(sp => sp.GetRequiredService().Session.Window); services.AddSingleton(sp => sp.GetRequiredService().Session.Player); services.AddSingleton(sp => sp.GetRequiredService().Session.Playlist); services.AddSingleton(); services.AddSingleton(); services.AddHarmonia(); ServiceProvider = services.BuildServiceProvider(); } public App() { InitializeComponent(); } protected override async void OnLaunched(LaunchActivatedEventArgs args) { await ServiceProvider.InitializeHarmoniaAsync(); ISessionService sessionService = ServiceProvider.GetRequiredService(); await sessionService.LoadAsync(); ISessionRestorer sessionRestorer = ServiceProvider.GetRequiredService(); sessionRestorer.Restore(); ISessionTracker sessionTracker = ServiceProvider.GetRequiredService(); sessionTracker.Start(); _mainWindow = ServiceProvider.GetRequiredService(); _mainWindow.Activate(); } }