refactor: update image handling in Movie dto to use imageUrlPrefix and JellyfinImageHelper

This commit is contained in:
2026-04-01 22:30:32 +02:00
parent d6d05be93f
commit ce5266f17c
16 changed files with 46 additions and 297 deletions

View File

@@ -433,10 +433,9 @@ class InMemoryAppContentRepository @Inject constructor(
runtime = formatRuntime(this.runTimeTicks),
synopsis = this.overview ?: "No synopsis available",
format = container?.uppercase() ?: "VIDEO",
heroImageUrl = JellyfinImageHelper.toImageUrl(
imageUrlPrefix = JellyfinImageHelper.toPrefixImageUrl(
url = serverUrl,
itemId = this.id,
type = ImageType.PRIMARY
),
subtitles = "ENG",
audioTrack = "ENG",

View File

@@ -31,7 +31,10 @@ class JellyfinImageHelper {
.toString()
}
fun finishImageUrl(prefixImageUrl: String, imageType: ImageType): String {
fun finishImageUrl(prefixImageUrl: String?, imageType: ImageType): String {
if (prefixImageUrl.isNullOrEmpty()) {
return ""
}
return StringBuilder()
.append(prefixImageUrl)
.append(imageType.serialName)

View File

@@ -1,7 +1,6 @@
package hu.bbara.purefin.core.data.room.entity
import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.Index
import androidx.room.PrimaryKey
import java.util.UUID
@@ -21,7 +20,7 @@ data class MovieEntity(
val runtime: String,
val format: String,
val synopsis: String,
val heroImageUrl: String,
val imageUrlPrefix: String,
val audioTrack: String,
val subtitles: String
)

View File

@@ -23,7 +23,7 @@ import hu.bbara.purefin.core.data.room.entity.SmartDownloadEntity
EpisodeEntity::class,
SmartDownloadEntity::class,
],
version = 6,
version = 7,
exportSchema = false
)
@TypeConverters(UuidConverters::class)

View File

@@ -208,7 +208,7 @@ class OfflineRoomMediaLocalDataSource(
runtime = runtime,
format = format,
synopsis = synopsis,
heroImageUrl = heroImageUrl,
imageUrlPrefix = imageUrlPrefix,
audioTrack = audioTrack,
subtitles = subtitles
)
@@ -260,7 +260,7 @@ class OfflineRoomMediaLocalDataSource(
runtime = runtime,
format = format,
synopsis = synopsis,
heroImageUrl = heroImageUrl,
imageUrlPrefix = imageUrlPrefix,
audioTrack = audioTrack,
subtitles = subtitles,
cast = emptyList()

View File

@@ -13,7 +13,7 @@ data class Movie(
val runtime: String,
val format: String,
val synopsis: String,
val heroImageUrl: String,
val imageUrlPrefix: String,
val audioTrack: String,
val subtitles: String,
val cast: List<CastMember>

View File

@@ -124,6 +124,7 @@ class PlayerMediaRepository @Inject constructor(
}
}
@OptIn(UnstableApi::class)
private suspend fun buildOfflineMediaItem(mediaId: UUID): Pair<MediaItem, Long?>? {
val download = downloadManager.downloadIndex.getDownload(mediaId.toString())
?.takeIf { it.state == Download.STATE_COMPLETED }
@@ -138,7 +139,7 @@ class PlayerMediaRepository @Inject constructor(
}
val subtitle = episode?.let { episodeSubtitle(null, it.index) }
val artworkUrl = when {
movie != null -> movie.heroImageUrl
movie != null -> JellyfinImageHelper.finishImageUrl(movie.imageUrlPrefix, ImageType.PRIMARY)
episode != null -> episode.heroImageUrl
else -> JellyfinImageHelper.toImageUrl(serverUrl, mediaId, ImageType.PRIMARY)
}