Medistor reworked to handle ui threading in a cleaner way

This commit is contained in:
TheXamlGuy
2024-01-18 16:54:38 +00:00
parent 7dc125ebc7
commit a3065b25ee
19 changed files with 91 additions and 95 deletions
@@ -34,21 +34,21 @@ public class MediaController :
disposer.Dispose(this);
}
public async ValueTask Handle(Play notification,
public async Task Handle(Play notification,
CancellationToken cancellationToken) =>
await session.TryPlayAsync();
public async ValueTask Handle(Pause notification,
public async Task Handle(Pause notification,
CancellationToken cancellationToken) =>
await session.TryPauseAsync();
public async ValueTask Handle(Request<Playback> notification,
public async Task Handle(Request<Playback> notification,
CancellationToken cancellationToken)
{
await mediator.PublishAsync(new Changed<Playback>(), cancellationToken);
}
public async ValueTask Handle(Request<MediaInformation> _,
public async Task Handle(Request<MediaInformation> _,
CancellationToken cancellationToken)
{
using (await asyncLock)
@@ -4,16 +4,16 @@ namespace Hyperbar.Windows.MediaController;
public class MediaControllerHandler(IMediator mediator,
IServiceScopeProvider<MediaController> scopeProvider,
ICache<MediaController, MediaControllerViewModel> cache) :
ICache<MediaController, MediaControllerViewModel> cache) :
INotificationHandler<Created<MediaController>>
{
public async ValueTask Handle(Created<MediaController> notification,
public async Task Handle(Created<MediaController> 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<IFactory<MediaController, MediaControllerViewModel?>>()
@@ -27,8 +27,6 @@ public class MediaControllerHandler(IMediator mediator,
}
}
}
}
}
}
}
}
@@ -21,7 +21,7 @@ public partial class MediaInformationViewModel(IServiceFactory serviceFactory,
public ICommand Initialize =>
new AsyncRelayCommand(InitializeAsync);
public ValueTask Handle(Changed<MediaInformation> notification,
public Task Handle(Changed<MediaInformation> notification,
CancellationToken cancellationToken)
{
if (notification.Value is MediaInformation value)
@@ -30,7 +30,7 @@ public partial class MediaInformationViewModel(IServiceFactory serviceFactory,
Description = value.Description;
}
return ValueTask.CompletedTask;
return Task.CompletedTask;
}
public async Task InitializeAsync() =>