update playheads on season change
updated playheads are needed for the "completed ep" indicator
This commit is contained in:
parent
d31a19a4f1
commit
1af82f8370
|
@ -8,7 +8,6 @@ import kotlinx.coroutines.launch
|
||||||
import org.mosad.teapod.parser.crunchyroll.*
|
import org.mosad.teapod.parser.crunchyroll.*
|
||||||
import org.mosad.teapod.preferences.Preferences
|
import org.mosad.teapod.preferences.Preferences
|
||||||
import org.mosad.teapod.util.DataTypes.MediaType
|
import org.mosad.teapod.util.DataTypes.MediaType
|
||||||
import org.mosad.teapod.util.metadb.Meta
|
|
||||||
import org.mosad.teapod.util.tmdb.*
|
import org.mosad.teapod.util.tmdb.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,8 +41,6 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic
|
||||||
internal set
|
internal set
|
||||||
var tmdbTVSeason: TMDBTVSeason = NoneTMDBTVSeason
|
var tmdbTVSeason: TMDBTVSeason = NoneTMDBTVSeason
|
||||||
internal set
|
internal set
|
||||||
var mediaMeta: Meta? = null
|
|
||||||
internal set
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param crunchyId the crunchyroll series id
|
* @param crunchyId the crunchyroll series id
|
||||||
|
@ -57,20 +54,14 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic
|
||||||
viewModelScope.launch { isWatchlist = Crunchyroll.isWatchlist(crunchyId) },
|
viewModelScope.launch { isWatchlist = Crunchyroll.isWatchlist(crunchyId) },
|
||||||
viewModelScope.launch { upNextSeries = Crunchyroll.upNextSeries(crunchyId) }
|
viewModelScope.launch { upNextSeries = Crunchyroll.upNextSeries(crunchyId) }
|
||||||
).joinAll()
|
).joinAll()
|
||||||
// println("series: $seriesCrunchy")
|
|
||||||
// println("seasons: $seasonsCrunchy")
|
|
||||||
// println(upNextSeries)
|
|
||||||
|
|
||||||
// load the preferred season (preferred language, language per season, not per stream)
|
// load the preferred season (preferred language, language per season, not per stream)
|
||||||
currentSeasonCrunchy = seasonsCrunchy.getPreferredSeason(Preferences.preferredLocale)
|
currentSeasonCrunchy = seasonsCrunchy.getPreferredSeason(Preferences.preferredLocale)
|
||||||
|
|
||||||
// load episodes and metaDB in parallel (tmdb needs mediaType, which is set via episodes)
|
// Note: if we need to query metaDB, do it now
|
||||||
listOf(
|
|
||||||
viewModelScope.launch { episodesCrunchy = Crunchyroll.episodes(currentSeasonCrunchy.id) },
|
|
||||||
viewModelScope.launch { mediaMeta = null }, // TODO metaDB
|
|
||||||
).joinAll()
|
|
||||||
// println("episodes: $episodesCrunchy")
|
|
||||||
|
|
||||||
|
// load episodes and metaDB in parallel (tmdb needs mediaType, which is set via episodes)
|
||||||
|
viewModelScope.launch { episodesCrunchy = Crunchyroll.episodes(currentSeasonCrunchy.id) }.join()
|
||||||
currentEpisodesCrunchy.clear()
|
currentEpisodesCrunchy.clear()
|
||||||
currentEpisodesCrunchy.addAll(episodesCrunchy.items)
|
currentEpisodesCrunchy.addAll(episodesCrunchy.items)
|
||||||
|
|
||||||
|
@ -103,7 +94,7 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic
|
||||||
MediaType.TVSHOW -> tmdbApiController.searchTVShow(seriesCrunchy.title)
|
MediaType.TVSHOW -> tmdbApiController.searchTVShow(seriesCrunchy.title)
|
||||||
else -> NoneTMDBSearch
|
else -> NoneTMDBSearch
|
||||||
}
|
}
|
||||||
println(tmdbSearchResult)
|
// println(tmdbSearchResult)
|
||||||
|
|
||||||
tmdbResult = if (tmdbSearchResult.results.isNotEmpty()) {
|
tmdbResult = if (tmdbSearchResult.results.isNotEmpty()) {
|
||||||
when (val result = tmdbSearchResult.results.first()) {
|
when (val result = tmdbSearchResult.results.first()) {
|
||||||
|
@ -112,8 +103,7 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic
|
||||||
else -> NoneTMDB
|
else -> NoneTMDB
|
||||||
}
|
}
|
||||||
} else NoneTMDB
|
} else NoneTMDB
|
||||||
|
// println(tmdbResult)
|
||||||
println(tmdbResult)
|
|
||||||
|
|
||||||
// currently not used
|
// currently not used
|
||||||
// tmdbTVSeason = if (tmdbResult is TMDBTVShow) {
|
// tmdbTVSeason = if (tmdbResult is TMDBTVShow) {
|
||||||
|
@ -139,6 +129,11 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic
|
||||||
episodesCrunchy = Crunchyroll.episodes(currentSeasonCrunchy.id)
|
episodesCrunchy = Crunchyroll.episodes(currentSeasonCrunchy.id)
|
||||||
currentEpisodesCrunchy.clear()
|
currentEpisodesCrunchy.clear()
|
||||||
currentEpisodesCrunchy.addAll(episodesCrunchy.items)
|
currentEpisodesCrunchy.addAll(episodesCrunchy.items)
|
||||||
|
|
||||||
|
// update playheads playheads (including fully watched state)
|
||||||
|
val episodeIDs = episodesCrunchy.items.map { it.id }
|
||||||
|
currentPlayheads.clear()
|
||||||
|
currentPlayheads.putAll(Crunchyroll.playheads(episodeIDs))
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun setWatchlist() {
|
suspend fun setWatchlist() {
|
||||||
|
@ -162,16 +157,4 @@ class MediaFragmentViewModel(application: Application) : AndroidViewModel(applic
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get the next episode based on episodeId
|
|
||||||
* if no matching is found, use first episode
|
|
||||||
*/
|
|
||||||
fun updateNextEpisode(episodeId: Int) {
|
|
||||||
// TODO reimplement if needed
|
|
||||||
// if (media.type == MediaType.MOVIE) return // return if movie
|
|
||||||
//
|
|
||||||
// nextEpisodeId = media.playlist.firstOrNull { it.index > media.getEpisodeById(episodeId).index }?.mediaId
|
|
||||||
// ?: media.playlist.first().mediaId
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue