Merge branch 'NuvioMedia:cmp-rewrite' into indonesian-locale

This commit is contained in:
Luqman Fadlli 2026-05-13 08:13:27 +07:00 committed by GitHub
commit 8bdb44f37e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 7 deletions

View file

@ -38,7 +38,6 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import com.nuvio.app.core.ui.localizedContinueWatchingSubtitle
import com.nuvio.app.core.ui.NuvioProgressBar import com.nuvio.app.core.ui.NuvioProgressBar
import com.nuvio.app.core.ui.NuvioShelfSection import com.nuvio.app.core.ui.NuvioShelfSection
import com.nuvio.app.core.ui.posterCardClickable import com.nuvio.app.core.ui.posterCardClickable
@ -51,6 +50,19 @@ import org.jetbrains.compose.resources.stringResource
private fun continueWatchingProgressPercent(progressFraction: Float): Int = private fun continueWatchingProgressPercent(progressFraction: Float): Int =
(progressFraction * 100f).roundToInt().coerceIn(1, 99) (progressFraction * 100f).roundToInt().coerceIn(1, 99)
@Composable
private fun localizedContinueWatchingMetaLine(item: ContinueWatchingItem): String =
when {
item.seasonNumber != null && item.episodeNumber != null && item.isNextUp ->
stringResource(Res.string.continue_watching_up_next_episode, item.seasonNumber, item.episodeNumber)
item.seasonNumber != null && item.episodeNumber != null ->
stringResource(Res.string.compose_player_episode_code_full, item.seasonNumber, item.episodeNumber)
item.isNextUp ->
stringResource(Res.string.continue_watching_up_next)
else ->
stringResource(Res.string.media_movie)
}
private fun ContinueWatchingItem.continueWatchingArtworkUrl( private fun ContinueWatchingItem.continueWatchingArtworkUrl(
useEpisodeThumbnails: Boolean, useEpisodeThumbnails: Boolean,
): String? = when { ): String? = when {
@ -355,9 +367,8 @@ private fun ContinueWatchingWideCard(
.padding(layout.wideContentPadding), .padding(layout.wideContentPadding),
verticalArrangement = Arrangement.SpaceBetween, verticalArrangement = Arrangement.SpaceBetween,
) { ) {
val isEpisodeCard = item.seasonNumber != null && item.episodeNumber != null val wideMetaLine = localizedContinueWatchingMetaLine(item)
val hasEpisodeTitle = !item.episodeTitle.isNullOrBlank() val episodeTitle = item.episodeTitle?.trim()?.takeIf { it.isNotBlank() }
val wideMetaLine = localizedContinueWatchingSubtitle(item)
Column(verticalArrangement = Arrangement.spacedBy(6.dp)) { Column(verticalArrangement = Arrangement.spacedBy(6.dp)) {
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
@ -389,9 +400,9 @@ private fun ContinueWatchingWideCard(
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
) )
if (hasEpisodeTitle) { if (episodeTitle != null) {
Text( Text(
text = item.episodeTitle.orEmpty(), text = episodeTitle,
style = MaterialTheme.typography.bodySmall.copy( style = MaterialTheme.typography.bodySmall.copy(
fontSize = layout.wideMetaSize, fontSize = layout.wideMetaSize,
fontWeight = FontWeight.Medium, fontWeight = FontWeight.Medium,

View file

@ -13,7 +13,7 @@ androidx-lifecycle = "2.11.0-alpha03"
androidx-work = "2.10.3" androidx-work = "2.10.3"
androidx-testExt = "1.3.0" androidx-testExt = "1.3.0"
composeMultiplatform = "1.11.0-beta03" composeMultiplatform = "1.11.0-beta03"
coil = "3.4.0" coil = "3.5.0-beta01"
kermit = "2.0.5" kermit = "2.0.5"
junit = "4.13.2" junit = "4.13.2"
kotlin = "2.3.0" kotlin = "2.3.0"