diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomeContinueWatchingSection.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomeContinueWatchingSection.kt index 6b953b4e..c7f6e0f6 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomeContinueWatchingSection.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/components/HomeContinueWatchingSection.kt @@ -38,7 +38,6 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil3.compose.AsyncImage -import com.nuvio.app.core.ui.localizedContinueWatchingSubtitle import com.nuvio.app.core.ui.NuvioProgressBar import com.nuvio.app.core.ui.NuvioShelfSection import com.nuvio.app.core.ui.posterCardClickable @@ -51,6 +50,19 @@ import org.jetbrains.compose.resources.stringResource private fun continueWatchingProgressPercent(progressFraction: Float): Int = (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( useEpisodeThumbnails: Boolean, ): String? = when { @@ -355,7 +367,8 @@ private fun ContinueWatchingWideCard( .padding(layout.wideContentPadding), verticalArrangement = Arrangement.SpaceBetween, ) { - val wideMetaLine = localizedContinueWatchingSubtitle(item) + val wideMetaLine = localizedContinueWatchingMetaLine(item) + val episodeTitle = item.episodeTitle?.trim()?.takeIf { it.isNotBlank() } Column(verticalArrangement = Arrangement.spacedBy(6.dp)) { Row( modifier = Modifier.fillMaxWidth(), @@ -387,6 +400,18 @@ private fun ContinueWatchingWideCard( maxLines = 1, overflow = TextOverflow.Ellipsis, ) + if (episodeTitle != null) { + Text( + text = episodeTitle, + style = MaterialTheme.typography.bodySmall.copy( + fontSize = layout.wideMetaSize, + fontWeight = FontWeight.Medium, + ), + color = MaterialTheme.colorScheme.onSurfaceVariant, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } } if (item.progressFraction > 0f) {