Shape track websocket payloads

This commit is contained in:
TorMatzAndren
2026-05-16 12:45:02 +02:00
parent c3d2f39b82
commit 1f3131d99a
+18 -2
View File
@@ -56,18 +56,34 @@ export class TrackService {
this.io.emit(WsTrackOperation.Delete, { id }); this.io.emit(WsTrackOperation.Delete, { id });
} }
private toClientTrack(track: TrackEntity): Partial<TrackEntity> {
return {
id: track.id,
artist: track.artist,
name: track.name,
spotifyUrl: track.spotifyUrl,
youtubeUrl: track.youtubeUrl,
downloadAttemptCount: track.downloadAttemptCount,
status: track.status,
error: track.error,
coverUrl: track.coverUrl,
durationMs: track.durationMs,
createdAt: track.createdAt,
};
}
async create(track: TrackEntity, playlist?: PlaylistEntity): Promise<void> { async create(track: TrackEntity, playlist?: PlaylistEntity): Promise<void> {
const savedTrack = await this.repository.save({ ...track, playlist }); const savedTrack = await this.repository.save({ ...track, playlist });
await this.enqueueSearch(savedTrack.id); await this.enqueueSearch(savedTrack.id);
this.io.emit(WsTrackOperation.New, { this.io.emit(WsTrackOperation.New, {
track: savedTrack, track: this.toClientTrack(savedTrack),
playlistId: playlist.id, playlistId: playlist.id,
}); });
} }
async update(id: number, track: TrackEntity): Promise<void> { async update(id: number, track: TrackEntity): Promise<void> {
await this.repository.update(id, track); await this.repository.update(id, track);
this.io.emit(WsTrackOperation.Update, track); this.io.emit(WsTrackOperation.Update, this.toClientTrack(track));
} }
private parseRejectedYoutubeUrls(track: TrackEntity): string[] { private parseRejectedYoutubeUrls(track: TrackEntity): string[] {