using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Toolkit.Foundation; namespace Bitvault; public class ContainerActivatedHandler(IContainerHostCollection containers, IPublisher publisher) : INotificationHandler> { public async Task Handle(ActivatedEventArgs args, CancellationToken cancellationToken = default) { if (args.Value is IComponentHost container) { List sortedContainers = [.. containers, container]; sortedContainers = [.. sortedContainers.OrderBy(x => x.GetConfiguration< ContainerConfiguration>() is ContainerConfiguration configuration ? configuration.Name : null)]; int index = sortedContainers.IndexOf(container); if (container.Services.GetRequiredService() is ContainerConfiguration configuration) { if (container.Services.GetRequiredService() is IServiceFactory serviceFactory) { if (serviceFactory.Create(configuration.Name) is ContainerNavigationViewModel viewModel) { await publisher.Publish(new InsertEventArgs(index, viewModel), nameof(MainViewModel), cancellationToken); } } } } } }