From 3631d666f5048e60debf6e9ef71ce1408abd39c3 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Mon, 27 May 2024 16:08:18 +0100 Subject: [PATCH] Mass rename to align planned codename --- Bitvault.Avalonia/AllNavigationView.axaml | 2 +- Bitvault.Avalonia/App.axaml.cs | 67 ++++++++++--------- Bitvault.Avalonia/ArchiveNavigationView.axaml | 2 +- Bitvault.Avalonia/Bitvault.Avalonia.csproj | 23 ++++--- .../ContainerHeaderView.axaml.cs | 8 --- .../ContainerNavigationView.axaml.cs | 8 --- .../CreateContainerNavigationView.axaml.cs | 9 --- .../CreateContainerView.axaml.cs | 8 --- Bitvault.Avalonia/CreateItemActionView.axaml | 6 +- ...axaml => CreateLockerNavigationView.axaml} | 4 +- .../CreateLockerNavigationView.axaml.cs | 9 +++ ...ainerView.axaml => CreateLockerView.axaml} | 4 +- Bitvault.Avalonia/CreateLockerView.axaml.cs | 9 +++ ...eaderView.axaml => LockerHeaderView.axaml} | 4 +- Bitvault.Avalonia/LockerHeaderView.axaml.cs | 9 +++ ...nView.axaml => LockerNavigationView.axaml} | 10 +-- .../LockerNavigationView.axaml.cs | 9 +++ .../{ContainerView.axaml => LockerView.axaml} | 6 +- ...ainerView.axaml.cs => LockerView.axaml.cs} | 4 +- Bitvault.Avalonia/MainView.axaml | 2 +- Bitvault.Avalonia/ManageNavigationView.axaml | 2 +- Bitvault.Avalonia/OpenView.axaml | 8 +-- .../SearchContainerActionView.axaml.cs | 8 --- ...iew.axaml => SearchLockerActionView.axaml} | 4 +- .../SearchLockerActionView.axaml.cs | 9 +++ Bitvault.Avalonia/StarredNavigationView.axaml | 2 +- ...ContainerDbContext.cs => LockerContext.cs} | 2 +- ...AggerateLockerCategoryViewModelHandler.cs} | 2 +- ... => AggerateLockerItemViewModelHandler.cs} | 12 ++-- Bitvault/AggerateMainViewModelHandler.cs | 12 ++-- Bitvault/AllNavigationViewModel.cs | 2 +- Bitvault/ArchiveNavigationViewModel.cs | 2 +- Bitvault/CategoriesNavigationViewModel.cs | 2 +- Bitvault/CommandCollection.cs | 8 --- Bitvault/ContainerActivatedHandler.cs | 34 ---------- Bitvault/ContainerComponent.cs | 6 -- Bitvault/ContainerFactory.cs | 18 ----- Bitvault/ContainerHeaderViewModel.cs | 23 ------- Bitvault/ContainerInitializer.cs | 22 ------ Bitvault/CreateItemActionViewModel.cs | 5 +- Bitvault/CreateItemHandler.cs | 4 +- ...ainerHandler.cs => CreateLockerHandler.cs} | 18 ++--- ....cs => CreateLockerNavigationViewModel.cs} | 2 +- ...rViewModel.cs => CreateLockerViewModel.cs} | 4 +- Bitvault/CreatedItemHandler.cs | 2 +- Bitvault/DropdownEntryConfiguration.cs | 10 +++ ....cs => FilterLockerNavigationViewModel.cs} | 14 ++-- Bitvault/Form.cs | 6 -- Bitvault/FormEntry.cs | 3 - Bitvault/FormField.cs | 12 ---- Bitvault/FormFieldType.cs | 16 ----- Bitvault/FormGroup.cs | 8 --- ...{IContainerHost.cs => ILockerComponent.cs} | 2 +- ...IContainerFactory.cs => ILockerFactory.cs} | 2 +- ...{IContainerComponent.cs => ILockerHost.cs} | 2 +- ...Collection.cs => ILockerHostCollection.cs} | 2 +- ...Model.cs => ILockerNavigationViewModel.cs} | 2 +- ...ageFactory.cs => ILockerStorageFactory.cs} | 2 +- Bitvault/ItemCategoryCollectionViewModel.cs | 10 +++ Bitvault/ItemCollectionViewModel.cs | 19 ++++-- Bitvault/ItemCommandHeaderCollection.cs | 6 ++ Bitvault/ItemCommandHeaderViewModel.cs | 7 +- Bitvault/ItemConfiguration.cs | 36 ++++++++++ Bitvault/ItemEntryConfiguration.cs | 18 +++++ Bitvault/ItemSectionConfiguration.cs | 6 ++ Bitvault/ItemViewModel.cs | 12 ++-- Bitvault/{Container.cs => Locker.cs} | 8 +-- Bitvault/LockerActivatedHandler.cs | 34 ++++++++++ Bitvault/LockerCommandHeaderCollection.cs | 6 ++ Bitvault/LockerComponent.cs | 6 ++ ...onfiguration.cs => LockerConfiguration.cs} | 2 +- ...ainerConnection.cs => LockerConnection.cs} | 2 +- Bitvault/LockerFactory.cs | 18 +++++ Bitvault/LockerHeaderViewModel.cs | 31 +++++++++ ...tCollection.cs => LockerHostCollection.cs} | 4 +- Bitvault/LockerInitializer.cs | 22 ++++++ ...wModel.cs => LockerNavigationViewModel.cs} | 22 +++--- ...rageFactory.cs => LockerStorageFactory.cs} | 10 +-- ...ntainerViewModel.cs => LockerViewModel.cs} | 8 +-- ...ion.cs => LockerViewModelConfiguration.cs} | 2 +- Bitvault/ManageViewModel.cs | 2 +- Bitvault/MaskedTextEntryConfiguration.cs | 10 +++ Bitvault/ModifiedItemHandler.cs | 2 +- Bitvault/NoteEntryConfiguration.cs | 7 ++ Bitvault/NumberEntryConfiguration.cs | 7 ++ Bitvault/OpenContainerHandler.cs | 33 --------- Bitvault/OpenLockerHandler.cs | 33 +++++++++ ...nerViewModel.cs => OpenLockerViewModel.cs} | 6 +- Bitvault/PasswordEntryConfiguration.cs | 7 ++ ...uration.cs => QueryLockerConfiguration.cs} | 2 +- ...tainerHandler.cs => QueryLockerHandler.cs} | 10 +-- Bitvault/SearchContainerActionViewModel.cs | 21 ------ Bitvault/SearchLockerActionViewModel.cs | 35 ++++++++++ Bitvault/StarredNavigationViewModel.cs | 2 +- Bitvault/TextEntryConfiguration.cs | 7 ++ Bitvault/UnarchiveItemHandler.cs | 4 +- Bitvault/UpdateItemHander.cs | 4 +- Bitvault/UpdateItemStateHandler.cs | 4 +- 98 files changed, 550 insertions(+), 432 deletions(-) delete mode 100644 Bitvault.Avalonia/ContainerHeaderView.axaml.cs delete mode 100644 Bitvault.Avalonia/ContainerNavigationView.axaml.cs delete mode 100644 Bitvault.Avalonia/CreateContainerNavigationView.axaml.cs delete mode 100644 Bitvault.Avalonia/CreateContainerView.axaml.cs rename Bitvault.Avalonia/{CreateContainerNavigationView.axaml => CreateLockerNavigationView.axaml} (79%) create mode 100644 Bitvault.Avalonia/CreateLockerNavigationView.axaml.cs rename Bitvault.Avalonia/{CreateContainerView.axaml => CreateLockerView.axaml} (88%) create mode 100644 Bitvault.Avalonia/CreateLockerView.axaml.cs rename Bitvault.Avalonia/{ContainerHeaderView.axaml => LockerHeaderView.axaml} (87%) create mode 100644 Bitvault.Avalonia/LockerHeaderView.axaml.cs rename Bitvault.Avalonia/{ContainerNavigationView.axaml => LockerNavigationView.axaml} (90%) create mode 100644 Bitvault.Avalonia/LockerNavigationView.axaml.cs rename Bitvault.Avalonia/{ContainerView.axaml => LockerView.axaml} (96%) rename Bitvault.Avalonia/{ContainerView.axaml.cs => LockerView.axaml.cs} (80%) delete mode 100644 Bitvault.Avalonia/SearchContainerActionView.axaml.cs rename Bitvault.Avalonia/{SearchContainerActionView.axaml => SearchLockerActionView.axaml} (93%) create mode 100644 Bitvault.Avalonia/SearchLockerActionView.axaml.cs rename Bitvault.Data/{ContainerDbContext.cs => LockerContext.cs} (86%) rename Bitvault/{AggerateContainerCategoryViewModelHandler.cs => AggerateLockerCategoryViewModelHandler.cs} (87%) rename Bitvault/{AggerateContainerItemViewModelHandler.cs => AggerateLockerItemViewModelHandler.cs} (81%) delete mode 100644 Bitvault/CommandCollection.cs delete mode 100644 Bitvault/ContainerActivatedHandler.cs delete mode 100644 Bitvault/ContainerComponent.cs delete mode 100644 Bitvault/ContainerFactory.cs delete mode 100644 Bitvault/ContainerHeaderViewModel.cs delete mode 100644 Bitvault/ContainerInitializer.cs rename Bitvault/{CreateContainerHandler.cs => CreateLockerHandler.cs} (65%) rename Bitvault/{CreateContainerNavigationViewModel.cs => CreateLockerNavigationViewModel.cs} (77%) rename Bitvault/{CreateContainerViewModel.cs => CreateLockerViewModel.cs} (75%) create mode 100644 Bitvault/DropdownEntryConfiguration.cs rename Bitvault/{FilterContainerNavigationViewModel.cs => FilterLockerNavigationViewModel.cs} (65%) delete mode 100644 Bitvault/Form.cs delete mode 100644 Bitvault/FormEntry.cs delete mode 100644 Bitvault/FormField.cs delete mode 100644 Bitvault/FormFieldType.cs delete mode 100644 Bitvault/FormGroup.cs rename Bitvault/{IContainerHost.cs => ILockerComponent.cs} (51%) rename Bitvault/{IContainerFactory.cs => ILockerFactory.cs} (73%) rename Bitvault/{IContainerComponent.cs => ILockerHost.cs} (50%) rename Bitvault/{IContainerHostCollection.cs => ILockerHostCollection.cs} (73%) rename Bitvault/{IContainerNavigationViewModel.cs => ILockerNavigationViewModel.cs} (63%) rename Bitvault/{IContainerStorageFactory.cs => ILockerStorageFactory.cs} (65%) create mode 100644 Bitvault/ItemCommandHeaderCollection.cs create mode 100644 Bitvault/ItemEntryConfiguration.cs create mode 100644 Bitvault/ItemSectionConfiguration.cs rename Bitvault/{Container.cs => Locker.cs} (62%) create mode 100644 Bitvault/LockerActivatedHandler.cs create mode 100644 Bitvault/LockerCommandHeaderCollection.cs create mode 100644 Bitvault/LockerComponent.cs rename Bitvault/{ContainerConfiguration.cs => LockerConfiguration.cs} (80%) rename Bitvault/{ContainerConnection.cs => LockerConnection.cs} (72%) create mode 100644 Bitvault/LockerFactory.cs create mode 100644 Bitvault/LockerHeaderViewModel.cs rename Bitvault/{ContainerHostCollection.cs => LockerHostCollection.cs} (84%) create mode 100644 Bitvault/LockerInitializer.cs rename Bitvault/{ContainerNavigationViewModel.cs => LockerNavigationViewModel.cs} (66%) rename Bitvault/{ContainerStorageFactory.cs => LockerStorageFactory.cs} (66%) rename Bitvault/{ContainerViewModel.cs => LockerViewModel.cs} (78%) rename Bitvault/{ContainerViewModelConfiguration.cs => LockerViewModelConfiguration.cs} (71%) create mode 100644 Bitvault/MaskedTextEntryConfiguration.cs create mode 100644 Bitvault/NoteEntryConfiguration.cs create mode 100644 Bitvault/NumberEntryConfiguration.cs delete mode 100644 Bitvault/OpenContainerHandler.cs create mode 100644 Bitvault/OpenLockerHandler.cs rename Bitvault/{OpenContainerViewModel.cs => OpenLockerViewModel.cs} (69%) create mode 100644 Bitvault/PasswordEntryConfiguration.cs rename Bitvault/{QueryContainerConfiguration.cs => QueryLockerConfiguration.cs} (71%) rename Bitvault/{QueryContainerHandler.cs => QueryLockerHandler.cs} (81%) delete mode 100644 Bitvault/SearchContainerActionViewModel.cs create mode 100644 Bitvault/SearchLockerActionViewModel.cs create mode 100644 Bitvault/TextEntryConfiguration.cs 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() is LockerConfiguration configuration ? configuration.Name : null)]; + + int index = sortedLockers.IndexOf(locker); + + if (locker.Services.GetRequiredService() is LockerConfiguration configuration) + { + if (locker.Services.GetRequiredService() is IServiceFactory serviceFactory) + { + if (serviceFactory.Create(configuration.Name) is LockerNavigationViewModel viewModel) + { + publisher.Publish(new InsertEventArgs(index, viewModel), + nameof(MainViewModel)); + } + } + } + } + + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/Bitvault/LockerCommandHeaderCollection.cs b/Bitvault/LockerCommandHeaderCollection.cs new file mode 100644 index 0000000..2cd0bcf --- /dev/null +++ b/Bitvault/LockerCommandHeaderCollection.cs @@ -0,0 +1,6 @@ +using System.Collections.ObjectModel; + +namespace Bitvault; + +public class LockerCommandHeaderCollection(IList list) : + ReadOnlyCollection(list); \ No newline at end of file diff --git a/Bitvault/LockerComponent.cs b/Bitvault/LockerComponent.cs new file mode 100644 index 0000000..071520b --- /dev/null +++ b/Bitvault/LockerComponent.cs @@ -0,0 +1,6 @@ +using Toolkit.Foundation; + +namespace Bitvault; + +public class LockerComponent(IComponentBuilder builder) : Component(builder), + ILockerComponent; \ No newline at end of file diff --git a/Bitvault/ContainerConfiguration.cs b/Bitvault/LockerConfiguration.cs similarity index 80% rename from Bitvault/ContainerConfiguration.cs rename to Bitvault/LockerConfiguration.cs index 1e909f0..6f5a83f 100644 --- a/Bitvault/ContainerConfiguration.cs +++ b/Bitvault/LockerConfiguration.cs @@ -2,7 +2,7 @@ namespace Bitvault; -public record ContainerConfiguration : +public record LockerConfiguration : ComponentConfiguration { public string? Name { get; set; } diff --git a/Bitvault/ContainerConnection.cs b/Bitvault/LockerConnection.cs similarity index 72% rename from Bitvault/ContainerConnection.cs rename to Bitvault/LockerConnection.cs index fc263c9..63c679b 100644 --- a/Bitvault/ContainerConnection.cs +++ b/Bitvault/LockerConnection.cs @@ -1,6 +1,6 @@ namespace Bitvault; -public class ContainerConnection(string connection) +public class LockerConnection(string connection) { private readonly string connection = connection; diff --git a/Bitvault/LockerFactory.cs b/Bitvault/LockerFactory.cs new file mode 100644 index 0000000..24de798 --- /dev/null +++ b/Bitvault/LockerFactory.cs @@ -0,0 +1,18 @@ +using Toolkit.Foundation; + +namespace Bitvault; + +public class LockerFactory(IComponentFactory componentFactory) : + ILockerFactory +{ + public IComponentHost? Create(string name) + { + if (componentFactory.Create($"Locker:{name}", + new LockerConfiguration { Name = name }) is IComponentHost host) + { + return host; + } + + return default; + } +} \ No newline at end of file diff --git a/Bitvault/LockerHeaderViewModel.cs b/Bitvault/LockerHeaderViewModel.cs new file mode 100644 index 0000000..085bf49 --- /dev/null +++ b/Bitvault/LockerHeaderViewModel.cs @@ -0,0 +1,31 @@ +using Toolkit.Foundation; + +namespace Bitvault; + +public partial class LockerHeaderViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscription subscriber, + IDisposer disposer, + IContentTemplate template) : + ObservableCollection(provider, factory, mediator, publisher, subscriber, disposer), + INotificationHandler> +{ + public IContentTemplate Template { get; set; } = template; + + public Task Handle(NotifyEventArgs args) + { + Clear(); + + if (args.Value is LockerCommandHeaderCollection commandCollection) + { + foreach (IDisposable command in commandCollection) + { + Add(command); + } + } + + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/Bitvault/ContainerHostCollection.cs b/Bitvault/LockerHostCollection.cs similarity index 84% rename from Bitvault/ContainerHostCollection.cs rename to Bitvault/LockerHostCollection.cs index 7a1ea32..76dd620 100644 --- a/Bitvault/ContainerHostCollection.cs +++ b/Bitvault/LockerHostCollection.cs @@ -3,8 +3,8 @@ using Toolkit.Foundation; namespace Bitvault; -public class ContainerHostCollection : - IContainerHostCollection +public class LockerHostCollection : + ILockerHostCollection { private readonly List hosts = []; diff --git a/Bitvault/LockerInitializer.cs b/Bitvault/LockerInitializer.cs new file mode 100644 index 0000000..51178b0 --- /dev/null +++ b/Bitvault/LockerInitializer.cs @@ -0,0 +1,22 @@ +using Toolkit.Foundation; + +namespace Bitvault; + +public class LockerInitializer(IEnumerable> configurations, + IComponentFactory componentFactory, + ILockerHostCollection lockers) : IInitializer +{ + public async Task Initialize() + { + foreach (IConfigurationDescriptor configuration in configurations) + { + if (componentFactory.Create(configuration.Section, configuration.Value) + is IComponentHost host) + { + lockers.Add(host); + await host.StartAsync(); + } + } + } +} \ No newline at end of file diff --git a/Bitvault/ContainerNavigationViewModel.cs b/Bitvault/LockerNavigationViewModel.cs similarity index 66% rename from Bitvault/ContainerNavigationViewModel.cs rename to Bitvault/LockerNavigationViewModel.cs index a22e24f..0b2fb79 100644 --- a/Bitvault/ContainerNavigationViewModel.cs +++ b/Bitvault/LockerNavigationViewModel.cs @@ -3,13 +3,13 @@ using Toolkit.Foundation; namespace Bitvault; -public partial class ContainerNavigationViewModel : - ObservableCollection, +public partial class LockerNavigationViewModel : + ObservableCollection, IMainNavigationViewModel, - INotificationHandler>, - INotificationHandler>, - INotificationHandler>, - INotificationHandler> + INotificationHandler>, + INotificationHandler>, + INotificationHandler>, + INotificationHandler> { [ObservableProperty] private bool activated; @@ -26,7 +26,7 @@ public partial class ContainerNavigationViewModel : [ObservableProperty] private bool selected; - public ContainerNavigationViewModel(IServiceProvider provider, + public LockerNavigationViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, @@ -41,7 +41,7 @@ public partial class ContainerNavigationViewModel : public IContentTemplate Template { get; set; } - public Task Handle(OpenedEventArgs args) + public Task Handle(OpenedEventArgs args) { Add("All"); Add("Starred"); @@ -52,7 +52,7 @@ public partial class ContainerNavigationViewModel : return Task.CompletedTask; } - public Task Handle(ClosedEventArgs args) + public Task Handle(ClosedEventArgs args) { Opened = true; Clear(); @@ -60,9 +60,9 @@ public partial class ContainerNavigationViewModel : return Task.CompletedTask; } - 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); } \ No newline at end of file diff --git a/Bitvault/ContainerStorageFactory.cs b/Bitvault/LockerStorageFactory.cs similarity index 66% rename from Bitvault/ContainerStorageFactory.cs rename to Bitvault/LockerStorageFactory.cs index 8bd4636..d1d7729 100644 --- a/Bitvault/ContainerStorageFactory.cs +++ b/Bitvault/LockerStorageFactory.cs @@ -6,19 +6,19 @@ using Toolkit.Foundation; namespace Bitvault; -public class ContainerStorageFactory(IValueStore connection, +public class LockerStorageFactory(IValueStore connection, IHostEnvironment environment, IServiceProvider provider) : - IContainerStorageFactory + ILockerStorageFactory { public async Task Create(string name, SecurityKey key) { - connection.Set(new ContainerConnection($"Data Source={Path.Combine(environment.ContentRootPath, name)}" + + connection.Set(new LockerConnection($"Data Source={Path.Combine(environment.ContentRootPath, name)}" + $".vault;Mode=ReadWriteCreate;Pooling=false;Password={Convert.ToBase64String(key.DecryptedKey)}")); - IDbContextFactory dbContextFactory = provider.GetRequiredService>(); - using ContainerDbContext context = await dbContextFactory.CreateDbContextAsync(); + IDbContextFactory dbContextFactory = provider.GetRequiredService>(); + using LockerContext context = await dbContextFactory.CreateDbContextAsync(); try { diff --git a/Bitvault/ContainerViewModel.cs b/Bitvault/LockerViewModel.cs similarity index 78% rename from Bitvault/ContainerViewModel.cs rename to Bitvault/LockerViewModel.cs index 02a9ad8..898f67f 100644 --- a/Bitvault/ContainerViewModel.cs +++ b/Bitvault/LockerViewModel.cs @@ -3,7 +3,7 @@ using Toolkit.Foundation; namespace Bitvault; -public partial class ContainerViewModel : +public partial class LockerViewModel : Observable { [ObservableProperty] @@ -11,7 +11,7 @@ public partial class ContainerViewModel : [ObservableProperty] private string filter; - public ContainerViewModel(IServiceProvider provider, + public LockerViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, @@ -26,13 +26,13 @@ public partial class ContainerViewModel : public override async Task OnActivated() { - Publisher.Publish(Activated.As()); + Publisher.Publish(Activated.As()); await base.OnActivated(); } public override async Task OnDeactivated() { - Publisher.Publish(Deactivated.As()); + Publisher.Publish(Deactivated.As()); await base.OnDeactivated(); } } \ No newline at end of file diff --git a/Bitvault/ContainerViewModelConfiguration.cs b/Bitvault/LockerViewModelConfiguration.cs similarity index 71% rename from Bitvault/ContainerViewModelConfiguration.cs rename to Bitvault/LockerViewModelConfiguration.cs index 1517043..668bbc1 100644 --- a/Bitvault/ContainerViewModelConfiguration.cs +++ b/Bitvault/LockerViewModelConfiguration.cs @@ -1,6 +1,6 @@ namespace Bitvault; -public record ContainerViewModelConfiguration +public record LockerViewModelConfiguration { public string? Filter { get; set; } = "All"; diff --git a/Bitvault/ManageViewModel.cs b/Bitvault/ManageViewModel.cs index 6d917e9..3559420 100644 --- a/Bitvault/ManageViewModel.cs +++ b/Bitvault/ManageViewModel.cs @@ -16,7 +16,7 @@ public partial class ManageViewModel : { Template = template; - Add(); + Add(); } public IContentTemplate Template { get; set; } diff --git a/Bitvault/MaskedTextEntryConfiguration.cs b/Bitvault/MaskedTextEntryConfiguration.cs new file mode 100644 index 0000000..f82a6f6 --- /dev/null +++ b/Bitvault/MaskedTextEntryConfiguration.cs @@ -0,0 +1,10 @@ +using System.Text.Json.Serialization; + +namespace Bitvault; + +public record MaskedTextEntryConfiguration : + ItemEntryConfiguration +{ + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Pattern { get; set; } +} diff --git a/Bitvault/ModifiedItemHandler.cs b/Bitvault/ModifiedItemHandler.cs index d5e1b6a..c99c558 100644 --- a/Bitvault/ModifiedItemHandler.cs +++ b/Bitvault/ModifiedItemHandler.cs @@ -28,7 +28,7 @@ public class ModifiedItemHandler(IServiceProvider serviceProvider, int newIndex = cache.IndexOf(newItem); valueStore.Set(newItem); - publisher.Publish(MoveTo.As(oldIndex, newIndex), nameof(ContainerViewModel)); + publisher.Publish(MoveTo.As(oldIndex, newIndex), nameof(LockerViewModel)); } } diff --git a/Bitvault/NoteEntryConfiguration.cs b/Bitvault/NoteEntryConfiguration.cs new file mode 100644 index 0000000..dc12f55 --- /dev/null +++ b/Bitvault/NoteEntryConfiguration.cs @@ -0,0 +1,7 @@ +namespace Bitvault; + +public record NoteEntryConfiguration : + ItemEntryConfiguration +{ + +} diff --git a/Bitvault/NumberEntryConfiguration.cs b/Bitvault/NumberEntryConfiguration.cs new file mode 100644 index 0000000..6e4aaa5 --- /dev/null +++ b/Bitvault/NumberEntryConfiguration.cs @@ -0,0 +1,7 @@ +namespace Bitvault; + +public record NumberEntryConfiguration : + ItemEntryConfiguration +{ + +} diff --git a/Bitvault/OpenContainerHandler.cs b/Bitvault/OpenContainerHandler.cs deleted file mode 100644 index 6aa3f08..0000000 --- a/Bitvault/OpenContainerHandler.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Text; -using Toolkit.Foundation; - -namespace Bitvault; - -public class OpenContainerHandler(ContainerConfiguration configuration, - ISecurityKeyFactory keyVaultFactory, - IContainerStorageFactory vaultStorage) : - IHandler, bool> -{ - public async Task Handle(ActivateEventArgs args, - CancellationToken cancellationToken) - { - if (args.Value is Container container && configuration.Name is { Length: > 0 } name && container.Password is { Length: > 0 } password) - { - if (configuration.Key?.Split(':') is { Length: >= 2 } keyPart) - { - byte[]? salt = Convert.FromBase64String(keyPart[0]); - byte[]? encryptedKey = Convert.FromBase64String(keyPart[1]); - - if (keyVaultFactory.Create(Encoding.UTF8.GetBytes(password), encryptedKey, salt) is SecurityKey key) - { - if (await vaultStorage.Create(name, key)) - { - return true; - } - } - } - } - - return false; - } -} \ No newline at end of file diff --git a/Bitvault/OpenLockerHandler.cs b/Bitvault/OpenLockerHandler.cs new file mode 100644 index 0000000..b175c40 --- /dev/null +++ b/Bitvault/OpenLockerHandler.cs @@ -0,0 +1,33 @@ +using System.Text; +using Toolkit.Foundation; + +namespace Bitvault; + +public class OpenLockerHandler(LockerConfiguration configuration, + ISecurityKeyFactory securityKeyFactory, + ILockerStorageFactory lockerStorageFactory) : + IHandler, bool> +{ + public async Task Handle(ActivateEventArgs args, + CancellationToken cancellationToken) + { + if (args.Value is Locker locker && configuration.Name is { Length: > 0 } name && locker.Password is { Length: > 0 } password) + { + if (configuration.Key?.Split(':') is { Length: >= 2 } keyPart) + { + byte[]? salt = Convert.FromBase64String(keyPart[0]); + byte[]? encryptedKey = Convert.FromBase64String(keyPart[1]); + + if (securityKeyFactory.Create(Encoding.UTF8.GetBytes(password), encryptedKey, salt) is SecurityKey key) + { + if (await lockerStorageFactory.Create(name, key)) + { + return true; + } + } + } + } + + return false; + } +} \ No newline at end of file diff --git a/Bitvault/OpenContainerViewModel.cs b/Bitvault/OpenLockerViewModel.cs similarity index 69% rename from Bitvault/OpenContainerViewModel.cs rename to Bitvault/OpenLockerViewModel.cs index 6239a9e..125499e 100644 --- a/Bitvault/OpenContainerViewModel.cs +++ b/Bitvault/OpenLockerViewModel.cs @@ -4,7 +4,7 @@ using Toolkit.Foundation; namespace Bitvault; -public partial class OpenContainerViewModel(IServiceProvider provider, +public partial class OpenLockerViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, @@ -20,9 +20,9 @@ public partial class OpenContainerViewModel(IServiceProvider provider, { if (Password is { Length: > 0 }) { - if (await Mediator.Handle, bool>(Activate.As(new Container(Password)))) + if (await Mediator.Handle, bool>(Activate.As(new Locker(Password)))) { - Publisher.Publish(Opened.As()); + Publisher.Publish(Opened.As()); } } } diff --git a/Bitvault/PasswordEntryConfiguration.cs b/Bitvault/PasswordEntryConfiguration.cs new file mode 100644 index 0000000..1b92b68 --- /dev/null +++ b/Bitvault/PasswordEntryConfiguration.cs @@ -0,0 +1,7 @@ +namespace Bitvault; + +public record PasswordEntryConfiguration : + ItemEntryConfiguration +{ + +} \ No newline at end of file diff --git a/Bitvault/QueryContainerConfiguration.cs b/Bitvault/QueryLockerConfiguration.cs similarity index 71% rename from Bitvault/QueryContainerConfiguration.cs rename to Bitvault/QueryLockerConfiguration.cs index 5d6d71c..17bf81a 100644 --- a/Bitvault/QueryContainerConfiguration.cs +++ b/Bitvault/QueryLockerConfiguration.cs @@ -1,6 +1,6 @@ namespace Bitvault; -public record QueryContainerConfiguration +public record QueryLockerConfiguration { public string? Filter { get; set; } diff --git a/Bitvault/QueryContainerHandler.cs b/Bitvault/QueryLockerHandler.cs similarity index 81% rename from Bitvault/QueryContainerHandler.cs rename to Bitvault/QueryLockerHandler.cs index c0ea178..dafe19d 100644 --- a/Bitvault/QueryContainerHandler.cs +++ b/Bitvault/QueryLockerHandler.cs @@ -5,15 +5,15 @@ using Toolkit.Foundation; namespace Bitvault; -public class QueryContainerHandler(IDbContextFactory dbContextFactory) : - IHandler, IReadOnlyCollection<(Guid Id, string? Name, bool Favourite, bool Archived)>> +public class QueryLockerHandler(IDbContextFactory dbContextFactory) : + IHandler, IReadOnlyCollection<(Guid Id, string? Name, bool Favourite, bool Archived)>> { - public async Task> Handle(RequestEventArgs args, + public async Task> Handle(RequestEventArgs args, CancellationToken cancellationToken) { List<(Guid Id, string? Name, bool Favourite, bool Archived)> items = []; - if (args.Value is QueryContainerConfiguration queryConfiguration) + if (args.Value is QueryLockerConfiguration queryConfiguration) { ExpressionStarter predicate = PredicateBuilder.New(true); @@ -40,7 +40,7 @@ public class QueryContainerHandler(IDbContextFactory dbConte var results = await Task.Run(async () => { - using ContainerDbContext context = dbContextFactory.CreateDbContext(); + using LockerContext context = dbContextFactory.CreateDbContext(); return await context.Set() .Where(predicate) .Select(x => new diff --git a/Bitvault/SearchContainerActionViewModel.cs b/Bitvault/SearchContainerActionViewModel.cs deleted file mode 100644 index ef86695..0000000 --- a/Bitvault/SearchContainerActionViewModel.cs +++ /dev/null @@ -1,21 +0,0 @@ -using CommunityToolkit.Mvvm.ComponentModel; -using CommunityToolkit.Mvvm.Input; -using Toolkit.Foundation; - -namespace Bitvault; - -public partial class SearchContainerActionViewModel(IServiceProvider provider, - IServiceFactory factory, - IMediator mediator, - IPublisher publisher, - ISubscription subscriber, - IDisposer disposer, - int index) : Observable(provider, factory, mediator, publisher, subscriber, disposer) -{ - [ObservableProperty] - private int index = index; - - [RelayCommand] - public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), - nameof(ItemCollectionViewModel)); -} \ No newline at end of file diff --git a/Bitvault/SearchLockerActionViewModel.cs b/Bitvault/SearchLockerActionViewModel.cs new file mode 100644 index 0000000..67a29f9 --- /dev/null +++ b/Bitvault/SearchLockerActionViewModel.cs @@ -0,0 +1,35 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Toolkit.Foundation; + +namespace Bitvault; + +public partial class SearchLockerActionViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscription subscriber, + IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) +{ + [ObservableProperty] + private int index = 2; + + [RelayCommand] + public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), + nameof(ItemCollectionViewModel)); +} + +public partial class BackContainerActionViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscription subscriber, + IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) +{ + [ObservableProperty] + private int index = 2; + + [RelayCommand] + public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), + nameof(ItemCollectionViewModel)); +} \ No newline at end of file diff --git a/Bitvault/StarredNavigationViewModel.cs b/Bitvault/StarredNavigationViewModel.cs index 3918b1d..a5120d6 100644 --- a/Bitvault/StarredNavigationViewModel.cs +++ b/Bitvault/StarredNavigationViewModel.cs @@ -8,4 +8,4 @@ public partial class StarredNavigationViewModel(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/TextEntryConfiguration.cs b/Bitvault/TextEntryConfiguration.cs new file mode 100644 index 0000000..eb176bf --- /dev/null +++ b/Bitvault/TextEntryConfiguration.cs @@ -0,0 +1,7 @@ +namespace Bitvault; + +public record TextEntryConfiguration : + ItemEntryConfiguration +{ + +} diff --git a/Bitvault/UnarchiveItemHandler.cs b/Bitvault/UnarchiveItemHandler.cs index b46a2b8..2df55e7 100644 --- a/Bitvault/UnarchiveItemHandler.cs +++ b/Bitvault/UnarchiveItemHandler.cs @@ -5,7 +5,7 @@ using Toolkit.Foundation; namespace Bitvault; public class UnarchiveItemHandler(IValueStore valueStore, - IDbContextFactory dbContextFactory) : + IDbContextFactory dbContextFactory) : INotificationHandler> { public async Task Handle(UnarchiveEventArgs args) @@ -16,7 +16,7 @@ public class UnarchiveItemHandler(IValueStore valueStore, { await Task.Run(async () => { - using ContainerDbContext context = await dbContextFactory.CreateDbContextAsync(); + using LockerContext context = await dbContextFactory.CreateDbContextAsync(); if (await context.FindAsync(item.Id) is ItemEntry result) { diff --git a/Bitvault/UpdateItemHander.cs b/Bitvault/UpdateItemHander.cs index d9e364a..ccdb1c2 100644 --- a/Bitvault/UpdateItemHander.cs +++ b/Bitvault/UpdateItemHander.cs @@ -4,7 +4,7 @@ using Toolkit.Foundation; namespace Bitvault; -public class UpdateItemHander(IDbContextFactory dbContextFactory) : +public class UpdateItemHander(IDbContextFactory dbContextFactory) : IHandler, bool> { public async Task Handle(UpdateEventArgs<(Guid, ItemConfiguration)> args, @@ -15,7 +15,7 @@ public class UpdateItemHander(IDbContextFactory dbContextFac try { string? name = configuration.Name; - using ContainerDbContext context = dbContextFactory.CreateDbContext(); + using LockerContext context = dbContextFactory.CreateDbContext(); ItemEntry? result = null; await Task.Run(async () => diff --git a/Bitvault/UpdateItemStateHandler.cs b/Bitvault/UpdateItemStateHandler.cs index 77db1d7..42845ea 100644 --- a/Bitvault/UpdateItemStateHandler.cs +++ b/Bitvault/UpdateItemStateHandler.cs @@ -4,7 +4,7 @@ using Toolkit.Foundation; namespace Bitvault; -public class UpdateItemStateHandler(IDbContextFactory dbContextFactory) : +public class UpdateItemStateHandler(IDbContextFactory dbContextFactory) : IHandler, bool> { public async Task Handle(UpdateEventArgs<(Guid, int)> args, @@ -14,7 +14,7 @@ public class UpdateItemStateHandler(IDbContextFactory dbCont { await Task.Run(async () => { - using ContainerDbContext context = await dbContextFactory.CreateDbContextAsync(); + using LockerContext context = await dbContextFactory.CreateDbContextAsync(); if (await context.FindAsync(id) is ItemEntry result) { result.State = state;