mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
fix (resume): based on resume episode restore season, range, dubbed
This commit is contained in:
parent
2a1876f54c
commit
9166fdf0dc
5 changed files with 38 additions and 3 deletions
|
@ -1022,6 +1022,7 @@ class GeneratorPlayer : FullScreenPlayer() {
|
|||
resumeMeta.id,
|
||||
resumeMeta.episode,
|
||||
resumeMeta.season,
|
||||
resumeMeta.dubStatus,
|
||||
isFromDownload = false
|
||||
)
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ data class ResultEpisode(
|
|||
val videoWatchState: VideoWatchState,
|
||||
/** Sum of all previous season episode counts + episode */
|
||||
val totalEpisodeIndex: Int? = null,
|
||||
val dubStatus: DubStatus? = null
|
||||
)
|
||||
|
||||
fun ResultEpisode.getRealPosition(): Long {
|
||||
|
@ -85,6 +86,7 @@ fun buildResultEpisode(
|
|||
tvType: TvType,
|
||||
parentId: Int,
|
||||
totalEpisodeIndex: Int? = null,
|
||||
dubStatus: DubStatus? = null,
|
||||
): ResultEpisode {
|
||||
val posDur = getViewPos(id)
|
||||
val videoWatchState = getVideoWatchState(id) ?: VideoWatchState.None
|
||||
|
@ -107,7 +109,8 @@ fun buildResultEpisode(
|
|||
tvType,
|
||||
parentId,
|
||||
videoWatchState,
|
||||
totalEpisodeIndex
|
||||
totalEpisodeIndex,
|
||||
dubStatus
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -2254,7 +2254,8 @@ class ResultViewModel2 : ViewModel() {
|
|||
fillers.getOrDefault(episode, false),
|
||||
loadResponse.type,
|
||||
mainId,
|
||||
totalIndex
|
||||
totalIndex,
|
||||
ep.key
|
||||
)
|
||||
|
||||
val season = eps.seasonIndex ?: 0
|
||||
|
@ -2303,7 +2304,8 @@ class ResultViewModel2 : ViewModel() {
|
|||
null,
|
||||
loadResponse.type,
|
||||
mainId,
|
||||
totalIndex
|
||||
totalIndex,
|
||||
null
|
||||
)
|
||||
|
||||
val season = ep.seasonIndex ?: 0
|
||||
|
@ -2335,6 +2337,7 @@ class ResultViewModel2 : ViewModel() {
|
|||
null,
|
||||
loadResponse.type,
|
||||
mainId,
|
||||
null,
|
||||
null
|
||||
)
|
||||
)
|
||||
|
@ -2358,6 +2361,7 @@ class ResultViewModel2 : ViewModel() {
|
|||
null,
|
||||
loadResponse.type,
|
||||
mainId,
|
||||
null,
|
||||
null
|
||||
)
|
||||
)
|
||||
|
@ -2381,6 +2385,7 @@ class ResultViewModel2 : ViewModel() {
|
|||
null,
|
||||
loadResponse.type,
|
||||
mainId,
|
||||
null,
|
||||
null
|
||||
)
|
||||
)
|
||||
|
@ -2467,9 +2472,30 @@ class ResultViewModel2 : ViewModel() {
|
|||
)
|
||||
}
|
||||
|
||||
restoreSeasonAndRange(resume)
|
||||
|
||||
return ResumeWatchingStatus(progress = progress, isMovie = isMovie, result = episode)
|
||||
}
|
||||
|
||||
private fun restoreSeasonAndRange(resume: VideoDownloadHelper.ResumeWatching) {
|
||||
// restore season based on resume details
|
||||
resume.season?.apply {
|
||||
changeSeason(this)
|
||||
}
|
||||
|
||||
// restore dubStatus based on resume details
|
||||
resume.dubStatus?.apply {
|
||||
changeDubStatus(this)
|
||||
}
|
||||
|
||||
// restore range based on resume details
|
||||
currentRanges[currentIndex]?.first {
|
||||
it.endEpisode >= (resume.episode ?: 0)
|
||||
}?.apply {
|
||||
changeRange(this)
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadTrailers(loadResponse: LoadResponse) = ioSafe {
|
||||
_trailers.postValue(
|
||||
getTrailers(
|
||||
|
|
|
@ -372,6 +372,7 @@ object DataStoreHelper {
|
|||
null,
|
||||
it.episode,
|
||||
it.season,
|
||||
it.dubStatus,
|
||||
it.isFromDownload,
|
||||
it.updateTime
|
||||
)
|
||||
|
@ -386,6 +387,7 @@ object DataStoreHelper {
|
|||
episodeId: Int?,
|
||||
episode: Int?,
|
||||
season: Int?,
|
||||
dubStatus: DubStatus? = null,
|
||||
isFromDownload: Boolean = false,
|
||||
updateTime: Long? = null,
|
||||
) {
|
||||
|
@ -398,6 +400,7 @@ object DataStoreHelper {
|
|||
episodeId,
|
||||
episode,
|
||||
season,
|
||||
dubStatus,
|
||||
updateTime ?: System.currentTimeMillis(),
|
||||
isFromDownload
|
||||
)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.lagradost.cloudstream3.utils
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty
|
||||
import com.lagradost.cloudstream3.DubStatus
|
||||
import com.lagradost.cloudstream3.TvType
|
||||
object VideoDownloadHelper {
|
||||
data class DownloadEpisodeCached(
|
||||
|
@ -30,6 +31,7 @@ object VideoDownloadHelper {
|
|||
@JsonProperty("episodeId") val episodeId: Int?,
|
||||
@JsonProperty("episode") val episode: Int?,
|
||||
@JsonProperty("season") val season: Int?,
|
||||
@JsonProperty("dubStatus") val dubStatus: DubStatus?,
|
||||
@JsonProperty("updateTime") val updateTime: Long,
|
||||
@JsonProperty("isFromDownload") val isFromDownload: Boolean,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue