diff --git a/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt b/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt index cbc30d49..e96ab9cf 100644 --- a/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt +++ b/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepository.kt @@ -10,6 +10,7 @@ import org.jellyfin.sdk.model.api.BaseItemKind import org.jellyfin.sdk.model.api.ItemFields import org.jellyfin.sdk.model.api.MediaSourceInfo import org.jellyfin.sdk.model.api.SortOrder +import org.jellyfin.sdk.model.api.UserConfiguration interface JellyfinRepository { suspend fun getUserViews(): List @@ -54,7 +55,8 @@ interface JellyfinRepository { seriesId: UUID, seasonId: UUID, fields: List? = null, - startItemId: UUID? = null + startItemId: UUID? = null, + limit: Int? = null, ): List suspend fun getMediaSources(itemId: UUID): List @@ -84,4 +86,6 @@ interface JellyfinRepository { fun getBaseUrl(): String suspend fun updateDeviceName(name: String) + + suspend fun getUserConfiguration(): UserConfiguration } diff --git a/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt b/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt index dc43db60..4e1b504e 100644 --- a/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt +++ b/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryImpl.kt @@ -26,6 +26,7 @@ import org.jellyfin.sdk.model.api.PlaybackInfoDto import org.jellyfin.sdk.model.api.SortOrder import org.jellyfin.sdk.model.api.SubtitleDeliveryMethod import org.jellyfin.sdk.model.api.SubtitleProfile +import org.jellyfin.sdk.model.api.UserConfiguration import timber.log.Timber class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRepository { @@ -152,14 +153,16 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep seriesId: UUID, seasonId: UUID, fields: List?, - startItemId: UUID? + startItemId: UUID?, + limit: Int?, ): List = withContext(Dispatchers.IO) { jellyfinApi.showsApi.getEpisodes( seriesId, jellyfinApi.userId!!, seasonId = seasonId, fields = fields, - startItemId = startItemId + startItemId = startItemId, + limit = limit, ).content.items.orEmpty() } @@ -327,4 +330,8 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep } } } + + override suspend fun getUserConfiguration(): UserConfiguration = withContext(Dispatchers.IO) { + jellyfinApi.userApi.getCurrentUser().content.configuration!! + } } diff --git a/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt b/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt index aaa48a00..d0cfab01 100644 --- a/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt +++ b/player/video/src/main/java/dev/jdtech/jellyfin/viewmodels/PlayerViewModel.kt @@ -155,12 +155,15 @@ class PlayerViewModel @Inject internal constructor( playbackPosition: Long, mediaSourceIndex: Int ): List { + // TODO Move user configuration to a separate class + val userConfig = repository.getUserConfiguration() return repository .getEpisodes( seriesId = item.seriesId!!, seasonId = item.seasonId!!, fields = listOf(ItemFields.MEDIA_SOURCES), - startItemId = item.id + startItemId = item.id, + limit = if (userConfig.enableNextEpisodeAutoPlay) null else 1 ) .filter { it.mediaSources != null && it.mediaSources?.isNotEmpty() == true } .filter { it.locationType != VIRTUAL }