Playback errors drop the viewer back to the list without ever showing the error #7
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
When playback fails permanently,
PlayerController.onPlayerError()gives up after two silent retries and setserrorMessage = "unreachable". Media3 also moves the player toSTATE_IDLEon a fatal error.hasMediaismediaItemCount > 0 && playbackState != STATE_IDLE, so it becomesfalse.AppState.syncFromPlayer()then hides the player:The overlay would have rendered "Wiedergabefehler" — but the whole player screen is gone by then, so that text never appears on the TV. The error only reaches the phone remote via
currentStatus().Failure scenario
A family member picks a channel whose stream is dead. The screen goes black for a moment, then silently returns to the channel list with no explanation. Nothing says what happened or what to do — precisely the "self-healing, plain language" behaviour the app is supposed to have (issue #13 of the original set).
Suggested fix
errorMessage != nulland show a plain-language message with one action ("Erneut versuchen")AppErrorfullscreen state, which already has the right tone and a retry pathprepare()when the user retries, since the player does not recover on its ownFound by multi-agent code review; verified against current
PlayerController.ktandAppState.kt.Fixed in
dd612fc, shipped in v0.9.0.AppState.syncFromPlayer()only hides the player when there is neither an error nor a pending reconnect, so a failure no longer drops the viewer back to the list.retryNow()clears the error, resets the backoff and re-prepare()s — the player does not recover on its own, so this is the path back.Together with the spaced retries from #12 the sequence is now: drop → three quiet attempts with a visible hint → a plain-language message with one action.