fix: permitir reintentar canciones que fallaron previamente
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 25s

El Set failedTracks marcaba canciones como fallidas permanentemente
durante toda la sesión, sin permitir reintentarlas. Esto causaba que
canciones que fallaban por razones temporales (ej: sesión expirada)
quedaran marcadas como error incluso después de resolver el problema.

Cambios implementados:
- Limpiar estado de error al inicio de playTrack() antes de reintentar
- Agregar watcher que limpia todos los errores cuando se restablece auth
- Agregar watcher que limpia errores cuando se cargan canciones exitosamente

Con esto, las canciones con error pueden reintentarse haciendo click
nuevamente, y todos los errores se limpian automáticamente cuando
la autenticación se restablece o se cargan canciones exitosamente.
This commit is contained in:
2025-10-17 03:47:23 -06:00
parent b46d15145f
commit d9795f6752

View File

@@ -167,6 +167,13 @@ const generateShuffledIndices = () => {
} }
const playTrack = async (track, index) => { 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 loadingTrack.value = track.name
currentTrack.value = track currentTrack.value = track
currentTrackIndex.value = isShuffled.value currentTrackIndex.value = isShuffled.value
@@ -419,6 +426,24 @@ watch(isDark, (newValue) => {
} }
}, { immediate: true }) }, { 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) => { watch(() => audioPlayer.value, (newAudio) => {
if (newAudio) { if (newAudio) {
newAudio.addEventListener('play', () => { isPlaying.value = true }) newAudio.addEventListener('play', () => { isPlaying.value = true })