using Microsoft.Extensions.DependencyInjection; using Toolkit.Foundation; namespace Bitvault; public class LockerActivatedHandler(ILockerHostCollection lockers, IPublisher publisher) : INotificationHandler> { public Task Handle(ActivatedEventArgs args) { if (args.Value is IComponentHost locker) { List sortedLockers = [.. lockers, locker]; sortedLockers = [.. sortedLockers.OrderBy(x => x.GetConfiguration() is LockerConfiguration configuration ? configuration.Name : null)]; int index = sortedLockers.IndexOf(locker); if (locker.Services.GetRequiredService() is LockerConfiguration configuration) { if (locker.Services.GetRequiredService() is IServiceFactory serviceFactory) { if (serviceFactory.Create(configuration.Name) is LockerNavigationViewModel viewModel) { publisher.Publish(new InsertEventArgs(index, viewModel), nameof(MainViewModel)); } } } } return Task.CompletedTask; } }