diff --git a/Bitvault.Avalonia/App.axaml b/Bitvault.Avalonia/App.axaml
index a893936..b7324bf 100644
--- a/Bitvault.Avalonia/App.axaml
+++ b/Bitvault.Avalonia/App.axaml
@@ -17,47 +17,9 @@
-
-
-
-
-
- 0,5,6,6
avares://HyperX.Launcher.Avalonia/Assets/SegoeIcons.ttf#Segoe Fluent Icons
-
-
0
0,8,0,0
diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs
index 36e25d6..236c4cd 100644
--- a/Bitvault.Avalonia/App.axaml.cs
+++ b/Bitvault.Avalonia/App.axaml.cs
@@ -36,8 +36,7 @@ public partial class App : Application
services.AddTemplate("Main");
services.AddHandler();
- services.AddConfiguration(args => args.Name = "Personal",
- $"{nameof(VaultConfiguration)}:Personal");
+ services.AddConfiguration(args => args.Name = "Personal", "Vault:Personal");
})
.Build();
diff --git a/Bitvault.Avalonia/LockView.axaml b/Bitvault.Avalonia/LockView.axaml
index ac86b12..28fa241 100644
--- a/Bitvault.Avalonia/LockView.axaml
+++ b/Bitvault.Avalonia/LockView.axaml
@@ -1,9 +1,15 @@
-
- Welcome to Avalonia!
-
+
+
+
+
+
+
+
+
+
diff --git a/Bitvault.Avalonia/LockView.axaml.cs b/Bitvault.Avalonia/LockView.axaml.cs
index 60f4fd2..487033b 100644
--- a/Bitvault.Avalonia/LockView.axaml.cs
+++ b/Bitvault.Avalonia/LockView.axaml.cs
@@ -1,12 +1,8 @@
using Avalonia.Controls;
-namespace Bitvault.Avalonia
+namespace Bitvault.Avalonia;
+
+public partial class LockView : UserControl
{
- public partial class LockView : Window
- {
- public LockView()
- {
- InitializeComponent();
- }
- }
+ public LockView() => InitializeComponent();
}
diff --git a/Bitvault.Avalonia/VaultComponent.cs b/Bitvault.Avalonia/VaultComponent.cs
index 2bd9b7b..942db67 100644
--- a/Bitvault.Avalonia/VaultComponent.cs
+++ b/Bitvault.Avalonia/VaultComponent.cs
@@ -16,5 +16,7 @@ public class VaultComponent :
services.AddTemplate();
services.AddTemplate("Vault");
+ services.AddTemplate("Lock");
+
});
}
diff --git a/Bitvault.Avalonia/VaultNavigationView.axaml b/Bitvault.Avalonia/VaultNavigationView.axaml
index a0b14ec..6439325 100644
--- a/Bitvault.Avalonia/VaultNavigationView.axaml
+++ b/Bitvault.Avalonia/VaultNavigationView.axaml
@@ -5,4 +5,10 @@
xmlns:vm="using:Bitvault"
x:DataType="vm:VaultNavigationViewModel"
Content="{Binding Name}"
- MenuItemsSource="{Binding}" />
+ MenuItemsSource="{Binding}">
+
+
+
+
+
+
diff --git a/Bitvault/LoginViewModel.cs b/Bitvault/LockViewModel.cs
similarity index 69%
rename from Bitvault/LoginViewModel.cs
rename to Bitvault/LockViewModel.cs
index 26a33e4..8055f9a 100644
--- a/Bitvault/LoginViewModel.cs
+++ b/Bitvault/LockViewModel.cs
@@ -7,4 +7,11 @@ public class LockViewModel(IServiceProvider serviceProvider,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer) :
- ObservableViewModel(serviceProvider, serviceFactory, publisher, subscriber, disposer);
\ No newline at end of file
+ ObservableViewModel(serviceProvider, serviceFactory, publisher, subscriber, disposer),
+ IConfirmation
+{
+ public Task Confirm()
+ {
+ return Task.FromResult(false);
+ }
+}
\ No newline at end of file
diff --git a/Bitvault/Locked.cs b/Bitvault/Locked.cs
index 072760e..43b8f69 100644
--- a/Bitvault/Locked.cs
+++ b/Bitvault/Locked.cs
@@ -1,3 +1,5 @@
-namespace Bitvault;
+using Toolkit.Foundation;
-public record Locked;
+namespace Bitvault;
+
+public record Locked : INotification;
diff --git a/Bitvault/Unlocked.cs b/Bitvault/Unlocked.cs
index 551b9f9..3b0d0bf 100644
--- a/Bitvault/Unlocked.cs
+++ b/Bitvault/Unlocked.cs
@@ -1,3 +1,5 @@
-namespace Bitvault;
+using Toolkit.Foundation;
-public record Unlocked;
\ No newline at end of file
+namespace Bitvault;
+
+public record Unlocked : INotification;
\ No newline at end of file
diff --git a/Bitvault/VaultComponentsInitializer.cs b/Bitvault/VaultComponentsInitializer.cs
index 5dc00fc..aae186b 100644
--- a/Bitvault/VaultComponentsInitializer.cs
+++ b/Bitvault/VaultComponentsInitializer.cs
@@ -5,12 +5,13 @@ namespace Bitvault;
public class VaultComponentsInitializer(IServiceProvider provider,
IProxyServiceCollection proxy,
- IEnumerable> configurations,
+ IEnumerable> configurations,
+ IComponentScopeCollection scopes,
IVaultHostCollection vaults) : IInitializer
{
- public Task Initialize()
+ public async Task Initialize()
{
- foreach (IConfiguration configuration in configurations)
+ foreach (IConfigurationDescriptor configuration in configurations)
{
if (provider.GetRequiredService() is IVaultComponent component)
{
@@ -36,16 +37,19 @@ public class VaultComponentsInitializer(IServiceProvider provider,
provider.GetRequiredService());
services.AddRange(proxy.Services);
+
+ services.AddSingleton(new ComponentScope(configuration.Section));
});
builder.AddConfiguration(configuration.Section, configuration.Value);
IComponentHost host = builder.Build();
- host.StartAsync();
+
+ scopes.Add(new ComponentScopeDescriptor(configuration.Section,
+ host.Services.GetRequiredService()));
vaults.Add(host);
+ await host.StartAsync();
}
}
-
- return Task.CompletedTask;
}
}
diff --git a/Bitvault/VaultNavigationViewModel.cs b/Bitvault/VaultNavigationViewModel.cs
index e00f837..931bed1 100644
--- a/Bitvault/VaultNavigationViewModel.cs
+++ b/Bitvault/VaultNavigationViewModel.cs
@@ -5,13 +5,18 @@ namespace Bitvault;
public partial class VaultNavigationViewModel :
ObservableCollectionViewModel,
- IMainNavigationViewModel
+ IMainNavigationViewModel,
+ INotificationHandler,
+ INotificationHandler
{
+ [ObservableProperty]
+ private bool locked;
+
[ObservableProperty]
private string name;
public VaultNavigationViewModel(IServiceProvider serviceProvider,
- IServiceFactory serviceFactory,
+ IServiceFactory serviceFactory,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer,
@@ -21,11 +26,30 @@ public partial class VaultNavigationViewModel :
Template = template;
Name = name;
+
+
+ }
+
+ public IContentTemplate Template { get; set; }
+
+ public Task Handle(Unlocked args, CancellationToken cancellationToken = default)
+ {
+ Locked = true;
+
Add();
Add();
Add();
Add();
+
+ return Task.CompletedTask;
+
}
- public IContentTemplate Template { get; set; }
+ public Task Handle(Locked args, CancellationToken cancellationToken = default)
+ {
+ Locked = true;
+ Clear();
+
+ return Task.CompletedTask;
+ }
}
\ No newline at end of file