diff --git a/Bitvault/ItemHeaderViewModel.cs b/Bitvault/ItemHeaderViewModel.cs index 1711e78..639ac35 100644 --- a/Bitvault/ItemHeaderViewModel.cs +++ b/Bitvault/ItemHeaderViewModel.cs @@ -1,16 +1,10 @@ using CommunityToolkit.Mvvm.ComponentModel; +using System.Xml.Linq; using Toolkit.Foundation; namespace Bitvault; -public partial class ItemHeaderViewModel(IServiceProvider provider, - IServiceFactory factory, - IMediator mediator, - IPublisher publisher, - ISubscription subscriber, - IDisposer disposer, - bool immutable, - string? value = null) : Observable(provider, factory, mediator, publisher, subscriber, disposer, value), +public partial class ItemHeaderViewModel : Observable, IHandler, bool>, IHandler, ItemHeaderConfiguration>, INotificationHandler>, @@ -19,7 +13,22 @@ public partial class ItemHeaderViewModel(IServiceProvider provider, IItemEntryViewModel { [ObservableProperty] - private bool immutable = immutable; + private bool immutable; + + public ItemHeaderViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscription subscriber, + IDisposer disposer, + bool immutable, + string? value = null) : base(provider, factory, mediator, publisher, subscriber, disposer, value) + { + Immutable = immutable; + Value = value; + + Track(nameof(Value), () => Value, newValue => Value = newValue); + } public Task Handle(ValidationEventArgs args, CancellationToken cancellationToken) @@ -33,9 +42,19 @@ public partial class ItemHeaderViewModel(IServiceProvider provider, public Task Handle(EditEventArgs args) => Task.FromResult(Immutable = false); - public Task Handle(CancelEventArgs args) => - Task.FromResult(Immutable = true); + public Task Handle(CancelEventArgs args) + { + Revert(); + Immutable = true; - public Task Handle(ConfirmEventArgs args) => - Task.FromResult(Immutable = true); + return Task.CompletedTask; + } + + public Task Handle(ConfirmEventArgs args) + { + Commit(); + Immutable = true; + + return Task.CompletedTask; + } }