From 07b8661f4ad201cc188de4e563cc69522c7dc32c Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Fri, 31 May 2024 22:50:52 +0100 Subject: [PATCH] Fix more edge cases --- Bitvault.Avalonia/App.axaml.cs | 10 +++---- Bitvault.Avalonia/ItemCollectionView.axaml | 1 + Bitvault.Avalonia/ItemCollectionView.axaml.cs | 10 ++++++- Bitvault.Avalonia/ItemHeaderView.axaml | 2 +- Bitvault.Avalonia/ItemNavigationView.axaml | 27 ++++--------------- Bitvault.Avalonia/LockerNavigationView.axaml | 4 +-- ... AggregateItemCategoryViewModelHandler.cs} | 2 +- ...> AggregateItemContentViewModelHandler.cs} | 2 +- ...er.cs => AggregateItemViewModelHandler.cs} | 8 +++--- ...er.cs => AggregateMainViewModelHandler.cs} | 2 +- Bitvault/BackActionViewModel.cs | 5 ---- Bitvault/ConfirmItemActionViewModel.cs | 2 +- Bitvault/ItemCollectionViewModel.cs | 20 ++++++-------- Bitvault/ItemContentViewModel.cs | 6 ----- Bitvault/ItemNavigationViewModel.cs | 2 ++ Bitvault/ItemViewModel.cs | 4 +-- Bitvault/Search.cs | 2 +- Bitvault/SearchLockerActionViewModel.cs | 2 +- 18 files changed, 46 insertions(+), 65 deletions(-) rename Bitvault/{AggerateItemCategoryViewModelHandler.cs => AggregateItemCategoryViewModelHandler.cs} (86%) rename Bitvault/{AggerateItemContentViewModelHandler.cs => AggregateItemContentViewModelHandler.cs} (85%) rename Bitvault/{AggerateItemViewModelHandler.cs => AggregateItemViewModelHandler.cs} (89%) rename Bitvault/{AggerateMainViewModelHandler.cs => AggregateMainViewModelHandler.cs} (95%) diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs index 3fdc828..9da0bb0 100644 --- a/Bitvault.Avalonia/App.axaml.cs +++ b/Bitvault.Avalonia/App.axaml.cs @@ -110,12 +110,12 @@ public partial class App : Application services.AddTemplate("ItemCategoryCollection"); services.AddTemplate(); - services.AddHandler(); + services.AddHandler(); services.AddTemplate(); services.AddTemplate("Item"); - services.AddHandler(); + services.AddHandler(); services.AddTemplate("ItemCommandHeader"); @@ -134,8 +134,8 @@ public partial class App : Application services.AddScoped>, ValueStore>>(); - services.AddHandler(nameof(Update)); - services.AddHandler(nameof(Create)); + services.AddHandler(nameof(ItemState.Write)); + services.AddHandler(nameof(ItemState.New)); services.AddHandler(); services.AddHandler(); @@ -154,7 +154,7 @@ public partial class App : Application services.AddInitializer(); services.AddTemplate("Main"); - services.AddHandler(); + services.AddHandler(); services.AddTransient(); diff --git a/Bitvault.Avalonia/ItemCollectionView.axaml b/Bitvault.Avalonia/ItemCollectionView.axaml index 6afd77e..aad4362 100644 --- a/Bitvault.Avalonia/ItemCollectionView.axaml +++ b/Bitvault.Avalonia/ItemCollectionView.axaml @@ -26,6 +26,7 @@ + public ItemCollectionView() + { InitializeComponent(); + + foo.SelectionChanged += Foo_SelectionChanged; + } + + private void Foo_SelectionChanged(object? sender, SelectionChangedEventArgs e) + { + } } diff --git a/Bitvault.Avalonia/ItemHeaderView.axaml b/Bitvault.Avalonia/ItemHeaderView.axaml index d1b28aa..0c809d3 100644 --- a/Bitvault.Avalonia/ItemHeaderView.axaml +++ b/Bitvault.Avalonia/ItemHeaderView.axaml @@ -8,7 +8,7 @@ + DisplayName="{Binding Value, UpdateSourceTrigger=PropertyChanged}" /> + x:DataType="vm:ItemNavigationViewModel" + ListBoxExtension.IsItemInvokedEnabled="True"> - - - - - - - - - - - - - - - - + - + - + @@ -64,7 +64,7 @@ - + diff --git a/Bitvault/AggerateItemCategoryViewModelHandler.cs b/Bitvault/AggregateItemCategoryViewModelHandler.cs similarity index 86% rename from Bitvault/AggerateItemCategoryViewModelHandler.cs rename to Bitvault/AggregateItemCategoryViewModelHandler.cs index b47d3e0..11906db 100644 --- a/Bitvault/AggerateItemCategoryViewModelHandler.cs +++ b/Bitvault/AggregateItemCategoryViewModelHandler.cs @@ -2,7 +2,7 @@ namespace Bitvault; -public class AggerateItemCategoryViewModelHandler(IEnumerable> descriptors, +public class AggregateItemCategoryViewModelHandler(IEnumerable> descriptors, IServiceFactory serviceFactory, IPublisher publisher) : INotificationHandler> diff --git a/Bitvault/AggerateItemContentViewModelHandler.cs b/Bitvault/AggregateItemContentViewModelHandler.cs similarity index 85% rename from Bitvault/AggerateItemContentViewModelHandler.cs rename to Bitvault/AggregateItemContentViewModelHandler.cs index caec2e0..077fcb0 100644 --- a/Bitvault/AggerateItemContentViewModelHandler.cs +++ b/Bitvault/AggregateItemContentViewModelHandler.cs @@ -2,7 +2,7 @@ namespace Bitvault; -public class AggerateItemContentViewModelHandler(IValueStore> valueStore, +public class AggregateItemContentViewModelHandler(IValueStore> valueStore, IMediator mediator, IServiceFactory serviceFactory, IPublisher publisher) : diff --git a/Bitvault/AggerateItemViewModelHandler.cs b/Bitvault/AggregateItemViewModelHandler.cs similarity index 89% rename from Bitvault/AggerateItemViewModelHandler.cs rename to Bitvault/AggregateItemViewModelHandler.cs index e2348f3..d73a396 100644 --- a/Bitvault/AggerateItemViewModelHandler.cs +++ b/Bitvault/AggregateItemViewModelHandler.cs @@ -6,13 +6,15 @@ namespace Bitvault; public class AggerateItemViewModelHandler(IMediator mediator, IServiceProvider serviceProvider, ICache> cache, - IPublisher publisher) : - INotificationHandler> { - public async Task Handle(AggerateEventArgs args) { + var ddddd = dd; if (args.Options is LockerViewModelConfiguration configuration) { cache.Clear(); diff --git a/Bitvault/AggerateMainViewModelHandler.cs b/Bitvault/AggregateMainViewModelHandler.cs similarity index 95% rename from Bitvault/AggerateMainViewModelHandler.cs rename to Bitvault/AggregateMainViewModelHandler.cs index 1a45410..6579093 100644 --- a/Bitvault/AggerateMainViewModelHandler.cs +++ b/Bitvault/AggregateMainViewModelHandler.cs @@ -3,7 +3,7 @@ using Toolkit.Foundation; namespace Bitvault; -public class AggerateMainViewModelHandler(IPublisher publisher, +public class AggregateMainViewModelHandler(IPublisher publisher, ILockerHostCollection lockers) : INotificationHandler> { diff --git a/Bitvault/BackActionViewModel.cs b/Bitvault/BackActionViewModel.cs index 4ff4030..5764488 100644 --- a/Bitvault/BackActionViewModel.cs +++ b/Bitvault/BackActionViewModel.cs @@ -1,5 +1,4 @@ using CommunityToolkit.Mvvm.ComponentModel; -using CommunityToolkit.Mvvm.Input; using Toolkit.Foundation; namespace Bitvault; @@ -13,8 +12,4 @@ public partial class BackActionViewModel(IServiceProvider provider, { [ObservableProperty] private int index = 0; - - [RelayCommand] - public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), - nameof(ItemCollectionViewModel)); } \ No newline at end of file diff --git a/Bitvault/ConfirmItemActionViewModel.cs b/Bitvault/ConfirmItemActionViewModel.cs index af43bf2..5cbdeb8 100644 --- a/Bitvault/ConfirmItemActionViewModel.cs +++ b/Bitvault/ConfirmItemActionViewModel.cs @@ -13,5 +13,5 @@ public partial class ConfirmItemActionViewModel(IServiceProvider provider, { [RelayCommand] public void Invoke() => Publisher.Publish(Confirm.As(), - state is ItemState.New ? nameof(Create) : nameof(Update)); + state is ItemState.New ? nameof(ItemState.New) : nameof(ItemState.Write)); } \ No newline at end of file diff --git a/Bitvault/ItemCollectionViewModel.cs b/Bitvault/ItemCollectionViewModel.cs index 2e1b88e..4a9732a 100644 --- a/Bitvault/ItemCollectionViewModel.cs +++ b/Bitvault/ItemCollectionViewModel.cs @@ -7,10 +7,11 @@ namespace Bitvault; [Notification(typeof(CreateEventArgs), nameof(ItemCollectionViewModel))] [Notification(typeof(InsertEventArgs), nameof(ItemCollectionViewModel))] [Notification(typeof(MoveToEventArgs), nameof(ItemCollectionViewModel))] +[Notification(typeof(NotifyEventArgs>), nameof(ItemCollectionViewModel))] public partial class ItemCollectionViewModel : ObservableCollection, INotificationHandler>, - INotificationHandler>, + INotificationHandler>>, IBackStack { [ObservableProperty] @@ -42,18 +43,18 @@ public partial class ItemCollectionViewModel : if (args.Value is Filter filter) { configuration = configuration with { Filter = filter.Value }; - BeginAggregation(); + Fetch(true); } return Task.CompletedTask; } - public Task Handle(NotifyEventArgs args) + public Task Handle(NotifyEventArgs> args) { - if (args.Value is Search search) + if (args.Value is Search search) { configuration = configuration with { Query = search.Value }; - BeginAggregation(); + Fetch(true); } return Task.CompletedTask; @@ -70,11 +71,6 @@ public partial class ItemCollectionViewModel : return base.OnActivated(); } - public override Task OnDeactivated() - { - return base.OnDeactivated(); - } - protected override IAggerate OnAggerate(object? key) => - Aggerate.With(configuration) - with { Key = key }; + protected override AggregateExpression CreateAggregateExpression() => + new(Aggregate.As(configuration)); } diff --git a/Bitvault/ItemContentViewModel.cs b/Bitvault/ItemContentViewModel.cs index 3c9a417..00e8266 100644 --- a/Bitvault/ItemContentViewModel.cs +++ b/Bitvault/ItemContentViewModel.cs @@ -21,12 +21,6 @@ public partial class ItemContentViewModel : public IContentTemplate Template { get; set; } - protected override IAggerate OnAggerate(object? key) - { - return base.OnAggerate(key); - } - - public Task Handle(NotifyEventArgs> args) { return Task.CompletedTask; diff --git a/Bitvault/ItemNavigationViewModel.cs b/Bitvault/ItemNavigationViewModel.cs index ccf6f30..e2b1465 100644 --- a/Bitvault/ItemNavigationViewModel.cs +++ b/Bitvault/ItemNavigationViewModel.cs @@ -1,5 +1,6 @@ using CommunityToolkit.Mvvm.ComponentModel; using Toolkit.Foundation; +using Toolkit.UI.Avalonia; namespace Bitvault; @@ -48,6 +49,7 @@ public partial class ItemNavigationViewModel(IServiceProvider provider, private bool selected = selected; public IContentTemplate Template { get; set; } = template; + public bool Attached { get; set; } public Task Handle(ArchiveEventArgs args) => Task.Run(Dispose); diff --git a/Bitvault/ItemViewModel.cs b/Bitvault/ItemViewModel.cs index ba95bcb..f6f124d 100644 --- a/Bitvault/ItemViewModel.cs +++ b/Bitvault/ItemViewModel.cs @@ -3,13 +3,13 @@ using Toolkit.Foundation; namespace Bitvault; -[Notification(typeof(ConfirmEventArgs), nameof(Create))] +[Notification(typeof(ConfirmEventArgs), nameof(ItemState.New))] +[Notification(typeof(ConfirmEventArgs), nameof(ItemState.Write))] public partial class ItemViewModel : ObservableCollection, INotificationHandler>, INotificationHandler>, INotificationHandler> - { [ObservableProperty] private bool archived; diff --git a/Bitvault/Search.cs b/Bitvault/Search.cs index 41f4d94..bd18c6e 100644 --- a/Bitvault/Search.cs +++ b/Bitvault/Search.cs @@ -1,3 +1,3 @@ namespace Bitvault; -public record Search(string? Value); \ No newline at end of file +public record Search(TValue? Value); \ No newline at end of file diff --git a/Bitvault/SearchLockerActionViewModel.cs b/Bitvault/SearchLockerActionViewModel.cs index de8785b..093ac5e 100644 --- a/Bitvault/SearchLockerActionViewModel.cs +++ b/Bitvault/SearchLockerActionViewModel.cs @@ -15,6 +15,6 @@ public partial class SearchLockerActionViewModel(IServiceProvider provider, private int index = 2; [RelayCommand] - public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), + public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), nameof(ItemCollectionViewModel)); } \ No newline at end of file