From e1ffb541f600ea3c02b6572149af5a7eb0707579 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Tue, 2 Jul 2024 23:38:51 +0100 Subject: [PATCH] Fixed perf issues --- Wallet.Avalonia/App.axaml.cs | 14 ++-- Wallet.Avalonia/ItemNavigationView.axaml | 9 ++- Wallet/ArchiveItemActionViewModel.cs | 2 +- ...esNavigationViewModelActivationHandler.cs} | 6 +- Wallet/ConfirmCreateItemHandler.cs | 6 +- Wallet/ConfirmItemActionViewModel.cs | 2 +- Wallet/CreateWalletViewModel.cs | 4 +- Wallet/DeleteItemActionViewModel.cs | 2 +- Wallet/DismissItemActionViewModel.cs | 2 +- Wallet/EditItemActionViewModel.cs | 2 +- Wallet/FavouriteItemActionViewModel.cs | 2 +- Wallet/HyperlinkEntryViewModel.cs | 2 +- Wallet/IItemViewModel.cs | 5 +- Wallet/ItemCategoryNavigationViewModel.cs | 2 +- ... ItemCategoryViewModelActivatedHandler.cs} | 6 +- Wallet/ItemCollectionViewModel.cs | 8 +- ...temCollectionViewModelActivatedHandler.cs} | 6 +- ...FromCategoryViewModelActivationHandler.cs} | 6 +- Wallet/ItemContentViewModel.cs | 2 +- ... ItemContentViewModelActivationHandler.cs} | 6 +- Wallet/ItemCreatedHandler.cs | 10 +-- Wallet/ItemHeaderViewModel.cs | 4 +- Wallet/ItemNavigationViewModel.cs | 78 ++++++++++++++----- ...ItemNavigationViewModelActivatedHandler.cs | 20 +++++ Wallet/ItemViewModel.cs | 3 - ...r.cs => MainViewModelActivationHandler.cs} | 6 +- Wallet/SearchWalletActionViewModel.cs | 2 +- Wallet/UnarchiveItemActionViewModel.cs | 2 +- Wallet/UnfavouriteItemActionViewModel.cs | 2 +- 29 files changed, 139 insertions(+), 82 deletions(-) rename Wallet/{SynchronizeCategoriesNavigationViewModelHandler.cs => CategoriesNavigationViewModelActivationHandler.cs} (78%) rename Wallet/{SynchronizeItemCategoryViewModelHandler.cs => ItemCategoryViewModelActivatedHandler.cs} (72%) rename Wallet/{SynchronizeItemCollectionViewModelHandler.cs => ItemCollectionViewModelActivatedHandler.cs} (89%) rename Wallet/{SynchronizeItemContentFromCategoryViewModelHandler.cs => ItemContentFromCategoryViewModelActivationHandler.cs} (89%) rename Wallet/{SynchronizeItemContentViewModelHandler.cs => ItemContentViewModelActivationHandler.cs} (90%) create mode 100644 Wallet/ItemNavigationViewModelActivatedHandler.cs rename Wallet/{SynchronizeMainViewModelHandler.cs => MainViewModelActivationHandler.cs} (87%) diff --git a/Wallet.Avalonia/App.axaml.cs b/Wallet.Avalonia/App.axaml.cs index 30e19a4..e4dd979 100644 --- a/Wallet.Avalonia/App.axaml.cs +++ b/Wallet.Avalonia/App.axaml.cs @@ -142,7 +142,7 @@ public partial class App : Application services.AddTemplate("Wallet"); services.AddTemplate("ItemCollection"); - services.AddHandler(); + services.AddHandler(); services.AddTemplate("WalletHeader"); services.AddTemplate(); @@ -151,15 +151,17 @@ public partial class App : Application services.AddTemplate("ItemCategoryCollection"); services.AddTemplate(); - services.AddHandler(); + services.AddHandler(); - services.AddHandler(); + services.AddHandler(); services.AddScoped>, DecoratorService>>(); services.AddTemplate(); services.AddTemplate(); + services.AddHandler(); + services.AddTemplate("EmptyItemCollection"); services.AddScoped, DecoratorService>(); @@ -170,8 +172,8 @@ public partial class App : Application services.AddTemplate(); services.AddTemplate(); - services.AddHandler(); - services.AddHandler(); + services.AddHandler(); + services.AddHandler(); services.AddTemplate(); @@ -230,7 +232,7 @@ public partial class App : Application services.AddHandler(); services.AddTemplate("Main"); - services.AddHandler(); + services.AddHandler(); services.AddTransient(); diff --git a/Wallet.Avalonia/ItemNavigationView.axaml b/Wallet.Avalonia/ItemNavigationView.axaml index 765e9c1..ec7fd26 100644 --- a/Wallet.Avalonia/ItemNavigationView.axaml +++ b/Wallet.Avalonia/ItemNavigationView.axaml @@ -17,13 +17,16 @@ - - + + + + + diff --git a/Wallet/ArchiveItemActionViewModel.cs b/Wallet/ArchiveItemActionViewModel.cs index e3a241a..ab17fd1 100644 --- a/Wallet/ArchiveItemActionViewModel.cs +++ b/Wallet/ArchiveItemActionViewModel.cs @@ -12,5 +12,5 @@ public partial class ArchiveItemActionViewModel(IServiceProvider provider, IRemovable { [RelayCommand] - public void Invoke() => Publisher.Publish(Archive.As()); + private void Invoke() => Publisher.Publish(Archive.As()); } \ No newline at end of file diff --git a/Wallet/SynchronizeCategoriesNavigationViewModelHandler.cs b/Wallet/CategoriesNavigationViewModelActivationHandler.cs similarity index 78% rename from Wallet/SynchronizeCategoriesNavigationViewModelHandler.cs rename to Wallet/CategoriesNavigationViewModelActivationHandler.cs index af351c7..2b9fc86 100644 --- a/Wallet/SynchronizeCategoriesNavigationViewModelHandler.cs +++ b/Wallet/CategoriesNavigationViewModelActivationHandler.cs @@ -2,13 +2,13 @@ namespace Wallet; -public class SynchronizeCategoriesNavigationViewModelHandler(IMediator mediator, +public class CategoriesNavigationViewModelActivationHandler(IMediator mediator, IItemConfigurationCollection configurations, IServiceFactory serviceFactory, IPublisher publisher) : - INotificationHandler> + INotificationHandler> { - public async Task Handle(SynchronizeEventArgs args) + public async Task Handle(ActivationEventArgs args) { IReadOnlyCollection<(string Name, int Count)>? counts = await mediator.Handle, IReadOnlyCollection<(string, int)>>(Count.As()); diff --git a/Wallet/ConfirmCreateItemHandler.cs b/Wallet/ConfirmCreateItemHandler.cs index 917f698..9332555 100644 --- a/Wallet/ConfirmCreateItemHandler.cs +++ b/Wallet/ConfirmCreateItemHandler.cs @@ -19,13 +19,13 @@ public class ConfirmCreateItemHandler(IMediator mediator, IImageDescriptor? imageDescriptor = headerConfiguration.ImageDescriptor; Guid id = Guid.NewGuid(); - Item<(Guid, string, string, IImageDescriptor?)> item = new((id, name, category, imageDescriptor)); - publisher.Publish(Created.As(item)); - await mediator.Handle, bool>(new CreateEventArgs<(Guid, string, string, IImageDescriptor?, ItemConfiguration)>((id, name, category, imageDescriptor ?? default, itemConfiguration))); + Item<(Guid, string, string)> item = new((id, name, category)); + publisher.Publish(Created.As(item)); + publisher.Publish(Changed.As()); } } diff --git a/Wallet/ConfirmItemActionViewModel.cs b/Wallet/ConfirmItemActionViewModel.cs index a698a88..df529aa 100644 --- a/Wallet/ConfirmItemActionViewModel.cs +++ b/Wallet/ConfirmItemActionViewModel.cs @@ -11,5 +11,5 @@ public partial class ConfirmItemActionViewModel(IServiceProvider provider, IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) { [RelayCommand] - public void Invoke() => Publisher.Publish(Confirm.As()); + private void Invoke() => Publisher.Publish(Confirm.As()); } \ No newline at end of file diff --git a/Wallet/CreateWalletViewModel.cs b/Wallet/CreateWalletViewModel.cs index 35fa152..c371165 100644 --- a/Wallet/CreateWalletViewModel.cs +++ b/Wallet/CreateWalletViewModel.cs @@ -58,11 +58,11 @@ public partial class CreateWalletViewModel : } [RelayCommand] - public async Task Import() => ImageDescriptor = await Mediator.Handle, + private async Task Import() => ImageDescriptor = await Mediator.Handle, IImageDescriptor>(Create.As()); [RelayCommand] - public void Remove() => ImageDescriptor = null; + private void Remove() => ImageDescriptor = null; protected override void OnPropertyChanged(PropertyChangedEventArgs args) { diff --git a/Wallet/DeleteItemActionViewModel.cs b/Wallet/DeleteItemActionViewModel.cs index f343b0b..3baae57 100644 --- a/Wallet/DeleteItemActionViewModel.cs +++ b/Wallet/DeleteItemActionViewModel.cs @@ -11,5 +11,5 @@ public partial class DeleteItemActionViewModel(IServiceProvider provider, IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) { [RelayCommand] - public void Invoke() => Publisher.Publish(Delete.As()); + private void Invoke() => Publisher.Publish(Delete.As()); } \ No newline at end of file diff --git a/Wallet/DismissItemActionViewModel.cs b/Wallet/DismissItemActionViewModel.cs index 1b8419e..9bde84c 100644 --- a/Wallet/DismissItemActionViewModel.cs +++ b/Wallet/DismissItemActionViewModel.cs @@ -11,5 +11,5 @@ public partial class DismissItemActionViewModel(IServiceProvider provider, IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) { [RelayCommand] - public void Invoke() => Publisher.Publish(Cancel.As()); + private void Invoke() => Publisher.Publish(Cancel.As()); } \ No newline at end of file diff --git a/Wallet/EditItemActionViewModel.cs b/Wallet/EditItemActionViewModel.cs index 7afd211..a661eb8 100644 --- a/Wallet/EditItemActionViewModel.cs +++ b/Wallet/EditItemActionViewModel.cs @@ -11,5 +11,5 @@ public partial class EditItemActionViewModel(IServiceProvider provider, IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) { [RelayCommand] - public void Invoke() => Publisher.Publish(Update.As()); + private void Invoke() => Publisher.Publish(Update.As()); } \ No newline at end of file diff --git a/Wallet/FavouriteItemActionViewModel.cs b/Wallet/FavouriteItemActionViewModel.cs index a877a36..4b63b0b 100644 --- a/Wallet/FavouriteItemActionViewModel.cs +++ b/Wallet/FavouriteItemActionViewModel.cs @@ -13,7 +13,7 @@ public partial class FavouriteItemActionViewModel(IServiceProvider provider, IRemovable { [RelayCommand] - public void Invoke() + private void Invoke() { if (!Value) { diff --git a/Wallet/HyperlinkEntryViewModel.cs b/Wallet/HyperlinkEntryViewModel.cs index a2914b4..301342b 100644 --- a/Wallet/HyperlinkEntryViewModel.cs +++ b/Wallet/HyperlinkEntryViewModel.cs @@ -16,5 +16,5 @@ public partial class HyperlinkEntryViewModel(IServiceProvider provider, double width) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value, width) { [RelayCommand] - public void Invoke() => Publisher.Publish(Create.As(new Hyperlink(Value))); + private void Invoke() => Publisher.Publish(Create.As(new Hyperlink(Value))); } \ No newline at end of file diff --git a/Wallet/IItemViewModel.cs b/Wallet/IItemViewModel.cs index 638902a..b2e1c4d 100644 --- a/Wallet/IItemViewModel.cs +++ b/Wallet/IItemViewModel.cs @@ -1,7 +1,4 @@ namespace Wallet; public interface IItemViewModel : - IDisposable -{ - -} + IDisposable; \ No newline at end of file diff --git a/Wallet/ItemCategoryNavigationViewModel.cs b/Wallet/ItemCategoryNavigationViewModel.cs index e7f5162..da0b84c 100644 --- a/Wallet/ItemCategoryNavigationViewModel.cs +++ b/Wallet/ItemCategoryNavigationViewModel.cs @@ -23,5 +23,5 @@ public partial class ItemCategoryNavigationViewModel(IServiceProvider provider, private bool isSelected = isSelected; [RelayCommand] - public void Invoke() => Publisher.Publish(Notify.As(new ItemCategory(Name))); + private void Invoke() => Publisher.Publish(Notify.As(new ItemCategory(Name))); } diff --git a/Wallet/SynchronizeItemCategoryViewModelHandler.cs b/Wallet/ItemCategoryViewModelActivatedHandler.cs similarity index 72% rename from Wallet/SynchronizeItemCategoryViewModelHandler.cs rename to Wallet/ItemCategoryViewModelActivatedHandler.cs index 088664d..ebfec08 100644 --- a/Wallet/SynchronizeItemCategoryViewModelHandler.cs +++ b/Wallet/ItemCategoryViewModelActivatedHandler.cs @@ -2,12 +2,12 @@ namespace Wallet; -public class SynchronizeItemCategoryViewModelHandler(IItemConfigurationCollection configurations, +public class ItemCategoryViewModelActivatedHandler(IItemConfigurationCollection configurations, IServiceFactory serviceFactory, IPublisher publisher) : - INotificationHandler> + INotificationHandler> { - public Task Handle(SynchronizeEventArgs args) + public Task Handle(ActivationEventArgs args) { bool selected = true; foreach (KeyValuePair> configuration in configurations) diff --git a/Wallet/ItemCollectionViewModel.cs b/Wallet/ItemCollectionViewModel.cs index caef5fc..84cbdd0 100644 --- a/Wallet/ItemCollectionViewModel.cs +++ b/Wallet/ItemCollectionViewModel.cs @@ -42,7 +42,7 @@ public partial class ItemCollectionViewModel : if (args.Sender is Filter filter) { configuration = configuration with { Filter = filter.Value }; - Synchronize(true); + Activate(true); } return Task.CompletedTask; @@ -53,7 +53,7 @@ public partial class ItemCollectionViewModel : if (args.Sender is Search search) { configuration = configuration with { Query = search.Value }; - Synchronize(true); + Activate(true); } return Task.CompletedTask; @@ -69,6 +69,6 @@ public partial class ItemCollectionViewModel : return base.OnActivated(); } - protected override SynchronizeExpression BuildAggregateExpression() => - new(Toolkit.Foundation.Synchronize.As(configuration)); + protected override ActivationBuilder ActivationBuilder() => + new(Activation.As(configuration)); } diff --git a/Wallet/SynchronizeItemCollectionViewModelHandler.cs b/Wallet/ItemCollectionViewModelActivatedHandler.cs similarity index 89% rename from Wallet/SynchronizeItemCollectionViewModelHandler.cs rename to Wallet/ItemCollectionViewModelActivatedHandler.cs index d6a067a..a2041dc 100644 --- a/Wallet/SynchronizeItemCollectionViewModelHandler.cs +++ b/Wallet/ItemCollectionViewModelActivatedHandler.cs @@ -3,13 +3,13 @@ using Toolkit.Foundation; namespace Wallet; -public class SynchronizeItemCollectionViewModelHandler(IMediator mediator, +public class ItemCollectionViewModelActivatedHandler(IMediator mediator, IServiceProvider serviceProvider, ICache> cache, IPublisher publisher) : - INotificationHandler> + INotificationHandler> { - public async Task Handle(SynchronizeEventArgs args) { if (args.Value is ItemCollectionConfiguration configuration) diff --git a/Wallet/SynchronizeItemContentFromCategoryViewModelHandler.cs b/Wallet/ItemContentFromCategoryViewModelActivationHandler.cs similarity index 89% rename from Wallet/SynchronizeItemContentFromCategoryViewModelHandler.cs rename to Wallet/ItemContentFromCategoryViewModelActivationHandler.cs index 49bc4bf..bde3ced 100644 --- a/Wallet/SynchronizeItemContentFromCategoryViewModelHandler.cs +++ b/Wallet/ItemContentFromCategoryViewModelActivationHandler.cs @@ -3,14 +3,14 @@ using Toolkit.Foundation; namespace Wallet; -public class SynchronizeItemContentFromCategoryViewModelHandler(IItemConfigurationCollection configurations, +public class ItemContentFromCategoryViewModelActivationHandler(IItemConfigurationCollection configurations, IDecoratorService itemConfigurationDecorator, IServiceFactory serviceFactory, IMediator mediator, IPublisher publisher) : - INotificationHandler> + INotificationHandler> { - public async Task Handle(SynchronizeEventArgs args) + public async Task Handle(ActivationEventArgs args) { if (args.Value is string category) { diff --git a/Wallet/ItemContentViewModel.cs b/Wallet/ItemContentViewModel.cs index 4e50f91..292092e 100644 --- a/Wallet/ItemContentViewModel.cs +++ b/Wallet/ItemContentViewModel.cs @@ -21,7 +21,7 @@ public partial class ItemContentViewModel(IServiceProvider provider, if (args.Sender is ItemCategory category && category.Value is string value) { - Fetch(() => new SynchronizeExpression(new SynchronizeEventArgs new ActivationBuilder(new ActivationEventArgs(value)), true); } diff --git a/Wallet/SynchronizeItemContentViewModelHandler.cs b/Wallet/ItemContentViewModelActivationHandler.cs similarity index 90% rename from Wallet/SynchronizeItemContentViewModelHandler.cs rename to Wallet/ItemContentViewModelActivationHandler.cs index b057605..41b67fb 100644 --- a/Wallet/SynchronizeItemContentViewModelHandler.cs +++ b/Wallet/ItemContentViewModelActivationHandler.cs @@ -3,14 +3,14 @@ using Toolkit.Foundation; namespace Wallet; -public class SynchronizeItemContentViewModelHandler(IDecoratorService> itemDecorator, +public class ItemContentViewModelActivationHandler(IDecoratorService> itemDecorator, IDecoratorService itemConfigurationDecorator, IMediator mediator, IServiceFactory serviceFactory, IPublisher publisher) : - INotificationHandler> + INotificationHandler> { - public async Task Handle(SynchronizeEventArgs args) + public async Task Handle(ActivationEventArgs args) { if (itemDecorator.Service is Item<(Guid, string)> item) { diff --git a/Wallet/ItemCreatedHandler.cs b/Wallet/ItemCreatedHandler.cs index c0977cd..20f371c 100644 --- a/Wallet/ItemCreatedHandler.cs +++ b/Wallet/ItemCreatedHandler.cs @@ -6,20 +6,20 @@ namespace Wallet; public class ItemCreatedHandler(IServiceProvider serviceProvider, ICache> cache, IPublisher publisher) : - INotificationHandler>> + INotificationHandler>> { - public Task Handle(CreatedEventArgs> args) + public Task Handle(CreatedEventArgs> args) { - if (args.Sender is Item<(Guid, string, string, IImageDescriptor?)> item) + if (args.Sender is Item<(Guid, string, string)> item) { - (Guid id, string name, string category, IImageDescriptor? imageDescriptor) = item.Value; + (Guid id, string name, string category) = item.Value; IServiceScope serviceScope = serviceProvider.CreateScope(); IServiceFactory serviceFactory = serviceScope.ServiceProvider.GetRequiredService(); IDecoratorService> decoratorService = serviceScope.ServiceProvider.GetRequiredService>>(); if (serviceFactory.Create(args => args.Initialize(), - id, name, "Description", category, imageDescriptor, true) + id, name, "Description", category, true) is ItemNavigationViewModel viewModel) { Item<(Guid, string)> cachedItem = new((id, name)); diff --git a/Wallet/ItemHeaderViewModel.cs b/Wallet/ItemHeaderViewModel.cs index fea146e..a1532d2 100644 --- a/Wallet/ItemHeaderViewModel.cs +++ b/Wallet/ItemHeaderViewModel.cs @@ -74,11 +74,11 @@ public partial class ItemHeaderViewModel : } [RelayCommand] - public async Task Import() => ImageDescriptor = await Mediator.Handle, + private async Task Import() => ImageDescriptor = await Mediator.Handle, IImageDescriptor>(Create.As()); [RelayCommand] - public void Remove() => ImageDescriptor = null; + private void Remove() => ImageDescriptor = null; protected override void OnValueChanged() { diff --git a/Wallet/ItemNavigationViewModel.cs b/Wallet/ItemNavigationViewModel.cs index 4b25e3e..2cfe5d3 100644 --- a/Wallet/ItemNavigationViewModel.cs +++ b/Wallet/ItemNavigationViewModel.cs @@ -1,4 +1,6 @@ using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using System.Diagnostics; using Toolkit.Foundation; namespace Wallet; @@ -15,10 +17,9 @@ public partial class ItemNavigationViewModel(IServiceProvider provider, string name = "", string description = "", string category = "", - IImageDescriptor? imageDescriptor = default, bool isSelected = false, - bool favourite = false, - bool archived = false) : + bool isFavourite = false, + bool isArchived = false) : Observable(provider, factory, mediator, publisher, subscriber, disposer), INotificationHandler>, INotificationHandler>, @@ -26,28 +27,30 @@ public partial class ItemNavigationViewModel(IServiceProvider provider, INotificationHandler>, INotificationHandler>, INotificationHandler>>, + INotificationHandler>>, IKeyed, ISelectable, IRemovable { - [ObservableProperty] - private bool archived = archived; - [ObservableProperty] private string? category = category; [ObservableProperty] private string? description = description; - [ObservableProperty] - private bool favourite = favourite; - [ObservableProperty] private Guid id = id; [ObservableProperty] - private IImageDescriptor? imageDescriptor = imageDescriptor; + private IImageDescriptor? imageDescriptor; + [ObservableProperty] + private bool isArchived = isArchived; + [ObservableProperty] + private bool isAttached; + + [ObservableProperty] + private bool isFavourite = isFavourite; [ObservableProperty] private bool isSelected = isSelected; @@ -58,17 +61,29 @@ public partial class ItemNavigationViewModel(IServiceProvider provider, private string named = $"{named}"; public IContentTemplate Template { get; set; } = template; - public Task Handle(ArchiveEventArgs args) => - Task.Run(Dispose); + public Task Handle(ArchiveEventArgs args) + { + Dispose(); + return Task.CompletedTask; + } - public Task Handle(UnarchiveEventArgs args) => - Task.Run(Dispose); + public Task Handle(UnarchiveEventArgs args) + { + Dispose(); + return Task.CompletedTask; + } - public Task Handle(FavouriteEventArgs args) => - Task.FromResult(Favourite = true); + public Task Handle(FavouriteEventArgs args) + { + IsFavourite = true; + return Task.CompletedTask; + } - public Task Handle(UnfavouriteEventArgs args) => - Task.FromResult(Favourite = false); + public Task Handle(UnfavouriteEventArgs args) + { + IsFavourite = false; + return Task.CompletedTask; + } public Task Handle(NotifyEventArgs> args) { @@ -80,6 +95,29 @@ public partial class ItemNavigationViewModel(IServiceProvider provider, return Task.CompletedTask; } - public Task Handle(DeleteEventArgs args) => - Task.Run(Dispose); + public Task Handle(DeleteEventArgs args) + { + Dispose(); + return Task.CompletedTask; + } + + public Task Handle(NotifyEventArgs> args) + { + if (args.Sender is Item item) + { + ImageDescriptor = item.Value; + } + + return Task.CompletedTask; + } + + [RelayCommand] + private void Attached() + { + if (!IsAttached) + { + Publisher.Publish(Activation.As(Id)); + IsAttached = true; + } + } } \ No newline at end of file diff --git a/Wallet/ItemNavigationViewModelActivatedHandler.cs b/Wallet/ItemNavigationViewModelActivatedHandler.cs new file mode 100644 index 0000000..dda1096 --- /dev/null +++ b/Wallet/ItemNavigationViewModelActivatedHandler.cs @@ -0,0 +1,20 @@ +using Toolkit.Foundation; + +namespace Wallet; + +public class ItemNavigationViewModelActivatedHandler(IMediator mediator, + IPublisher publisher) : + INotificationHandler> +{ + public async Task Handle(ActivationEventArgs args) + { + Guid id = args.Value; + IImageDescriptor? imageDescriptor = await mediator.Handle>, + IImageDescriptor>(Request.As(new ItemImage(id))); + + if (imageDescriptor is not null) + { + publisher.Publish(Notify.As(new Item(imageDescriptor))); + } + } +} diff --git a/Wallet/ItemViewModel.cs b/Wallet/ItemViewModel.cs index ffc1181..4248e7c 100644 --- a/Wallet/ItemViewModel.cs +++ b/Wallet/ItemViewModel.cs @@ -146,7 +146,4 @@ public partial class ItemViewModel : return base.OnActivated(); } - - protected override SynchronizeExpression BuildAggregateExpression() => - new(Toolkit.Foundation.Synchronize.As(("", Name, State))); } \ No newline at end of file diff --git a/Wallet/SynchronizeMainViewModelHandler.cs b/Wallet/MainViewModelActivationHandler.cs similarity index 87% rename from Wallet/SynchronizeMainViewModelHandler.cs rename to Wallet/MainViewModelActivationHandler.cs index 1189415..865d17e 100644 --- a/Wallet/SynchronizeMainViewModelHandler.cs +++ b/Wallet/MainViewModelActivationHandler.cs @@ -3,11 +3,11 @@ using Toolkit.Foundation; namespace Wallet; -public class SynchronizeMainViewModelHandler(IPublisher publisher, +public class MainViewModelActivationHandler(IPublisher publisher, IWalletHostCollection Wallets) : - INotificationHandler> + INotificationHandler> { - public Task Handle(SynchronizeEventArgs args) + public Task Handle(ActivationEventArgs args) { bool selected = true; diff --git a/Wallet/SearchWalletActionViewModel.cs b/Wallet/SearchWalletActionViewModel.cs index 14b742a..7996095 100644 --- a/Wallet/SearchWalletActionViewModel.cs +++ b/Wallet/SearchWalletActionViewModel.cs @@ -15,6 +15,6 @@ public partial class SearchWalletActionViewModel(IServiceProvider provider, private int index = 2; [RelayCommand] - public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), + private void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), nameof(ItemCollectionViewModel)); } \ No newline at end of file diff --git a/Wallet/UnarchiveItemActionViewModel.cs b/Wallet/UnarchiveItemActionViewModel.cs index 5c147fd..28fbcd2 100644 --- a/Wallet/UnarchiveItemActionViewModel.cs +++ b/Wallet/UnarchiveItemActionViewModel.cs @@ -12,5 +12,5 @@ public partial class UnarchiveItemActionViewModel(IServiceProvider provider, IRemovable { [RelayCommand] - public void Invoke() => Publisher.Publish(Unarchive.As()); + private void Invoke() => Publisher.Publish(Unarchive.As()); } \ No newline at end of file diff --git a/Wallet/UnfavouriteItemActionViewModel.cs b/Wallet/UnfavouriteItemActionViewModel.cs index c72866d..d90c2f4 100644 --- a/Wallet/UnfavouriteItemActionViewModel.cs +++ b/Wallet/UnfavouriteItemActionViewModel.cs @@ -12,5 +12,5 @@ public partial class UnfavouriteItemActionViewModel(IServiceProvider provider, IRemovable { [RelayCommand] - public void Invoke() => Publisher.Publish(Unfavourite.As()); + private void Invoke() => Publisher.Publish(Unfavourite.As()); } \ No newline at end of file