From 7401f986c63e9915cd4856f7dd822565a62c134c Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Fri, 1 May 2026 12:29:01 +0200 Subject: [PATCH] fix(tv): focus segment skip button --- .../purefin/ui/screen/player/TvPlayerScreen.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/TvPlayerScreen.kt b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/TvPlayerScreen.kt index d4ca17d9..f620deab 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/TvPlayerScreen.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/ui/screen/player/TvPlayerScreen.kt @@ -181,12 +181,16 @@ fun TvPlayerScreen( } } - LaunchedEffect(controlsVisible, controlsAutoHideBlocked) { + LaunchedEffect( + controlsVisible, + controlsAutoHideBlocked, + uiState.activeSkippableSegmentEndMs + ) { if (controlsAutoHideBlocked) return@LaunchedEffect if (controlsVisible) { controlsFocusRequester.requestFocus() } else { - uiState.activeSkippableSegmentEndMs?.let { + if (uiState.activeSkippableSegmentEndMs != null) { skipButtonFocusRequester.requestFocus() return@LaunchedEffect } @@ -254,6 +258,8 @@ fun TvPlayerScreen( onResumePlaybackWithoutShowingControls = resumePlaybackWithoutShowingControls, onSeekRelative = seekByWithoutShowingControls, onShowControls = showTvControls, + onSkipSegment = skipSegmentAndShowControls, + hasSkippableSegment = uiState.activeSkippableSegmentEndMs != null, onTogglePlayPause = togglePlayPauseAndShowControls ) } @@ -385,6 +391,8 @@ internal fun handleTvPlayerRootKeyEvent( onResumePlaybackWithoutShowingControls: () -> Unit, onSeekRelative: (Long) -> Unit, onShowControls: () -> Unit, + onSkipSegment: () -> Unit = {}, + hasSkippableSegment: Boolean = false, onTogglePlayPause: () -> Unit ): Boolean { if (event.type != KeyEventType.KeyDown) return false @@ -428,7 +436,9 @@ internal fun handleTvPlayerRootKeyEvent( } Key.DirectionCenter, Key.Enter -> { - if (isPlaying) { + if (hasSkippableSegment) { + onSkipSegment() + } else if (isPlaying) { onPausePlaybackWithoutShowingControls() } else { onResumePlaybackWithoutShowingControls()