using System; using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; using ClaudeDo.Ui.Services; using ClaudeDo.Ui.ViewModels; using ClaudeDo.Ui.Views; using Microsoft.Extensions.DependencyInjection; namespace ClaudeDo.App; public partial class App : Application { private readonly IServiceProvider? _services; // Parameterless ctor is required by the XAML previewer / designer. public App() { } public App(IServiceProvider services) => _services = services; public override void Initialize() { AvaloniaXamlLoader.Load(this); } public override void OnFrameworkInitializationCompleted() { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { var services = _services ?? throw new InvalidOperationException("App was constructed without a service provider."); FocusClearing.Install(); desktop.MainWindow = new MainWindow { DataContext = services.GetRequiredService(), }; // Kick off the SignalR retry loop — reconnects indefinitely if the worker // is not up yet, or goes down and comes back. _ = services.GetRequiredService().StartAsync(); } base.OnFrameworkInitializationCompleted(); } }