fix(quick-14): add roll-back-on-failure to queue index advancement

- Next() rolls back currentIndex and skips emitIndexChanged on load failure
- Previous() applies same pattern to all three branches (RepeatOne, restart, navigate)
- OnPlaybackFinished() rolls back currentIndex on playCurrentTrack failure
- PlayIndex() and playFromStart() also guard against load failures
- RepeatOne paths guard emitIndexChanged with the bool return value
This commit is contained in:
2026-03-05 15:03:29 -05:00
parent 6eeddda976
commit 2820de2510
2 changed files with 53 additions and 15 deletions
+11 -3
View File
@@ -12,8 +12,9 @@ func (q *Queue) OnPlaybackFinished() {
// Repeat One: replay the current track.
if q.repeatMode == RepeatOne {
q.playCurrentTrack()
q.emitIndexChanged()
if q.playCurrentTrack() {
q.emitIndexChanged()
}
return
}
@@ -26,7 +27,14 @@ func (q *Queue) OnPlaybackFinished() {
return
}
prevIndex := q.currentIndex
q.currentIndex = nextIdx
q.playCurrentTrack()
if !q.playCurrentTrack() {
q.currentIndex = prevIndex
return
}
q.emitIndexChanged()
}