Updates & fixes to discover pages (#1836)

## Description
Fixes several issues on the discover pages:
- Fixes sorting by release date for tv shows
- Fixes automatic go-to for movie & tv show grid
- Fixes tv show discover page's go-to using a movie detail page
- Updates the alignment & padding for the headers on different discover
pages to match the reset of the app
- Use media's logo image if available and the setting is enabled

### Related issues
N/A

### Testing
Emulator mostly

## Screenshots
N/A, headers and logos are unchanged, just moved slightly to match
regular content

## AI or LLM usage
None
This commit is contained in:
Damontecres 2026-08-16 10:29:03 -04:00 • committed by GitHub
parent 4e53cbaa7f
commit f89d752d2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 182 additions and 75 deletions

View file

@ -28,6 +28,7 @@ import kotlinx.coroutines.flow.firstOrNull
import org.jellyfin.sdk.model.api.BaseItemKind
import org.jellyfin.sdk.model.api.ImageType
import org.jellyfin.sdk.model.serializer.toUUIDOrNull
import java.util.UUID
import javax.inject.Inject
import javax.inject.Singleton
@ -169,14 +170,7 @@ class SeerrService
backdropWidth: Int = 1920,
): String? {
if (mediaInfo != null) {
val itemId =
if (mediaInfo.jellyfinMediaId.isNotNullOrBlank()) {
mediaInfo.jellyfinMediaId.toUUIDOrNull()
} else if (mediaInfo.jellyfinMediaId4k.isNotNullOrBlank()) {
mediaInfo.jellyfinMediaId4k.toUUIDOrNull()
} else {
null
}
val itemId = mediaInfo.jellyfinId
if (itemId != null) {
return imageUrlService.getItemImageUrl(
itemId = itemId,
@ -348,7 +342,8 @@ class SeerrService
releaseDate = toLocalDate(movie.releaseDate),
posterUrl = createImageUrl(ImageType.PRIMARY, movie.posterPath, movie.mediaInfo),
backDropUrl = createImageUrl(ImageType.BACKDROP, movie.backdropPath, movie.mediaInfo),
jellyfinItemId = movie.mediaInfo?.jellyfinMediaId?.toUUIDOrNull(),
logoUrl = createImageUrl(ImageType.LOGO, null, movie.mediaInfo),
jellyfinItemId = movie.mediaInfo?.jellyfinId,
)
suspend fun createDiscoverItem(movie: MovieDetails): DiscoverItem =
@ -364,7 +359,8 @@ class SeerrService
releaseDate = toLocalDate(movie.releaseDate),
posterUrl = createImageUrl(ImageType.PRIMARY, movie.posterPath, movie.mediaInfo),
backDropUrl = createImageUrl(ImageType.BACKDROP, movie.backdropPath, movie.mediaInfo),
jellyfinItemId = movie.mediaInfo?.jellyfinMediaId?.toUUIDOrNull(),
logoUrl = createImageUrl(ImageType.LOGO, null, movie.mediaInfo),
jellyfinItemId = movie.mediaInfo?.jellyfinId,
)
suspend fun createDiscoverItem(tv: TvResult): DiscoverItem =
@ -380,7 +376,8 @@ class SeerrService
releaseDate = toLocalDate(tv.firstAirDate),
posterUrl = createImageUrl(ImageType.PRIMARY, tv.posterPath, tv.mediaInfo),
backDropUrl = createImageUrl(ImageType.BACKDROP, tv.backdropPath, tv.mediaInfo),
jellyfinItemId = tv.mediaInfo?.jellyfinMediaId?.toUUIDOrNull(),
logoUrl = createImageUrl(ImageType.LOGO, null, tv.mediaInfo),
jellyfinItemId = tv.mediaInfo?.jellyfinId,
)
suspend fun createDiscoverItem(tv: TvDetails): DiscoverItem =
@ -396,7 +393,8 @@ class SeerrService
releaseDate = toLocalDate(tv.firstAirDate),
posterUrl = createImageUrl(ImageType.PRIMARY, tv.posterPath, tv.mediaInfo),
backDropUrl = createImageUrl(ImageType.BACKDROP, tv.backdropPath, tv.mediaInfo),
jellyfinItemId = tv.mediaInfo?.jellyfinMediaId?.toUUIDOrNull(),
logoUrl = createImageUrl(ImageType.LOGO, null, tv.mediaInfo),
jellyfinItemId = tv.mediaInfo?.jellyfinId,
)
suspend fun createDiscoverItem(search: SeerrSearchResult): DiscoverItem =
@ -412,7 +410,8 @@ class SeerrService
releaseDate = toLocalDate(search.releaseDate ?: search.firstAirDate),
posterUrl = createImageUrl(ImageType.PRIMARY, search.posterPath, search.mediaInfo),
backDropUrl = createImageUrl(ImageType.BACKDROP, search.backdropPath, search.mediaInfo),
jellyfinItemId = search.mediaInfo?.jellyfinMediaId?.toUUIDOrNull(),
logoUrl = createImageUrl(ImageType.LOGO, null, search.mediaInfo),
jellyfinItemId = search.mediaInfo?.jellyfinId,
)
suspend fun createDiscoverItem(credit: CreditCast): DiscoverItem =
@ -438,7 +437,8 @@ class SeerrService
credit.backdropPath,
credit.mediaInfo,
),
jellyfinItemId = credit.mediaInfo?.jellyfinMediaId?.toUUIDOrNull(),
logoUrl = createImageUrl(ImageType.LOGO, null, credit.mediaInfo),
jellyfinItemId = credit.mediaInfo?.jellyfinId,
)
suspend fun createDiscoverItem(credit: CreditCrew): DiscoverItem =
@ -464,6 +464,13 @@ class SeerrService
credit.backdropPath,
credit.mediaInfo,
),
jellyfinItemId = credit.mediaInfo?.jellyfinMediaId?.toUUIDOrNull(),
logoUrl = createImageUrl(ImageType.LOGO, null, credit.mediaInfo),
jellyfinItemId = credit.mediaInfo?.jellyfinId,
)
}
val MediaInfo.jellyfinId: UUID?
get() = jellyfinMediaId4k?.toUUIDOrNull() ?: jellyfinMediaId?.toUUIDOrNull()
val MediaInfo.jellyfinIdAsString: String?
get() = jellyfinMediaId4k ?: jellyfinMediaId