From e28386a2d55247fb098e36913dd8c1211d909403 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Sun, 21 Apr 2024 21:10:43 +0100 Subject: [PATCH] wip --- Bitvault.Avalonia/App.axaml.cs | 8 ++- .../VaultComponentsCollectionInitializer.cs | 50 ------------------- Bitvault/VaultComponentsInitializer.cs | 49 ++++++++++++++++++ Bitvault/VaultConfiguration.cs | 2 +- Bitvault/VaultConfigurationCollection.cs | 5 -- Toolkit | 2 +- 6 files changed, 54 insertions(+), 62 deletions(-) delete mode 100644 Bitvault/VaultComponentsCollectionInitializer.cs create mode 100644 Bitvault/VaultComponentsInitializer.cs delete mode 100644 Bitvault/VaultConfigurationCollection.cs diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs index 1a6116c..0d88697 100644 --- a/Bitvault.Avalonia/App.axaml.cs +++ b/Bitvault.Avalonia/App.axaml.cs @@ -23,8 +23,8 @@ public partial class App : Application services.AddAvalonia(); services.AddHandler(); - //services.AddTransient(); - //services.AddInitializer(); + services.AddTransient(); + services.AddInitializer(); if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime) { @@ -42,9 +42,7 @@ public partial class App : Application services.AddTemplate("Vault"); - services.AddConfiguration(args => args.Name = "foo1", $"{nameof(VaultConfiguration)}:Personal"); - services.AddConfiguration(args => args.Name = "foo2", $"{nameof(VaultConfiguration)}:Test"); - + services.AddConfiguration($"{nameof(VaultConfiguration)}:Personal"); }) .Build(); diff --git a/Bitvault/VaultComponentsCollectionInitializer.cs b/Bitvault/VaultComponentsCollectionInitializer.cs deleted file mode 100644 index 445100a..0000000 --- a/Bitvault/VaultComponentsCollectionInitializer.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Toolkit.Foundation; - -namespace Bitvault; - -public class VaultComponentsCollectionInitializer(IServiceProvider provider, - IProxyServiceCollection proxy, - VaultConfigurationCollection configurations) : IInitializer -{ - public Task Initialize() - { - //for (int index = 0; index < configurations.Count; index++) - //{ - // VaultConfiguration configuration = configurations[index]; - // if (provider.GetRequiredService() is IVaultComponent component) - // { - // IComponentBuilder builder = component.Create(); - // builder.AddServices(services => - // { - // services.AddTransient(_ => - // provider.GetRequiredService>()); - - // services.AddTransient(_ => - // provider.GetRequiredService>()); - - // services.AddScoped(_ => - // provider.GetRequiredService()); - - // services.AddScoped(_ => - // provider.GetRequiredService()); - - // services.AddScoped(_ => - // provider.GetRequiredService()); - - // services.AddTransient(_ => - // provider.GetRequiredService()); - - // services.AddRange(proxy.Services); - // }); - - // builder.AddConfiguration(name: $"{nameof(VaultConfigurationCollection)}:{configuration.Name}"); - - // IComponentHost host = builder.Build(); - // host.StartAsync(); - // } - //} - - return Task.CompletedTask; - } -} diff --git a/Bitvault/VaultComponentsInitializer.cs b/Bitvault/VaultComponentsInitializer.cs new file mode 100644 index 0000000..1829013 --- /dev/null +++ b/Bitvault/VaultComponentsInitializer.cs @@ -0,0 +1,49 @@ +using Microsoft.Extensions.DependencyInjection; +using Toolkit.Foundation; + +namespace Bitvault; + +public class VaultComponentsInitializer(IServiceProvider provider, + IProxyServiceCollection proxy, + IEnumerable> configurations) : IInitializer +{ + public Task Initialize() + { + foreach (IConfiguration configuration in configurations) + { + if (provider.GetRequiredService() is IVaultComponent component) + { + IComponentBuilder builder = component.Create(); + builder.AddServices(services => + { + services.AddTransient(_ => + provider.GetRequiredService>()); + + services.AddTransient(_ => + provider.GetRequiredService>()); + + services.AddScoped(_ => + provider.GetRequiredService()); + + services.AddScoped(_ => + provider.GetRequiredService()); + + services.AddScoped(_ => + provider.GetRequiredService()); + + services.AddTransient(_ => + provider.GetRequiredService()); + + services.AddRange(proxy.Services); + }); + + builder.AddConfiguration(configuration.Section); + + IComponentHost host = builder.Build(); + host.StartAsync(); + } + } + + return Task.CompletedTask; + } +} diff --git a/Bitvault/VaultConfiguration.cs b/Bitvault/VaultConfiguration.cs index ee70f34..c137168 100644 --- a/Bitvault/VaultConfiguration.cs +++ b/Bitvault/VaultConfiguration.cs @@ -5,5 +5,5 @@ namespace Bitvault; public record VaultConfiguration : ComponentConfiguration { - public string? Name { get; set; } + } diff --git a/Bitvault/VaultConfigurationCollection.cs b/Bitvault/VaultConfigurationCollection.cs deleted file mode 100644 index fe8e1d2..0000000 --- a/Bitvault/VaultConfigurationCollection.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System.Dynamic; - -namespace Bitvault; - -public class VaultConfigurationCollection : DynamicObject; \ No newline at end of file diff --git a/Toolkit b/Toolkit index 21481a8..969c740 160000 --- a/Toolkit +++ b/Toolkit @@ -1 +1 @@ -Subproject commit 21481a82d889566d51cba116a9d9159cc0584e90 +Subproject commit 969c740f2d9850eac2114245f0455a519cf48e19