Handle empty mediaSources
This commit is contained in:
parent
2ff9239e8c
commit
d53fbf3369
6 changed files with 18 additions and 9 deletions
|
@ -37,7 +37,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
|||
binding.playButton.setOnClickListener {
|
||||
binding.playButton.setImageResource(android.R.color.transparent)
|
||||
binding.progressCircular.visibility = View.VISIBLE
|
||||
viewModel.preparePlayer()
|
||||
viewModel.preparePlayerItems()
|
||||
}
|
||||
|
||||
binding.checkButton.setOnClickListener {
|
||||
|
|
|
@ -190,7 +190,7 @@ class MediaInfoFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
} else if (args.itemType == "Series") {
|
||||
viewModel.preparePlayer()
|
||||
viewModel.preparePlayerItems()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ interface JellyfinRepository {
|
|||
seriesId: UUID,
|
||||
seasonId: UUID,
|
||||
fields: List<ItemFields>? = null,
|
||||
startIndex: Int? = null
|
||||
startItemId: UUID? = null
|
||||
): List<BaseItemDto>
|
||||
|
||||
suspend fun getMediaSources(itemId: UUID): List<MediaSourceInfo>
|
||||
|
|
|
@ -115,7 +115,7 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep
|
|||
seriesId: UUID,
|
||||
seasonId: UUID,
|
||||
fields: List<ItemFields>?,
|
||||
startIndex: Int?
|
||||
startItemId: UUID?
|
||||
): List<BaseItemDto> {
|
||||
val episodes: List<BaseItemDto>
|
||||
withContext(Dispatchers.IO) {
|
||||
|
@ -124,7 +124,7 @@ class JellyfinRepositoryImpl(private val jellyfinApi: JellyfinApi) : JellyfinRep
|
|||
jellyfinApi.userId!!,
|
||||
seasonId = seasonId,
|
||||
fields = fields,
|
||||
startIndex = startIndex
|
||||
startItemId = startItemId
|
||||
).content.items ?: listOf()
|
||||
}
|
||||
return episodes
|
||||
|
|
|
@ -61,7 +61,7 @@ constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun preparePlayer() {
|
||||
fun preparePlayerItems() {
|
||||
_playerItemsError.value = null
|
||||
viewModelScope.launch {
|
||||
try {
|
||||
|
@ -77,12 +77,14 @@ constructor(
|
|||
val episodes = jellyfinRepository.getEpisodes(
|
||||
startEpisode.seriesId!!,
|
||||
startEpisode.seasonId!!,
|
||||
startIndex = startEpisode.indexNumber?.minus(1)
|
||||
startItemId = startEpisode.id
|
||||
)
|
||||
for (episode in episodes) {
|
||||
val mediaSources = jellyfinRepository.getMediaSources(episode.id)
|
||||
if (mediaSources.isEmpty()) continue
|
||||
playerItems.add(PlayerItem(episode.id, mediaSources[0].id!!))
|
||||
}
|
||||
if (playerItems.isEmpty()) throw Exception("No playable items found")
|
||||
}
|
||||
|
||||
fun markAsPlayed(itemId: UUID) {
|
||||
|
|
|
@ -183,7 +183,7 @@ constructor(private val jellyfinRepository: JellyfinRepository) : ViewModel() {
|
|||
}
|
||||
}
|
||||
|
||||
fun preparePlayer() {
|
||||
fun preparePlayerItems() {
|
||||
_playerItemsError.value = null
|
||||
viewModelScope.launch {
|
||||
try {
|
||||
|
@ -198,9 +198,14 @@ constructor(private val jellyfinRepository: JellyfinRepository) : ViewModel() {
|
|||
private suspend fun createPlayerItems(series: BaseItemDto) {
|
||||
if (nextUp.value != null) {
|
||||
val startEpisode = nextUp.value!!
|
||||
val episodes = jellyfinRepository.getEpisodes(startEpisode.seriesId!!, startEpisode.seasonId!!, startIndex = startEpisode.indexNumber?.minus(1))
|
||||
val episodes = jellyfinRepository.getEpisodes(
|
||||
startEpisode.seriesId!!,
|
||||
startEpisode.seasonId!!,
|
||||
startItemId = startEpisode.id
|
||||
)
|
||||
for (episode in episodes) {
|
||||
val mediaSources = jellyfinRepository.getMediaSources(episode.id)
|
||||
if (mediaSources.isEmpty()) continue
|
||||
playerItems.add(PlayerItem(episode.id, mediaSources[0].id!!))
|
||||
}
|
||||
} else {
|
||||
|
@ -209,10 +214,12 @@ constructor(private val jellyfinRepository: JellyfinRepository) : ViewModel() {
|
|||
val episodes = jellyfinRepository.getEpisodes(series.id, season.id)
|
||||
for (episode in episodes) {
|
||||
val mediaSources = jellyfinRepository.getMediaSources(episode.id)
|
||||
if (mediaSources.isEmpty()) continue
|
||||
playerItems.add(PlayerItem(episode.id, mediaSources[0].id!!))
|
||||
}
|
||||
}
|
||||
}
|
||||
if (playerItems.isEmpty()) throw Exception("No playable items found")
|
||||
}
|
||||
|
||||
fun navigateToPlayer(mediaSource: MediaSourceInfo) {
|
||||
|
|
Loading…
Reference in a new issue