diff --git a/DeepDrftPublic.Client/Controls/NowPlaying.razor b/DeepDrftPublic.Client/Controls/NowPlaying.razor
index 1b70ba0..06e2168 100644
--- a/DeepDrftPublic.Client/Controls/NowPlaying.razor
+++ b/DeepDrftPublic.Client/Controls/NowPlaying.razor
@@ -1,4 +1,5 @@
@using DeepDrftPublic.Client.Services
+@implements IDisposable
@* Hero-right panel (owns the navy backdrop + clipping, formerly Home.razor's .hero-right wrapper). *@
@@ -39,4 +40,29 @@
@code {
[CascadingParameter] public IStreamingPlayerService? Player { get; set; }
+
+ private IStreamingPlayerService? _subscribedPlayer;
+
+ protected override void OnParametersSet()
+ {
+ if (Player != null && !ReferenceEquals(Player, _subscribedPlayer))
+ {
+ if (_subscribedPlayer != null)
+ _subscribedPlayer.StateChanged -= OnPlayerStateChanged;
+
+ Player.StateChanged += OnPlayerStateChanged;
+ _subscribedPlayer = Player;
+ }
+ }
+
+ private void OnPlayerStateChanged() => InvokeAsync(StateHasChanged);
+
+ public void Dispose()
+ {
+ if (_subscribedPlayer != null)
+ {
+ _subscribedPlayer.StateChanged -= OnPlayerStateChanged;
+ _subscribedPlayer = null;
+ }
+ }
}