From 0eea3165de6971e1e738589b9402cb66ec474a8c Mon Sep 17 00:00:00 2001 From: Barnabas Balogh Date: Mon, 1 Jun 2026 20:06:05 +0200 Subject: [PATCH] PlaybackProfilePolicy should not require server version --- .../JellyfinAndroidTvDeviceProfile.kt | 3 +-- .../playback/JellyfinPlaybackResolver.kt | 19 +------------------ .../playback/PlaybackProfilePolicy.kt | 14 ++++---------- 3 files changed, 6 insertions(+), 30 deletions(-) diff --git a/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinAndroidTvDeviceProfile.kt b/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinAndroidTvDeviceProfile.kt index c71f2b45..0e65f213 100644 --- a/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinAndroidTvDeviceProfile.kt +++ b/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinAndroidTvDeviceProfile.kt @@ -74,7 +74,6 @@ internal object JellyfinAndroidTvDeviceProfile { fun create( capabilities: DeviceProfileCapabilities, - serverVersion: ServerVersion, config: JellyfinAndroidTvProfileConfig = fixedConfig, ): DeviceProfile = buildDeviceProfile { val allowedAudioCodecs = when { @@ -108,7 +107,7 @@ internal object JellyfinAndroidTvDeviceProfile { val supportsHevcDolbyVisionEl = capabilities.supportsHevcDolbyVisionEl() val supportsHevcHdr10 = capabilities.supportsHevcHdr10() val supportsHevcHdr10Plus = capabilities.supportsHevcHdr10Plus() - val supportsExtendedRangeTypes = serverVersion >= extendedRangeTypesServerVersion + val supportsExtendedRangeTypes = true name = "AndroidTV-Default" maxStaticBitrate = config.maxBitrate diff --git a/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinPlaybackResolver.kt b/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinPlaybackResolver.kt index 46e1d5c6..a32cc66e 100644 --- a/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinPlaybackResolver.kt +++ b/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/JellyfinPlaybackResolver.kt @@ -5,10 +5,8 @@ import hu.bbara.purefin.data.jellyfin.client.JellyfinApiClient import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext -import org.jellyfin.sdk.model.ServerVersion import timber.log.Timber import java.util.UUID -import java.util.concurrent.ConcurrentHashMap import javax.inject.Inject import javax.inject.Singleton @@ -18,7 +16,6 @@ class JellyfinPlaybackResolver @Inject constructor( private val userSessionRepository: UserSessionRepository, private val playbackProfilePolicy: PlaybackProfilePolicy, ) { - private val serverVersionCache = ConcurrentHashMap() suspend fun getPlaybackDecision(mediaId: UUID): PlaybackDecision? = withContext(Dispatchers.IO) { val serverUrl = userSessionRepository.serverUrl.first().trim() @@ -26,10 +23,9 @@ class JellyfinPlaybackResolver @Inject constructor( return@withContext null } - val serverVersion = getServerVersion(serverUrl) val playbackInfo = jellyfinApiClient.getPlaybackInfo( mediaId = mediaId, - deviceProfile = playbackProfilePolicy.create(serverVersion), + deviceProfile = playbackProfilePolicy.create(), ) ?: return@withContext null if (playbackInfo.errorCode != null) { @@ -60,19 +56,6 @@ class JellyfinPlaybackResolver @Inject constructor( decision } - private suspend fun getServerVersion(serverUrl: String): ServerVersion { - serverVersionCache[serverUrl]?.let { return it } - - val resolvedVersion = runCatching { - jellyfinApiClient.getPublicSystemInfoVersion()?.let(ServerVersion::fromString) - }.onFailure { error -> - Timber.tag(TAG).w(error, "Unable to fetch server version for $serverUrl") - }.getOrNull() ?: PlaybackProfileDefaults.fallbackServerVersion - - serverVersionCache[serverUrl] = resolvedVersion - return resolvedVersion - } - private companion object { private const val TAG = "PlaybackResolver" } diff --git a/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/PlaybackProfilePolicy.kt b/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/PlaybackProfilePolicy.kt index 77409064..cb128ea3 100644 --- a/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/PlaybackProfilePolicy.kt +++ b/data/src/main/java/hu/bbara/purefin/data/jellyfin/playback/PlaybackProfilePolicy.kt @@ -1,29 +1,23 @@ package hu.bbara.purefin.data.jellyfin.playback -import org.jellyfin.sdk.model.ServerVersion import org.jellyfin.sdk.model.api.DeviceProfile interface PlaybackProfilePolicy { - fun create(serverVersion: ServerVersion): DeviceProfile -} - -internal object PlaybackProfileDefaults { - val fallbackServerVersion = ServerVersion(10, 10, 0) + fun create(): DeviceProfile } internal class MobilePlaybackProfilePolicy( private val capabilities: DeviceProfileCapabilities, ) : PlaybackProfilePolicy { - override fun create(serverVersion: ServerVersion): DeviceProfile = + override fun create(): DeviceProfile = JellyfinAndroidMobileDeviceProfile.create(capabilities = capabilities) } internal class TvPlaybackProfilePolicy( private val capabilities: DeviceProfileCapabilities, ) : PlaybackProfilePolicy { - override fun create(serverVersion: ServerVersion): DeviceProfile = + override fun create(): DeviceProfile = JellyfinAndroidTvDeviceProfile.create( - capabilities = capabilities, - serverVersion = serverVersion, + capabilities = capabilities ) }