fix episode overview focus on mobile

This commit is contained in:
2026-08-23 15:59:36 +03:00
parent ebe29671d6
commit 996d5eeff3
@@ -52,6 +52,7 @@ import ru.shadowsparky.ui.components.ExpressiveLazyColumn
import ru.shadowsparky.ui.components.IconButton
import ru.shadowsparky.ui.components.Loading
import ru.shadowsparky.ui.components.TopAppBar
import ru.shadowsparky.ui.components.isTv
import ru.shadowsparky.vbox.shared.domain.OfflineState
import ru.shadowsparky.vbox.shared.domain.OfflineVideo
import ru.shadowsparky.vbox.shared.domain.model.Episode
@@ -170,6 +171,7 @@ fun EpisodesOverviewList(
isSaveMode: Boolean,
onOfflineClicked: (EpisodeWithOfflineInfo) -> Unit
) {
val isTv = isTv()
if (errorCode != null) {
ErrorContent(
errorCode,
@@ -190,6 +192,7 @@ fun EpisodesOverviewList(
key = { item -> item.episode.episode }
) { index, episode ->
EpisodeInfo(
if (isTv) {
Modifier.onFocusChanged { state ->
if (state.isFocused) focusedIndex = index
}.then(
@@ -198,7 +201,10 @@ fun EpisodesOverviewList(
} else {
Modifier
}
),
)
} else {
Modifier
},
onLaunch,
episode,
onClipboardAction,
@@ -210,12 +216,13 @@ fun EpisodesOverviewList(
}
}
LaunchedEffect(episodes) {
if (episodes.isEmpty()) return@LaunchedEffect
if (isTv && episodes.isNotEmpty()) {
val index = focusedIndex.coerceIn(episodes.indices)
lazyListState.scrollToItem(index)
withFrameNanos {}
requester.requestFocus()
}
}
} else {
Loading()
}