using CommunityToolkit.Mvvm.ComponentModel; using Toolkit.Foundation; namespace Bitvault; [Enumerate(nameof(ContainerViewModel))] public partial class ContainerViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, ISubscription subscriber, IDisposer disposer, IContentTemplate template, NamedComponent named, string? filter = null) : ObservableCollectionViewModel(provider, factory, mediator, publisher, subscriber, disposer), INotificationHandler>> { [ObservableProperty] private string? filter = filter; [ObservableProperty] private string named = $"{named}"; public IContentTemplate Template { get; set; } = template; public override async Task OnActivated() { Publisher.Publish(Activated.As()); await base.OnActivated(); } public override async Task OnDeactivated() { Publisher.Publish(Deactivated.As()); await base.OnDeactivated(); } public Task Handle(RequestEventArgs> args) { if (args.Value is Filter filter) { Filter = filter.Value; Enumerate(); } return Task.CompletedTask; } protected override IEnumerate PrepareEnumeration(object? key) => EnumerateEventArgs.With(new ContainerViewModelConfiguration { Filter = Filter }) with { Key = key }; }