mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-24 03:36:51 +00:00
refactor: simplify image loading in PosterCard and TvHomeSections by removing unnecessary ImageRequest
This commit is contained in:
@@ -27,13 +27,10 @@ import androidx.compose.ui.focus.onFocusChanged
|
|||||||
import androidx.compose.ui.graphics.TransformOrigin
|
import androidx.compose.ui.graphics.TransformOrigin
|
||||||
import androidx.compose.ui.graphics.graphicsLayer
|
import androidx.compose.ui.graphics.graphicsLayer
|
||||||
import androidx.compose.ui.layout.ContentScale
|
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.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
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.PurefinAsyncImage
|
||||||
import hu.bbara.purefin.common.ui.components.UnwatchedEpisodeIndicator
|
import hu.bbara.purefin.common.ui.components.UnwatchedEpisodeIndicator
|
||||||
import hu.bbara.purefin.common.ui.components.WatchStateIndicator
|
import hu.bbara.purefin.common.ui.components.WatchStateIndicator
|
||||||
@@ -53,13 +50,10 @@ fun PosterCard(
|
|||||||
onEpisodeSelected: (UUID, UUID, UUID) -> Unit,
|
onEpisodeSelected: (UUID, UUID, UUID) -> Unit,
|
||||||
) {
|
) {
|
||||||
val scheme = MaterialTheme.colorScheme
|
val scheme = MaterialTheme.colorScheme
|
||||||
val context = LocalContext.current
|
|
||||||
val density = LocalDensity.current
|
|
||||||
var isFocused by remember { mutableStateOf(false) }
|
var isFocused by remember { mutableStateOf(false) }
|
||||||
val scale by animateFloatAsState(targetValue = if (isFocused) 1.07f else 1.0f, label = "scale")
|
val scale by animateFloatAsState(targetValue = if (isFocused) 1.07f else 1.0f, label = "scale")
|
||||||
|
|
||||||
val posterWidth = 144.dp
|
val posterWidth = 144.dp
|
||||||
val posterHeight = posterWidth * 3 / 2
|
|
||||||
|
|
||||||
fun openItem(posterItem: PosterItem) {
|
fun openItem(posterItem: PosterItem) {
|
||||||
when (posterItem.type) {
|
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
|
val imageFocusModifier = Modifier
|
||||||
.then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier)
|
.then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier)
|
||||||
.then(
|
.then(
|
||||||
@@ -102,7 +91,7 @@ fun PosterCard(
|
|||||||
) {
|
) {
|
||||||
Box() {
|
Box() {
|
||||||
PurefinAsyncImage(
|
PurefinAsyncImage(
|
||||||
model = imageRequest,
|
model = item.imageUrl,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = imageFocusModifier
|
modifier = imageFocusModifier
|
||||||
.aspectRatio(2f / 3f)
|
.aspectRatio(2f / 3f)
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ import androidx.compose.ui.draw.clip
|
|||||||
import androidx.compose.ui.focus.FocusRequester
|
import androidx.compose.ui.focus.FocusRequester
|
||||||
import androidx.compose.ui.focus.focusProperties
|
import androidx.compose.ui.focus.focusProperties
|
||||||
import androidx.compose.ui.focus.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.focus.onFocusChanged
|
|
||||||
import androidx.compose.ui.focus.focusRestorer
|
import androidx.compose.ui.focus.focusRestorer
|
||||||
|
import androidx.compose.ui.focus.onFocusChanged
|
||||||
import androidx.compose.ui.graphics.TransformOrigin
|
import androidx.compose.ui.graphics.TransformOrigin
|
||||||
import androidx.compose.ui.graphics.graphicsLayer
|
import androidx.compose.ui.graphics.graphicsLayer
|
||||||
import androidx.compose.ui.layout.ContentScale
|
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.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import coil3.request.ImageRequest
|
|
||||||
import hu.bbara.purefin.common.ui.PosterCard
|
import hu.bbara.purefin.common.ui.PosterCard
|
||||||
import hu.bbara.purefin.common.ui.components.MediaProgressBar
|
import hu.bbara.purefin.common.ui.components.MediaProgressBar
|
||||||
import hu.bbara.purefin.common.ui.components.PurefinAsyncImage
|
import hu.bbara.purefin.common.ui.components.PurefinAsyncImage
|
||||||
@@ -118,7 +117,6 @@ fun TvContinueWatchingCard(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val cardWidth = 280.dp
|
val cardWidth = 280.dp
|
||||||
val cardHeight = cardWidth * 9 / 16
|
|
||||||
|
|
||||||
fun openItem(item: ContinueWatchingItem) {
|
fun openItem(item: ContinueWatchingItem) {
|
||||||
when (item.type) {
|
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
|
val imageFocusModifier = Modifier
|
||||||
.then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier)
|
.then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier)
|
||||||
.then(
|
.then(
|
||||||
@@ -186,7 +179,7 @@ fun TvContinueWatchingCard(
|
|||||||
.background(scheme.surfaceVariant)
|
.background(scheme.surfaceVariant)
|
||||||
) {
|
) {
|
||||||
PurefinAsyncImage(
|
PurefinAsyncImage(
|
||||||
model = imageRequest,
|
model = imageUrl,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = imageFocusModifier
|
modifier = imageFocusModifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
@@ -277,26 +270,18 @@ fun TvNextUpCard(
|
|||||||
) {
|
) {
|
||||||
val scheme = MaterialTheme.colorScheme
|
val scheme = MaterialTheme.colorScheme
|
||||||
|
|
||||||
val context = LocalContext.current
|
|
||||||
val density = LocalDensity.current
|
|
||||||
var isFocused by remember { mutableStateOf(false) }
|
var isFocused by remember { mutableStateOf(false) }
|
||||||
val scale by animateFloatAsState(targetValue = if (isFocused) 1.07f else 1.0f, label = "scale")
|
val scale by animateFloatAsState(targetValue = if (isFocused) 1.07f else 1.0f, label = "scale")
|
||||||
|
|
||||||
val imageUrl = item.episode.heroImageUrl
|
val imageUrl = item.episode.heroImageUrl
|
||||||
|
|
||||||
val cardWidth = 280.dp
|
val cardWidth = 280.dp
|
||||||
val cardHeight = cardWidth * 9 / 16
|
|
||||||
|
|
||||||
fun openItem(item: NextUpItem) {
|
fun openItem(item: NextUpItem) {
|
||||||
val episode = item.episode
|
val episode = item.episode
|
||||||
onEpisodeSelected(episode.seriesId, episode.seasonId, episode.id)
|
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
|
val imageFocusModifier = Modifier
|
||||||
.then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier)
|
.then(if (focusRequester != null) Modifier.focusRequester(focusRequester) else Modifier)
|
||||||
.then(
|
.then(
|
||||||
@@ -346,7 +331,7 @@ fun TvNextUpCard(
|
|||||||
.background(scheme.surfaceVariant)
|
.background(scheme.surfaceVariant)
|
||||||
) {
|
) {
|
||||||
PurefinAsyncImage(
|
PurefinAsyncImage(
|
||||||
model = imageRequest,
|
model = imageUrl,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = imageFocusModifier
|
modifier = imageFocusModifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
|
|||||||
Reference in New Issue
Block a user