Merge nowplaying-card-reactivity into dev (NowPlaying card now re-renders on track change)

This commit is contained in:
daniel-c-harvey
2026-06-17 13:35:18 -04:00
@@ -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;
}
}
}