diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt index 0a626471..2593e9a3 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/GeneratorPlayer.kt @@ -1022,6 +1022,7 @@ class GeneratorPlayer : FullScreenPlayer() { resumeMeta.id, resumeMeta.episode, resumeMeta.season, + resumeMeta.dubStatus, isFromDownload = false ) } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt index a1574eec..9cfed553 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt @@ -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 ) } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt index e60c388b..e6f466e3 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt @@ -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( diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt index 04387d80..1f3c42a6 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/DataStoreHelper.kt @@ -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 ) diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadHelper.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadHelper.kt index d1614bc1..79ff8d69 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadHelper.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadHelper.kt @@ -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, )