Subscribe NowPlayingCard to player StateChanged so it re-renders on track change

This commit is contained in:
daniel-c-harvey
2026-06-17 13:24:13 -04:00
parent d12b732e40
commit 739d6c6e81
@@ -1,4 +1,5 @@
@using DeepDrftPublic.Client.Services
@implements IDisposable
<div class="now-playing">
<div class="np-label"><span class="np-dot"></span>Now Playing</div>
<div class="np-title">@(Player?.CurrentTrack?.TrackName ?? "Nothing playing")</div>
@@ -12,4 +13,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;
}
}
}