this allows us to lazily fetch viewmodels created easier during the application startup

This commit is contained in:
TheXamlGuy
2024-01-14 20:39:36 +00:00
parent 80f4d5a702
commit 2a494e1b94
2 changed files with 11 additions and 4 deletions
@@ -1,10 +1,16 @@
namespace Hyperbar.Windows.MediaController; namespace Hyperbar.Windows.MediaController;
public class MediaControllerViewModelFactory(IServiceFactory service) : public class MediaControllerViewModelFactory(IServiceFactory service, ICache<MediaControllerViewModel> cache) :
IFactory<MediaControllerViewModel?> IFactory<MediaControllerViewModel?>
{ {
public MediaControllerViewModel? Create() public MediaControllerViewModel? Create()
{ {
return service.Create<MediaControllerViewModel>(); if (service.Create<MediaControllerViewModel>() is MediaControllerViewModel widgetComponentViewModel)
{
cache.Add(widgetComponentViewModel);
return widgetComponentViewModel;
}
return default;
} }
} }
@@ -3,8 +3,9 @@
public class MediaControllerWidgetViewModel(ITemplateFactory templateFactory, public class MediaControllerWidgetViewModel(ITemplateFactory templateFactory,
IServiceFactory serviceFactory, IServiceFactory serviceFactory,
IMediator mediator, IMediator mediator,
IDisposer disposer) : IDisposer disposer,
ObservableCollectionViewModel<MediaControllerViewModel>(serviceFactory, mediator, disposer), IEnumerable<MediaControllerViewModel> items) :
ObservableCollectionViewModel<MediaControllerViewModel>(serviceFactory, mediator, disposer, items),
IWidgetViewModel, IWidgetViewModel,
ITemplatedViewModel ITemplatedViewModel
{ {