Fixed perf issues
This commit is contained in:
@@ -142,7 +142,7 @@ public partial class App : Application
|
||||
services.AddTemplate<WalletViewModel, WalletView>("Wallet");
|
||||
services.AddTemplate<ItemCollectionViewModel, ItemCollectionView>("ItemCollection");
|
||||
|
||||
services.AddHandler<SynchronizeItemCollectionViewModelHandler>();
|
||||
services.AddHandler<ItemCollectionViewModelActivatedHandler>();
|
||||
|
||||
services.AddTemplate<WalletHeaderViewModel, WalletHeaderView>("WalletHeader");
|
||||
services.AddTemplate<BackActionViewModel, BackActionView>();
|
||||
@@ -151,15 +151,17 @@ public partial class App : Application
|
||||
services.AddTemplate<ItemCategoryCollectionViewModel, ItemCategoryCollectionView>("ItemCategoryCollection");
|
||||
services.AddTemplate<ItemCategoryNavigationViewModel, ItemCategoryNavigationView>();
|
||||
|
||||
services.AddHandler<SynchronizeCategoriesNavigationViewModelHandler>();
|
||||
services.AddHandler<CategoriesNavigationViewModelActivationHandler>();
|
||||
|
||||
services.AddHandler<SynchronizeItemCategoryViewModelHandler>();
|
||||
services.AddHandler<ItemCategoryViewModelActivatedHandler>();
|
||||
|
||||
services.AddScoped<IDecoratorService<Item<(Guid, string)>>, DecoratorService<Item<(Guid, string)>>>();
|
||||
|
||||
services.AddTemplate<AddItemNavigationViewModel, AddItemNavigationView>();
|
||||
|
||||
services.AddTemplate<ItemNavigationViewModel, ItemNavigationView>();
|
||||
services.AddHandler<ItemNavigationViewModelActivatedHandler>();
|
||||
|
||||
services.AddTemplate<EmptyItemCollectionViewModel, EmptyItemCollectionView>("EmptyItemCollection");
|
||||
|
||||
services.AddScoped<IDecoratorService<ItemHeaderConfiguration>, DecoratorService<ItemHeaderConfiguration>>();
|
||||
@@ -170,8 +172,8 @@ public partial class App : Application
|
||||
services.AddTemplate<ItemHeaderViewModel, ItemHeaderView>();
|
||||
services.AddTemplate<ItemContentViewModel, ItemContentView>();
|
||||
|
||||
services.AddHandler<SynchronizeItemContentViewModelHandler>();
|
||||
services.AddHandler<SynchronizeItemContentFromCategoryViewModelHandler>();
|
||||
services.AddHandler<ItemContentViewModelActivationHandler>();
|
||||
services.AddHandler<ItemContentFromCategoryViewModelActivationHandler>();
|
||||
|
||||
services.AddTemplate<ItemSectionViewModel, ItemSectionView>();
|
||||
|
||||
@@ -230,7 +232,7 @@ public partial class App : Application
|
||||
services.AddHandler<CreateProfileImageHandler>();
|
||||
|
||||
services.AddTemplate<MainViewModel, MainView>("Main");
|
||||
services.AddHandler<SynchronizeMainViewModelHandler>();
|
||||
services.AddHandler<MainViewModelActivationHandler>();
|
||||
|
||||
services.AddTransient<FooterViewModel>();
|
||||
|
||||
|
||||
@@ -17,13 +17,16 @@
|
||||
<Parameter Key="Name" Value="{Binding Name}" />
|
||||
<Parameter Key="ImageDescriptor" Value="{Binding ImageDescriptor}" />
|
||||
<Parameter Key="FromCategory" Value="{x:False}" />
|
||||
<Parameter Key="Favourite" Value="{Binding Favourite}" />
|
||||
<Parameter Key="Archived" Value="{Binding Archived}" />
|
||||
<Parameter Key="Favourite" Value="{Binding IsFavourite}" />
|
||||
<Parameter Key="Archived" Value="{Binding IsArchived}" />
|
||||
<Parameter Key="State" Value="{x:Static vm:ItemState.Read}" />
|
||||
<Parameter Key="IsBackStackEnabled" Value="{x:False}" />
|
||||
<Parameter Key="ClearBackStack" Value="{x:True}" />
|
||||
</NavigateAction>
|
||||
</AttachedEventTriggerBehaviour>
|
||||
<EventTriggerBehavior EventName="AttachedToVisualTree">
|
||||
<InvokeCommandAction Command="{Binding AttachedCommand}" />
|
||||
</EventTriggerBehavior>
|
||||
</Interaction.Behaviors>
|
||||
<Grid
|
||||
Margin="0,6,6,6"
|
||||
@@ -41,7 +44,7 @@
|
||||
FontFamily="{DynamicResource FluentThemeFontFamily}"
|
||||
FontSize="16"
|
||||
Foreground="{DynamicResource StarredIconForegroundBrush}"
|
||||
IsVisible="{Binding Favourite}"
|
||||
IsVisible="{Binding IsFavourite}"
|
||||
Text="" />
|
||||
</Grid>
|
||||
<StackPanel Grid.Column="1" Margin="12,0,0,0">
|
||||
|
||||
@@ -12,5 +12,5 @@ public partial class ArchiveItemActionViewModel(IServiceProvider provider,
|
||||
IRemovable
|
||||
{
|
||||
[RelayCommand]
|
||||
public void Invoke() => Publisher.Publish(Archive.As<Item>());
|
||||
private void Invoke() => Publisher.Publish(Archive.As<Item>());
|
||||
}
|
||||
+3
-3
@@ -2,13 +2,13 @@
|
||||
|
||||
namespace Wallet;
|
||||
|
||||
public class SynchronizeCategoriesNavigationViewModelHandler(IMediator mediator,
|
||||
public class CategoriesNavigationViewModelActivationHandler(IMediator mediator,
|
||||
IItemConfigurationCollection configurations,
|
||||
IServiceFactory serviceFactory,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<SynchronizeEventArgs<CategoryNavigationViewModel>>
|
||||
INotificationHandler<ActivationEventArgs<CategoryNavigationViewModel>>
|
||||
{
|
||||
public async Task Handle(SynchronizeEventArgs<CategoryNavigationViewModel> args)
|
||||
public async Task Handle(ActivationEventArgs<CategoryNavigationViewModel> args)
|
||||
{
|
||||
IReadOnlyCollection<(string Name, int Count)>? counts = await mediator.Handle<CountEventArgs<Item>,
|
||||
IReadOnlyCollection<(string, int)>>(Count.As<Item>());
|
||||
@@ -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<CreateEventArgs<(Guid, string, string, IImageDescriptor?,
|
||||
ItemConfiguration)>, 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<Item>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Item>());
|
||||
private void Invoke() => Publisher.Publish(Confirm.As<Item>());
|
||||
}
|
||||
@@ -58,11 +58,11 @@ public partial class CreateWalletViewModel :
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public async Task Import() => ImageDescriptor = await Mediator.Handle<CreateEventArgs<ProfileImage>,
|
||||
private async Task Import() => ImageDescriptor = await Mediator.Handle<CreateEventArgs<ProfileImage>,
|
||||
IImageDescriptor>(Create.As<ProfileImage>());
|
||||
|
||||
[RelayCommand]
|
||||
public void Remove() => ImageDescriptor = null;
|
||||
private void Remove() => ImageDescriptor = null;
|
||||
|
||||
protected override void OnPropertyChanged(PropertyChangedEventArgs args)
|
||||
{
|
||||
|
||||
@@ -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<Item>());
|
||||
private void Invoke() => Publisher.Publish(Delete.As<Item>());
|
||||
}
|
||||
@@ -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<Item>());
|
||||
private void Invoke() => Publisher.Publish(Cancel.As<Item>());
|
||||
}
|
||||
@@ -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<Item>());
|
||||
private void Invoke() => Publisher.Publish(Update.As<Item>());
|
||||
}
|
||||
@@ -13,7 +13,7 @@ public partial class FavouriteItemActionViewModel(IServiceProvider provider,
|
||||
IRemovable
|
||||
{
|
||||
[RelayCommand]
|
||||
public void Invoke()
|
||||
private void Invoke()
|
||||
{
|
||||
if (!Value)
|
||||
{
|
||||
|
||||
@@ -16,5 +16,5 @@ public partial class HyperlinkEntryViewModel(IServiceProvider provider,
|
||||
double width) : ItemEntryViewModel<string>(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)));
|
||||
}
|
||||
@@ -1,7 +1,4 @@
|
||||
namespace Wallet;
|
||||
|
||||
public interface IItemViewModel :
|
||||
IDisposable
|
||||
{
|
||||
|
||||
}
|
||||
IDisposable;
|
||||
@@ -23,5 +23,5 @@ public partial class ItemCategoryNavigationViewModel(IServiceProvider provider,
|
||||
private bool isSelected = isSelected;
|
||||
|
||||
[RelayCommand]
|
||||
public void Invoke() => Publisher.Publish(Notify.As(new ItemCategory<string>(Name)));
|
||||
private void Invoke() => Publisher.Publish(Notify.As(new ItemCategory<string>(Name)));
|
||||
}
|
||||
|
||||
+3
-3
@@ -2,12 +2,12 @@
|
||||
|
||||
namespace Wallet;
|
||||
|
||||
public class SynchronizeItemCategoryViewModelHandler(IItemConfigurationCollection configurations,
|
||||
public class ItemCategoryViewModelActivatedHandler(IItemConfigurationCollection configurations,
|
||||
IServiceFactory serviceFactory,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<SynchronizeEventArgs<ItemCategoryNavigationViewModel>>
|
||||
INotificationHandler<ActivationEventArgs<ItemCategoryNavigationViewModel>>
|
||||
{
|
||||
public Task Handle(SynchronizeEventArgs<ItemCategoryNavigationViewModel> args)
|
||||
public Task Handle(ActivationEventArgs<ItemCategoryNavigationViewModel> args)
|
||||
{
|
||||
bool selected = true;
|
||||
foreach (KeyValuePair<string, Func<ItemConfiguration>> configuration in configurations)
|
||||
@@ -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<string> 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<ItemNavigationViewModel, ItemCollectionConfiguration>(configuration));
|
||||
protected override ActivationBuilder ActivationBuilder() =>
|
||||
new(Activation.As<ItemNavigationViewModel, ItemCollectionConfiguration>(configuration));
|
||||
}
|
||||
|
||||
+3
-3
@@ -3,13 +3,13 @@ using Toolkit.Foundation;
|
||||
|
||||
namespace Wallet;
|
||||
|
||||
public class SynchronizeItemCollectionViewModelHandler(IMediator mediator,
|
||||
public class ItemCollectionViewModelActivatedHandler(IMediator mediator,
|
||||
IServiceProvider serviceProvider,
|
||||
ICache<Item<(Guid, string)>> cache,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<SynchronizeEventArgs<ItemNavigationViewModel, ItemCollectionConfiguration>>
|
||||
INotificationHandler<ActivationEventArgs<ItemNavigationViewModel, ItemCollectionConfiguration>>
|
||||
{
|
||||
public async Task Handle(SynchronizeEventArgs<ItemNavigationViewModel,
|
||||
public async Task Handle(ActivationEventArgs<ItemNavigationViewModel,
|
||||
ItemCollectionConfiguration> args)
|
||||
{
|
||||
if (args.Value is ItemCollectionConfiguration configuration)
|
||||
+3
-3
@@ -3,14 +3,14 @@ using Toolkit.Foundation;
|
||||
|
||||
namespace Wallet;
|
||||
|
||||
public class SynchronizeItemContentFromCategoryViewModelHandler(IItemConfigurationCollection configurations,
|
||||
public class ItemContentFromCategoryViewModelActivationHandler(IItemConfigurationCollection configurations,
|
||||
IDecoratorService<ItemConfiguration> itemConfigurationDecorator,
|
||||
IServiceFactory serviceFactory,
|
||||
IMediator mediator,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<SynchronizeEventArgs<IItemEntryViewModel, string>>
|
||||
INotificationHandler<ActivationEventArgs<IItemEntryViewModel, string>>
|
||||
{
|
||||
public async Task Handle(SynchronizeEventArgs<IItemEntryViewModel, string> args)
|
||||
public async Task Handle(ActivationEventArgs<IItemEntryViewModel, string> args)
|
||||
{
|
||||
if (args.Value is string category)
|
||||
{
|
||||
@@ -21,7 +21,7 @@ public partial class ItemContentViewModel(IServiceProvider provider,
|
||||
if (args.Sender is ItemCategory<string> category
|
||||
&& category.Value is string value)
|
||||
{
|
||||
Fetch(() => new SynchronizeExpression(new SynchronizeEventArgs<IItemEntryViewModel,
|
||||
Activate(() => new ActivationBuilder(new ActivationEventArgs<IItemEntryViewModel,
|
||||
string>(value)), true);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -3,14 +3,14 @@ using Toolkit.Foundation;
|
||||
|
||||
namespace Wallet;
|
||||
|
||||
public class SynchronizeItemContentViewModelHandler(IDecoratorService<Item<(Guid, string)>> itemDecorator,
|
||||
public class ItemContentViewModelActivationHandler(IDecoratorService<Item<(Guid, string)>> itemDecorator,
|
||||
IDecoratorService<ItemConfiguration> itemConfigurationDecorator,
|
||||
IMediator mediator,
|
||||
IServiceFactory serviceFactory,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<SynchronizeEventArgs<ItemSectionViewModel>>
|
||||
INotificationHandler<ActivationEventArgs<ItemSectionViewModel>>
|
||||
{
|
||||
public async Task Handle(SynchronizeEventArgs<ItemSectionViewModel> args)
|
||||
public async Task Handle(ActivationEventArgs<ItemSectionViewModel> args)
|
||||
{
|
||||
if (itemDecorator.Service is Item<(Guid, string)> item)
|
||||
{
|
||||
@@ -6,20 +6,20 @@ namespace Wallet;
|
||||
public class ItemCreatedHandler(IServiceProvider serviceProvider,
|
||||
ICache<Item<(Guid, string)>> cache,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<CreatedEventArgs<Item<(Guid, string, string, IImageDescriptor?)>>>
|
||||
INotificationHandler<CreatedEventArgs<Item<(Guid, string, string)>>>
|
||||
{
|
||||
public Task Handle(CreatedEventArgs<Item<(Guid, string, string, IImageDescriptor?)>> args)
|
||||
public Task Handle(CreatedEventArgs<Item<(Guid, string, string)>> 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<IServiceFactory>();
|
||||
IDecoratorService<Item<(Guid, string)>> decoratorService = serviceScope.ServiceProvider.GetRequiredService<IDecoratorService<Item<(Guid, string)>>>();
|
||||
|
||||
if (serviceFactory.Create<ItemNavigationViewModel>(args => args.Initialize(),
|
||||
id, name, "Description", category, imageDescriptor, true)
|
||||
id, name, "Description", category, true)
|
||||
is ItemNavigationViewModel viewModel)
|
||||
{
|
||||
Item<(Guid, string)> cachedItem = new((id, name));
|
||||
|
||||
@@ -74,11 +74,11 @@ public partial class ItemHeaderViewModel :
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
public async Task Import() => ImageDescriptor = await Mediator.Handle<CreateEventArgs<ProfileImage>,
|
||||
private async Task Import() => ImageDescriptor = await Mediator.Handle<CreateEventArgs<ProfileImage>,
|
||||
IImageDescriptor>(Create.As<ProfileImage>());
|
||||
|
||||
[RelayCommand]
|
||||
public void Remove() => ImageDescriptor = null;
|
||||
private void Remove() => ImageDescriptor = null;
|
||||
|
||||
protected override void OnValueChanged()
|
||||
{
|
||||
|
||||
@@ -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<ArchiveEventArgs<Item>>,
|
||||
INotificationHandler<UnarchiveEventArgs<Item>>,
|
||||
@@ -26,28 +27,30 @@ public partial class ItemNavigationViewModel(IServiceProvider provider,
|
||||
INotificationHandler<UnfavouriteEventArgs<Item>>,
|
||||
INotificationHandler<DeleteEventArgs<Item>>,
|
||||
INotificationHandler<NotifyEventArgs<ItemHeader<string>>>,
|
||||
INotificationHandler<NotifyEventArgs<Item<IImageDescriptor>>>,
|
||||
IKeyed<Guid>,
|
||||
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<Item> args) =>
|
||||
Task.Run(Dispose);
|
||||
public Task Handle(ArchiveEventArgs<Item> args)
|
||||
{
|
||||
Dispose();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task Handle(UnarchiveEventArgs<Item> args) =>
|
||||
Task.Run(Dispose);
|
||||
public Task Handle(UnarchiveEventArgs<Item> args)
|
||||
{
|
||||
Dispose();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task Handle(FavouriteEventArgs<Item> args) =>
|
||||
Task.FromResult(Favourite = true);
|
||||
public Task Handle(FavouriteEventArgs<Item> args)
|
||||
{
|
||||
IsFavourite = true;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task Handle(UnfavouriteEventArgs<Item> args) =>
|
||||
Task.FromResult(Favourite = false);
|
||||
public Task Handle(UnfavouriteEventArgs<Item> args)
|
||||
{
|
||||
IsFavourite = false;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task Handle(NotifyEventArgs<ItemHeader<string>> args)
|
||||
{
|
||||
@@ -80,6 +95,29 @@ public partial class ItemNavigationViewModel(IServiceProvider provider,
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task Handle(DeleteEventArgs<Item> args) =>
|
||||
Task.Run(Dispose);
|
||||
public Task Handle(DeleteEventArgs<Item> args)
|
||||
{
|
||||
Dispose();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task Handle(NotifyEventArgs<Item<IImageDescriptor>> args)
|
||||
{
|
||||
if (args.Sender is Item<IImageDescriptor> item)
|
||||
{
|
||||
ImageDescriptor = item.Value;
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
private void Attached()
|
||||
{
|
||||
if (!IsAttached)
|
||||
{
|
||||
Publisher.Publish(Activation.As<ItemNavigationViewModel, Guid>(Id));
|
||||
IsAttached = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using Toolkit.Foundation;
|
||||
|
||||
namespace Wallet;
|
||||
|
||||
public class ItemNavigationViewModelActivatedHandler(IMediator mediator,
|
||||
IPublisher publisher) :
|
||||
INotificationHandler<ActivationEventArgs<ItemNavigationViewModel, Guid>>
|
||||
{
|
||||
public async Task Handle(ActivationEventArgs<ItemNavigationViewModel, Guid> args)
|
||||
{
|
||||
Guid id = args.Value;
|
||||
IImageDescriptor? imageDescriptor = await mediator.Handle<RequestEventArgs<ItemImage<Guid>>,
|
||||
IImageDescriptor>(Request.As(new ItemImage<Guid>(id)));
|
||||
|
||||
if (imageDescriptor is not null)
|
||||
{
|
||||
publisher.Publish(Notify.As(new Item<IImageDescriptor>(imageDescriptor)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,7 +146,4 @@ public partial class ItemViewModel :
|
||||
|
||||
return base.OnActivated();
|
||||
}
|
||||
|
||||
protected override SynchronizeExpression BuildAggregateExpression() =>
|
||||
new(Toolkit.Foundation.Synchronize.As<IItemViewModel, (string, string, ItemState)>(("", Name, State)));
|
||||
}
|
||||
+3
-3
@@ -3,11 +3,11 @@ using Toolkit.Foundation;
|
||||
|
||||
namespace Wallet;
|
||||
|
||||
public class SynchronizeMainViewModelHandler(IPublisher publisher,
|
||||
public class MainViewModelActivationHandler(IPublisher publisher,
|
||||
IWalletHostCollection Wallets) :
|
||||
INotificationHandler<SynchronizeEventArgs<IMainNavigationViewModel>>
|
||||
INotificationHandler<ActivationEventArgs<IMainNavigationViewModel>>
|
||||
{
|
||||
public Task Handle(SynchronizeEventArgs<IMainNavigationViewModel> args)
|
||||
public Task Handle(ActivationEventArgs<IMainNavigationViewModel> args)
|
||||
{
|
||||
bool selected = true;
|
||||
|
||||
@@ -15,6 +15,6 @@ public partial class SearchWalletActionViewModel(IServiceProvider provider,
|
||||
private int index = 2;
|
||||
|
||||
[RelayCommand]
|
||||
public void Invoke() => Publisher.Publish(Notify.As(new Search<string>(Value)),
|
||||
private void Invoke() => Publisher.Publish(Notify.As(new Search<string>(Value)),
|
||||
nameof(ItemCollectionViewModel));
|
||||
}
|
||||
@@ -12,5 +12,5 @@ public partial class UnarchiveItemActionViewModel(IServiceProvider provider,
|
||||
IRemovable
|
||||
{
|
||||
[RelayCommand]
|
||||
public void Invoke() => Publisher.Publish(Unarchive.As<Item>());
|
||||
private void Invoke() => Publisher.Publish(Unarchive.As<Item>());
|
||||
}
|
||||
@@ -12,5 +12,5 @@ public partial class UnfavouriteItemActionViewModel(IServiceProvider provider,
|
||||
IRemovable
|
||||
{
|
||||
[RelayCommand]
|
||||
public void Invoke() => Publisher.Publish(Unfavourite.As<Item>());
|
||||
private void Invoke() => Publisher.Publish(Unfavourite.As<Item>());
|
||||
}
|
||||
Reference in New Issue
Block a user