break widget related stuff into its own project as the main HB project was just becoming too bloated

This commit is contained in:
TheXamlGuy
2024-01-24 20:50:59 +00:00
parent d1b57d5d16
commit 5e26e97f6b
61 changed files with 178 additions and 95 deletions
+30
View File
@@ -0,0 +1,30 @@
using Microsoft.Extensions.DependencyInjection;
namespace Hyperbar.Widget;
public class WidgetHandler(IProxyServiceCollection<IWidgetBuilder> typedServices,
IServiceProvider provider,
IMediator mediator) :
INotificationHandler<Created<IWidget>>
{
public async Task Handle(Created<IWidget> notification,
CancellationToken cancellationToken)
{
if(notification.Value is IWidget widget)
{
IWidgetBuilder builder = widget.Create();
builder.ConfigureServices(args =>
{
args.AddTransient(_ => provider.GetRequiredService<IProxyService<IMediator>>());
args.AddRange(typedServices.Services);
});
IWidgetHost host = builder.Build();
await host.InitializeAsync();
await mediator.PublishAsync(new Created<IWidgetHost>(host),
cancellationToken);
}
}
}