diff --git a/Flixy/Views/Player/PlayerModel.swift b/Flixy/Views/Player/PlayerModel.swift index 7574365..596906c 100644 --- a/Flixy/Views/Player/PlayerModel.swift +++ b/Flixy/Views/Player/PlayerModel.swift @@ -196,7 +196,13 @@ final class PlayerModel { /// Die Stelle wird gemerkt und danach wieder angefahren — sonst begänne der /// Film bei jedem Wechsel von vorn. func select(quality newQuality: PlayerQuality) async { - guard newQuality != quality, !isOffline, + // Nach einem Fehlschlag darf dieselbe Stufe noch einmal versucht + // werden. Sonst wäre man eingesperrt: die gewählte Stufe steht schon + // fest, ein erneutes Antippen gilt als „keine Änderung", und es + // passiert nichts mehr. + let isRetry = { if case .failed = phase { return true } else { return false } }() + guard newQuality != quality || isRetry, + !isOffline, let server, let item, let media = currentMedia, let part = currentPart else { return }