mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
refactor(tv): improve focus management and clean up unused focus requesters
This commit is contained in:
@@ -42,6 +42,7 @@ import androidx.compose.ui.input.key.key
|
|||||||
import androidx.compose.ui.input.key.onPreviewKeyEvent
|
import androidx.compose.ui.input.key.onPreviewKeyEvent
|
||||||
import androidx.compose.ui.input.key.type
|
import androidx.compose.ui.input.key.type
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.platform.LocalFocusManager
|
||||||
import androidx.compose.ui.platform.testTag
|
import androidx.compose.ui.platform.testTag
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.viewinterop.AndroidView
|
import androidx.compose.ui.viewinterop.AndroidView
|
||||||
@@ -85,9 +86,13 @@ fun TvPlayerScreen(
|
|||||||
val controlsAutoHideBlocked = isPlaylistExpanded || trackPanelType != null
|
val controlsAutoHideBlocked = isPlaylistExpanded || trackPanelType != null
|
||||||
|
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
LaunchedEffect(Unit) {
|
val focusManager = LocalFocusManager.current
|
||||||
viewModel.setControlsAutoHideDelay(TV_CONTROLS_AUTO_HIDE_MS)
|
val rootFocusRequester = remember { FocusRequester() }
|
||||||
}
|
val controlsFocusRequester = remember { FocusRequester() }
|
||||||
|
val qualityButtonFocusRequester = remember { FocusRequester() }
|
||||||
|
val audioButtonFocusRequester = remember { FocusRequester() }
|
||||||
|
val subtitlesButtonFocusRequester = remember { FocusRequester() }
|
||||||
|
val skipButtonFocusRequester = remember { FocusRequester() }
|
||||||
LaunchedEffect(uiState.isPlaying) {
|
LaunchedEffect(uiState.isPlaying) {
|
||||||
val activity = context as? Activity
|
val activity = context as? Activity
|
||||||
if (uiState.isPlaying) {
|
if (uiState.isPlaying) {
|
||||||
@@ -115,12 +120,6 @@ fun TvPlayerScreen(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val hiddenControlFocusRequester = remember { FocusRequester() }
|
|
||||||
val controlsFocusRequester = remember { FocusRequester() }
|
|
||||||
val qualityButtonFocusRequester = remember { FocusRequester() }
|
|
||||||
val audioButtonFocusRequester = remember { FocusRequester() }
|
|
||||||
val subtitlesButtonFocusRequester = remember { FocusRequester() }
|
|
||||||
val skipButtonFocusRequester = remember { FocusRequester() }
|
|
||||||
val expandPlaylist: () -> Unit = {
|
val expandPlaylist: () -> Unit = {
|
||||||
if (!isPlaylistExpanded) {
|
if (!isPlaylistExpanded) {
|
||||||
isPlaylistExpanded = true
|
isPlaylistExpanded = true
|
||||||
@@ -194,7 +193,7 @@ fun TvPlayerScreen(
|
|||||||
skipButtonFocusRequester.requestFocus()
|
skipButtonFocusRequester.requestFocus()
|
||||||
return@LaunchedEffect
|
return@LaunchedEffect
|
||||||
}
|
}
|
||||||
hiddenControlFocusRequester.requestFocus()
|
focusManager.clearFocus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,7 +242,7 @@ fun TvPlayerScreen(
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.background(Color.Black)
|
.background(Color.Black)
|
||||||
.focusRequester(hiddenControlFocusRequester)
|
.focusRequester(rootFocusRequester)
|
||||||
.onPreviewKeyEvent { event ->
|
.onPreviewKeyEvent { event ->
|
||||||
handleTvPlayerRootKeyEvent(
|
handleTvPlayerRootKeyEvent(
|
||||||
event = event,
|
event = event,
|
||||||
|
|||||||
@@ -103,13 +103,6 @@ internal fun TvSeasonTabs(
|
|||||||
Modifier
|
Modifier
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.then(
|
|
||||||
if (index == 0 && firstItemTestTag != null) {
|
|
||||||
Modifier.testTag(firstItemTestTag)
|
|
||||||
} else {
|
|
||||||
Modifier
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user