refactor(web): playlistTrackToRef helper to dedupe TrackRef

reconstruction (#375)

PlaylistTrackRow.svelte and PlaylistCard.toTrackRefs both rebuilt
TrackRef from PlaylistTrack with the same field-by-field literal.
Server adding a new TrackRef field would have needed both sites
updated; now one helper owns the mapping.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-10 15:37:11 -04:00
parent 633406c05b
commit 0eaaf66748
3 changed files with 33 additions and 35 deletions
@@ -0,0 +1,22 @@
// Converts a PlaylistTrack row into the minimal TrackRef shape used
// by play queues + track menus. Centralizes the mapping so server
// additions (new TrackRef fields) only update one site.
//
// Returns null when the upstream track has been removed (track_id
// is null on the playlist row); callers should filter nulls.
import type { PlaylistTrack, TrackRef } from '$lib/api/types';
export function playlistTrackToRef(row: PlaylistTrack): TrackRef | null {
if (!row.track_id) return null;
return {
id: row.track_id,
title: row.title,
album_id: row.album_id ?? '',
album_title: row.album_title,
artist_id: row.artist_id ?? '',
artist_name: row.artist_name,
duration_sec: row.duration_sec,
stream_url: row.stream_url ?? ''
};
}