fix: enable player controls on load, clear track selection on stop and end-of-track
Add StateChanged multicast event to IPlayerService so AudioPlayerBar and TracksView re-render themselves without relying on the IsFixed cascade re-render path. Clear _selectedTrack in TracksView when IsLoaded drops (stop, unload, end-of-track). Set IsLoaded=false in OnPlaybackEndCallback so end-of-track triggers the same clear path. Add JS-module readiness probe in AudioInteropService; delete dead TS and buffered C# path; consolidate GetPlayIcon/FormatTime helpers; fix misleading minimize dock icon.
This commit is contained in:
@@ -22,6 +22,16 @@ public interface IPlayerService
|
||||
// Events for UI updates
|
||||
EventCallback? OnStateChanged { get; set; }
|
||||
EventCallback? OnTrackSelected { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Multicast side-channel for state changes. The provider owns the single
|
||||
/// <see cref="OnStateChanged"/> EventCallback (it drives the provider re-render);
|
||||
/// cascade consumers that read state directly off this service — and so are not
|
||||
/// re-rendered by the provider's render when the cascade is <c>IsFixed</c> —
|
||||
/// subscribe here to re-render themselves. Fires on the same cadence as
|
||||
/// <see cref="OnStateChanged"/> (throttled to ~10/s during streaming).
|
||||
/// </summary>
|
||||
event Action? StateChanged;
|
||||
|
||||
// Control methods
|
||||
Task InitializeAsync();
|
||||
|
||||
Reference in New Issue
Block a user