using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; namespace Hyperbar.Widget.MediaController.Windows; public partial class MediaButtonViewModel(IServiceProvider serviceProvider, IServiceFactory serviceFactory, IMediator mediator, IDisposer disposer, IRelayCommand invokeCommand) : WidgetComponentViewModel(serviceProvider, serviceFactory, mediator, disposer), INotificationHandler>>, IMediaButtonViewModel { [ObservableProperty] private IRelayCommand? invokeCommand = invokeCommand; [ObservableProperty] private string? state; [ObservableProperty] private string? button = $"{typeof(TMediaButton).Name}"; public Task Handle(Changed> args, CancellationToken cancellationToken) { State = $"{args.Value?.State}"; return Task.CompletedTask; } public override async Task InitializeAsync() => await Mediator.PublishAsync>(); }