using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Toolkit.Foundation; namespace Wallet; public partial class WalletNavigationViewModel : ObservableCollection, IMainNavigationViewModel, INotificationHandler>, INotificationHandler>, INotificationHandler>, INotificationHandler>, ISelectable { [ObservableProperty] private bool isExpanded = true; [ObservableProperty] private string name; [ObservableProperty] private bool isOpened; [ObservableProperty] private bool isSelected; [ObservableProperty] private bool isActivated; [ObservableProperty] private IImageDescriptor? imageDescriptor; public WalletNavigationViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, ISubscriber subscriber, IDisposer disposer, IContentTemplate template, string name, IImageDescriptor? imageDescriptor = default, bool isSelected = false) : base(provider, factory, mediator, publisher, subscriber, disposer) { Template = template; Name = name; ImageDescriptor = imageDescriptor; IsSelected = isSelected; } public IContentTemplate Template { get; set; } public Task Handle(OpenedEventArgs args) { Add(); Add("All", 0); Add("Favourites", 0); Add("Archive", 0); Add("Categories", 0); IsOpened = true; Publisher.Publish(Changed.As()); return Task.CompletedTask; } public Task Handle(ClosedEventArgs args) { IsOpened = true; Clear(); return Task.CompletedTask; } public Task Handle(DeactivatedEventArgs args) { IsActivated = false; return Task.CompletedTask; } [RelayCommand] private async Task Lock() { if (await Mediator.Handle, bool>(Close.As())) { IsOpened = false; } } public Task Handle(ActivatedEventArgs args) { IsActivated = true; return Task.CompletedTask; } }