From a65b93e0645640b4268fb7e643208b30b5f7d651 Mon Sep 17 00:00:00 2001 From: Ray <154766448+damontecres@users.noreply.github.com> Date: Sat, 20 Dec 2025 14:39:59 -0500 Subject: [PATCH] Enforce a minimum aspect ratio (#519) ## Description When using a server provided aspect, force a minimum value (.666) in case the server returns unusable data like zero. Note: I have not been able to reproduce the errors in #451 to verify that this PR will fix it. And it's not clear to me why #453 did not fix it either. However, this PR shouldn't impact anything if the server is sending valid aspect ratios and should at least prevent the crash on the UI side. ### Related issues Follow up to #453 Hopefully fixes #451 --- .../java/com/github/damontecres/wholphin/ui/UiConstants.kt | 2 ++ .../github/damontecres/wholphin/ui/cards/EpisodeCard.kt | 2 +- .../com/github/damontecres/wholphin/ui/cards/GridCard.kt | 2 +- .../com/github/damontecres/wholphin/ui/cards/SeasonCard.kt | 7 ++++--- .../damontecres/wholphin/ui/playback/NextUpEpisode.kt | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/UiConstants.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/UiConstants.kt index 9557de96..beafccb2 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/UiConstants.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/UiConstants.kt @@ -76,6 +76,8 @@ object AspectRatios { const val FOUR_THREE = 4f / 3f const val TALL = 2f / 3f const val SQUARE = 1f + + const val MIN = TALL } enum class AspectRatio( diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/EpisodeCard.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/EpisodeCard.kt index d6c88633..8cc3ad12 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/EpisodeCard.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/EpisodeCard.kt @@ -64,7 +64,7 @@ fun EpisodeCard( } else { focusedAfterDelay = false } - val aspectRatio = item?.aspectRatio ?: AspectRatios.TALL + val aspectRatio = item?.aspectRatio?.coerceAtLeast(AspectRatios.MIN) ?: AspectRatios.MIN val width = imageHeight * aspectRatio val height = imageWidth * (1f / aspectRatio) Column( diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/GridCard.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/GridCard.kt index 218a64d2..1bc35a08 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/GridCard.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/GridCard.kt @@ -96,7 +96,7 @@ fun GridCard( modifier = Modifier .fillMaxWidth() - .aspectRatio(imageAspectRatio) + .aspectRatio(imageAspectRatio.coerceAtLeast(AspectRatios.MIN)) .background(MaterialTheme.colorScheme.surfaceVariant), ) } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/SeasonCard.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/SeasonCard.kt index 54041fff..243bb6d6 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/cards/SeasonCard.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/cards/SeasonCard.kt @@ -139,8 +139,9 @@ fun SeasonCard( } else { focusedAfterDelay = false } - val width = imageHeight * aspectRatio - val height = imageWidth * (1f / aspectRatio) + val aspectRationToUse = aspectRatio.coerceAtLeast(AspectRatios.MIN) + val width = imageHeight * aspectRationToUse + val height = imageWidth * (1f / aspectRationToUse) Column( verticalArrangement = Arrangement.spacedBy(spaceBetween), modifier = modifier.size(width, height), @@ -149,7 +150,7 @@ fun SeasonCard( modifier = Modifier .size(imageWidth, imageHeight) - .aspectRatio(aspectRatio), + .aspectRatio(aspectRationToUse), onClick = onClick, onLongClick = onLongClick, interactionSource = interactionSource, diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt index 44048a40..f032c8b7 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/playback/NextUpEpisode.kt @@ -98,7 +98,7 @@ fun NextUpEpisode( modifier = Modifier .fillMaxHeight() - .aspectRatio(aspectRatio) + .aspectRatio(aspectRatio.coerceAtLeast(AspectRatios.MIN)) // .fillMaxSize() // .weight(1f) .focusRequester(focusRequester),