From 866830b8f406fab6c792603f37c1da4ca0bc3eac Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Wed, 1 Apr 2026 17:05:34 +0200 Subject: [PATCH] refactor: simplify image loading in PosterCard and TvHomeSections by removing unnecessary ImageRequest --- .../hu/bbara/purefin/common/ui/PosterCard.kt | 13 +----------- .../purefin/tv/home/ui/TvHomeSections.kt | 21 +++---------------- 2 files changed, 4 insertions(+), 30 deletions(-) diff --git a/app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt index b95e569e..c5b722c4 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/common/ui/PosterCard.kt @@ -27,13 +27,10 @@ import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.graphics.TransformOrigin import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalDensity 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 coil3.request.ImageRequest import hu.bbara.purefin.common.ui.components.PurefinAsyncImage import hu.bbara.purefin.common.ui.components.UnwatchedEpisodeIndicator import hu.bbara.purefin.common.ui.components.WatchStateIndicator @@ -53,13 +50,10 @@ fun PosterCard( onEpisodeSelected: (UUID, UUID, UUID) -> Unit, ) { val scheme = MaterialTheme.colorScheme - val context = LocalContext.current - val density = LocalDensity.current var isFocused by remember { mutableStateOf(false) } val scale by animateFloatAsState(targetValue = if (isFocused) 1.07f else 1.0f, label = "scale") val posterWidth = 144.dp - val posterHeight = posterWidth * 3 / 2 fun openItem(posterItem: PosterItem) { when (posterItem.type) { @@ -73,11 +67,6 @@ fun PosterCard( } } - val imageRequest = ImageRequest.Builder(context) - .data(item.imageUrl) - .size(with(density) { posterWidth.roundToPx() }, with(density) { posterHeight.roundToPx() }) - .build() - val imageFocusModifier = Modifier .then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier) .then( @@ -102,7 +91,7 @@ fun PosterCard( ) { Box() { PurefinAsyncImage( - model = imageRequest, + model = item.imageUrl, contentDescription = null, modifier = imageFocusModifier .aspectRatio(2f / 3f) diff --git a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt index ae56176a..70dbf85e 100644 --- a/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt +++ b/app-tv/src/main/java/hu/bbara/purefin/tv/home/ui/TvHomeSections.kt @@ -31,8 +31,8 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.focus.focusRestorer +import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.graphics.TransformOrigin import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.ContentScale @@ -42,7 +42,6 @@ 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 coil3.request.ImageRequest import hu.bbara.purefin.common.ui.PosterCard import hu.bbara.purefin.common.ui.components.MediaProgressBar import hu.bbara.purefin.common.ui.components.PurefinAsyncImage @@ -118,7 +117,6 @@ fun TvContinueWatchingCard( } val cardWidth = 280.dp - val cardHeight = cardWidth * 9 / 16 fun openItem(item: ContinueWatchingItem) { when (item.type) { @@ -132,11 +130,6 @@ fun TvContinueWatchingCard( } } - val imageRequest = ImageRequest.Builder(context) - .data(imageUrl) - .size(with(density) { cardWidth.roundToPx() }, with(density) { cardHeight.roundToPx() }) - .build() - val imageFocusModifier = Modifier .then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier) .then( @@ -186,7 +179,7 @@ fun TvContinueWatchingCard( .background(scheme.surfaceVariant) ) { PurefinAsyncImage( - model = imageRequest, + model = imageUrl, contentDescription = null, modifier = imageFocusModifier .fillMaxSize() @@ -277,26 +270,18 @@ fun TvNextUpCard( ) { val scheme = MaterialTheme.colorScheme - val context = LocalContext.current - val density = LocalDensity.current var isFocused by remember { mutableStateOf(false) } val scale by animateFloatAsState(targetValue = if (isFocused) 1.07f else 1.0f, label = "scale") val imageUrl = item.episode.heroImageUrl val cardWidth = 280.dp - val cardHeight = cardWidth * 9 / 16 fun openItem(item: NextUpItem) { val episode = item.episode onEpisodeSelected(episode.seriesId, episode.seasonId, episode.id) } - val imageRequest = ImageRequest.Builder(context) - .data(imageUrl) - .size(with(density) { cardWidth.roundToPx() }, with(density) { cardHeight.roundToPx() }) - .build() - val imageFocusModifier = Modifier .then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier) .then( @@ -346,7 +331,7 @@ fun TvNextUpCard( .background(scheme.surfaceVariant) ) { PurefinAsyncImage( - model = imageRequest, + model = imageUrl, contentDescription = null, modifier = imageFocusModifier .fillMaxSize()