reuse last link to update cached link if user changed source within player
This commit is contained in:
parent
b1082c7042
commit
8e7d5bd0bb
1 changed files with 26 additions and 0 deletions
|
|
@ -289,6 +289,30 @@ private fun PlayerRuntimeController.applySelectedStreamState(
|
|||
currentVideoBitrate = null
|
||||
}
|
||||
|
||||
private fun PlayerRuntimeController.persistSelectedStreamForReuse(
|
||||
stream: Stream,
|
||||
url: String,
|
||||
headers: Map<String, String>
|
||||
) {
|
||||
if (!streamReuseLastLinkEnabled) return
|
||||
|
||||
val key = streamCacheKey ?: return
|
||||
val streamName = (stream.name?.takeIf { it.isNotBlank() } ?: stream.addonName)?.takeIf { it.isNotBlank() }
|
||||
?: title
|
||||
|
||||
scope.launch {
|
||||
streamLinkCacheDataStore.save(
|
||||
contentKey = key,
|
||||
url = url,
|
||||
streamName = streamName,
|
||||
headers = headers,
|
||||
filename = currentFilename,
|
||||
videoHash = currentVideoHash,
|
||||
videoSize = currentVideoSize
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@androidx.annotation.OptIn(UnstableApi::class)
|
||||
internal fun PlayerRuntimeController.switchToSourceStream(stream: Stream) {
|
||||
val url = stream.getStreamUrl()
|
||||
|
|
@ -313,6 +337,7 @@ internal fun PlayerRuntimeController.switchToSourceStream(stream: Stream) {
|
|||
url = url,
|
||||
headers = newHeaders
|
||||
)
|
||||
persistSelectedStreamForReuse(stream = stream, url = url, headers = newHeaders)
|
||||
hasRetriedCurrentStreamAfter416 = false
|
||||
lastSavedPosition = 0L
|
||||
|
||||
|
|
@ -580,6 +605,7 @@ internal fun PlayerRuntimeController.switchToEpisodeStream(stream: Stream, force
|
|||
url = url,
|
||||
headers = newHeaders
|
||||
)
|
||||
persistSelectedStreamForReuse(stream = stream, url = url, headers = newHeaders)
|
||||
pendingSameSeriesTrackSelectionRestore =
|
||||
sameSeriesTrackSelectionPreference?.takeIf { contentType?.lowercase() in listOf("series", "tv") }
|
||||
hasRetriedCurrentStreamAfter416 = false
|
||||
|
|
|
|||
Loading…
Reference in a new issue