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; + } + } }