using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Toolkit.Foundation; namespace Wallet; public partial class ItemEntryViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, ISubscriber subscriber, IDisposer disposer, ItemState state, ItemEntryConfiguration configuration, string key, TValue value, bool isConcealed, bool isRevealed, double width) : Observable(provider, factory, mediator, publisher, subscriber, disposer, key, value), IItemEntryViewModel, INotificationHandler>, INotificationHandler>, INotificationHandler> where TValue : notnull { [ObservableProperty] private bool isConcealed = isConcealed; [ObservableProperty] private bool isRevealed = isRevealed; [ObservableProperty] private ItemState state = state; [ObservableProperty] private double width = width; public Task Handle(UpdateEventArgs args) => Task.FromResult(State = ItemState.Write); public Task Handle(CancelEventArgs args) { Revert(); State = ItemState.Read; return Task.CompletedTask; } public Task Handle(ConfirmEventArgs args) { Commit(); State = ItemState.Read; return Task.CompletedTask; } protected override void OnValueChanged() => configuration.Value = Value; [RelayCommand] private void Hide() { IsRevealed = false; } [RelayCommand] private void Reveal() { IsRevealed = true; } }