using Microsoft.Extensions.DependencyInjection; namespace Hyperbar.Widget; public class WidgetExtensionHandler(IProxyServiceCollection typedServices, IServiceProvider provider) : INotificationHandler> { public async Task Handle(Created notification, CancellationToken cancellationToken) { if(notification.Value is WidgetExtension widgetExtension) { IWidgetBuilder builder = widgetExtension.Widget.Create(); builder.ConfigureServices(args => { args.AddSingleton(widgetExtension.Assembly); args.AddTransient(_ => provider.GetRequiredService>()); args.AddRange(typedServices.Services); }); IWidgetHost host = builder.Build(); await host.InitializeAsync(); } } }