mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
refactor: add backdropImageUrl to MediaUiModel for improved image handling
This commit is contained in:
@@ -45,7 +45,7 @@ internal fun TvFocusedItemHero(
|
|||||||
.background(scheme.background)
|
.background(scheme.background)
|
||||||
) {
|
) {
|
||||||
Crossfade(
|
Crossfade(
|
||||||
targetState = item.primaryImageUrl,
|
targetState = item.backdropImageUrl,
|
||||||
animationSpec = tween(durationMillis = TvHomeHeroAnimationMillis),
|
animationSpec = tween(durationMillis = TvHomeHeroAnimationMillis),
|
||||||
label = "tv-home-hero-background"
|
label = "tv-home-hero-background"
|
||||||
) { imageUrl ->
|
) { imageUrl ->
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ sealed interface MediaUiModel {
|
|||||||
val secondaryText: String
|
val secondaryText: String
|
||||||
val description: String
|
val description: String
|
||||||
val primaryImageUrl: String
|
val primaryImageUrl: String
|
||||||
|
val backdropImageUrl: String
|
||||||
val progress: Float?
|
val progress: Float?
|
||||||
get() = null
|
get() = null
|
||||||
val watched: Boolean
|
val watched: Boolean
|
||||||
@@ -24,7 +25,21 @@ class MovieUiModel: MediaUiModel {
|
|||||||
override val primaryText: String
|
override val primaryText: String
|
||||||
override val secondaryText: String
|
override val secondaryText: String
|
||||||
override val description: String
|
override val description: String
|
||||||
|
private val prefixImageUrl: String
|
||||||
override val primaryImageUrl: String
|
override val primaryImageUrl: String
|
||||||
|
get() {
|
||||||
|
return ImageUrlBuilder.finishImageUrl(
|
||||||
|
prefixImageUrl = prefixImageUrl,
|
||||||
|
artworkKind = ArtworkKind.PRIMARY
|
||||||
|
)
|
||||||
|
}
|
||||||
|
override val backdropImageUrl: String
|
||||||
|
get() {
|
||||||
|
return ImageUrlBuilder.finishImageUrl(
|
||||||
|
prefixImageUrl = prefixImageUrl,
|
||||||
|
artworkKind = ArtworkKind.BACKDROP
|
||||||
|
)
|
||||||
|
}
|
||||||
override val progress: Float?
|
override val progress: Float?
|
||||||
|
|
||||||
constructor(movie: Movie) {
|
constructor(movie: Movie) {
|
||||||
@@ -32,10 +47,7 @@ class MovieUiModel: MediaUiModel {
|
|||||||
primaryText = movie.title
|
primaryText = movie.title
|
||||||
secondaryText = movie.year
|
secondaryText = movie.year
|
||||||
description = movie.synopsis
|
description = movie.synopsis
|
||||||
primaryImageUrl = ImageUrlBuilder.finishImageUrl(
|
prefixImageUrl = movie.imageUrlPrefix
|
||||||
prefixImageUrl = movie.imageUrlPrefix,
|
|
||||||
artworkKind = ArtworkKind.PRIMARY
|
|
||||||
)
|
|
||||||
progress = (movie.progress?.toFloat() ?: 0f) / 100f
|
progress = (movie.progress?.toFloat() ?: 0f) / 100f
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,17 +80,28 @@ class SeriesUiModel : MediaUiModel {
|
|||||||
override val primaryText: String
|
override val primaryText: String
|
||||||
override val secondaryText: String
|
override val secondaryText: String
|
||||||
override val description: String
|
override val description: String
|
||||||
|
private val prefixImageUrl: String
|
||||||
override val primaryImageUrl: String
|
override val primaryImageUrl: String
|
||||||
|
get() {
|
||||||
|
return ImageUrlBuilder.finishImageUrl(
|
||||||
|
prefixImageUrl = prefixImageUrl,
|
||||||
|
artworkKind = ArtworkKind.PRIMARY
|
||||||
|
)
|
||||||
|
}
|
||||||
|
override val backdropImageUrl: String
|
||||||
|
get() {
|
||||||
|
return ImageUrlBuilder.finishImageUrl(
|
||||||
|
prefixImageUrl = prefixImageUrl,
|
||||||
|
artworkKind = ArtworkKind.BACKDROP
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
constructor(series: Series) {
|
constructor(series: Series) {
|
||||||
id = series.id
|
id = series.id
|
||||||
primaryText = series.name
|
primaryText = series.name
|
||||||
secondaryText = "${series.seasonCount} seasons"
|
secondaryText = "${series.seasonCount} seasons"
|
||||||
description = series.synopsis
|
description = series.synopsis
|
||||||
primaryImageUrl = ImageUrlBuilder.finishImageUrl(
|
prefixImageUrl = series.imageUrlPrefix
|
||||||
prefixImageUrl = series.imageUrlPrefix,
|
|
||||||
artworkKind = ArtworkKind.PRIMARY
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,7 +110,21 @@ class EpisodeUiModel : MediaUiModel {
|
|||||||
override val primaryText: String
|
override val primaryText: String
|
||||||
override val secondaryText: String
|
override val secondaryText: String
|
||||||
override val description: String
|
override val description: String
|
||||||
|
private val prefixImageUrl: String
|
||||||
override val primaryImageUrl: String
|
override val primaryImageUrl: String
|
||||||
|
get() {
|
||||||
|
return ImageUrlBuilder.finishImageUrl(
|
||||||
|
prefixImageUrl = prefixImageUrl,
|
||||||
|
artworkKind = ArtworkKind.PRIMARY
|
||||||
|
)
|
||||||
|
}
|
||||||
|
override val backdropImageUrl: String
|
||||||
|
get() {
|
||||||
|
return ImageUrlBuilder.finishImageUrl(
|
||||||
|
prefixImageUrl = prefixImageUrl,
|
||||||
|
artworkKind = ArtworkKind.PRIMARY
|
||||||
|
)
|
||||||
|
}
|
||||||
override val progress: Float?
|
override val progress: Float?
|
||||||
val seriesId: UUID
|
val seriesId: UUID
|
||||||
val seasonId: UUID
|
val seasonId: UUID
|
||||||
@@ -97,10 +134,7 @@ class EpisodeUiModel : MediaUiModel {
|
|||||||
primaryText = episode.title
|
primaryText = episode.title
|
||||||
secondaryText = episode.releaseDate
|
secondaryText = episode.releaseDate
|
||||||
description = episode.synopsis
|
description = episode.synopsis
|
||||||
primaryImageUrl = ImageUrlBuilder.finishImageUrl(
|
prefixImageUrl = episode.imageUrlPrefix
|
||||||
prefixImageUrl = episode.imageUrlPrefix,
|
|
||||||
artworkKind = ArtworkKind.PRIMARY
|
|
||||||
)
|
|
||||||
progress = (episode.progress?.toFloat() ?: 0f) / 100f
|
progress = (episode.progress?.toFloat() ?: 0f) / 100f
|
||||||
seriesId = episode.seriesId
|
seriesId = episode.seriesId
|
||||||
seasonId = episode.seasonId
|
seasonId = episode.seasonId
|
||||||
|
|||||||
Reference in New Issue
Block a user