chore(android): refactor side loaded text tracks (#3754)

* perf: ensure we do not provide callback to native if no callback provided from app

* chore: rework bufferConfig to make it more generic and reduce ReactExoplayerView code size

* chore(android): refactor external text tracks management.

Split parsing and tracks handling

* chore: fix linter
This commit is contained in:
Olivier Bouillet
2024-05-11 18:57:59 +02:00
committed by GitHub
parent 3f63fd076d
commit efb338ee2a
5 changed files with 75 additions and 19 deletions

View File

@@ -0,0 +1,34 @@
package com.brentvatne.common.api
import android.net.Uri
import com.brentvatne.common.toolbox.ReactBridgeUtils
import com.facebook.react.bridge.ReadableMap
/**
* Class representing a sideLoaded text track from application
* Do you use player import in this class
*/
class SideLoadedTextTrack {
var language: String? = null
var title: String? = null
var uri: Uri = Uri.EMPTY
var type: String? = null
companion object {
val SIDELOAD_TEXT_TRACK_LANGUAGE = "language"
val SIDELOAD_TEXT_TRACK_TITLE = "title"
val SIDELOAD_TEXT_TRACK_URI = "uri"
val SIDELOAD_TEXT_TRACK_TYPE = "type"
fun parse(src: ReadableMap?): SideLoadedTextTrack {
val sideLoadedTextTrack = SideLoadedTextTrack()
if (src == null) {
return sideLoadedTextTrack
}
sideLoadedTextTrack.language = ReactBridgeUtils.safeGetString(src, SIDELOAD_TEXT_TRACK_LANGUAGE)
sideLoadedTextTrack.title = ReactBridgeUtils.safeGetString(src, SIDELOAD_TEXT_TRACK_TITLE, "")
sideLoadedTextTrack.uri = Uri.parse(ReactBridgeUtils.safeGetString(src, SIDELOAD_TEXT_TRACK_URI, ""))
sideLoadedTextTrack.type = ReactBridgeUtils.safeGetString(src, SIDELOAD_TEXT_TRACK_TYPE, "")
return sideLoadedTextTrack
}
}
}

View File

@@ -0,0 +1,27 @@
package com.brentvatne.common.api
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.bridge.ReadableMap
/**
* Class representing a list of sideLoaded text track from application
* Do you use player import in this class
*/
class SideLoadedTextTrackList {
var tracks = ArrayList<SideLoadedTextTrack>()
companion object {
fun parse(src: ReadableArray?): SideLoadedTextTrackList? {
if (src == null) {
return null
}
var sideLoadedTextTrackList = SideLoadedTextTrackList()
for (i in 0 until src.size()) {
val textTrack: ReadableMap = src.getMap(i)
sideLoadedTextTrackList.tracks.add(SideLoadedTextTrack.parse(textTrack))
}
return sideLoadedTextTrackList
}
}
}