From 53bd43963bf30a74ef75deb2d16981b49b43ca30 Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Wed, 3 Jun 2026 23:14:57 +0530 Subject: [PATCH] ref: remove IMDb badges from store version --- .../core/build/AppFeaturePolicy.android.kt | 3 +- .../core/build/AppFeaturePolicy.android.kt | 1 + .../nuvio/app/core/build/AppFeaturePolicy.kt | 3 +- .../details/components/DetailMetaInfo.kt | 83 +++++++++++++------ .../details/components/DetailSeriesContent.kt | 30 +++++-- .../core/build/AppFeaturePolicy.desktop.kt | 3 +- .../app/core/build/AppFeaturePolicy.ios.kt | 3 +- .../app/core/build/AppFeaturePolicy.ios.kt | 1 + 8 files changed, 91 insertions(+), 36 deletions(-) diff --git a/composeApp/src/androidFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt b/composeApp/src/androidFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt index 18e9c681f..b4b1a1aa8 100644 --- a/composeApp/src/androidFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt +++ b/composeApp/src/androidFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt @@ -5,4 +5,5 @@ actual object AppFeaturePolicy { actual val p2pEnabled: Boolean = true actual val trailerPlaybackMode: TrailerPlaybackMode = TrailerPlaybackMode.IN_APP actual val inAppUpdaterEnabled: Boolean = true -} \ No newline at end of file + actual val imdbRatingLogoEnabled: Boolean = true +} diff --git a/composeApp/src/androidPlaystore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt b/composeApp/src/androidPlaystore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt index 9b96c0d7f..6493ef481 100644 --- a/composeApp/src/androidPlaystore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt +++ b/composeApp/src/androidPlaystore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.android.kt @@ -5,4 +5,5 @@ actual object AppFeaturePolicy { actual val p2pEnabled: Boolean = true actual val trailerPlaybackMode: TrailerPlaybackMode = TrailerPlaybackMode.EXTERNAL actual val inAppUpdaterEnabled: Boolean = false + actual val imdbRatingLogoEnabled: Boolean = false } diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.kt index 8fb3bb869..3c82f754e 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.kt @@ -10,4 +10,5 @@ expect object AppFeaturePolicy { val p2pEnabled: Boolean val trailerPlaybackMode: TrailerPlaybackMode val inAppUpdaterEnabled: Boolean -} \ No newline at end of file + val imdbRatingLogoEnabled: Boolean +} diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailMetaInfo.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailMetaInfo.kt index 00afb4595..0d8b5185d 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailMetaInfo.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailMetaInfo.kt @@ -34,10 +34,12 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import com.nuvio.app.core.build.AppFeaturePolicy import com.nuvio.app.features.details.MetaDetails import com.nuvio.app.features.details.MetaExternalRating import com.nuvio.app.features.details.formatRuntimeForDisplay @@ -111,30 +113,22 @@ fun DetailMetaInfo( DetailHeroMetaBadge(text = badge) } if (validImdbRating != null && !hasMdbImdbRating) { + val imdbTextStyle = MaterialTheme.typography.titleMedium.copy( + fontWeight = FontWeight.Bold, + letterSpacing = 0.sp, + ) Row( verticalAlignment = Alignment.CenterVertically, ) { - Surface( - shape = RoundedCornerShape(4.dp), - color = ImdbYellow, - ) { - Text( - text = stringResource(Res.string.source_imdb), - modifier = Modifier.padding(horizontal = 4.dp, vertical = 2.dp), - style = MaterialTheme.typography.labelMedium.copy( - fontSize = 10.sp, - fontWeight = FontWeight.Black, - letterSpacing = 0.sp, - ), - color = ImdbBlack, - ) - } + ImdbRatingSourceLabel( + storeTextStyle = imdbTextStyle, + storeTextColor = MaterialTheme.colorScheme.onSurfaceVariant, + ) Spacer(modifier = Modifier.width(5.dp)) Text( text = validImdbRating, - style = MaterialTheme.typography.titleMedium, + style = imdbTextStyle, color = ImdbYellow, - fontWeight = FontWeight.Bold, ) } } @@ -223,26 +217,67 @@ private fun DetailRatingsRow( horizontalArrangement = Arrangement.spacedBy(14.dp), ) { orderedRatings.forEach { (visuals, rating) -> + val ratingTextStyle = MaterialTheme.typography.titleSmall.copy( + fontWeight = FontWeight.Bold, + letterSpacing = 0.sp, + ) Row( verticalAlignment = Alignment.CenterVertically, ) { - Image( - painter = painterResource(visuals.logo), - contentDescription = visuals.displayName, - modifier = Modifier.size(width = visuals.logoWidth, height = 16.dp), - ) + if (visuals.source == PROVIDER_IMDB && !AppFeaturePolicy.imdbRatingLogoEnabled) { + ImdbRatingSourceLabel( + storeTextStyle = ratingTextStyle, + storeTextColor = visuals.valueColor, + ) + } else { + Image( + painter = painterResource(visuals.logo), + contentDescription = visuals.displayName, + modifier = Modifier.size(width = visuals.logoWidth, height = 16.dp), + ) + } Spacer(modifier = Modifier.width(4.dp)) Text( text = visuals.format(rating.value), - style = MaterialTheme.typography.titleSmall, + style = ratingTextStyle, color = visuals.valueColor, - fontWeight = FontWeight.Bold, ) } } } } +@Composable +private fun ImdbRatingSourceLabel( + storeTextStyle: TextStyle, + storeTextColor: Color, +) { + if (AppFeaturePolicy.imdbRatingLogoEnabled) { + Surface( + shape = RoundedCornerShape(4.dp), + color = ImdbYellow, + ) { + Text( + text = stringResource(Res.string.source_imdb), + modifier = Modifier.padding(horizontal = 4.dp, vertical = 2.dp), + style = MaterialTheme.typography.labelMedium.copy( + fontSize = 10.sp, + fontWeight = FontWeight.Black, + letterSpacing = 0.sp, + ), + color = ImdbBlack, + ) + } + } else { + Text( + text = stringResource(Res.string.source_imdb), + style = storeTextStyle, + color = storeTextColor, + maxLines = 1, + ) + } +} + @Composable private fun MetaLabelValueRow( label: String, diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailSeriesContent.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailSeriesContent.kt index 1c598f66a..3601b1d01 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailSeriesContent.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/details/components/DetailSeriesContent.kt @@ -60,6 +60,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil3.compose.AsyncImage import co.touchlab.kermit.Logger +import com.nuvio.app.core.build.AppFeaturePolicy import com.nuvio.app.core.format.formatReleaseDateForDisplay import com.nuvio.app.core.i18n.localizedSeasonEpisodeCode import com.nuvio.app.core.ui.NuvioAnimatedWatchedBadge @@ -979,14 +980,27 @@ private fun ImdbEpisodeRatingBadge( horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.CenterVertically, ) { - Image( - painter = painterResource(Res.drawable.rating_imdb), - contentDescription = stringResource(Res.string.source_imdb), - modifier = Modifier - .width(logoWidth) - .height(logoHeight), - contentScale = ContentScale.Fit, - ) + if (AppFeaturePolicy.imdbRatingLogoEnabled) { + Image( + painter = painterResource(Res.drawable.rating_imdb), + contentDescription = stringResource(Res.string.source_imdb), + modifier = Modifier + .width(logoWidth) + .height(logoHeight), + contentScale = ContentScale.Fit, + ) + } else { + Text( + text = stringResource(Res.string.source_imdb), + style = MaterialTheme.typography.labelSmall.copy( + fontSize = textSize, + fontWeight = FontWeight.SemiBold, + letterSpacing = 0.sp, + ), + color = Color.White.copy(alpha = 0.78f), + maxLines = 1, + ) + } Text( text = rating, style = MaterialTheme.typography.labelSmall.copy( diff --git a/composeApp/src/desktopMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.desktop.kt b/composeApp/src/desktopMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.desktop.kt index e096b65fa..ce51ea36e 100644 --- a/composeApp/src/desktopMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.desktop.kt +++ b/composeApp/src/desktopMain/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.desktop.kt @@ -5,4 +5,5 @@ actual object AppFeaturePolicy { actual val p2pEnabled: Boolean = false actual val trailerPlaybackMode: TrailerPlaybackMode = TrailerPlaybackMode.EXTERNAL actual val inAppUpdaterEnabled: Boolean = false -} \ No newline at end of file + actual val imdbRatingLogoEnabled: Boolean = true +} diff --git a/composeApp/src/iosAppStore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt b/composeApp/src/iosAppStore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt index e096b65fa..99fa511da 100644 --- a/composeApp/src/iosAppStore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt +++ b/composeApp/src/iosAppStore/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt @@ -5,4 +5,5 @@ actual object AppFeaturePolicy { actual val p2pEnabled: Boolean = false actual val trailerPlaybackMode: TrailerPlaybackMode = TrailerPlaybackMode.EXTERNAL actual val inAppUpdaterEnabled: Boolean = false -} \ No newline at end of file + actual val imdbRatingLogoEnabled: Boolean = false +} diff --git a/composeApp/src/iosFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt b/composeApp/src/iosFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt index a86886594..a73b50c07 100644 --- a/composeApp/src/iosFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt +++ b/composeApp/src/iosFull/kotlin/com/nuvio/app/core/build/AppFeaturePolicy.ios.kt @@ -5,4 +5,5 @@ actual object AppFeaturePolicy { actual val p2pEnabled: Boolean = false actual val trailerPlaybackMode: TrailerPlaybackMode = TrailerPlaybackMode.IN_APP actual val inAppUpdaterEnabled: Boolean = false + actual val imdbRatingLogoEnabled: Boolean = true }