Follow "Play next episode automatically" from user playback settings (#245)
* Add getUserConfiguration and use it in episodeToPlayerItems * Add a TODO to move user config to separate class
This commit is contained in:
parent
6e5e3f0788
commit
352a418d20
3 changed files with 18 additions and 4 deletions
|
@ -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<BaseItemDto>
|
||||
|
@ -54,7 +55,8 @@ interface JellyfinRepository {
|
|||
seriesId: UUID,
|
||||
seasonId: UUID,
|
||||
fields: List<ItemFields>? = null,
|
||||
startItemId: UUID? = null
|
||||
startItemId: UUID? = null,
|
||||
limit: Int? = null,
|
||||
): List<BaseItemDto>
|
||||
|
||||
suspend fun getMediaSources(itemId: UUID): List<MediaSourceInfo>
|
||||
|
@ -84,4 +86,6 @@ interface JellyfinRepository {
|
|||
fun getBaseUrl(): String
|
||||
|
||||
suspend fun updateDeviceName(name: String)
|
||||
|
||||
suspend fun getUserConfiguration(): UserConfiguration
|
||||
}
|
||||
|
|
|
@ -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<ItemFields>?,
|
||||
startItemId: UUID?
|
||||
startItemId: UUID?,
|
||||
limit: Int?,
|
||||
): List<BaseItemDto> = 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!!
|
||||
}
|
||||
}
|
||||
|
|
|
@ -155,12 +155,15 @@ class PlayerViewModel @Inject internal constructor(
|
|||
playbackPosition: Long,
|
||||
mediaSourceIndex: Int
|
||||
): List<PlayerItem> {
|
||||
// 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 }
|
||||
|
|
Loading…
Reference in a new issue