Too much to name... but damn, it got where we are needed
This commit is contained in:
@@ -1,19 +1,34 @@
|
||||
using Windows.Media.Control;
|
||||
|
||||
namespace Hyperbar.Windows.Primary;
|
||||
namespace Hyperbar.Windows.MediaController;
|
||||
|
||||
public class MediaController :
|
||||
INotificationHandler<PlayRequest>
|
||||
INotificationHandler<Play>,
|
||||
INotificationHandler<Pause>
|
||||
{
|
||||
private readonly IMediator mediator;
|
||||
private readonly GlobalSystemMediaTransportControlsSession session;
|
||||
|
||||
public MediaController(GlobalSystemMediaTransportControlsSession session,
|
||||
IMediator mediator)
|
||||
public MediaController(IMediator mediator,
|
||||
GlobalSystemMediaTransportControlsSession session)
|
||||
{
|
||||
this.mediator = mediator;
|
||||
this.session = session;
|
||||
|
||||
mediator.Subscribe(this);
|
||||
|
||||
session.MediaPropertiesChanged += OnMediaPropertiesChanged;
|
||||
}
|
||||
|
||||
public async ValueTask Handle(PlayRequest notification, CancellationToken cancellationToken) =>
|
||||
private void OnMediaPropertiesChanged(GlobalSystemMediaTransportControlsSession sender,
|
||||
MediaPropertiesChangedEventArgs args)
|
||||
{
|
||||
mediator.PublishAsync(new Changed<Media>());
|
||||
}
|
||||
|
||||
public async ValueTask Handle(Play notification, CancellationToken cancellationToken) =>
|
||||
await session.TryPlayAsync();
|
||||
|
||||
public async ValueTask Handle(Pause notification, CancellationToken cancellationToken) =>
|
||||
await session.TryPauseAsync();
|
||||
}
|
||||
Reference in New Issue
Block a user