diff --git a/packages/app/app/actions/queue.ts b/packages/app/app/actions/queue.ts index f6db772737..6e29db79fe 100644 --- a/packages/app/app/actions/queue.ts +++ b/packages/app/app/actions/queue.ts @@ -209,6 +209,12 @@ export const findStreamsForTrack = (index: number) => async (dispatch, getState) ...streamData.slice(1) ]; + const firstStream = streamData[0]; + if (!firstStream?.stream) { + removeFirstStream(track, index, streamData, dispatch); + return; + } + dispatch( updateQueueItem({ ...track, @@ -237,6 +243,22 @@ export const findStreamsForTrack = (index: number) => async (dispatch, getState) } }; +function removeFirstStream(track: QueueItem, trackIndex: number, streams: TrackStream[], dispatch) { + if (streams.length === 1) { + // no more streams are available + // return removeTrackAction(trackIndex); + dispatch(removeFromQueue(trackIndex)); + } else { + // remove the first (unavailable) stream + dispatch(updateQueueItem({ + ...track, + loading: true, + error: false, + streams: streams.slice(1) + })); + } +} + export function playTrack(streamProviders, item: QueueItem) { return (dispatch) => { dispatch(clearQueue());