diff --git a/Bitvault.Avalonia/AllNavigationView.axaml b/Bitvault.Avalonia/AllNavigationView.axaml
index 5647b38..3ad6c08 100644
--- a/Bitvault.Avalonia/AllNavigationView.axaml
+++ b/Bitvault.Avalonia/AllNavigationView.axaml
@@ -14,7 +14,7 @@
-
+
diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs
index b368799..e57e8b2 100644
--- a/Bitvault.Avalonia/App.axaml.cs
+++ b/Bitvault.Avalonia/App.axaml.cs
@@ -9,6 +9,7 @@ using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
+using System.Text.Json;
using Toolkit.Avalonia;
using Toolkit.Foundation;
@@ -25,16 +26,16 @@ public partial class App : Application
public override async void OnFrameworkInitializationCompleted()
{
IHost? host = DefaultHostBuilder.Create()
- .AddConfiguration("Locker:*")
+ .AddConfiguration("Locker:*")
.AddConfiguration("Item:*")
- .AddConfiguration(args => args.Name = "Bank Account", "Item:Bank Account")
- .AddConfiguration(args => args.Name = "Credit Card", "Item:Credit Card")
- .AddConfiguration(args => args.Name = "Document", "Item:Document")
- .AddConfiguration(args => args.Name = "Driving Licence", "Item:Driving Licence")
- .AddConfiguration(args => args.Name = "Identity", "Item:Identity")
- .AddConfiguration(args => args.Name = "Login", "Item:Login")
- .AddConfiguration(args => args.Name = "Note", "Item:Note")
- .AddConfiguration(args => args.Name = "Password", "Item:Password")
+ //.AddConfiguration(args => args.Name = "Bank Account", "Item:Bank Account")
+ .AddConfiguration("Item:Credit Card", ItemConfiguration.CreditCard)
+ //.AddConfiguration(args => args.Name = "Document", "Item:Document")
+ //.AddConfiguration(args => args.Name = "Driving Licence", "Item:Driving Licence")
+ //.AddConfiguration(args => args.Name = "Identity", "Item:Identity")
+ //.AddConfiguration(args => args.Name = "Login", "Item:Login")
+ //.AddConfiguration(args => args.Name = "Note", "Item:Note")
+ //.AddConfiguration(args => args.Name = "Password", "Item:Password")
.ConfigureServices((context, services) =>
{
services.AddAvalonia();
@@ -48,9 +49,9 @@ public partial class App : Application
services.AddScoped>>(provider =>
new ProxyService>(provider.GetRequiredService>()));
- services.AddHandler();
+ services.AddHandler();
- services.AddTransient(provider => Component.Create(provider, args =>
+ services.AddTransient(provider => Component.Create(provider, args =>
{
args.AddServices(services =>
{
@@ -70,48 +71,48 @@ public partial class App : Application
services.AddTransient();
services.AddTransient();
- services.AddTransient();
+ services.AddTransient();
services.TryAddSingleton, ValueStore>();
- services.TryAddSingleton, ValueStore>();
+ services.TryAddSingleton, ValueStore>();
- services.AddDbContextFactory((provider, args) =>
+ services.AddDbContextFactory((provider, args) =>
{
- if (provider.GetRequiredService>()
- is IValueStore connection)
+ if (provider.GetRequiredService>()
+ is IValueStore connection)
{
args.UseSqlite($"{connection.Value}");
}
});
- services.AddHandler();
+ services.AddHandler();
services.AddHandler();
services.AddHandler();
services.AddHandler();
- services.AddHandler();
+ services.AddHandler();
- services.AddTemplate();
+ services.AddTemplate();
services.AddTemplate();
services.AddTemplate();
services.AddTemplate();
services.AddTemplate();
- services.AddTemplate("OpenContainer");
+ services.AddTemplate("OpenLocker");
- services.AddScoped();
+ services.AddScoped();
- services.AddTemplate("Container");
+ services.AddTemplate("Locker");
services.AddTemplate("ContentItemCollection");
- services.AddHandler();
+ services.AddHandler();
- services.AddTemplate();
- services.AddTemplate("ContainerHeader");
+ services.AddTemplate();
+ services.AddTemplate("LockerHeader");
services.AddTemplate();
- services.AddTemplate("ContainerItemCategoryCollection");
+ services.AddTemplate("LockerItemCategoryCollection");
services.AddTemplate();
- services.AddHandler();
+ services.AddHandler();
services.AddTemplate();
services.AddTemplate("Item");
@@ -144,11 +145,11 @@ public partial class App : Application
});
})!);
- services.AddTransient();
- services.AddHandler();
+ services.AddTransient();
+ services.AddHandler();
- services.AddSingleton();
- services.AddInitializer();
+ services.AddSingleton();
+ services.AddInitializer();
services.AddTemplate("Main");
services.AddHandler();
@@ -158,8 +159,8 @@ public partial class App : Application
services.AddTemplate();
services.AddTemplate("Manage");
- services.AddTemplate();
- services.AddTemplate("CreateContainer");
+ services.AddTemplate();
+ services.AddTemplate("CreateLocker");
})
.Build();
diff --git a/Bitvault.Avalonia/ArchiveNavigationView.axaml b/Bitvault.Avalonia/ArchiveNavigationView.axaml
index b01b3a9..2670afb 100644
--- a/Bitvault.Avalonia/ArchiveNavigationView.axaml
+++ b/Bitvault.Avalonia/ArchiveNavigationView.axaml
@@ -14,7 +14,7 @@
-
+
diff --git a/Bitvault.Avalonia/Bitvault.Avalonia.csproj b/Bitvault.Avalonia/Bitvault.Avalonia.csproj
index 4a0679f..87f632f 100644
--- a/Bitvault.Avalonia/Bitvault.Avalonia.csproj
+++ b/Bitvault.Avalonia/Bitvault.Avalonia.csproj
@@ -61,11 +61,11 @@
ConfirmItemActionView.axaml
-
- CreateContainerNavigationView.axaml
+
+ CreateLockerNavigationView.axaml
-
- CreateContainerView.axaml
+
+ CreateLockerView.axaml
DismissItemActionView.axaml
@@ -82,8 +82,8 @@
ManageNavigationView.axaml
-
- ContainerHeaderView.axaml
+
+ LockerHeaderView.axaml
ItemNavigationView.axaml
@@ -91,11 +91,14 @@
ItemView.axaml
-
- ContainerNavigationView.axaml
+
+ LockerNavigationView.axaml
-
- ContainerView.axaml
+
+ LockerView.axaml
+
+
+ SearchLockerActionView.axaml
\ No newline at end of file
diff --git a/Bitvault.Avalonia/ContainerHeaderView.axaml.cs b/Bitvault.Avalonia/ContainerHeaderView.axaml.cs
deleted file mode 100644
index b5af373..0000000
--- a/Bitvault.Avalonia/ContainerHeaderView.axaml.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using Avalonia.Controls;
-
-namespace Bitvault.Avalonia;
-
-public partial class ContainerHeaderView : UserControl
-{
- public ContainerHeaderView() => InitializeComponent();
-}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/ContainerNavigationView.axaml.cs b/Bitvault.Avalonia/ContainerNavigationView.axaml.cs
deleted file mode 100644
index 67451d0..0000000
--- a/Bitvault.Avalonia/ContainerNavigationView.axaml.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using Toolkit.UI.Controls.Avalonia;
-
-namespace Bitvault.Avalonia;
-
-public partial class ContainerNavigationView : NavigationViewItem
-{
- public ContainerNavigationView() => InitializeComponent();
-}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/CreateContainerNavigationView.axaml.cs b/Bitvault.Avalonia/CreateContainerNavigationView.axaml.cs
deleted file mode 100644
index df5a43d..0000000
--- a/Bitvault.Avalonia/CreateContainerNavigationView.axaml.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Toolkit.UI.Controls.Avalonia;
-
-namespace Bitvault.Avalonia;
-
-public partial class CreateContainerNavigationView : SettingsExpander
-{
- public CreateContainerNavigationView() =>
- InitializeComponent();
-}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/CreateContainerView.axaml.cs b/Bitvault.Avalonia/CreateContainerView.axaml.cs
deleted file mode 100644
index e902acc..0000000
--- a/Bitvault.Avalonia/CreateContainerView.axaml.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using Toolkit.UI.Controls.Avalonia;
-
-namespace Bitvault.Avalonia;
-
-public partial class CreateContainerView : ContentDialog
-{
- public CreateContainerView() => InitializeComponent();
-}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/CreateItemActionView.axaml b/Bitvault.Avalonia/CreateItemActionView.axaml
index 5aaecd4..c8740f6 100644
--- a/Bitvault.Avalonia/CreateItemActionView.axaml
+++ b/Bitvault.Avalonia/CreateItemActionView.axaml
@@ -28,9 +28,9 @@
-
-
-
+
+
+
diff --git a/Bitvault.Avalonia/CreateContainerNavigationView.axaml b/Bitvault.Avalonia/CreateLockerNavigationView.axaml
similarity index 79%
rename from Bitvault.Avalonia/CreateContainerNavigationView.axaml
rename to Bitvault.Avalonia/CreateLockerNavigationView.axaml
index 5301865..ecfc13c 100644
--- a/Bitvault.Avalonia/CreateContainerNavigationView.axaml
+++ b/Bitvault.Avalonia/CreateLockerNavigationView.axaml
@@ -1,5 +1,5 @@
-
+
diff --git a/Bitvault.Avalonia/CreateLockerNavigationView.axaml.cs b/Bitvault.Avalonia/CreateLockerNavigationView.axaml.cs
new file mode 100644
index 0000000..f45b289
--- /dev/null
+++ b/Bitvault.Avalonia/CreateLockerNavigationView.axaml.cs
@@ -0,0 +1,9 @@
+using Toolkit.UI.Controls.Avalonia;
+
+namespace Bitvault.Avalonia;
+
+public partial class CreateLockerNavigationView : SettingsExpander
+{
+ public CreateLockerNavigationView() =>
+ InitializeComponent();
+}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/CreateContainerView.axaml b/Bitvault.Avalonia/CreateLockerView.axaml
similarity index 88%
rename from Bitvault.Avalonia/CreateContainerView.axaml
rename to Bitvault.Avalonia/CreateLockerView.axaml
index e53c144..efe542f 100644
--- a/Bitvault.Avalonia/CreateContainerView.axaml
+++ b/Bitvault.Avalonia/CreateLockerView.axaml
@@ -1,10 +1,10 @@
diff --git a/Bitvault.Avalonia/CreateLockerView.axaml.cs b/Bitvault.Avalonia/CreateLockerView.axaml.cs
new file mode 100644
index 0000000..2739f42
--- /dev/null
+++ b/Bitvault.Avalonia/CreateLockerView.axaml.cs
@@ -0,0 +1,9 @@
+using Toolkit.UI.Controls.Avalonia;
+
+namespace Bitvault.Avalonia;
+
+public partial class CreateLockerView : ContentDialog
+{
+ public CreateLockerView() =>
+ InitializeComponent();
+}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/ContainerHeaderView.axaml b/Bitvault.Avalonia/LockerHeaderView.axaml
similarity index 87%
rename from Bitvault.Avalonia/ContainerHeaderView.axaml
rename to Bitvault.Avalonia/LockerHeaderView.axaml
index b208f42..8478156 100644
--- a/Bitvault.Avalonia/ContainerHeaderView.axaml
+++ b/Bitvault.Avalonia/LockerHeaderView.axaml
@@ -1,9 +1,9 @@
+ x:DataType="vm:LockerHeaderViewModel">
diff --git a/Bitvault.Avalonia/LockerHeaderView.axaml.cs b/Bitvault.Avalonia/LockerHeaderView.axaml.cs
new file mode 100644
index 0000000..a46ea76
--- /dev/null
+++ b/Bitvault.Avalonia/LockerHeaderView.axaml.cs
@@ -0,0 +1,9 @@
+using Avalonia.Controls;
+
+namespace Bitvault.Avalonia;
+
+public partial class LockerHeaderView : UserControl
+{
+ public LockerHeaderView() =>
+ InitializeComponent();
+}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/ContainerNavigationView.axaml b/Bitvault.Avalonia/LockerNavigationView.axaml
similarity index 90%
rename from Bitvault.Avalonia/ContainerNavigationView.axaml
rename to Bitvault.Avalonia/LockerNavigationView.axaml
index fca93e4..fff7f17 100644
--- a/Bitvault.Avalonia/ContainerNavigationView.axaml
+++ b/Bitvault.Avalonia/LockerNavigationView.axaml
@@ -1,10 +1,10 @@
-
+
-
+
@@ -56,7 +56,7 @@
-
+
diff --git a/Bitvault.Avalonia/LockerNavigationView.axaml.cs b/Bitvault.Avalonia/LockerNavigationView.axaml.cs
new file mode 100644
index 0000000..f2b828c
--- /dev/null
+++ b/Bitvault.Avalonia/LockerNavigationView.axaml.cs
@@ -0,0 +1,9 @@
+using Toolkit.UI.Controls.Avalonia;
+
+namespace Bitvault.Avalonia;
+
+public partial class LockerNavigationView : NavigationViewItem
+{
+ public LockerNavigationView() =>
+ InitializeComponent();
+}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/ContainerView.axaml b/Bitvault.Avalonia/LockerView.axaml
similarity index 96%
rename from Bitvault.Avalonia/ContainerView.axaml
rename to Bitvault.Avalonia/LockerView.axaml
index e09ae2f..9660115 100644
--- a/Bitvault.Avalonia/ContainerView.axaml
+++ b/Bitvault.Avalonia/LockerView.axaml
@@ -1,9 +1,9 @@
+ x:DataType="vm:LockerViewModel">
-
+
diff --git a/Bitvault.Avalonia/ContainerView.axaml.cs b/Bitvault.Avalonia/LockerView.axaml.cs
similarity index 80%
rename from Bitvault.Avalonia/ContainerView.axaml.cs
rename to Bitvault.Avalonia/LockerView.axaml.cs
index 327c703..22cfaca 100644
--- a/Bitvault.Avalonia/ContainerView.axaml.cs
+++ b/Bitvault.Avalonia/LockerView.axaml.cs
@@ -4,9 +4,9 @@ using FluentAvalonia.UI.Windowing;
namespace Bitvault.Avalonia;
-public partial class ContainerView : UserControl
+public partial class LockerView : UserControl
{
- public ContainerView() => InitializeComponent();
+ public LockerView() => InitializeComponent();
protected override void OnLoaded(RoutedEventArgs args)
{
diff --git a/Bitvault.Avalonia/MainView.axaml b/Bitvault.Avalonia/MainView.axaml
index dfb579f..414079c 100644
--- a/Bitvault.Avalonia/MainView.axaml
+++ b/Bitvault.Avalonia/MainView.axaml
@@ -16,7 +16,7 @@
-
+
diff --git a/Bitvault.Avalonia/ManageNavigationView.axaml b/Bitvault.Avalonia/ManageNavigationView.axaml
index d24c3de..8e6c7ab 100644
--- a/Bitvault.Avalonia/ManageNavigationView.axaml
+++ b/Bitvault.Avalonia/ManageNavigationView.axaml
@@ -2,7 +2,7 @@
x:Class="Bitvault.Avalonia.ManageNavigationView"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Content="Manage Vaults">
+ Content="Manage Lockers">
diff --git a/Bitvault.Avalonia/OpenView.axaml b/Bitvault.Avalonia/OpenView.axaml
index b90db22..0cb027a 100644
--- a/Bitvault.Avalonia/OpenView.axaml
+++ b/Bitvault.Avalonia/OpenView.axaml
@@ -3,7 +3,7 @@
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:Bitvault"
- x:DataType="vm:OpenContainerViewModel">
+ x:DataType="vm:OpenLockerViewModel">
-
-
-
+
+
+
diff --git a/Bitvault.Avalonia/SearchContainerActionView.axaml.cs b/Bitvault.Avalonia/SearchContainerActionView.axaml.cs
deleted file mode 100644
index 42751d7..0000000
--- a/Bitvault.Avalonia/SearchContainerActionView.axaml.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using Avalonia.Controls;
-
-namespace Bitvault.Avalonia;
-
-public partial class SearchContainerActionView : UserControl
-{
- public SearchContainerActionView() => InitializeComponent();
-}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/SearchContainerActionView.axaml b/Bitvault.Avalonia/SearchLockerActionView.axaml
similarity index 93%
rename from Bitvault.Avalonia/SearchContainerActionView.axaml
rename to Bitvault.Avalonia/SearchLockerActionView.axaml
index 721253a..5aa58bb 100644
--- a/Bitvault.Avalonia/SearchContainerActionView.axaml
+++ b/Bitvault.Avalonia/SearchLockerActionView.axaml
@@ -1,9 +1,9 @@
+ x:DataType="vm:SearchLockerActionViewModel">
diff --git a/Bitvault.Avalonia/SearchLockerActionView.axaml.cs b/Bitvault.Avalonia/SearchLockerActionView.axaml.cs
new file mode 100644
index 0000000..2a18891
--- /dev/null
+++ b/Bitvault.Avalonia/SearchLockerActionView.axaml.cs
@@ -0,0 +1,9 @@
+using Avalonia.Controls;
+
+namespace Bitvault.Avalonia;
+
+public partial class SearchLockerActionView : UserControl
+{
+ public SearchLockerActionView() =>
+ InitializeComponent();
+}
\ No newline at end of file
diff --git a/Bitvault.Avalonia/StarredNavigationView.axaml b/Bitvault.Avalonia/StarredNavigationView.axaml
index fb0eb31..c4e6e4b 100644
--- a/Bitvault.Avalonia/StarredNavigationView.axaml
+++ b/Bitvault.Avalonia/StarredNavigationView.axaml
@@ -14,7 +14,7 @@
-
+
diff --git a/Bitvault.Data/ContainerDbContext.cs b/Bitvault.Data/LockerContext.cs
similarity index 86%
rename from Bitvault.Data/ContainerDbContext.cs
rename to Bitvault.Data/LockerContext.cs
index 1ac3fe4..196f691 100644
--- a/Bitvault.Data/ContainerDbContext.cs
+++ b/Bitvault.Data/LockerContext.cs
@@ -2,7 +2,7 @@
namespace Bitvault.Data;
-public class ContainerDbContext(DbContextOptions options) :
+public class LockerContext(DbContextOptions options) :
DbContext(options)
{
public DbSet Blobs { get; set; }
diff --git a/Bitvault/AggerateContainerCategoryViewModelHandler.cs b/Bitvault/AggerateLockerCategoryViewModelHandler.cs
similarity index 87%
rename from Bitvault/AggerateContainerCategoryViewModelHandler.cs
rename to Bitvault/AggerateLockerCategoryViewModelHandler.cs
index 3171ef3..a4a551b 100644
--- a/Bitvault/AggerateContainerCategoryViewModelHandler.cs
+++ b/Bitvault/AggerateLockerCategoryViewModelHandler.cs
@@ -2,7 +2,7 @@
namespace Bitvault;
-public class AggerateContainerCategoryViewModelHandler(IProxyService> proxyConfigurations,
+public class AggerateLockerCategoryViewModelHandler(IProxyService> proxyConfigurations,
IServiceFactory serviceFactory,
IPublisher publisher) :
INotificationHandler>
diff --git a/Bitvault/AggerateContainerItemViewModelHandler.cs b/Bitvault/AggerateLockerItemViewModelHandler.cs
similarity index 81%
rename from Bitvault/AggerateContainerItemViewModelHandler.cs
rename to Bitvault/AggerateLockerItemViewModelHandler.cs
index d29935f..9f12269 100644
--- a/Bitvault/AggerateContainerItemViewModelHandler.cs
+++ b/Bitvault/AggerateLockerItemViewModelHandler.cs
@@ -3,23 +3,23 @@ using Toolkit.Foundation;
namespace Bitvault;
-public class AggerateContainerItemViewModelHandler(IMediator mediator,
+public class AggerateLockerItemViewModelHandler(IMediator mediator,
IServiceProvider serviceProvider,
ICache- cache,
IPublisher publisher) :
INotificationHandler>
+ LockerViewModelConfiguration>>
{
public async Task Handle(AggerateEventArgs args)
+ LockerViewModelConfiguration> args)
{
- if (args.Options is ContainerViewModelConfiguration configuration)
+ if (args.Options is LockerViewModelConfiguration configuration)
{
cache.Clear();
bool selected = true;
- if (await mediator.Handle,
- IReadOnlyCollection<(Guid Id, string Name, bool Favourite, bool Archived)>>(Request.As(new QueryContainerConfiguration
+ if (await mediator.Handle,
+ IReadOnlyCollection<(Guid Id, string Name, bool Favourite, bool Archived)>>(Request.As(new QueryLockerConfiguration
{
Filter = configuration.Filter,
Query = configuration.Query
diff --git a/Bitvault/AggerateMainViewModelHandler.cs b/Bitvault/AggerateMainViewModelHandler.cs
index 6d44d61..d909baf 100644
--- a/Bitvault/AggerateMainViewModelHandler.cs
+++ b/Bitvault/AggerateMainViewModelHandler.cs
@@ -4,19 +4,19 @@ using Toolkit.Foundation;
namespace Bitvault;
public class AggerateMainViewModelHandler(IPublisher publisher,
- IContainerHostCollection containers) :
+ ILockerHostCollection lockers) :
INotificationHandler>
{
public Task Handle(AggerateEventArgs args)
{
- foreach (IComponentHost container in containers.OrderBy(x => x.GetConfiguration()
- is ContainerConfiguration configuration ? configuration.Name : null))
+ foreach (IComponentHost locker in lockers.OrderBy(x => x.GetConfiguration()
+ is LockerConfiguration configuration ? configuration.Name : null))
{
- if (container.Services.GetRequiredService() is ContainerConfiguration configuration)
+ if (locker.Services.GetRequiredService() is LockerConfiguration configuration)
{
- if (container.Services.GetRequiredService() is IServiceFactory factory)
+ if (locker.Services.GetRequiredService() is IServiceFactory factory)
{
- if (factory.Create(configuration.Name) is ContainerNavigationViewModel viewModel)
+ if (factory.Create(configuration.Name) is LockerNavigationViewModel viewModel)
{
publisher.Publish(Create.As(viewModel),
nameof(MainViewModel));
diff --git a/Bitvault/AllNavigationViewModel.cs b/Bitvault/AllNavigationViewModel.cs
index 7894d56..4a6f308 100644
--- a/Bitvault/AllNavigationViewModel.cs
+++ b/Bitvault/AllNavigationViewModel.cs
@@ -8,4 +8,4 @@ public partial class AllNavigationViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
- string filter) : FilterContainerNavigationViewModel(provider, factory, mediator, publisher, subscriber, disposer, filter);
\ No newline at end of file
+ string filter) : FilterLockerNavigationViewModel(provider, factory, mediator, publisher, subscriber, disposer, filter);
\ No newline at end of file
diff --git a/Bitvault/ArchiveNavigationViewModel.cs b/Bitvault/ArchiveNavigationViewModel.cs
index 82a7f16..941af96 100644
--- a/Bitvault/ArchiveNavigationViewModel.cs
+++ b/Bitvault/ArchiveNavigationViewModel.cs
@@ -8,4 +8,4 @@ public partial class ArchiveNavigationViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
- string name) : FilterContainerNavigationViewModel(provider, factory, mediator, publisher, subscriber, disposer, name);
\ No newline at end of file
+ string name) : FilterLockerNavigationViewModel(provider, factory, mediator, publisher, subscriber, disposer, name);
\ No newline at end of file
diff --git a/Bitvault/CategoriesNavigationViewModel.cs b/Bitvault/CategoriesNavigationViewModel.cs
index 89f5ead..2bfbe14 100644
--- a/Bitvault/CategoriesNavigationViewModel.cs
+++ b/Bitvault/CategoriesNavigationViewModel.cs
@@ -8,4 +8,4 @@ public partial class CategoriesNavigationViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
- string name) : FilterContainerNavigationViewModel(provider, factory, mediator, publisher, subscriber, disposer, name);
\ No newline at end of file
+ string name) : FilterLockerNavigationViewModel(provider, factory, mediator, publisher, subscriber, disposer, name);
\ No newline at end of file
diff --git a/Bitvault/CommandCollection.cs b/Bitvault/CommandCollection.cs
deleted file mode 100644
index 36e4bb0..0000000
--- a/Bitvault/CommandCollection.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.Collections.ObjectModel;
-
-namespace Bitvault;
-
-public class CommandCollection(IList list) :
- ReadOnlyCollection(list)
-{
-}
\ No newline at end of file
diff --git a/Bitvault/ContainerActivatedHandler.cs b/Bitvault/ContainerActivatedHandler.cs
deleted file mode 100644
index 8d5f7be..0000000
--- a/Bitvault/ContainerActivatedHandler.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using Microsoft.Extensions.DependencyInjection;
-using Toolkit.Foundation;
-
-namespace Bitvault;
-
-public class ContainerActivatedHandler(IContainerHostCollection containers,
- IPublisher publisher) :
- INotificationHandler>
-{
- public Task Handle(ActivatedEventArgs args)
- {
- if (args.Value is IComponentHost container)
- {
- List sortedContainers = [.. containers, container];
- sortedContainers = [.. sortedContainers.OrderBy(x => x.GetConfiguration() is ContainerConfiguration configuration ? configuration.Name : null)];
-
- int index = sortedContainers.IndexOf(container);
-
- if (container.Services.GetRequiredService() is ContainerConfiguration configuration)
- {
- if (container.Services.GetRequiredService() is IServiceFactory serviceFactory)
- {
- if (serviceFactory.Create(configuration.Name) is ContainerNavigationViewModel viewModel)
- {
- publisher.Publish(new InsertEventArgs(index, viewModel),
- nameof(MainViewModel));
- }
- }
- }
- }
-
- return Task.CompletedTask;
- }
-}
\ No newline at end of file
diff --git a/Bitvault/ContainerComponent.cs b/Bitvault/ContainerComponent.cs
deleted file mode 100644
index b987556..0000000
--- a/Bitvault/ContainerComponent.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-using Toolkit.Foundation;
-
-namespace Bitvault;
-
-public class ContainerComponent(IComponentBuilder builder) : Component(builder),
- IContainerComponent;
\ No newline at end of file
diff --git a/Bitvault/ContainerFactory.cs b/Bitvault/ContainerFactory.cs
deleted file mode 100644
index 42740e6..0000000
--- a/Bitvault/ContainerFactory.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Toolkit.Foundation;
-
-namespace Bitvault;
-
-public class ContainerFactory(IComponentFactory componentFactory) :
- IContainerFactory
-{
- public IComponentHost? Create(string name)
- {
- if (componentFactory.Create($"Locker:{name}",
- new ContainerConfiguration { Name = name }) is IComponentHost host)
- {
- return host;
- }
-
- return default;
- }
-}
\ No newline at end of file
diff --git a/Bitvault/ContainerHeaderViewModel.cs b/Bitvault/ContainerHeaderViewModel.cs
deleted file mode 100644
index b47c738..0000000
--- a/Bitvault/ContainerHeaderViewModel.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using Toolkit.Foundation;
-
-namespace Bitvault;
-
-public partial class ContainerHeaderViewModel :
- ObservableCollection
-{
- public ContainerHeaderViewModel(IServiceProvider provider,
- IServiceFactory factory,
- IMediator mediator,
- IPublisher publisher,
- ISubscription subscriber,
- IDisposer disposer,
- IContentTemplate template) : base(provider, factory, mediator, publisher, subscriber, disposer)
- {
- Template = template;
-
- Add(0);
- Add(2);
- }
-
- public IContentTemplate Template { get; set; }
-}
\ No newline at end of file
diff --git a/Bitvault/ContainerInitializer.cs b/Bitvault/ContainerInitializer.cs
deleted file mode 100644
index 6e8a2df..0000000
--- a/Bitvault/ContainerInitializer.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Toolkit.Foundation;
-
-namespace Bitvault;
-
-public class ContainerInitializer(IEnumerable> configurations,
- IComponentFactory componentFactory,
- IContainerHostCollection vaults) : IInitializer
-{
- public async Task Initialize()
- {
- foreach (IConfigurationDescriptor configuration in configurations)
- {
- if (componentFactory.Create(configuration.Section, configuration.Value)
- is IComponentHost host)
- {
- vaults.Add(host);
- await host.StartAsync();
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Bitvault/CreateItemActionViewModel.cs b/Bitvault/CreateItemActionViewModel.cs
index 6376741..01f9409 100644
--- a/Bitvault/CreateItemActionViewModel.cs
+++ b/Bitvault/CreateItemActionViewModel.cs
@@ -9,11 +9,10 @@ public partial class CreateItemActionViewModel(IServiceProvider provider,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
- NamedComponent named,
- int index) : Observable(provider, factory, mediator, publisher, subscriber, disposer)
+ NamedComponent named) : Observable(provider, factory, mediator, publisher, subscriber, disposer)
{
[ObservableProperty]
- private int index = index;
+ private int index = 0;
[ObservableProperty]
private string named = $"{named}";
diff --git a/Bitvault/CreateItemHandler.cs b/Bitvault/CreateItemHandler.cs
index ee1ca45..effbaa7 100644
--- a/Bitvault/CreateItemHandler.cs
+++ b/Bitvault/CreateItemHandler.cs
@@ -5,7 +5,7 @@ using Toolkit.Foundation;
namespace Bitvault;
-public class CreateItemHandler(IDbContextFactory dbContextFactory) :
+public class CreateItemHandler(IDbContextFactory dbContextFactory) :
IHandler, bool>
{
public async Task Handle(CreateEventArgs<(Guid, ItemConfiguration)> args,
@@ -17,7 +17,7 @@ public class CreateItemHandler(IDbContextFactory dbContextFa
{
string? name = configuration.Name;
- using ContainerDbContext context = dbContextFactory.CreateDbContext();
+ using LockerContext context = dbContextFactory.CreateDbContext();
EntityEntry? result = null;
await Task.Run(async () =>
diff --git a/Bitvault/CreateContainerHandler.cs b/Bitvault/CreateLockerHandler.cs
similarity index 65%
rename from Bitvault/CreateContainerHandler.cs
rename to Bitvault/CreateLockerHandler.cs
index b4b07a4..a078b00 100644
--- a/Bitvault/CreateContainerHandler.cs
+++ b/Bitvault/CreateLockerHandler.cs
@@ -5,30 +5,30 @@ using Toolkit.Foundation;
namespace Bitvault;
-public class CreateContainerHandler(IContainerFactory componentFactory,
+public class CreateLockerHandler(ILockerFactory componentFactory,
IPublisher publisher) :
- IHandler, bool>
+ IHandler, bool>
{
- public async Task Handle(CreateEventArgs args,
+ public async Task Handle(CreateEventArgs args,
CancellationToken cancellationToken)
{
- if (args.Value is Container container && container.Name is { Length: > 0 } name &&
- container.Password is { Length: > 0 } password)
+ if (args.Value is Locker locker && locker.Name is { Length: > 0 } name &&
+ locker.Password is { Length: > 0 } password)
{
if (componentFactory.Create(name) is IComponentHost host)
{
ISecurityKeyFactory keyVaultFactory = host.Services.GetRequiredService();
IValueStore secureKeyStore = host.Services.GetRequiredService>();
- IContainerStorageFactory containerFactory = host.Services.GetRequiredService();
+ ILockerStorageFactory lockerStorageFactory = host.Services.GetRequiredService();
if (keyVaultFactory.Create(Encoding.UTF8.GetBytes(password)) is SecurityKey key)
{
secureKeyStore.Set(key);
- if (await containerFactory.Create(name, key))
+ if (await lockerStorageFactory.Create(name, key))
{
- IWritableConfiguration configuration =
- host.Services.GetRequiredService>();
+ IWritableConfiguration configuration =
+ host.Services.GetRequiredService>();
configuration.Write(args => args.Key = $"{Convert.ToBase64String(key.Salt)}:{Convert.ToBase64String(key.EncryptedKey)}:{Convert.ToBase64String(key.DecryptedKey)}");
host.Start();
diff --git a/Bitvault/CreateContainerNavigationViewModel.cs b/Bitvault/CreateLockerNavigationViewModel.cs
similarity index 77%
rename from Bitvault/CreateContainerNavigationViewModel.cs
rename to Bitvault/CreateLockerNavigationViewModel.cs
index e9c5dd4..26c7237 100644
--- a/Bitvault/CreateContainerNavigationViewModel.cs
+++ b/Bitvault/CreateLockerNavigationViewModel.cs
@@ -2,7 +2,7 @@
namespace Bitvault;
-public partial class CreateContainerNavigationViewModel(IServiceProvider provider,
+public partial class CreateLockerNavigationViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
diff --git a/Bitvault/CreateContainerViewModel.cs b/Bitvault/CreateLockerViewModel.cs
similarity index 75%
rename from Bitvault/CreateContainerViewModel.cs
rename to Bitvault/CreateLockerViewModel.cs
index 3f00050..5eeca87 100644
--- a/Bitvault/CreateContainerViewModel.cs
+++ b/Bitvault/CreateLockerViewModel.cs
@@ -4,7 +4,7 @@ using Toolkit.Foundation;
namespace Bitvault;
-public partial class CreateContainerViewModel(IServiceProvider provider,
+public partial class CreateLockerViewModel(IServiceProvider provider,
IServiceFactory factory,
IPublisher publisher,
IMediator mediator,
@@ -22,5 +22,5 @@ public partial class CreateContainerViewModel(IServiceProvider provider,
private string password;
public async Task Confirm() =>
- await Mediator.Handle, bool>(Create.As(new Container(Name, Password)));
+ await Mediator.Handle, bool>(Create.As(new Locker(Name, Password)));
}
\ No newline at end of file
diff --git a/Bitvault/CreatedItemHandler.cs b/Bitvault/CreatedItemHandler.cs
index cef3647..2aec2d4 100644
--- a/Bitvault/CreatedItemHandler.cs
+++ b/Bitvault/CreatedItemHandler.cs
@@ -24,7 +24,7 @@ public class CreatedItemHandler(IServiceProvider serviceProvider,
int index = cache.IndexOf(item);
valueStore.Set(item);
- publisher.Publish(Insert.As(index, viewModel), nameof(ContainerViewModel));
+ publisher.Publish(Insert.As(index, viewModel), nameof(LockerViewModel));
}
}
diff --git a/Bitvault/DropdownEntryConfiguration.cs b/Bitvault/DropdownEntryConfiguration.cs
new file mode 100644
index 0000000..2bffee4
--- /dev/null
+++ b/Bitvault/DropdownEntryConfiguration.cs
@@ -0,0 +1,10 @@
+using System.Text.Json.Serialization;
+
+namespace Bitvault;
+
+public record DropdownEntryConfiguration :
+ ItemEntryConfiguration
+{
+ [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+ public string[]? Values { get; set; }
+}
diff --git a/Bitvault/FilterContainerNavigationViewModel.cs b/Bitvault/FilterLockerNavigationViewModel.cs
similarity index 65%
rename from Bitvault/FilterContainerNavigationViewModel.cs
rename to Bitvault/FilterLockerNavigationViewModel.cs
index 2398a70..a77c5db 100644
--- a/Bitvault/FilterContainerNavigationViewModel.cs
+++ b/Bitvault/FilterLockerNavigationViewModel.cs
@@ -4,10 +4,10 @@ using Toolkit.Foundation;
namespace Bitvault;
-public partial class FilterContainerNavigationViewModel : Observable,
- IContainerNavigationViewModel,
- INotificationHandler>,
- INotificationHandler>
+public partial class FilterLockerNavigationViewModel : Observable,
+ ILockerNavigationViewModel,
+ INotificationHandler>,
+ INotificationHandler>
{
[ObservableProperty]
private bool activated;
@@ -18,7 +18,7 @@ public partial class FilterContainerNavigationViewModel : Observable,
[ObservableProperty]
private bool selected;
- public FilterContainerNavigationViewModel(IServiceProvider provider,
+ public FilterLockerNavigationViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
@@ -29,10 +29,10 @@ public partial class FilterContainerNavigationViewModel : Observable,
Filter = filter;
}
- public Task Handle(DeactivatedEventArgs args) =>
+ public Task Handle(DeactivatedEventArgs args) =>
Task.FromResult(Activated = false);
- public Task Handle(ActivatedEventArgs args) =>
+ public Task Handle(ActivatedEventArgs args) =>
Task.FromResult(Activated = true);
[RelayCommand]
diff --git a/Bitvault/Form.cs b/Bitvault/Form.cs
deleted file mode 100644
index 0dfdf00..0000000
--- a/Bitvault/Form.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace Bitvault;
-
-public record Form
-{
- public ICollection? Entries { get; set; }
-}
\ No newline at end of file
diff --git a/Bitvault/FormEntry.cs b/Bitvault/FormEntry.cs
deleted file mode 100644
index 2b3325d..0000000
--- a/Bitvault/FormEntry.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-namespace Bitvault;
-
-public record FormEntry;
\ No newline at end of file
diff --git a/Bitvault/FormField.cs b/Bitvault/FormField.cs
deleted file mode 100644
index 2082797..0000000
--- a/Bitvault/FormField.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Bitvault;
-
-public record FormField : FormEntry
-{
- public string? Name { get; set; }
-
- public string? Description { get; set; }
-
- public object? Value { get; set; }
-
- public FormFieldType Type { get; set; }
-}
\ No newline at end of file
diff --git a/Bitvault/FormFieldType.cs b/Bitvault/FormFieldType.cs
deleted file mode 100644
index f94abe5..0000000
--- a/Bitvault/FormFieldType.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace Bitvault;
-
-public enum FormFieldType
-{
- Attachments,
- Date,
- Masked,
- Note,
- Number,
- Options,
- Password,
- Phone,
- Text,
- Time,
- Url
-}
\ No newline at end of file
diff --git a/Bitvault/FormGroup.cs b/Bitvault/FormGroup.cs
deleted file mode 100644
index 730b15e..0000000
--- a/Bitvault/FormGroup.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Bitvault;
-
-public record FormGroup : FormEntry
-{
- public string? Name { get; set; }
-
- public ICollection? Fields { get; set; }
-}
\ No newline at end of file
diff --git a/Bitvault/IContainerHost.cs b/Bitvault/ILockerComponent.cs
similarity index 51%
rename from Bitvault/IContainerHost.cs
rename to Bitvault/ILockerComponent.cs
index a596e26..f17734c 100644
--- a/Bitvault/IContainerHost.cs
+++ b/Bitvault/ILockerComponent.cs
@@ -2,4 +2,4 @@
namespace Bitvault;
-public interface IContainerHost : IComponentHost;
\ No newline at end of file
+public interface ILockerComponent : IComponent;
\ No newline at end of file
diff --git a/Bitvault/IContainerFactory.cs b/Bitvault/ILockerFactory.cs
similarity index 73%
rename from Bitvault/IContainerFactory.cs
rename to Bitvault/ILockerFactory.cs
index 01b3697..9aac52d 100644
--- a/Bitvault/IContainerFactory.cs
+++ b/Bitvault/ILockerFactory.cs
@@ -2,7 +2,7 @@
namespace Bitvault
{
- public interface IContainerFactory
+ public interface ILockerFactory
{
IComponentHost? Create(string name);
}
diff --git a/Bitvault/IContainerComponent.cs b/Bitvault/ILockerHost.cs
similarity index 50%
rename from Bitvault/IContainerComponent.cs
rename to Bitvault/ILockerHost.cs
index f428881..d7114e9 100644
--- a/Bitvault/IContainerComponent.cs
+++ b/Bitvault/ILockerHost.cs
@@ -2,4 +2,4 @@
namespace Bitvault;
-public interface IContainerComponent : IComponent;
\ No newline at end of file
+public interface ILockerHost : IComponentHost;
\ No newline at end of file
diff --git a/Bitvault/IContainerHostCollection.cs b/Bitvault/ILockerHostCollection.cs
similarity index 73%
rename from Bitvault/IContainerHostCollection.cs
rename to Bitvault/ILockerHostCollection.cs
index d659ba3..e248d8a 100644
--- a/Bitvault/IContainerHostCollection.cs
+++ b/Bitvault/ILockerHostCollection.cs
@@ -2,7 +2,7 @@
namespace Bitvault;
-public interface IContainerHostCollection :
+public interface ILockerHostCollection :
IEnumerable
{
void Add(IComponentHost host);
diff --git a/Bitvault/IContainerNavigationViewModel.cs b/Bitvault/ILockerNavigationViewModel.cs
similarity index 63%
rename from Bitvault/IContainerNavigationViewModel.cs
rename to Bitvault/ILockerNavigationViewModel.cs
index 668cea3..524944c 100644
--- a/Bitvault/IContainerNavigationViewModel.cs
+++ b/Bitvault/ILockerNavigationViewModel.cs
@@ -2,6 +2,6 @@
namespace Bitvault;
-public interface IContainerNavigationViewModel :
+public interface ILockerNavigationViewModel :
ISelectable,
IDisposable;
\ No newline at end of file
diff --git a/Bitvault/IContainerStorageFactory.cs b/Bitvault/ILockerStorageFactory.cs
similarity index 65%
rename from Bitvault/IContainerStorageFactory.cs
rename to Bitvault/ILockerStorageFactory.cs
index 0977662..b209314 100644
--- a/Bitvault/IContainerStorageFactory.cs
+++ b/Bitvault/ILockerStorageFactory.cs
@@ -1,6 +1,6 @@
namespace Bitvault;
-public interface IContainerStorageFactory
+public interface ILockerStorageFactory
{
Task Create(string name, SecurityKey key);
}
\ No newline at end of file
diff --git a/Bitvault/ItemCategoryCollectionViewModel.cs b/Bitvault/ItemCategoryCollectionViewModel.cs
index ecf0b5e..1ae47c3 100644
--- a/Bitvault/ItemCategoryCollectionViewModel.cs
+++ b/Bitvault/ItemCategoryCollectionViewModel.cs
@@ -14,4 +14,14 @@ public partial class ItemCategoryCollectionViewModel(IServiceProvider provider,
{
[ObservableProperty]
private IContentTemplate template = template;
+
+ public override Task OnActivated()
+ {
+ Publisher.Publish(Notify.As(Factory.Create(new List
+ {
+
+ })));
+
+ return base.OnActivated();
+ }
}
diff --git a/Bitvault/ItemCollectionViewModel.cs b/Bitvault/ItemCollectionViewModel.cs
index bc6672b..04e9d28 100644
--- a/Bitvault/ItemCollectionViewModel.cs
+++ b/Bitvault/ItemCollectionViewModel.cs
@@ -8,7 +8,7 @@ public partial class ItemCollectionViewModel :
INotificationHandler>,
INotificationHandler>
{
- private ContainerViewModelConfiguration configuration;
+ private LockerViewModelConfiguration configuration;
public ItemCollectionViewModel(IServiceProvider provider,
IServiceFactory factory,
@@ -17,7 +17,7 @@ public partial class ItemCollectionViewModel :
ISubscription subscriber,
IDisposer disposer,
IContentTemplate template,
- ContainerViewModelConfiguration configuration,
+ LockerViewModelConfiguration configuration,
string? filter = null) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
Template = template;
@@ -48,7 +48,18 @@ public partial class ItemCollectionViewModel :
return Task.CompletedTask;
}
- protected override IAggerate OnPrepareAggregation(object? key) =>
- Aggerate.With(configuration)
+ public override Task OnActivated()
+ {
+ Publisher.Publish(Notify.As(Factory.Create(new List
+ {
+ Factory.Create(),
+ Factory.Create(),
+ })));
+
+ return base.OnActivated();
+ }
+
+ protected override IAggerate OnAggerate(object? key) =>
+ Aggerate.With(configuration)
with { Key = key };
}
diff --git a/Bitvault/ItemCommandHeaderCollection.cs b/Bitvault/ItemCommandHeaderCollection.cs
new file mode 100644
index 0000000..df8115b
--- /dev/null
+++ b/Bitvault/ItemCommandHeaderCollection.cs
@@ -0,0 +1,6 @@
+using System.Collections.ObjectModel;
+
+namespace Bitvault;
+
+public class ItemCommandHeaderCollection(IList list) :
+ ReadOnlyCollection(list);
diff --git a/Bitvault/ItemCommandHeaderViewModel.cs b/Bitvault/ItemCommandHeaderViewModel.cs
index 3f2ab47..1391038 100644
--- a/Bitvault/ItemCommandHeaderViewModel.cs
+++ b/Bitvault/ItemCommandHeaderViewModel.cs
@@ -10,14 +10,15 @@ public partial class ItemCommandHeaderViewModel(IServiceProvider provider,
IDisposer disposer,
IContentTemplate template) :
ObservableCollection(provider, factory, mediator, publisher, subscriber, disposer),
- INotificationHandler>
+ INotificationHandler>
{
public IContentTemplate Template { get; set; } = template;
- public Task Handle(NotifyEventArgs args)
+ public Task Handle(NotifyEventArgs args)
{
Clear();
- if (args.Value is CommandCollection commandCollection)
+
+ if (args.Value is ItemCommandHeaderCollection commandCollection)
{
foreach (IDisposable command in commandCollection)
{
diff --git a/Bitvault/ItemConfiguration.cs b/Bitvault/ItemConfiguration.cs
index ea47068..a62d230 100644
--- a/Bitvault/ItemConfiguration.cs
+++ b/Bitvault/ItemConfiguration.cs
@@ -3,4 +3,40 @@
public record ItemConfiguration
{
public string Name { get; set; } = "";
+
+ public IList? Sections { get; set; }
+
+ public static ItemConfiguration CreditCard => new()
+ {
+ Name = "Credit Card",
+ Sections = new List
+ {
+ new()
+ {
+ Entries = new List
+ {
+ new TextEntryConfiguration
+ {
+ Label = "Cardholder name"
+ },
+ new DropdownEntryConfiguration
+ {
+ Label = "Type",
+ },
+ new MaskedTextEntryConfiguration
+ {
+ Label = "Card number"
+ },
+ new MaskedTextEntryConfiguration
+ {
+ Label = "Expiry date"
+ },
+ new MaskedTextEntryConfiguration
+ {
+ Label = "Card verification code"
+ },
+ }
+ }
+ }
+ };
}
\ No newline at end of file
diff --git a/Bitvault/ItemEntryConfiguration.cs b/Bitvault/ItemEntryConfiguration.cs
new file mode 100644
index 0000000..9c86efc
--- /dev/null
+++ b/Bitvault/ItemEntryConfiguration.cs
@@ -0,0 +1,18 @@
+using System.Text.Json.Serialization;
+
+namespace Bitvault;
+
+[JsonDerivedType(typeof(DropdownEntryConfiguration), typeDiscriminator: "Dropdown")]
+[JsonDerivedType(typeof(MaskedTextEntryConfiguration), typeDiscriminator: "MaskedText")]
+[JsonDerivedType(typeof(NoteEntryConfiguration), typeDiscriminator: "Note")]
+[JsonDerivedType(typeof(NumberEntryConfiguration), typeDiscriminator: "Number")]
+[JsonDerivedType(typeof(PasswordEntryConfiguration), typeDiscriminator: "Password")]
+[JsonDerivedType(typeof(TextEntryConfiguration), typeDiscriminator: "Text")]
+public record ItemEntryConfiguration
+{
+ [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+ public string? Label { get; set; }
+
+ [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
+ public object? Value { get; set; }
+}
\ No newline at end of file
diff --git a/Bitvault/ItemSectionConfiguration.cs b/Bitvault/ItemSectionConfiguration.cs
new file mode 100644
index 0000000..51a426b
--- /dev/null
+++ b/Bitvault/ItemSectionConfiguration.cs
@@ -0,0 +1,6 @@
+namespace Bitvault;
+
+public record ItemSectionConfiguration
+{
+ public IList Entries { get; set; } = new List();
+}
\ No newline at end of file
diff --git a/Bitvault/ItemViewModel.cs b/Bitvault/ItemViewModel.cs
index c1fa301..93fec30 100644
--- a/Bitvault/ItemViewModel.cs
+++ b/Bitvault/ItemViewModel.cs
@@ -52,7 +52,7 @@ public partial class ItemViewModel :
public Task Handle(UpdateEventArgs
- args)
{
- Publisher.Publish(Notify.As(Factory.Create(new List
+ Publisher.Publish(Notify.As(Factory.Create(new List
{
Factory.Create(),
Factory.Create(),
@@ -63,7 +63,7 @@ public partial class ItemViewModel :
public Task Handle(CancelEventArgs
- args)
{
- Publisher.Publish(Notify.As(Factory.Create(new List
+ Publisher.Publish(Notify.As(Factory.Create(new List
{
Factory.Create(),
Factory.Create(),
@@ -74,7 +74,7 @@ public partial class ItemViewModel :
public Task Handle(ConfirmEventArgs
- args)
{
- Publisher.Publish(Notify.As(Factory.Create(new List
+ Publisher.Publish(Notify.As(Factory.Create(new List
{
Factory.Create(Favourite),
Factory.Create(),
@@ -88,7 +88,7 @@ public partial class ItemViewModel :
{
if (!Immutable)
{
- Publisher.Publish(Notify.As(Factory.Create(new List
+ Publisher.Publish(Notify.As(Factory.Create(new List
{
Factory.Create(),
Factory.Create(),
@@ -96,14 +96,14 @@ public partial class ItemViewModel :
}
else if (Archived)
{
- Publisher.Publish(Notify.As(Factory.Create(new List
+ Publisher.Publish(Notify.As(Factory.Create(new List
{
Factory.Create(),
})));
}
else
{
- Publisher.Publish(Notify.As(Factory.Create(new List
+ Publisher.Publish(Notify.As(Factory.Create(new List
{
Factory.Create(Favourite),
Factory.Create(),
diff --git a/Bitvault/Container.cs b/Bitvault/Locker.cs
similarity index 62%
rename from Bitvault/Container.cs
rename to Bitvault/Locker.cs
index 424d5c7..ad30de8 100644
--- a/Bitvault/Container.cs
+++ b/Bitvault/Locker.cs
@@ -1,19 +1,19 @@
namespace Bitvault;
-public record Container
+public record Locker
{
- public Container(string name, string password)
+ public Locker(string name, string password)
{
Name = name;
Password = password;
}
- public Container(string password)
+ public Locker(string password)
{
Password = password;
}
- public Container()
+ public Locker()
{
}
diff --git a/Bitvault/LockerActivatedHandler.cs b/Bitvault/LockerActivatedHandler.cs
new file mode 100644
index 0000000..02b71bf
--- /dev/null
+++ b/Bitvault/LockerActivatedHandler.cs
@@ -0,0 +1,34 @@
+using Microsoft.Extensions.DependencyInjection;
+using Toolkit.Foundation;
+
+namespace Bitvault;
+
+public class LockerActivatedHandler(ILockerHostCollection lockers,
+ IPublisher publisher) :
+ INotificationHandler>
+{
+ public Task Handle(ActivatedEventArgs args)
+ {
+ if (args.Value is IComponentHost locker)
+ {
+ List sortedLockers = [.. lockers, locker];
+ sortedLockers = [.. sortedLockers.OrderBy(x => x.GetConfiguration