From acaec75b540e5518c60dd79ed1061efe638f83ae Mon Sep 17 00:00:00 2001 From: neerajlovecyber Date: Wed, 15 Jul 2026 16:45:48 +0530 Subject: [PATCH] Show watched checkmark on player episode list rows. Reuse NuvioAnimatedWatchedBadge so completed episodes match the series detail page. Co-authored-by: Cursor --- .../features/player/PlayerEpisodesPanel.kt | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerEpisodesPanel.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerEpisodesPanel.kt index 74e3cfe2e..96ba0a508 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerEpisodesPanel.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerEpisodesPanel.kt @@ -53,6 +53,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil3.compose.AsyncImage +import com.nuvio.app.core.ui.NuvioAnimatedWatchedBadge import com.nuvio.app.core.ui.NuvioTokens import com.nuvio.app.core.ui.nuvio import com.nuvio.app.features.debrid.DebridSettingsRepository @@ -376,16 +377,27 @@ private fun EpisodeRow( ) { // Thumbnail if (episode.thumbnail != null) { - AsyncImage( - model = episode.thumbnail, - contentDescription = null, + Box( modifier = Modifier .width(NuvioTokens.Space.s80) - .height(NuvioTokens.Space.s48) - .clip(tokens.shapes.compactCard) - .then(if (shouldBlurArtwork) Modifier.blur(NuvioTokens.Space.s18) else Modifier), - contentScale = ContentScale.Crop, - ) + .height(NuvioTokens.Space.s48), + ) { + AsyncImage( + model = episode.thumbnail, + contentDescription = null, + modifier = Modifier + .fillMaxSize() + .clip(tokens.shapes.compactCard) + .then(if (shouldBlurArtwork) Modifier.blur(NuvioTokens.Space.s18) else Modifier), + contentScale = ContentScale.Crop, + ) + NuvioAnimatedWatchedBadge( + isVisible = isWatched, + modifier = Modifier + .align(Alignment.TopEnd) + .padding(NuvioTokens.Space.s4), + ) + } } Column(modifier = Modifier.weight(1f)) { @@ -414,6 +426,9 @@ private fun EpisodeRow( fontWeight = FontWeight.SemiBold, ) } + if (episode.thumbnail == null) { + NuvioAnimatedWatchedBadge(isVisible = isWatched) + } if (isCurrent) { Box( modifier = Modifier