Enabled ability to order containers and the ability to insert new containers to their correct order

This commit is contained in:
TheXamlGuy
2024-05-12 18:28:13 +01:00
parent 40671e38b6
commit 77e79a603e
11 changed files with 77 additions and 69 deletions
+10 -3
View File
@@ -1,22 +1,29 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Toolkit.Foundation;
namespace Bitvault;
public record ContainerActivatedHandler(IPublisher publisher) :
public class ContainerActivatedHandler(IContainerHostCollection containers,
IPublisher publisher) :
INotificationHandler<Activated<IComponentHost>>
{
public async Task Handle(Activated<IComponentHost> args, CancellationToken cancellationToken = default)
{
if (args.Value is IComponentHost container)
{
List<IComponentHost> sortedContainers = [.. containers, container];
sortedContainers = [.. sortedContainers.OrderBy(x => x.GetConfiguration< ContainerConfiguration>() is ContainerConfiguration configuration ? configuration.Name : null)];
int index = sortedContainers.IndexOf(container);
if (container.Services.GetRequiredService<ContainerConfiguration>() is ContainerConfiguration configuration)
{
if (container.Services.GetRequiredService<IServiceFactory>() is IServiceFactory factory)
{
if (factory.Create<ContainerNavigationViewModel>(configuration.Name) is ContainerNavigationViewModel viewModel)
{
await publisher.Publish(new Create<IMainNavigationViewModel>(viewModel),
await publisher.Publish(new Insert<IMainNavigationViewModel>(index, viewModel),
nameof(MainViewModel), cancellationToken);
}
}