Flip ITrackService/TrackManager to DTO output; TrackConverter is the sole entity<->DTO path across all consumers

This commit is contained in:
Daniel Harvey
2026-05-25 11:35:04 -04:00
parent 81fc87391b
commit 4351302a25
23 changed files with 156 additions and 156 deletions
@@ -1,4 +1,4 @@
using DeepDrftModels.Entities;
using DeepDrftModels.DTOs;
using DeepDrftPublic.Client.Clients;
using Microsoft.AspNetCore.Components;
using NetBlocks.Models;
@@ -32,7 +32,7 @@ public abstract class AudioPlayerService : IPlayerService, IAsyncDisposable
/// <see cref="SelectTrack"/>/<see cref="Unload"/> path are responsible for managing
/// it themselves.
/// </summary>
public TrackEntity? CurrentTrack { get; protected set; }
public TrackDto? CurrentTrack { get; protected set; }
// Events
public EventCallback? OnStateChanged { get; set; }
@@ -74,7 +74,7 @@ public abstract class AudioPlayerService : IPlayerService, IAsyncDisposable
}
}
public virtual async Task SelectTrack(TrackEntity track)
public virtual async Task SelectTrack(TrackDto track)
{
await EnsureInitializedAsync();
@@ -87,7 +87,7 @@ public abstract class AudioPlayerService : IPlayerService, IAsyncDisposable
await NotifyStateChanged();
}
private async Task LoadTrack(TrackEntity track)
private async Task LoadTrack(TrackDto track)
{
try
{
@@ -1,4 +1,4 @@
using DeepDrftModels.Entities;
using DeepDrftModels.DTOs;
using Microsoft.AspNetCore.Components;
using NetBlocks.Models;
@@ -17,7 +17,7 @@ public interface IPlayerService
double Volume { get; }
double LoadProgress { get; }
string? ErrorMessage { get; }
TrackEntity? CurrentTrack { get; }
TrackDto? CurrentTrack { get; }
// Events for UI updates
EventCallback? OnStateChanged { get; set; }
@@ -25,7 +25,7 @@ public interface IPlayerService
// Control methods
Task InitializeAsync();
Task SelectTrack(TrackEntity track);
Task SelectTrack(TrackDto track);
Task Stop();
Task Unload();
Task TogglePlayPause();
@@ -43,5 +43,5 @@ public interface IStreamingPlayerService : IPlayerService
int BufferedChunks { get; }
// Streaming control methods
Task SelectTrackStreaming(TrackEntity track);
Task SelectTrackStreaming(TrackDto track);
}
@@ -1,4 +1,4 @@
using DeepDrftModels.Entities;
using DeepDrftModels.DTOs;
using Models.Common;
using NetBlocks.Models;
@@ -17,7 +17,7 @@ namespace DeepDrftPublic.Client.Services;
/// </summary>
public interface ITrackDataService
{
Task<ApiResult<PagedResult<TrackEntity>>> GetPage(
Task<ApiResult<PagedResult<TrackDto>>> GetPage(
int pageNumber,
int pageSize,
string? sortColumn = null,
@@ -1,4 +1,4 @@
using DeepDrftModels.Entities;
using DeepDrftModels.DTOs;
using DeepDrftPublic.Client.Clients;
using System.Buffers;
using Microsoft.Extensions.Logging;
@@ -41,12 +41,12 @@ public class StreamingAudioPlayerService : AudioPlayerService, IStreamingPlayerS
_logger = logger;
}
public override async Task SelectTrack(TrackEntity track)
public override async Task SelectTrack(TrackDto track)
{
await SelectTrackStreaming(track);
}
public async Task SelectTrackStreaming(TrackEntity track)
public async Task SelectTrackStreaming(TrackDto track)
{
await EnsureInitializedAsync();
@@ -59,7 +59,7 @@ public class StreamingAudioPlayerService : AudioPlayerService, IStreamingPlayerS
await NotifyStateChanged();
}
private async Task LoadTrackStreaming(TrackEntity track)
private async Task LoadTrackStreaming(TrackDto track)
{
// Always reset to clean state before loading new track. ResetToIdle
// both cancels and awaits any in-flight streaming loop, so by the time
@@ -1,4 +1,4 @@
using DeepDrftModels.Entities;
using DeepDrftModels.DTOs;
using DeepDrftPublic.Client.Clients;
using Models.Common;
using NetBlocks.Models;
@@ -19,7 +19,7 @@ public class TrackClientDataService : ITrackDataService
_trackClient = trackClient;
}
public Task<ApiResult<PagedResult<TrackEntity>>> GetPage(
public Task<ApiResult<PagedResult<TrackDto>>> GetPage(
int pageNumber,
int pageSize,
string? sortColumn = null,