mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 23:51:21 +02:00
Restore focus for series details
This commit is contained in:
parent
b30ddab0fc
commit
9d60c36437
3 changed files with 31 additions and 10 deletions
|
|
@ -26,6 +26,8 @@ import androidx.compose.ui.unit.Dp
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.media3.common.Player
|
||||
import coil3.request.ErrorResult
|
||||
import com.github.damontecres.dolphin.ui.data.RowColumn
|
||||
import com.github.damontecres.dolphin.ui.data.RowColumnSaver
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import org.jellyfin.sdk.model.api.BaseItemDto
|
||||
import org.jellyfin.sdk.model.extensions.ticks
|
||||
|
|
@ -296,3 +298,14 @@ fun logCoilError(
|
|||
Timber.e(errorResult.throwable, "Error loading image: %s", url)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenient way to [rememberSaveable] a [RowColumn]
|
||||
*/
|
||||
@Composable
|
||||
fun rememberPosition(initialPosition: RowColumn = RowColumn(-1, -1)) =
|
||||
rememberSaveable(stateSaver = RowColumnSaver) {
|
||||
mutableStateOf(
|
||||
initialPosition,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,11 +63,14 @@ import com.github.damontecres.dolphin.ui.components.StarRating
|
|||
import com.github.damontecres.dolphin.ui.components.StarRatingPrecision
|
||||
import com.github.damontecres.dolphin.ui.data.ItemDetailsDialog
|
||||
import com.github.damontecres.dolphin.ui.data.ItemDetailsDialogInfo
|
||||
import com.github.damontecres.dolphin.ui.data.RowColumn
|
||||
import com.github.damontecres.dolphin.ui.ifElse
|
||||
import com.github.damontecres.dolphin.ui.isNotNullOrBlank
|
||||
import com.github.damontecres.dolphin.ui.letNotEmpty
|
||||
import com.github.damontecres.dolphin.ui.nav.Destination
|
||||
import com.github.damontecres.dolphin.ui.playOnClickSound
|
||||
import com.github.damontecres.dolphin.ui.playSoundOnFocus
|
||||
import com.github.damontecres.dolphin.ui.rememberPosition
|
||||
import com.github.damontecres.dolphin.ui.roundMinutes
|
||||
import com.github.damontecres.dolphin.ui.tryRequestFocus
|
||||
import com.github.damontecres.dolphin.util.LoadingState
|
||||
|
|
@ -159,6 +162,7 @@ fun SeriesDetailsContent(
|
|||
) {
|
||||
val bringIntoViewRequester = remember { BringIntoViewRequester() }
|
||||
|
||||
var position by rememberPosition()
|
||||
val focusRequester = remember { FocusRequester() }
|
||||
LaunchedEffect(Unit) { focusRequester.tryRequestFocus() }
|
||||
|
||||
|
|
@ -217,8 +221,8 @@ fun SeriesDetailsContent(
|
|||
Modifier
|
||||
.fillMaxWidth(.6f)
|
||||
.bringIntoViewRequester(bringIntoViewRequester)
|
||||
.focusRequester(focusRequester)
|
||||
.padding(bottom = 80.dp),
|
||||
.padding(bottom = 80.dp)
|
||||
.ifElse(position.row < 0, Modifier.focusRequester(focusRequester)),
|
||||
)
|
||||
}
|
||||
item {
|
||||
|
|
@ -240,11 +244,19 @@ fun SeriesDetailsContent(
|
|||
cardContent = @Composable { index, item, mod, onClick, onLongClick ->
|
||||
SeasonCard(
|
||||
item = item,
|
||||
onClick = onClick,
|
||||
onClick = {
|
||||
position = RowColumn(0, index)
|
||||
onClick.invoke()
|
||||
},
|
||||
onLongClick = onLongClick,
|
||||
modifier = mod,
|
||||
imageHeight = Cards.height2x3,
|
||||
imageWidth = Dp.Unspecified,
|
||||
modifier =
|
||||
mod
|
||||
.ifElse(
|
||||
position.row == 0 && position.column == index,
|
||||
Modifier.focusRequester(focusRequester),
|
||||
),
|
||||
)
|
||||
},
|
||||
)
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@ import com.github.damontecres.dolphin.ui.cards.ItemRow
|
|||
import com.github.damontecres.dolphin.ui.cards.SeasonCard
|
||||
import com.github.damontecres.dolphin.ui.components.SearchEditTextBox
|
||||
import com.github.damontecres.dolphin.ui.data.RowColumn
|
||||
import com.github.damontecres.dolphin.ui.data.RowColumnSaver
|
||||
import com.github.damontecres.dolphin.ui.ifElse
|
||||
import com.github.damontecres.dolphin.ui.isNotNullOrBlank
|
||||
import com.github.damontecres.dolphin.ui.nav.NavigationManager
|
||||
import com.github.damontecres.dolphin.ui.rememberPosition
|
||||
import com.github.damontecres.dolphin.ui.tryRequestFocus
|
||||
import com.github.damontecres.dolphin.util.ApiRequestPager
|
||||
import com.github.damontecres.dolphin.util.ExceptionHandler
|
||||
|
|
@ -143,11 +143,7 @@ fun SearchPage(
|
|||
var query by rememberSaveable { mutableStateOf("") }
|
||||
val focusRequester = remember { FocusRequester() }
|
||||
|
||||
var position by rememberSaveable(stateSaver = RowColumnSaver) {
|
||||
mutableStateOf(
|
||||
RowColumn(-1, -1),
|
||||
)
|
||||
}
|
||||
var position by rememberPosition()
|
||||
|
||||
LaunchedEffect(query) {
|
||||
delay(750L)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue