using Microsoft.Extensions.DependencyInjection; namespace Hyperbar.Windows.MediaController; public class MediaControllerHandler(IMediator mediator, IServiceScopeProvider scopeProvider, ICache cache) : INotificationHandler> { public async ValueTask Handle(Created notification, CancellationToken cancellationToken) { if (notification.Value is MediaController mediaController) { if (scopeProvider.TryGet(mediaController, out IServiceScope? serviceScope)) { if (serviceScope is not null) { if (serviceScope.ServiceProvider.GetService>() is IFactory factory) { if (factory.Create(mediaController) is MediaControllerViewModel mediaControllerViewModel) { cache.Add(mediaController, mediaControllerViewModel); //await mediator.PublishAsync(new Created(mediaControllerViewModel), // cancellationToken); } } } } } } }