using Microsoft.Extensions.DependencyInjection; using Toolkit.Foundation; namespace Bitvault; public class ModifiedItemHandler(IServiceProvider serviceProvider, ICache cache, IPublisher publisher) : INotificationHandler> { public Task Handle(ModifiedEventArgs args) { Item oldItem = args.OldView; Item newItem = args.NewValue; if (cache.TryGetValue(oldItem, out Item? cachedItem)) { if (cachedItem is not null) { IServiceScope serviceScope = serviceProvider.CreateScope(); IValueStore valueStore = serviceScope.ServiceProvider.GetRequiredService>(); int oldIndex = cache.IndexOf(cachedItem); cache.Remove(cachedItem); cache.Add(newItem); int newIndex = cache.IndexOf(newItem); valueStore.Set(newItem); publisher.Publish(MoveTo.As(oldIndex, newIndex), nameof(ContainerViewModel)); } } return Task.CompletedTask; } }