diff --git a/pages/index.vue b/pages/index.vue index afc8f2a..abc1c88 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -167,12 +167,19 @@ const generateShuffledIndices = () => { } const playTrack = async (track, index) => { + // Limpiar el estado de error de esta canción si existe + // (permite reintentar canciones que fallaron previamente) + if (failedTracks.value.has(track.name)) { + console.log('[PlayTrack] Clearing previous error state for:', track.name) + failedTracks.value.delete(track.name) + } + loadingTrack.value = track.name currentTrack.value = track - currentTrackIndex.value = isShuffled.value + currentTrackIndex.value = isShuffled.value ? shuffledIndices.value.indexOf(tracks.value.indexOf(track)) : index - + if (audioPlayer.value) { // Clear previous audio data if (audioPlayer.value.currentBlobUrl) { @@ -419,6 +426,24 @@ watch(isDark, (newValue) => { } }, { immediate: true }) +// Limpiar errores cuando se restablece la autenticación +watch(() => musicStore.error, (newError, oldError) => { + // Si el error se limpia (de error a null), limpiar todos los errores de canciones + if (oldError && !newError && failedTracks.value.size > 0) { + console.log('[PlayTrack] Auth restored, clearing all failed tracks') + failedTracks.value.clear() + } +}) + +// Limpiar errores cuando se cargan canciones exitosamente +watch(() => musicStore.tracks.length, (newLength, oldLength) => { + // Si se cargan canciones exitosamente, limpiar errores + if (newLength > 0 && newLength !== oldLength && failedTracks.value.size > 0) { + console.log('[PlayTrack] Tracks loaded successfully, clearing failed tracks') + failedTracks.value.clear() + } +}) + watch(() => audioPlayer.value, (newAudio) => { if (newAudio) { newAudio.addEventListener('play', () => { isPlaying.value = true })