Design Prot Merge #1
@@ -37,27 +37,35 @@ export interface ApiTrackLike {
|
|||||||
audioStatus?: 'Pending' | 'Processing' | 'Completed' | 'Failed';
|
audioStatus?: 'Pending' | 'Processing' | 'Completed' | 'Failed';
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isPendingYouTubeTrack(track: ApiTrackLike): boolean {
|
export function isYouTubeTrack(track: ApiTrackLike): boolean {
|
||||||
return track.source === 'YouTube' && track.audioStatus !== 'Completed';
|
return track.source === 'YouTube';
|
||||||
}
|
}
|
||||||
|
|
||||||
export function queueIdForTrack(track: ApiTrackLike): string | number {
|
export function isPendingYouTubeTrack(track: ApiTrackLike): boolean {
|
||||||
return isPendingYouTubeTrack(track) && track.externalId ? track.externalId : track.id;
|
return isYouTubeTrack(track) && track.audioStatus !== 'Completed';
|
||||||
}
|
}
|
||||||
|
|
||||||
export function youTubeThumbnailUrl(videoId: string): string {
|
export function youTubeThumbnailUrl(videoId: string): string {
|
||||||
return `https://i.ytimg.com/vi/${videoId}/mqdefault.jpg`;
|
return `https://i.ytimg.com/vi/${videoId}/mqdefault.jpg`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function queueIdForTrack(track: ApiTrackLike): string | number {
|
||||||
|
return isYouTubeTrack(track) && track.externalId ? track.externalId : track.id;
|
||||||
|
}
|
||||||
|
|
||||||
export function toQueueItems(tracks: ApiTrackLike[]): QueueItem[] {
|
export function toQueueItems(tracks: ApiTrackLike[]): QueueItem[] {
|
||||||
return tracks.map((track) => {
|
return tracks.map((track) => {
|
||||||
const pendingYouTube = isPendingYouTubeTrack(track);
|
const youTube = isYouTubeTrack(track);
|
||||||
return {
|
return {
|
||||||
id: queueIdForTrack(track),
|
id: queueIdForTrack(track),
|
||||||
title: track.title,
|
title: track.title,
|
||||||
artist: track.artist,
|
artist: track.artist,
|
||||||
source: pendingYouTube ? 'youtube' : 'local',
|
source: youTube ? 'youtube' : 'local',
|
||||||
coverUrl: pendingYouTube && track.externalId ? youTubeThumbnailUrl(track.externalId) : undefined
|
coverUrl: youTube
|
||||||
|
? isPendingYouTubeTrack(track) && track.externalId
|
||||||
|
? youTubeThumbnailUrl(track.externalId)
|
||||||
|
: `/api/tracks/${track.id}/cover?size=small`
|
||||||
|
: undefined
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user