using Microsoft.Extensions.DependencyInjection; using Toolkit.Foundation; namespace Bitvault; public class CreatedItemHandler(IServiceProvider serviceProvider, ICache> cache, IPublisher publisher) : INotificationHandler>> { public Task Handle(CreatedEventArgs> args) { if (args.Value is Item<(Guid, string)> item) { (Guid id, string name) = item.Value; IServiceScope serviceScope = serviceProvider.CreateScope(); IServiceFactory serviceFactory = serviceScope.ServiceProvider.GetRequiredService(); IValueStore> valueStore = serviceScope.ServiceProvider.GetRequiredService>>(); if (serviceFactory.Create(id, name, "Description", true) is ItemNavigationViewModel viewModel) { cache.Add(item); int index = cache.IndexOf(item); valueStore.Set(item); publisher.Publish(Insert.As(index, viewModel), nameof(ItemCollectionViewModel)); } } return Task.CompletedTask; } }