Initilize widget setting without starting its host

This commit is contained in:
TheXamlGuy
2024-01-31 22:33:23 +00:00
parent a2a5591502
commit 6dbe2db584
25 changed files with 125 additions and 83 deletions
+21 -12
View File
@@ -3,25 +3,34 @@
namespace Hyperbar.Widget;
public class WidgetHostHandler(IMediator mediator) :
INotificationHandler<Started<IWidgetHost>>,
INotificationHandler<Stopped<IWidgetHost>>
INotificationHandler<Created<IWidgetHost>>
{
public async Task Handle(Started<IWidgetHost> notification,
//public async Task Handle(Started<IWidgetHost> notification,
// CancellationToken cancellationToken)
//{
// if (notification.Value is IWidgetHost host)
// {
// if (host.Services.GetService<IWidgetViewModel>() is IWidgetViewModel viewModel)
// {
// await mediator.PublishAsync(new Created<IWidgetViewModel>(viewModel),
// nameof(WidgetViewModel), cancellationToken);
// }
// }
//}
public async Task Handle(Created<IWidgetHost> notification,
CancellationToken cancellationToken)
{
if (notification.Value is IWidgetHost host)
{
if (host.Services.GetService<IWidgetViewModel>() is IWidgetViewModel viewModel)
if (host.Services.GetServices<IInitialization>() is
IEnumerable<IInitialization> initializations)
{
await mediator.PublishAsync(new Created<IWidgetViewModel>(viewModel),
nameof(WidgetViewModel), cancellationToken);
foreach (IInitialization initialization in initializations)
{
await initialization.InitializeAsync();
}
}
}
}
public Task Handle(Stopped<IWidgetHost> notification,
CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
}