using Microsoft.Extensions.DependencyInjection; using Toolkit.Foundation; namespace Bitvault; public class ModifiedItemHandler(IServiceProvider serviceProvider, IPublisher publisher) : INotificationHandler> { public Task Handle(ModifiedEventArgs args) { Item oldItem = args.OldView; Item newItem = args.NewValue; ICache cache = serviceProvider.GetRequiredService>(); 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(LockerViewModel)); } } return Task.CompletedTask; } }