Add track support and UI list in DetailView

Introduce Track and ApiTrack types and add tracks to ApiMediaItem/Media. Map ApiMediaItem.tracks into Media in convertApiToMedia. Implement a conditional Tracks section in DetailView that lists sorted tracks with search input, track number, title, artist, duration and a play button (only shown when tracks exist). Files changed: src/types.ts, src/api.ts, src/components/DetailView.tsx.
This commit is contained in:
Lars Behrends
2026-04-11 01:42:45 +02:00
parent 6c316fbf84
commit dff599e5af
3 changed files with 78 additions and 2 deletions

View File

@@ -39,6 +39,15 @@ export interface ApiEpisode {
thumbnail: string;
}
export interface ApiTrack {
id: number;
media_id: number;
track_number: number;
title: string;
duration: number | null;
artist: string;
}
export interface ApiMediaItem {
id: number;
title: string;
@@ -70,6 +79,7 @@ export interface ApiMediaItem {
lastActivity?: string | null;
playtime?: number;
episodes?: ApiEpisode[];
tracks?: ApiTrack[];
}
export interface ApiStaff {
@@ -334,7 +344,8 @@ export function convertApiToMedia(apiItem: ApiMediaItem): Media {
playCount: apiItem.playCount,
lastActivity: apiItem.lastActivity,
playtime: apiItem.playtime,
episodes: apiItem.episodes
episodes: apiItem.episodes,
tracks: apiItem.tracks
};
}