using Microsoft.Extensions.DependencyInjection; using Toolkit.Foundation; namespace Bitvault; public class VaultHandler(IComponentFactory factory) : IHandler, bool> { public async Task Handle(Create args, CancellationToken cancellationToken) { if (args.Value is Vault vault) { if (factory.Create($"Vault:{vault.Name}", new VaultConfiguration { Name = vault.Name }) is IComponentHost host) { if (host.Services.GetRequiredService() is IMediator mediator) { if (await mediator.Handle, bool>(Create.As(new VaultStorage(vault.Name, vault.Password)), cancellationToken)) { await host.StartAsync(cancellationToken); } } } } return false; } }