This commit is contained in:
TheXamlGuy
2024-05-27 04:19:06 +01:00
parent 6a779c1c7d
commit 601e74b6ec
21 changed files with 123 additions and 66 deletions
@@ -2,18 +2,23 @@
namespace Bitvault;
public class AggerateContainerCategoryViewModelHandler(IServiceFactory serviceFactory,
public class AggerateContainerCategoryViewModelHandler(IProxyService<IEnumerable<ItemConfiguration>> proxyConfigurations,
IServiceFactory serviceFactory,
IPublisher publisher) :
INotificationHandler<AggerateEventArgs<ItemNavigationViewModel,
ContainerViewModelConfiguration>>
INotificationHandler<AggerateEventArgs<ItemCategoryNavigationViewModel>>
{
public Task Handle(AggerateEventArgs<ItemNavigationViewModel,
ContainerViewModelConfiguration> args)
public Task Handle(AggerateEventArgs<ItemCategoryNavigationViewModel> args)
{
if (serviceFactory.Create<ItemNavigationViewModel>()
is ItemNavigationViewModel viewModel)
if (proxyConfigurations.Value is IEnumerable<ItemConfiguration> configurations)
{
publisher.Publish(Create.As(viewModel), nameof(ContainerCategoryCollectionViewModel));
foreach (ItemConfiguration configuration in configurations)
{
if (serviceFactory.Create<ItemCategoryNavigationViewModel>(configuration.Name)
is ItemCategoryNavigationViewModel viewModel)
{
publisher.Publish(Create.As(viewModel), nameof(ItemCategoryCollectionViewModel));
}
}
}
return Task.CompletedTask;
@@ -37,7 +37,7 @@ public class AggerateContainerItemViewModelHandler(IMediator mediator,
valueStore.Set(item);
cache.Add(item);
publisher.Publish(Create.As(viewModel), nameof(ContainerItemCollectionViewModel));
publisher.Publish(Create.As(viewModel), nameof(ItemCollectionViewModel));
}
selected = false;
@@ -1,18 +0,0 @@
using Toolkit.Foundation;
namespace Bitvault;
[Aggerate(nameof(ContainerCategoryCollectionViewModel))]
public partial class ContainerCategoryCollectionViewModel :
ObservableCollection<ItemNavigationViewModel>
{
public ContainerCategoryCollectionViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
}
}
+1 -1
View File
@@ -7,7 +7,7 @@ public class ContainerFactory(IComponentFactory componentFactory) :
{
public IComponentHost? Create(string name)
{
if (componentFactory.Create<IContainerComponent, ContainerConfiguration>($"Vault:{name}",
if (componentFactory.Create<IContainerComponent, ContainerConfiguration>($"Locker:{name}",
new ContainerConfiguration { Name = name }) is IComponentHost host)
{
return host;
@@ -37,5 +37,5 @@ public partial class FilterContainerNavigationViewModel : Observable,
[RelayCommand]
public void Invoke() => Publisher.Publish(Notify.As(new Filter(Filter)),
nameof(ContainerItemCollectionViewModel));
nameof(ItemCollectionViewModel));
}
@@ -0,0 +1,17 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Toolkit.Foundation;
namespace Bitvault;
[Aggerate(nameof(ItemCategoryCollectionViewModel))]
public partial class ItemCategoryCollectionViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
IContentTemplate template) :
ObservableCollection<ItemCategoryNavigationViewModel>(provider, factory, mediator, publisher, subscriber, disposer)
{
[ObservableProperty]
private IContentTemplate template = template;
}
@@ -0,0 +1,17 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Toolkit.Foundation;
namespace Bitvault;
public partial class ItemCategoryNavigationViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
string name) :
Observable(provider, factory, mediator, publisher, subscriber, disposer)
{
[ObservableProperty]
private string name = name;
}
@@ -2,15 +2,15 @@
namespace Bitvault;
[Aggerate(nameof(ContainerItemCollectionViewModel))]
public partial class ContainerItemCollectionViewModel :
[Aggerate(nameof(ItemCollectionViewModel))]
public partial class ItemCollectionViewModel :
ObservableCollection<ItemNavigationViewModel>,
INotificationHandler<NotifyEventArgs<Filter>>,
INotificationHandler<NotifyEventArgs<Search>>
{
private ContainerViewModelConfiguration configuration;
public ContainerItemCollectionViewModel(IServiceProvider provider,
public ItemCollectionViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
+1 -1
View File
@@ -17,5 +17,5 @@ public partial class SearchContainerActionViewModel(IServiceProvider provider,
[RelayCommand]
public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)),
nameof(ContainerItemCollectionViewModel));
nameof(ItemCollectionViewModel));
}