diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs index 493e07b..430aa9f 100644 --- a/Bitvault.Avalonia/App.axaml.cs +++ b/Bitvault.Avalonia/App.axaml.cs @@ -39,6 +39,8 @@ public partial class App : Application services.AddHandler(); services.AddTemplate("Main"); + + services.AddTemplate(); services.AddHandler(); services.AddTransient(); diff --git a/Bitvault.Avalonia/VaultComponent.cs b/Bitvault.Avalonia/VaultComponent.cs index e913a4e..aaf7895 100644 --- a/Bitvault.Avalonia/VaultComponent.cs +++ b/Bitvault.Avalonia/VaultComponent.cs @@ -9,9 +9,8 @@ public class VaultComponent : ComponentBuilder.Create() .AddServices(services => { - services.AddInitializer(); + // services.AddInitializer(); - services.AddTemplate(); services.AddTemplate(); services.AddTemplate(); services.AddTemplate(); diff --git a/Bitvault/AllNavigationViewModel.cs b/Bitvault/AllNavigationViewModel.cs index 99ade27..6acebdc 100644 --- a/Bitvault/AllNavigationViewModel.cs +++ b/Bitvault/AllNavigationViewModel.cs @@ -9,4 +9,4 @@ public class AllNavigationViewModel(IServiceProvider provider, ISubscriber subscriber, IDisposer disposer) : ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer), - IMainNavigationViewModel; \ No newline at end of file + IVaultNavigationViewModel; \ No newline at end of file diff --git a/Bitvault/ArchiveNavigationViewModel.cs b/Bitvault/ArchiveNavigationViewModel.cs index c2310e1..77126fe 100644 --- a/Bitvault/ArchiveNavigationViewModel.cs +++ b/Bitvault/ArchiveNavigationViewModel.cs @@ -9,4 +9,4 @@ public class ArchiveNavigationViewModel(IServiceProvider provider, ISubscriber subscriber, IDisposer disposer) : ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer), - IMainNavigationViewModel; \ No newline at end of file + IVaultNavigationViewModel; \ No newline at end of file diff --git a/Bitvault/CategoriesNavigationViewModel.cs b/Bitvault/CategoriesNavigationViewModel.cs index 4f6b192..684a9a1 100644 --- a/Bitvault/CategoriesNavigationViewModel.cs +++ b/Bitvault/CategoriesNavigationViewModel.cs @@ -9,4 +9,4 @@ public class CategoriesNavigationViewModel(IServiceProvider provider, ISubscriber subscriber, IDisposer disposer) : ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer), - IMainNavigationViewModel; \ No newline at end of file + IVaultNavigationViewModel; \ No newline at end of file diff --git a/Bitvault/CreateVaultViewModel.cs b/Bitvault/CreateVaultViewModel.cs index e4f0d09..e4c7836 100644 --- a/Bitvault/CreateVaultViewModel.cs +++ b/Bitvault/CreateVaultViewModel.cs @@ -19,7 +19,6 @@ public partial class CreateVaultViewModel(IServiceProvider provider, public async Task Confirm() { - await Publisher.Publish(Create.As(new Vault(Name))); - return true; + return await Mediator.Handle, bool>(Create.As(new Vault(Name))); } } \ No newline at end of file diff --git a/Bitvault/IMainNavigationViewModel.cs b/Bitvault/IMainNavigationViewModel.cs index 0835c19..4f58127 100644 --- a/Bitvault/IMainNavigationViewModel.cs +++ b/Bitvault/IMainNavigationViewModel.cs @@ -1,3 +1,3 @@ namespace Bitvault; -public interface IMainNavigationViewModel; \ No newline at end of file +public interface IMainNavigationViewModel; diff --git a/Bitvault/IVaultNavigationViewModel.cs b/Bitvault/IVaultNavigationViewModel.cs new file mode 100644 index 0000000..4422fb2 --- /dev/null +++ b/Bitvault/IVaultNavigationViewModel.cs @@ -0,0 +1,3 @@ +namespace Bitvault; + +public interface IVaultNavigationViewModel; \ No newline at end of file diff --git a/Bitvault/StarredNavigationViewModel.cs b/Bitvault/StarredNavigationViewModel.cs index b487225..27b2f7f 100644 --- a/Bitvault/StarredNavigationViewModel.cs +++ b/Bitvault/StarredNavigationViewModel.cs @@ -9,4 +9,4 @@ public class StarredNavigationViewModel(IServiceProvider provider, ISubscriber subscriber, IDisposer disposer) : ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer), - IMainNavigationViewModel; \ No newline at end of file + IVaultNavigationViewModel; \ No newline at end of file diff --git a/Bitvault/VaultHandler.cs b/Bitvault/VaultHandler.cs index 6a67bd5..d1cda3d 100644 --- a/Bitvault/VaultHandler.cs +++ b/Bitvault/VaultHandler.cs @@ -1,35 +1,37 @@ -using Toolkit.Foundation; +using LiteDB; +using Toolkit.Foundation; namespace Bitvault; public class VaultStorageHandler : - INotificationHandler> + IHandler, bool> { - public Task Handle(Create args, - CancellationToken cancellationToken = default) + public Task Handle(Create args, CancellationToken cancellationToken) { throw new NotImplementedException(); } } +public class DatabaseFactory +{ + +} + public record VaultStorage(string Name); public class VaultHandler(IVaultFactory factory) : IHandler, bool> { - //public async Task Handle(Create args, - // CancellationToken cancellationToken = default) - //{ - // if (args.Value is Vault vault) - // { - // if (factory.Create($"Vault:{vault.Name}", new VaultConfiguration { Name = vault.Name }) is IComponentHost host) - // { - // await host.StartAsync(cancellationToken); - // } - // } - //} - public Task Handle(Create args, CancellationToken cancellationToken) + public async Task Handle(Create args, CancellationToken cancellationToken) { - throw new NotImplementedException(); + if (args.Value is Vault vault) + { + if (factory.Create($"Vault:{vault.Name}", new VaultConfiguration { Name = vault.Name }) is IComponentHost host) + { + await host.StartAsync(cancellationToken); + } + } + + return true; } } \ No newline at end of file diff --git a/Bitvault/VaultNavigationViewModel.cs b/Bitvault/VaultNavigationViewModel.cs index 13d49c9..7c8dbc6 100644 --- a/Bitvault/VaultNavigationViewModel.cs +++ b/Bitvault/VaultNavigationViewModel.cs @@ -4,7 +4,7 @@ using Toolkit.Foundation; namespace Bitvault; public partial class VaultNavigationViewModel : - ObservableCollectionViewModel, + ObservableCollectionViewModel, IMainNavigationViewModel, INotificationHandler, INotificationHandler diff --git a/Bitvault/VaultNavigationViewModelHandler.cs b/Bitvault/VaultNavigationViewModelHandler.cs index 31c61f7..c9a74a9 100644 --- a/Bitvault/VaultNavigationViewModelHandler.cs +++ b/Bitvault/VaultNavigationViewModelHandler.cs @@ -1,27 +1,21 @@ -using Microsoft.Extensions.DependencyInjection; -using Toolkit.Foundation; +using Toolkit.Foundation; namespace Bitvault; public class VaultNavigationViewModelHandler(IPublisher publisher, - IVaultHostCollection vaults) : + IServiceFactory factory, + IEnumerable> descriptors) : INotificationHandler> { public async Task Handle(Enumerate args, CancellationToken cancellationToken = default) { - foreach (IComponentHost vault in vaults) + foreach (IConfigurationDescriptor descriptor in descriptors) { - if (vault.Services.GetRequiredService() is VaultConfiguration configuration) + if (factory.Create(descriptor.Value.Name) is VaultNavigationViewModel viewModel) { - if (vault.Services.GetRequiredService() is IServiceFactory factory) - { - if (factory.Create(configuration.Name) is VaultNavigationViewModel viewModel) - { - await publisher.Publish(new Create(viewModel), - nameof(MainViewModel), cancellationToken); - } - } + await publisher.Publish(new Create(viewModel), + nameof(MainViewModel), cancellationToken); } } }