From d5ed5f867a26c57766fcdc0a213c453286a0c248 Mon Sep 17 00:00:00 2001 From: LagradOst <11805592+LagradOst@users.noreply.github.com> Date: Mon, 20 Jun 2022 15:17:34 +0200 Subject: [PATCH] not reload player on exit --- .../com/lagradost/cloudstream3/MainAPI.kt | 28 +++++++++++++------ .../cloudstream3/syncproviders/SyncAPI.kt | 7 +---- .../syncproviders/providers/AniListApi.kt | 2 +- .../cloudstream3/ui/player/CS3IPlayer.kt | 4 +-- .../cloudstream3/ui/result/ResultViewModel.kt | 7 +++-- app/src/main/res/layout/fragment_result.xml | 10 +++++++ 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt index 106ddea0..018addf1 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt @@ -10,7 +10,6 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.json.JsonMapper import com.fasterxml.jackson.module.kotlin.KotlinModule -import com.lagradost.cloudstream3.LoadResponse.Companion.addMalId import com.lagradost.cloudstream3.animeproviders.* import com.lagradost.cloudstream3.metaproviders.CrossTmdbProvider import com.lagradost.cloudstream3.movieproviders.* @@ -899,11 +898,11 @@ interface LoadResponse { this.actors = actors?.map { actor -> ActorData(actor) } } - fun LoadResponse.getMalId() : String? { + fun LoadResponse.getMalId(): String? { return this.syncData[malIdPrefix] } - fun LoadResponse.getAniListId() : String? { + fun LoadResponse.getAniListId(): String? { return this.syncData[aniListIdPrefix] } @@ -1004,7 +1003,7 @@ interface LoadResponse { fun LoadResponse?.isEpisodeBased(): Boolean { if (this == null) return false - return (this is AnimeLoadResponse || this is TvSeriesLoadResponse) && this.type.isEpisodeBased() + return this is EpisodeResponse && this.type.isEpisodeBased() } fun LoadResponse?.isAnimeBased(): Boolean { @@ -1017,6 +1016,17 @@ fun TvType?.isEpisodeBased(): Boolean { return (this == TvType.TvSeries || this == TvType.Anime) } + +data class NextAiring( + val episode: Int, + val unixTime: Long, +) + +interface EpisodeResponse { + var showStatus: ShowStatus? + var nextAiring: NextAiring? +} + data class TorrentLoadResponse( override var name: String, override var url: String, @@ -1050,7 +1060,7 @@ data class AnimeLoadResponse( override var year: Int? = null, var episodes: MutableMap> = mutableMapOf(), - var showStatus: ShowStatus? = null, + override var showStatus: ShowStatus? = null, override var plot: String? = null, override var tags: List? = null, @@ -1064,7 +1074,8 @@ data class AnimeLoadResponse( override var comingSoon: Boolean = false, override var syncData: MutableMap = mutableMapOf(), override var posterHeaders: Map? = null, -) : LoadResponse + override var nextAiring: NextAiring? = null, +) : LoadResponse, EpisodeResponse fun AnimeLoadResponse.addEpisodes(status: DubStatus, episodes: List?) { if (episodes == null) return @@ -1222,7 +1233,7 @@ data class TvSeriesLoadResponse( override var year: Int? = null, override var plot: String? = null, - var showStatus: ShowStatus? = null, + override var showStatus: ShowStatus? = null, override var rating: Int? = null, override var tags: List? = null, override var duration: Int? = null, @@ -1232,7 +1243,8 @@ data class TvSeriesLoadResponse( override var comingSoon: Boolean = false, override var syncData: MutableMap = mutableMapOf(), override var posterHeaders: Map? = null, -) : LoadResponse + override var nextAiring: NextAiring? = null, +) : LoadResponse, EpisodeResponse suspend fun MainAPI.newTvSeriesLoadResponse( name: String, diff --git a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/SyncAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/SyncAPI.kt index 87da6219..5aa56a02 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/SyncAPI.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/SyncAPI.kt @@ -36,11 +36,6 @@ interface SyncAPI : OAuth2API { override var id: Int? = null, ) : SearchResponse - data class SyncNextAiring( - val episode: Int, - val unixTime: Long, - ) - data class SyncStatus( val status: Int, /** 1-10 */ @@ -63,7 +58,7 @@ interface SyncAPI : OAuth2API { var duration: Int? = null, var synopsis: String? = null, var airStatus: ShowStatus? = null, - var nextAiring: SyncNextAiring? = null, + var nextAiring: NextAiring? = null, var studio: List? = null, var genres: List? = null, var synonyms: List? = null, diff --git a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/AniListApi.kt b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/AniListApi.kt index 471447e8..0490d3b5 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/AniListApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/AniListApi.kt @@ -98,7 +98,7 @@ class AniListApi(index: Int) : AccountManager(index), SyncAPI { return SyncAPI.SyncResult( season.id.toString(), nextAiring = season.nextAiringEpisode?.let { - SyncAPI.SyncNextAiring( + NextAiring( it.episode ?: return@let null, (it.timeUntilAiring ?: return@let null) + unixTime ) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt index 3a63a78d..bdbfcb9c 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt @@ -300,14 +300,14 @@ class CS3IPlayer : IPlayer { saveData() exoPlayer?.pause() - releasePlayer() + //releasePlayer() } override fun onPause() { Log.i(TAG, "onPause") saveData() exoPlayer?.pause() - releasePlayer() + //releasePlayer() } override fun onResume(context: Context) { diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt index ca5d27b2..ec4f6fab 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt @@ -5,7 +5,6 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import androidx.preference.PreferenceManager import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings import com.lagradost.cloudstream3.APIHolder.getApiFromNameNull @@ -29,7 +28,6 @@ import com.lagradost.cloudstream3.ui.WatchType import com.lagradost.cloudstream3.ui.player.IGenerator import com.lagradost.cloudstream3.ui.player.RepoLinkGenerator import com.lagradost.cloudstream3.ui.player.SubtitleData -import com.lagradost.cloudstream3.ui.search.SearchResultBuilder import com.lagradost.cloudstream3.utils.Coroutines.ioWork import com.lagradost.cloudstream3.utils.DOWNLOAD_HEADER_CACHE import com.lagradost.cloudstream3.utils.DataStoreHelper @@ -144,6 +142,10 @@ class ResultViewModel : ViewModel() { posterUrl = posterUrl ?: meta.posterUrl ?: meta.backgroundPosterUrl actors = actors ?: meta.actors + if (this is EpisodeResponse) { + nextAiring = nextAiring ?: meta.nextAiring + } + for ((k, v) in syncs ?: emptyMap()) { syncData[k] = v } @@ -162,7 +164,6 @@ class ResultViewModel : ViewModel() { argamap({ addTrailer(meta.trailers) }, { - if (this !is AnimeLoadResponse) return@argamap val map = getEpisodesDetails(getMalId(), getAniListId(), isResponseRequired = false) if (map.isNullOrEmpty()) return@argamap diff --git a/app/src/main/res/layout/fragment_result.xml b/app/src/main/res/layout/fragment_result.xml index 3a9de7ad..32ea4de6 100644 --- a/app/src/main/res/layout/fragment_result.xml +++ b/app/src/main/res/layout/fragment_result.xml @@ -816,6 +816,16 @@ tools:text="8 Episodes" /> + +