using Toolkit.Foundation; namespace Bitvault; public class ConfirmItemHandler(IValueStore valueStore, IMediator mediator, IPublisher publisher) : INotificationHandler> { public async Task Handle(ConfirmEventArgs args) { ItemHeaderConfiguration? configuration = await mediator.Handle, ItemHeaderConfiguration>(args); if (valueStore?.Value is Item item) { (bool Success, int Id, string Name) = await mediator.Handle, (bool, int, string)>(new EditEventArgs<(int, ItemConfiguration)>((item.Id, new ItemConfiguration { Name = configuration?.Name }))); if (Success) { Item newItem = new Item { Id = Id, Name = Name }; publisher.Publish(Modified.As(item, newItem)); valueStore.Set(newItem); } } else { (bool Success, int Id, string Name) = await mediator.Handle, (bool, int, string)>(new CreateEventArgs(new ItemConfiguration { Name = configuration?.Name })); if (Success) { publisher.Publish(Created.As(new Item { Id = Id, Name = Name })); } } } }