wip
This commit is contained in:
@@ -5,10 +5,11 @@ namespace Hyperbar.Widget.MediaController.Windows;
|
||||
|
||||
public partial class MediaButtonViewModel<TMediaButton>(IServiceProvider serviceProvider,
|
||||
IServiceFactory serviceFactory,
|
||||
IMediator mediator,
|
||||
IPublisher publisher,
|
||||
ISubscriber subscriber,
|
||||
IDisposer disposer,
|
||||
IRelayCommand invokeCommand) :
|
||||
WidgetComponentViewModel(serviceProvider, serviceFactory, mediator, disposer),
|
||||
WidgetComponentViewModel(serviceProvider, serviceFactory, publisher, subscriber, disposer),
|
||||
INotificationHandler<Changed<MediaButton<TMediaButton>>>,
|
||||
IMediaButtonViewModel
|
||||
{
|
||||
@@ -29,5 +30,5 @@ public partial class MediaButtonViewModel<TMediaButton>(IServiceProvider service
|
||||
}
|
||||
|
||||
public override async Task InitializeAsync() =>
|
||||
await Mediator.PublishAsync<Request<TMediaButton>>();
|
||||
await Publisher.PublishAsync<Request<TMediaButton>>();
|
||||
}
|
||||
@@ -14,23 +14,24 @@ public class MediaController :
|
||||
IDisposable
|
||||
{
|
||||
private readonly IDisposer disposer;
|
||||
private readonly IMediator mediator;
|
||||
private readonly IPublisher publisher;
|
||||
private readonly GlobalSystemMediaTransportControlsSession session;
|
||||
|
||||
private bool isNextEnabled;
|
||||
private bool isPreviousEnabled;
|
||||
private GlobalSystemMediaTransportControlsSessionPlaybackStatus playbackStatus;
|
||||
|
||||
public MediaController(IMediator mediator,
|
||||
public MediaController(IPublisher publisher,
|
||||
ISubscriber subscriber,
|
||||
IDisposer disposer,
|
||||
GlobalSystemMediaTransportControlsSession session)
|
||||
{
|
||||
this.mediator = mediator;
|
||||
this.publisher = publisher;
|
||||
this.disposer = disposer;
|
||||
this.session = session;
|
||||
|
||||
disposer.Add(this);
|
||||
mediator.Subscribe(this);
|
||||
subscriber.Add(this);
|
||||
|
||||
session.MediaPropertiesChanged += OnMediaPropertiesChanged;
|
||||
session.PlaybackInfoChanged += OnPlaybackInfoChanged;
|
||||
@@ -117,7 +118,7 @@ public class MediaController :
|
||||
buffer = memoryStream.ToArray();
|
||||
}
|
||||
|
||||
await mediator.PublishAsync(new Changed<MediaInformation>(new MediaInformation(mediaProperties.Title,
|
||||
await publisher.PublishAsync(new Changed<MediaInformation>(new MediaInformation(mediaProperties.Title,
|
||||
mediaProperties.Artist, buffer)));
|
||||
}
|
||||
catch
|
||||
@@ -133,7 +134,7 @@ public class MediaController :
|
||||
GlobalSystemMediaTransportControlsSessionPlaybackInfo playbackInfo =
|
||||
session.GetPlaybackInfo();
|
||||
|
||||
await mediator.PublishAsync(new Changed<MediaButton<MediaPlayPauseButton>>(new
|
||||
await publisher.PublishAsync(new Changed<MediaButton<MediaPlayPauseButton>>(new
|
||||
MediaButton<MediaPlayPauseButton>(playbackInfo.PlaybackStatus is
|
||||
GlobalSystemMediaTransportControlsSessionPlaybackStatus.Playing ?
|
||||
new MediaButtonPlaying() :
|
||||
@@ -142,7 +143,7 @@ public class MediaController :
|
||||
bool isPreviousEnabled = playbackInfo.Controls.IsPreviousEnabled;
|
||||
if (this.isPreviousEnabled != isPreviousEnabled)
|
||||
{
|
||||
await mediator.PublishAsync(new Changed<MediaButton<MediaPreviousButton>>(new
|
||||
await publisher.PublishAsync(new Changed<MediaButton<MediaPreviousButton>>(new
|
||||
MediaButton<MediaPreviousButton>(isPreviousEnabled ? new MediaButtonEnabled() :
|
||||
new MediaButtonDisabled())));
|
||||
|
||||
@@ -152,7 +153,7 @@ public class MediaController :
|
||||
bool isNextEnabled = playbackInfo.Controls.IsNextEnabled;
|
||||
if (this.isNextEnabled != isNextEnabled)
|
||||
{
|
||||
await mediator.PublishAsync(new Changed<MediaButton<MediaNextButton>>(new
|
||||
await publisher.PublishAsync(new Changed<MediaButton<MediaNextButton>>(new
|
||||
MediaButton<MediaNextButton>(isNextEnabled ? new MediaButtonEnabled() :
|
||||
new MediaButtonDisabled())));
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace Hyperbar.Widget.MediaController.Windows;
|
||||
|
||||
public class MediaControllerHandler(IMediator mediator,
|
||||
public class MediaControllerHandler(IPublisher publisher,
|
||||
IServiceScopeProvider<MediaController> scopeProvider,
|
||||
ICache<MediaController, MediaControllerViewModel> cache) :
|
||||
INotificationHandler<Create<MediaController>>,
|
||||
@@ -18,7 +18,7 @@ public class MediaControllerHandler(IMediator mediator,
|
||||
factory.Create(mediaController) is MediaControllerViewModel viewModel)
|
||||
{
|
||||
cache.Add(mediaController, viewModel);
|
||||
await mediator.PublishAsync(new Create<MediaControllerViewModel>(viewModel), cancellationToken);
|
||||
await publisher.PublishAsync(new Create<MediaControllerViewModel>(viewModel), cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public class MediaControllerHandler(IMediator mediator,
|
||||
cache.TryGetValue(mediaController, out MediaControllerViewModel? viewModel) &&
|
||||
viewModel is not null)
|
||||
{
|
||||
await mediator.PublishAsync(new Remove<MediaControllerViewModel>(viewModel), cancellationToken);
|
||||
await publisher.PublishAsync(new Remove<MediaControllerViewModel>(viewModel), cancellationToken);
|
||||
cache.Remove(mediaController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Windows.Media.Control;
|
||||
|
||||
namespace Hyperbar.Widget.MediaController.Windows;
|
||||
|
||||
public class MediaControllerService(IMediator mediator,
|
||||
public class MediaControllerService(IPublisher publisher,
|
||||
IFactory<GlobalSystemMediaTransportControlsSession, MediaController> factory) :
|
||||
IHostedService
|
||||
{
|
||||
@@ -34,7 +34,7 @@ public class MediaControllerService(IMediator mediator,
|
||||
{
|
||||
if (factory.Create(session) is MediaController mediaController)
|
||||
{
|
||||
await mediator.PublishAsync(new Create<MediaController>(mediaController));
|
||||
await publisher.PublishAsync(new Create<MediaController>(mediaController));
|
||||
cache.Add(new KeyValuePair<GlobalSystemMediaTransportControlsSession, MediaController>(session,
|
||||
mediaController));
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class MediaControllerService(IMediator mediator,
|
||||
{
|
||||
if (!sessions.Any(x => x.SourceAppUserModelId == session.Key.SourceAppUserModelId))
|
||||
{
|
||||
await mediator.PublishAsync(new Remove<MediaController>(session.Value));
|
||||
await publisher.PublishAsync(new Remove<MediaController>(session.Value));
|
||||
cache.Remove(session);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,21 +10,22 @@ public class MediaControllerViewModel :
|
||||
public MediaControllerViewModel(IViewModelTemplate template,
|
||||
IServiceProvider serviceProvider,
|
||||
IServiceFactory serviceFactory,
|
||||
IMediator mediator,
|
||||
IDisposer disposer) : base(serviceProvider, serviceFactory, mediator, disposer)
|
||||
IPublisher publisher,
|
||||
ISubscriber subscriber,
|
||||
IDisposer disposer) : base(serviceProvider, serviceFactory, publisher, subscriber, disposer)
|
||||
{
|
||||
Template = template;
|
||||
|
||||
Add<MediaInformationViewModel>();
|
||||
|
||||
Add<MediaButtonViewModel<MediaPreviousButton>>(new RelayCommand(async () =>
|
||||
await mediator.PublishAsync<Request<MediaPrevious>>()));
|
||||
await publisher.PublishAsync<Request<MediaPrevious>>()));
|
||||
|
||||
Add<MediaButtonViewModel<MediaPlayPauseButton>>(new RelayCommand(async () =>
|
||||
await mediator.PublishAsync<Request<MediaPlayPause>>()));
|
||||
await publisher.PublishAsync<Request<MediaPlayPause>>()));
|
||||
|
||||
Add<MediaButtonViewModel<MediaNextButton>>(new RelayCommand(async () =>
|
||||
await mediator.PublishAsync<Request<MediaNext>>()));
|
||||
await publisher.PublishAsync<Request<MediaNext>>()));
|
||||
}
|
||||
|
||||
public IViewModelTemplate Template { get; }
|
||||
|
||||
@@ -5,10 +5,11 @@ namespace Hyperbar.Widget.MediaController.Windows;
|
||||
public class MediaControllerWidgetViewModel(IViewModelTemplate template,
|
||||
IServiceProvider serviceProvider,
|
||||
IServiceFactory serviceFactory,
|
||||
IMediator mediator,
|
||||
IPublisher publisher,
|
||||
ISubscriber subscriber,
|
||||
IDisposer disposer,
|
||||
IEnumerable<MediaControllerViewModel> items) :
|
||||
ObservableCollectionViewModel<MediaControllerViewModel>(serviceProvider, serviceFactory, mediator, disposer, items),
|
||||
ObservableCollectionViewModel<MediaControllerViewModel>(serviceProvider, serviceFactory, publisher, subscriber, disposer, items),
|
||||
IWidgetViewModel
|
||||
{
|
||||
public IViewModelTemplate Template => template;
|
||||
|
||||
@@ -4,9 +4,10 @@ namespace Hyperbar.Widget.MediaController.Windows;
|
||||
|
||||
public partial class MediaInformationViewModel(IServiceProvider serviceProvider,
|
||||
IServiceFactory serviceFactory,
|
||||
IMediator mediator,
|
||||
IPublisher publisher,
|
||||
ISubscriber subscriber,
|
||||
IDisposer disposer) :
|
||||
WidgetComponentViewModel(serviceProvider, serviceFactory, mediator, disposer),
|
||||
WidgetComponentViewModel(serviceProvider, serviceFactory, publisher, subscriber, disposer),
|
||||
INotificationHandler<Changed<MediaInformation>>
|
||||
{
|
||||
[ObservableProperty]
|
||||
@@ -32,5 +33,5 @@ public partial class MediaInformationViewModel(IServiceProvider serviceProvider,
|
||||
}
|
||||
|
||||
public override async Task InitializeAsync() =>
|
||||
await Mediator.PublishAsync<Request<MediaInformation>>();
|
||||
await Publisher.PublishAsync<Request<MediaInformation>>();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user