Front End Work

- Redesign component wiring for audio playback
 - Removed playback logic from the player control and moved it to injectable audio player engine service
 - Chunked/buffered stream loading from Content API passed to Web Audio API playback in 8K blocks
This commit is contained in:
daniel-c-harvey
2025-09-06 13:39:26 -04:00
parent 3766d4e010
commit 66d800bd26
21 changed files with 519 additions and 907 deletions
@@ -6,23 +6,19 @@ namespace DeepDrftWeb.Client.Controls;
public partial class TracksGallery : ComponentBase
{
private Stream? _audioStream = null;
[Parameter] public IEnumerable<TrackEntity> Tracks { get; set; } = Enumerable.Empty<TrackEntity>();
[Inject] public required TrackMediaClient Client { get; set; }
[Parameter] public IEnumerable<TrackEntity> Tracks { get; set; } = [];
[Parameter] public TrackEntity? SelectedTrack { get; set; }
[Parameter] public EventCallback<TrackEntity?> SelectedTrackChanged { get; set; }
private async Task HandlePlayClick(TrackEntity track)
{
if (_audioStream == null)
if (SelectedTrack == track) return;
SelectedTrack = track;
StateHasChanged();
if (SelectedTrackChanged.HasDelegate)
{
_audioStream = await Client.GetTrackMedia(track.EntryKey);
PlayAudio();
await SelectedTrackChanged.InvokeAsync(track);
}
}
private void PlayAudio()
{
throw new NotImplementedException();
}
}