using Toolkit.Foundation; namespace Wallet; public class ConfirmUpdateItemHandler(IDecoratorService> itemDecorator, IDecoratorService itemConfigurationDecorator, IDecoratorService itemHeaderConfiguration, IMediator mediator, IPublisher publisher) : INotificationHandler> { public async Task Handle(ConfirmEventArgs args) { if (itemDecorator?.Service is Item<(Guid, string)> item && itemHeaderConfiguration.Service is ItemHeaderConfiguration headerConfiguration && itemConfigurationDecorator.Service is ItemConfiguration itemConfiguration) { if (headerConfiguration?.Name is { Length: > 0 } name && headerConfiguration.Category is { Length: > 0 } category) { IImageDescriptor? imageDescriptor = headerConfiguration.ImageDescriptor; publisher.Publish(Notify.As(new Item(name))); publisher.Publish(Notify.As(new Item(imageDescriptor))); (Guid id, _) = item.Value; await mediator.Handle>, bool>(new UpdateEventArgs>(new Item<(Guid, string, string, IImageDescriptor?, ItemConfiguration)>((id, name, category, imageDescriptor, itemConfiguration)))); Item<(Guid, string)> newItem = new((id, name)); publisher.Publish(Modified.As(item, newItem)); itemDecorator.Set(newItem); publisher.Publish(Changed.As(newItem)); } } } }