react-native-tpstreams 0.2.14 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -75,6 +75,8 @@ import { TPStreamsPlayerView } from "react-native-tpstreams";
75
75
 
76
76
  - `onError(error: {message: string, code: number, details?: string})`: Fires when an error occurs.
77
77
 
78
+ - `onAccessTokenExpired(videoId: string, callback: (newToken: string) => void)`: Fires when the access token expires. Call the callback with a new token to continue playback.
79
+
78
80
  ---
79
81
 
80
82
  ## Player Props
@@ -91,6 +93,8 @@ import { TPStreamsPlayerView } from "react-native-tpstreams";
91
93
 
92
94
  - `enableDownload`: (Optional) Whether to enable download functionality for the video. When set to true, the player will show a download button. Default is false.
93
95
 
96
+ - `downloadMetadata`: (Optional) Custom metadata to attach to downloads. Accepts an object with string key-value pairs. This metadata is stored with the download and can be retrieved later. Default is undefined.
97
+
94
98
  ---
95
99
 
96
100
  ## Downloads
@@ -122,6 +126,7 @@ The download item object (`DownloadItem`) contains information about a downloade
122
126
  - `progressPercentage`: Download progress from 0 to 100.
123
127
  - `title`: The title of the video Asset.
124
128
  - `thumbnailUrl`: URL to the video thumbnail (if available).
129
+ - `metadata`: Custom metadata attached to the download as a JSON string (if provided during download).
125
130
 
126
131
  ---
127
132
 
@@ -173,6 +178,16 @@ function TPStreamsPlayerExample() {
173
178
  onPlaybackSpeedChanged={(speed) => console.log(`Speed changed: ${speed}x`)}
174
179
  onIsLoadingChanged={(isLoading) => console.log(`Loading: ${isLoading}`)}
175
180
  onError={(error) => console.error('Player error:', error)}
181
+ onAccessTokenExpired={async (videoId, callback) => {
182
+ // Fetch a new token from your server
183
+ const newToken = await getNewTokenForVideo(videoId);
184
+ callback(newToken);
185
+ }}
186
+ downloadMetadata={{
187
+ category: 'educational',
188
+ subject: 'mathematics',
189
+ level: 'intermediate'
190
+ }}
176
191
  />
177
192
 
178
193
  <Button title="Play" onPress={handlePlay} />
@@ -82,7 +82,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
82
82
  dependencies {
83
83
  implementation "com.facebook.react:react-android"
84
84
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
85
- implementation 'com.github.testpress:TPStreamsAndroidPlayer:1.0.7'
85
+ implementation "com.github.testpress:TPStreamsAndroidPlayer:${getExtOrDefault('tpstreamsAndroidPlayerVersion')}"
86
86
  }
87
87
 
88
88
  react {
@@ -3,3 +3,4 @@ Tpstreams_minSdkVersion=24
3
3
  Tpstreams_targetSdkVersion=34
4
4
  Tpstreams_compileSdkVersion=35
5
5
  Tpstreams_ndkVersion=27.1.12297006
6
+ Tpstreams_tpstreamsAndroidPlayerVersion=1.0.11
@@ -112,6 +112,14 @@ class TPStreamsDownloadModule(private val reactContext: ReactApplicationContext)
112
112
  map.putDouble("progressPercentage", item.progressPercentage.toDouble())
113
113
  map.putString("state", downloadClient.getDownloadStatus(item.assetId))
114
114
 
115
+ try {
116
+ val metadataJson = org.json.JSONObject(item.metadata as Map<*, *>)
117
+ map.putString("metadata", metadataJson.toString())
118
+ } catch (e: Exception) {
119
+ Log.w(TAG, "Error serializing metadata for item ${item.assetId}: ${e.message}")
120
+ map.putString("metadata", "{}")
121
+ }
122
+
115
123
  result.pushMap(map)
116
124
  }
117
125
 
@@ -23,6 +23,8 @@ class TPStreamsRNPlayerView(context: ThemedReactContext) : FrameLayout(context)
23
23
  private var startAt: Long = 0
24
24
  private var showDefaultCaptions: Boolean = false
25
25
  private var enableDownload: Boolean = false
26
+ private var downloadMetadata: Map<String, String>? = null
27
+ private var accessTokenCallback: ((String) -> Unit)? = null
26
28
 
27
29
  init {
28
30
  addView(playerView, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
@@ -76,6 +78,18 @@ class TPStreamsRNPlayerView(context: ThemedReactContext) : FrameLayout(context)
76
78
  fun setEnableDownload(enableDownload: Boolean) {
77
79
  this.enableDownload = enableDownload
78
80
  }
81
+
82
+ fun setDownloadMetadata(metadata: Map<String, String>?) {
83
+ this.downloadMetadata = metadata
84
+ }
85
+
86
+ fun setNewAccessToken(newToken: String) {
87
+ Log.d("TPStreamsRNPlayerView", "Setting new access token")
88
+ accessTokenCallback?.let { callback ->
89
+ callback(newToken)
90
+ accessTokenCallback = null
91
+ } ?: Log.w("TPStreamsRNPlayerView", "No callback available for token refresh")
92
+ }
79
93
 
80
94
  fun tryCreatePlayer() {
81
95
  if (videoId.isNullOrEmpty() || accessToken.isNullOrEmpty()) return
@@ -89,9 +103,21 @@ class TPStreamsRNPlayerView(context: ThemedReactContext) : FrameLayout(context)
89
103
  shouldAutoPlay,
90
104
  startAt,
91
105
  enableDownload,
92
- showDefaultCaptions
106
+ showDefaultCaptions,
107
+ downloadMetadata
93
108
  )
94
109
 
110
+ player?.listener = object : TPStreamsPlayer.Listener {
111
+ override fun onAccessTokenExpired(videoId: String, callback: (String) -> Unit) {
112
+ if (accessTokenCallback != null) {
113
+ Log.w("TPStreamsRNPlayerView", "onAccessTokenExpired called while another refresh is in progress. Ignoring.")
114
+ return
115
+ }
116
+ accessTokenCallback = callback
117
+ emitEvent("onAccessTokenExpired", mapOf("videoId" to videoId))
118
+ }
119
+ }
120
+
95
121
  // Add player event listeners
96
122
  player?.addListener(createPlayerListener())
97
123
 
@@ -188,5 +214,6 @@ class TPStreamsRNPlayerView(context: ThemedReactContext) : FrameLayout(context)
188
214
  Log.e("TPStreamsRN", "Error releasing player", e)
189
215
  }
190
216
  player = null
217
+ accessTokenCallback = null
191
218
  }
192
219
  }
@@ -26,6 +26,7 @@ class TPStreamsRNPlayerViewManager : SimpleViewManager<TPStreamsRNPlayerView>(),
26
26
  private const val EVENT_PLAYBACK_SPEED_CHANGED = "onPlaybackSpeedChanged"
27
27
  private const val EVENT_IS_LOADING_CHANGED = "onIsLoadingChanged"
28
28
  private const val EVENT_ERROR = "onError"
29
+ private const val EVENT_ACCESS_TOKEN_EXPIRED = "onAccessTokenExpired"
29
30
  }
30
31
 
31
32
  private val mDelegate: ViewManagerDelegate<TPStreamsRNPlayerView> =
@@ -46,6 +47,7 @@ class TPStreamsRNPlayerViewManager : SimpleViewManager<TPStreamsRNPlayerView>(),
46
47
  .put(EVENT_PLAYBACK_SPEED_CHANGED, MapBuilder.of("registrationName", EVENT_PLAYBACK_SPEED_CHANGED))
47
48
  .put(EVENT_IS_LOADING_CHANGED, MapBuilder.of("registrationName", EVENT_IS_LOADING_CHANGED))
48
49
  .put(EVENT_ERROR, MapBuilder.of("registrationName", EVENT_ERROR))
50
+ .put(EVENT_ACCESS_TOKEN_EXPIRED, MapBuilder.of("registrationName", EVENT_ACCESS_TOKEN_EXPIRED))
49
51
  .build()
50
52
  }
51
53
 
@@ -82,6 +84,24 @@ class TPStreamsRNPlayerViewManager : SimpleViewManager<TPStreamsRNPlayerView>(),
82
84
  view.setEnableDownload(enableDownload)
83
85
  }
84
86
 
87
+ @ReactProp(name = "downloadMetadata")
88
+ override fun setDownloadMetadata(view: TPStreamsRNPlayerView, metadata: String?) {
89
+ val metadataMap = if (!metadata.isNullOrEmpty()) {
90
+ try {
91
+ val jsonObject = org.json.JSONObject(metadata)
92
+ val map = jsonObject.keys()
93
+ .asSequence()
94
+ .associate { it to jsonObject.getString(it) }
95
+ .toMutableMap()
96
+ map
97
+ } catch (e: org.json.JSONException) {
98
+ android.util.Log.w("TPStreamsRN", "Error parsing download metadata: ${e.message}")
99
+ null
100
+ }
101
+ } else null
102
+ view.setDownloadMetadata(metadataMap)
103
+ }
104
+
85
105
  // Command implementations
86
106
  override fun play(view: TPStreamsRNPlayerView) {
87
107
  view.play()
@@ -115,6 +135,10 @@ class TPStreamsRNPlayerViewManager : SimpleViewManager<TPStreamsRNPlayerView>(),
115
135
  view.getPlaybackSpeed()
116
136
  }
117
137
 
138
+ override fun setNewAccessToken(view: TPStreamsRNPlayerView, newToken: String) {
139
+ view.setNewAccessToken(newToken)
140
+ }
141
+
118
142
  override fun onAfterUpdateTransaction(view: TPStreamsRNPlayerView) {
119
143
  super.onAfterUpdateTransaction(view)
120
144
  view.tryCreatePlayer()
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","TPStreamsDownload","pauseDownload","videoId","resumeDownload","removeDownload","isDownloaded","isDownloading","isPaused","getDownloadStatus","getAllDownloads"],"sourceRoot":"../../src","sources":["TPStreamsDownload.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAE5C,MAAM;EAAEC;AAAkB,CAAC,GAAGD,aAAa;AAY3C,OAAO,SAASE,aAAaA,CAACC,OAAe,EAAiB;EAC5D,OAAOF,iBAAiB,CAACC,aAAa,CAACC,OAAO,CAAC;AACjD;AAEA,OAAO,SAASC,cAAcA,CAACD,OAAe,EAAiB;EAC7D,OAAOF,iBAAiB,CAACG,cAAc,CAACD,OAAO,CAAC;AAClD;AAEA,OAAO,SAASE,cAAcA,CAACF,OAAe,EAAiB;EAC7D,OAAOF,iBAAiB,CAACI,cAAc,CAACF,OAAO,CAAC;AAClD;AAEA,OAAO,SAASG,YAAYA,CAACH,OAAe,EAAoB;EAC9D,OAAOF,iBAAiB,CAACK,YAAY,CAACH,OAAO,CAAC;AAChD;AAEA,OAAO,SAASI,aAAaA,CAACJ,OAAe,EAAoB;EAC/D,OAAOF,iBAAiB,CAACM,aAAa,CAACJ,OAAO,CAAC;AACjD;AAEA,OAAO,SAASK,QAAQA,CAACL,OAAe,EAAoB;EAC1D,OAAOF,iBAAiB,CAACO,QAAQ,CAACL,OAAO,CAAC;AAC5C;AAEA,OAAO,SAASM,iBAAiBA,CAACN,OAAe,EAAmB;EAClE,OAAOF,iBAAiB,CAACQ,iBAAiB,CAACN,OAAO,CAAC;AACrD;AAEA,OAAO,SAASO,eAAeA,CAAA,EAA4B;EACzD,OAAOT,iBAAiB,CAACS,eAAe,CAAC,CAAC;AAC5C","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","TPStreamsDownload","pauseDownload","videoId","resumeDownload","removeDownload","isDownloaded","isDownloading","isPaused","getDownloadStatus","getAllDownloads"],"sourceRoot":"../../src","sources":["TPStreamsDownload.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAE5C,MAAM;EAAEC;AAAkB,CAAC,GAAGD,aAAa;AAa3C,OAAO,SAASE,aAAaA,CAACC,OAAe,EAAiB;EAC5D,OAAOF,iBAAiB,CAACC,aAAa,CAACC,OAAO,CAAC;AACjD;AAEA,OAAO,SAASC,cAAcA,CAACD,OAAe,EAAiB;EAC7D,OAAOF,iBAAiB,CAACG,cAAc,CAACD,OAAO,CAAC;AAClD;AAEA,OAAO,SAASE,cAAcA,CAACF,OAAe,EAAiB;EAC7D,OAAOF,iBAAiB,CAACI,cAAc,CAACF,OAAO,CAAC;AAClD;AAEA,OAAO,SAASG,YAAYA,CAACH,OAAe,EAAoB;EAC9D,OAAOF,iBAAiB,CAACK,YAAY,CAACH,OAAO,CAAC;AAChD;AAEA,OAAO,SAASI,aAAaA,CAACJ,OAAe,EAAoB;EAC/D,OAAOF,iBAAiB,CAACM,aAAa,CAACJ,OAAO,CAAC;AACjD;AAEA,OAAO,SAASK,QAAQA,CAACL,OAAe,EAAoB;EAC1D,OAAOF,iBAAiB,CAACO,QAAQ,CAACL,OAAO,CAAC;AAC5C;AAEA,OAAO,SAASM,iBAAiBA,CAACN,OAAe,EAAmB;EAClE,OAAOF,iBAAiB,CAACQ,iBAAiB,CAACN,OAAO,CAAC;AACrD;AAEA,OAAO,SAASO,eAAeA,CAAA,EAA4B;EACzD,OAAOT,iBAAiB,CAACS,eAAe,CAAC,CAAC;AAC5C","ignoreList":[]}
@@ -24,12 +24,14 @@ const TPStreamsPlayerView = /*#__PURE__*/forwardRef((props, ref) => {
24
24
  startAt,
25
25
  enableDownload,
26
26
  showDefaultCaptions,
27
+ downloadMetadata,
27
28
  style,
28
29
  onPlayerStateChanged,
29
30
  onIsPlayingChanged,
30
31
  onPlaybackSpeedChanged,
31
32
  onIsLoadingChanged,
32
33
  onError,
34
+ onAccessTokenExpired,
33
35
  ...restProps
34
36
  } = props;
35
37
  const nativeRef = useRef(null);
@@ -103,6 +105,20 @@ const TPStreamsPlayerView = /*#__PURE__*/forwardRef((props, ref) => {
103
105
  details
104
106
  });
105
107
  }, [onError]);
108
+ const handleAccessTokenExpired = useCallback(event => {
109
+ if (onAccessTokenExpired) {
110
+ const {
111
+ videoId: expiredVideoId
112
+ } = event.nativeEvent;
113
+ onAccessTokenExpired(expiredVideoId, newToken => {
114
+ if (nativeRef.current) {
115
+ Commands.setNewAccessToken(nativeRef.current, newToken);
116
+ } else {
117
+ console.error('[RN] Native ref is not available');
118
+ }
119
+ });
120
+ }
121
+ }, [onAccessTokenExpired]);
106
122
 
107
123
  // Helper to create promise-based API methods
108
124
  const createPromiseMethod = useCallback((command, eventKey) => {
@@ -147,6 +163,7 @@ const TPStreamsPlayerView = /*#__PURE__*/forwardRef((props, ref) => {
147
163
  startAt,
148
164
  enableDownload,
149
165
  showDefaultCaptions,
166
+ downloadMetadata: downloadMetadata ? JSON.stringify(downloadMetadata) : undefined,
150
167
  style,
151
168
  onCurrentPosition,
152
169
  onDuration,
@@ -156,7 +173,8 @@ const TPStreamsPlayerView = /*#__PURE__*/forwardRef((props, ref) => {
156
173
  onIsPlayingChanged: handleIsPlayingChanged,
157
174
  onPlaybackSpeedChanged: handlePlaybackSpeedChanged,
158
175
  onIsLoadingChanged: handleIsLoadingChanged,
159
- onError: handleError
176
+ onError: handleError,
177
+ onAccessTokenExpired: handleAccessTokenExpired
160
178
  };
161
179
  return /*#__PURE__*/_jsx(TPStreamsPlayerNative, {
162
180
  ...nativeProps,
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useImperativeHandle","useRef","useCallback","TPStreamsPlayerNative","Commands","jsx","_jsx","nextInstanceId","TPStreamsPlayerView","props","ref","videoId","accessToken","shouldAutoPlay","startAt","enableDownload","showDefaultCaptions","style","onPlayerStateChanged","onIsPlayingChanged","onPlaybackSpeedChanged","onIsLoadingChanged","onError","restProps","nativeRef","instanceId","promiseMap","onCurrentPosition","event","key","current","handler","resolve","nativeEvent","position","onDuration","duration","onIsPlaying","isPlaying","onPlaybackSpeed","speed","handlePlayerStateChanged","playbackState","handleIsPlayingChanged","handlePlaybackSpeedChanged","handleIsLoadingChanged","isLoading","handleError","message","code","details","Object","entries","forEach","reject","Error","createPromiseMethod","command","eventKey","Promise","setTimeout","play","pause","seekTo","positionMs","setPlaybackSpeed","getCurrentPosition","getDuration","getPlaybackSpeed","nativeProps"],"sourceRoot":"../../src","sources":["TPStreamsPlayer.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useImperativeHandle","useRef","useCallback","TPStreamsPlayerNative","Commands","jsx","_jsx","nextInstanceId","TPStreamsPlayerView","props","ref","videoId","accessToken","shouldAutoPlay","startAt","enableDownload","showDefaultCaptions","downloadMetadata","style","onPlayerStateChanged","onIsPlayingChanged","onPlaybackSpeedChanged","onIsLoadingChanged","onError","onAccessTokenExpired","restProps","nativeRef","instanceId","promiseMap","onCurrentPosition","event","key","current","handler","resolve","nativeEvent","position","onDuration","duration","onIsPlaying","isPlaying","onPlaybackSpeed","speed","handlePlayerStateChanged","playbackState","handleIsPlayingChanged","handlePlaybackSpeedChanged","handleIsLoadingChanged","isLoading","handleError","message","code","details","Object","entries","forEach","reject","Error","handleAccessTokenExpired","expiredVideoId","newToken","setNewAccessToken","console","error","createPromiseMethod","command","eventKey","Promise","setTimeout","play","pause","seekTo","positionMs","setPlaybackSpeed","getCurrentPosition","getDuration","getPlaybackSpeed","nativeProps","JSON","stringify","undefined"],"sourceRoot":"../../src","sources":["TPStreamsPlayer.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,WAAW,QAAQ,OAAO;AAC5E,OAAOC,qBAAqB,IAC1BC,QAAQ,QACH,sCAAsC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO9C;AACA,IAAIC,cAAc,GAAG,CAAC;;AAEtB;;AAQA;;AAYA;;AAwBA;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,gBAAGT,UAAU,CAGpC,CAACU,KAAK,EAAEC,GAAG,KAAK;EAChB,MAAM;IACJC,OAAO;IACPC,WAAW;IACXC,cAAc;IACdC,OAAO;IACPC,cAAc;IACdC,mBAAmB;IACnBC,gBAAgB;IAChBC,KAAK;IACLC,oBAAoB;IACpBC,kBAAkB;IAClBC,sBAAsB;IACtBC,kBAAkB;IAClBC,OAAO;IACPC,oBAAoB;IACpB,GAAGC;EACL,CAAC,GAAGhB,KAAK;EAET,MAAMiB,SAAS,GAAGzB,MAAM,CAAC,IAAI,CAAC;EAC9B,MAAM0B,UAAU,GAAG1B,MAAM,CAASM,cAAc,EAAE,CAAC;EACnD,MAAMqB,UAAU,GAAG3B,MAAM,CAAa,CAAC,CAAC,CAAC;;EAEzC;EACA,MAAM4B,iBAAiB,GAAG3B,WAAW,CAAE4B,KAAU,IAAK;IACpD,MAAMC,GAAG,GAAG,YAAYJ,UAAU,CAACK,OAAO,EAAE;IAC5C,MAAMC,OAAO,GAAGL,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IACvC,IAAIE,OAAO,EAAE;MACXA,OAAO,CAACC,OAAO,CAACJ,KAAK,CAACK,WAAW,CAACC,QAAQ,CAAC;MAC3C,OAAOR,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IAChC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMM,UAAU,GAAGnC,WAAW,CAAE4B,KAAU,IAAK;IAC7C,MAAMC,GAAG,GAAG,YAAYJ,UAAU,CAACK,OAAO,EAAE;IAC5C,MAAMC,OAAO,GAAGL,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IACvC,IAAIE,OAAO,EAAE;MACXA,OAAO,CAACC,OAAO,CAACJ,KAAK,CAACK,WAAW,CAACG,QAAQ,CAAC;MAC3C,OAAOV,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IAChC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMQ,WAAW,GAAGrC,WAAW,CAAE4B,KAAU,IAAK;IAC9C,MAAMC,GAAG,GAAG,aAAaJ,UAAU,CAACK,OAAO,EAAE;IAC7C,MAAMC,OAAO,GAAGL,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IACvC,IAAIE,OAAO,EAAE;MACXA,OAAO,CAACC,OAAO,CAACJ,KAAK,CAACK,WAAW,CAACK,SAAS,CAAC;MAC5C,OAAOZ,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IAChC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMU,eAAe,GAAGvC,WAAW,CAAE4B,KAAU,IAAK;IAClD,MAAMC,GAAG,GAAG,iBAAiBJ,UAAU,CAACK,OAAO,EAAE;IACjD,MAAMC,OAAO,GAAGL,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IACvC,IAAIE,OAAO,EAAE;MACXA,OAAO,CAACC,OAAO,CAACJ,KAAK,CAACK,WAAW,CAACO,KAAK,CAAC;MACxC,OAAOd,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IAChC;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMY,wBAAwB,GAAGzC,WAAW,CACzC4B,KAAU,IAAK;IACdX,oBAAoB,GAAGW,KAAK,CAACK,WAAW,CAACS,aAAa,CAAC;EACzD,CAAC,EACD,CAACzB,oBAAoB,CACvB,CAAC;EAED,MAAM0B,sBAAsB,GAAG3C,WAAW,CACvC4B,KAAU,IAAK;IACdV,kBAAkB,GAAGU,KAAK,CAACK,WAAW,CAACK,SAAS,CAAC;EACnD,CAAC,EACD,CAACpB,kBAAkB,CACrB,CAAC;EAED,MAAM0B,0BAA0B,GAAG5C,WAAW,CAC3C4B,KAAU,IAAK;IACdT,sBAAsB,GAAGS,KAAK,CAACK,WAAW,CAACO,KAAK,CAAC;EACnD,CAAC,EACD,CAACrB,sBAAsB,CACzB,CAAC;EAED,MAAM0B,sBAAsB,GAAG7C,WAAW,CACvC4B,KAAU,IAAK;IACdR,kBAAkB,GAAGQ,KAAK,CAACK,WAAW,CAACa,SAAS,CAAC;EACnD,CAAC,EACD,CAAC1B,kBAAkB,CACrB,CAAC;EAED,MAAM2B,WAAW,GAAG/C,WAAW,CAC5B4B,KAAkC,IAAK;IACtC,MAAM;MAAEoB,OAAO;MAAEC,IAAI;MAAEC;IAAQ,CAAC,GAAGtB,KAAK,CAACK,WAAW;;IAEpD;IACAkB,MAAM,CAACC,OAAO,CAAC1B,UAAU,CAACI,OAAO,CAAC,CAACuB,OAAO,CAAC,CAAC,CAACxB,GAAG,EAAEE,OAAO,CAAC,KAAK;MAC7DA,OAAO,CAACuB,MAAM,CAAC,IAAIC,KAAK,CAAC,GAAGP,OAAO,KAAKE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;MACtE,OAAOxB,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;IAChC,CAAC,CAAC;;IAEF;IACAR,OAAO,GAAG;MAAE2B,OAAO;MAAEC,IAAI;MAAEC;IAAQ,CAAC,CAAC;EACvC,CAAC,EACD,CAAC7B,OAAO,CACV,CAAC;EAED,MAAMmC,wBAAwB,GAAGxD,WAAW,CACzC4B,KAA2C,IAAK;IAC/C,IAAIN,oBAAoB,EAAE;MACxB,MAAM;QAAEb,OAAO,EAAEgD;MAAe,CAAC,GAAG7B,KAAK,CAACK,WAAW;MACrDX,oBAAoB,CAACmC,cAAc,EAAGC,QAAgB,IAAK;QACzD,IAAIlC,SAAS,CAACM,OAAO,EAAE;UACrB5B,QAAQ,CAACyD,iBAAiB,CAACnC,SAAS,CAACM,OAAO,EAAE4B,QAAQ,CAAC;QACzD,CAAC,MAAM;UACLE,OAAO,CAACC,KAAK,CAAC,kCAAkC,CAAC;QACnD;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACvC,oBAAoB,CACvB,CAAC;;EAED;EACA,MAAMwC,mBAAmB,GAAG9D,WAAW,CACrC,CAAC+D,OAA2B,EAAEC,QAAgB,KAAK;IACjD,OAAO,MACL,IAAIC,OAAO,CAAM,CAACjC,OAAO,EAAEsB,MAAM,KAAK;MACpC,IAAI9B,SAAS,CAACM,OAAO,EAAE;QACrB,MAAMD,GAAG,GAAG,GAAGmC,QAAQ,IAAIvC,UAAU,CAACK,OAAO,EAAE;QAC/CJ,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC,GAAG;UAAEG,OAAO;UAAEsB;QAAO,CAAC;QAC7CS,OAAO,CAACvC,SAAS,CAACM,OAAO,CAAC;;QAE1B;QACAoC,UAAU,CAAC,MAAM;UACf,IAAIxC,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC,EAAE;YAC3ByB,MAAM,CAAC,IAAIC,KAAK,CAAC,mBAAmBS,QAAQ,EAAE,CAAC,CAAC;YAChD,OAAOtC,UAAU,CAACI,OAAO,CAACD,GAAG,CAAC;UAChC;QACF,CAAC,EAAE,IAAI,CAAC;MACV,CAAC,MAAM;QACLyB,MAAM,CAAC,IAAIC,KAAK,CAAC,2BAA2B,CAAC,CAAC;MAChD;IACF,CAAC,CAAC;EACN,CAAC,EACD,EACF,CAAC;EAEDzD,mBAAmB,CACjBU,GAAG,EACH,OAAO;IACL2D,IAAI,EAAEA,CAAA,KAAM3C,SAAS,CAACM,OAAO,IAAI5B,QAAQ,CAACiE,IAAI,CAAC3C,SAAS,CAACM,OAAO,CAAC;IACjEsC,KAAK,EAAEA,CAAA,KAAM5C,SAAS,CAACM,OAAO,IAAI5B,QAAQ,CAACkE,KAAK,CAAC5C,SAAS,CAACM,OAAO,CAAC;IACnEuC,MAAM,EAAGC,UAAkB,IACzB9C,SAAS,CAACM,OAAO,IAAI5B,QAAQ,CAACmE,MAAM,CAAC7C,SAAS,CAACM,OAAO,EAAEwC,UAAU,CAAC;IACrEC,gBAAgB,EAAG/B,KAAa,IAC9BhB,SAAS,CAACM,OAAO,IACjB5B,QAAQ,CAACqE,gBAAgB,CAAC/C,SAAS,CAACM,OAAO,EAAEU,KAAK,CAAC;IACrDgC,kBAAkB,EAAEV,mBAAmB,CACrC5D,QAAQ,CAACsE,kBAAkB,EAC3B,UACF,CAAC;IACDC,WAAW,EAAEX,mBAAmB,CAAC5D,QAAQ,CAACuE,WAAW,EAAE,UAAU,CAAC;IAClEnC,SAAS,EAAEwB,mBAAmB,CAAC5D,QAAQ,CAACoC,SAAS,EAAE,WAAW,CAAC;IAC/DoC,gBAAgB,EAAEZ,mBAAmB,CAAC5D,QAAQ,CAACwE,gBAAgB,EAAE,OAAO;EAC1E,CAAC,CAAC,EACF,CAACZ,mBAAmB,CACtB,CAAC;;EAED;EACA,MAAMa,WAAwB,GAAG;IAC/B,GAAGpD,SAAS;IACZd,OAAO;IACPC,WAAW;IACXC,cAAc;IACdC,OAAO;IACPC,cAAc;IACdC,mBAAmB;IACnBC,gBAAgB,EAAEA,gBAAgB,GAC9B6D,IAAI,CAACC,SAAS,CAAC9D,gBAAgB,CAAC,GAChC+D,SAAS;IACb9D,KAAK;IACLW,iBAAiB;IACjBQ,UAAU;IACVE,WAAW;IACXE,eAAe;IACftB,oBAAoB,EAAEwB,wBAAwB;IAC9CvB,kBAAkB,EAAEyB,sBAAsB;IAC1CxB,sBAAsB,EAAEyB,0BAA0B;IAClDxB,kBAAkB,EAAEyB,sBAAsB;IAC1CxB,OAAO,EAAE0B,WAAW;IACpBzB,oBAAoB,EAAEkC;EACxB,CAAC;EAED,oBAAOpD,IAAA,CAACH,qBAAqB;IAAA,GAAK0E,WAAW;IAAEnE,GAAG,EAAEgB;EAAU,CAAE,CAAC;AACnE,CAAC,CAAC;AAEF,eAAelB,mBAAmB","ignoreList":[]}
@@ -22,6 +22,7 @@ export interface NativeProps extends ViewProps {
22
22
  startAt?: Double;
23
23
  enableDownload?: boolean;
24
24
  showDefaultCaptions?: boolean;
25
+ downloadMetadata?: string;
25
26
 
26
27
  // Event props for receiving data from native methods
27
28
  onCurrentPosition?: DirectEventHandler<{ position: Double }>;
@@ -35,6 +36,7 @@ export interface NativeProps extends ViewProps {
35
36
  onPlaybackSpeedChanged?: DirectEventHandler<{ speed: Double }>;
36
37
  onIsLoadingChanged?: DirectEventHandler<{ isLoading: boolean }>;
37
38
  onError?: DirectEventHandler<ErrorEvent>;
39
+ onAccessTokenExpired?: DirectEventHandler<{ videoId: string }>;
38
40
  }
39
41
 
40
42
  interface TPStreamsPlayerViewCommands {
@@ -56,6 +58,10 @@ interface TPStreamsPlayerViewCommands {
56
58
  getPlaybackSpeed: (
57
59
  viewRef: React.ElementRef<HostComponent<NativeProps>>
58
60
  ) => void;
61
+ setNewAccessToken: (
62
+ viewRef: React.ElementRef<HostComponent<NativeProps>>,
63
+ newToken: string
64
+ ) => void;
59
65
  }
60
66
 
61
67
  export const Commands = codegenNativeCommands<TPStreamsPlayerViewCommands>({
@@ -68,6 +74,7 @@ export const Commands = codegenNativeCommands<TPStreamsPlayerViewCommands>({
68
74
  'getDuration',
69
75
  'isPlaying',
70
76
  'getPlaybackSpeed',
77
+ 'setNewAccessToken',
71
78
  ],
72
79
  });
73
80
 
@@ -6,6 +6,7 @@ export interface DownloadItem {
6
6
  downloadedBytes: number;
7
7
  progressPercentage: number;
8
8
  state: string;
9
+ metadata: string;
9
10
  }
10
11
  export declare function pauseDownload(videoId: string): Promise<void>;
11
12
  export declare function resumeDownload(videoId: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"TPStreamsDownload.d.ts","sourceRoot":"","sources":["../../../src/TPStreamsDownload.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAElE;AAED,wBAAgB,eAAe,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEzD"}
1
+ {"version":3,"file":"TPStreamsDownload.d.ts","sourceRoot":"","sources":["../../../src/TPStreamsDownload.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAElE;AAED,wBAAgB,eAAe,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAEzD"}
@@ -17,6 +17,9 @@ export interface TPStreamsPlayerProps extends ViewProps {
17
17
  startAt?: number;
18
18
  enableDownload?: boolean;
19
19
  showDefaultCaptions?: boolean;
20
+ downloadMetadata?: {
21
+ [key: string]: string;
22
+ };
20
23
  onPlayerStateChanged?: (state: number) => void;
21
24
  onIsPlayingChanged?: (isPlaying: boolean) => void;
22
25
  onPlaybackSpeedChanged?: (speed: number) => void;
@@ -26,6 +29,7 @@ export interface TPStreamsPlayerProps extends ViewProps {
26
29
  code: number;
27
30
  details?: string;
28
31
  }) => void;
32
+ onAccessTokenExpired?: (videoId: string, callback: (newToken: string) => void) => void;
29
33
  }
30
34
  /**
31
35
  * TPStreamsPlayerView - React component wrapper for TPStreamsPlayerNative
@@ -1 +1 @@
1
- {"version":3,"file":"TPStreamsPlayer.d.ts","sourceRoot":"","sources":["../../../src/TPStreamsPlayer.tsx"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAc9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC;AAGD,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,IAAI,CAAC;CACZ;AAED;;;GAGG;AACH,QAAA,MAAM,mBAAmB,qHA8KvB,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"TPStreamsPlayer.d.ts","sourceRoot":"","sources":["../../../src/TPStreamsPlayer.tsx"],"names":[],"mappings":";AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAc9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC;AAGD,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,IAAI,CAAC;IACX,oBAAoB,CAAC,EAAE,CACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KACjC,IAAI,CAAC;CACX;AAED;;;GAGG;AACH,QAAA,MAAM,mBAAmB,qHAoMvB,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
@@ -16,6 +16,7 @@ export interface NativeProps extends ViewProps {
16
16
  startAt?: Double;
17
17
  enableDownload?: boolean;
18
18
  showDefaultCaptions?: boolean;
19
+ downloadMetadata?: string;
19
20
  onCurrentPosition?: DirectEventHandler<{
20
21
  position: Double;
21
22
  }>;
@@ -41,6 +42,9 @@ export interface NativeProps extends ViewProps {
41
42
  isLoading: boolean;
42
43
  }>;
43
44
  onError?: DirectEventHandler<ErrorEvent>;
45
+ onAccessTokenExpired?: DirectEventHandler<{
46
+ videoId: string;
47
+ }>;
44
48
  }
45
49
  interface TPStreamsPlayerViewCommands {
46
50
  play: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;
@@ -51,6 +55,7 @@ interface TPStreamsPlayerViewCommands {
51
55
  getDuration: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;
52
56
  isPlaying: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;
53
57
  getPlaybackSpeed: (viewRef: React.ElementRef<HostComponent<NativeProps>>) => void;
58
+ setNewAccessToken: (viewRef: React.ElementRef<HostComponent<NativeProps>>, newToken: string) => void;
54
59
  }
55
60
  export declare const Commands: TPStreamsPlayerViewCommands;
56
61
  declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"TPStreamsPlayerViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/TPStreamsPlayerViewNativeComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TPStreamsPlayerViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/TPStreamsPlayerViewNativeComponent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-tpstreams",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "Video component for TPStreams",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -10,6 +10,7 @@ export interface DownloadItem {
10
10
  downloadedBytes: number;
11
11
  progressPercentage: number;
12
12
  state: string;
13
+ metadata: string;
13
14
  }
14
15
 
15
16
  export function pauseDownload(videoId: string): Promise<void> {
@@ -39,6 +39,7 @@ export interface TPStreamsPlayerProps extends ViewProps {
39
39
  startAt?: number;
40
40
  enableDownload?: boolean;
41
41
  showDefaultCaptions?: boolean;
42
+ downloadMetadata?: { [key: string]: string };
42
43
  onPlayerStateChanged?: (state: number) => void;
43
44
  onIsPlayingChanged?: (isPlaying: boolean) => void;
44
45
  onPlaybackSpeedChanged?: (speed: number) => void;
@@ -48,6 +49,10 @@ export interface TPStreamsPlayerProps extends ViewProps {
48
49
  code: number;
49
50
  details?: string;
50
51
  }) => void;
52
+ onAccessTokenExpired?: (
53
+ videoId: string,
54
+ callback: (newToken: string) => void
55
+ ) => void;
51
56
  }
52
57
 
53
58
  /**
@@ -65,12 +70,14 @@ const TPStreamsPlayerView = forwardRef<
65
70
  startAt,
66
71
  enableDownload,
67
72
  showDefaultCaptions,
73
+ downloadMetadata,
68
74
  style,
69
75
  onPlayerStateChanged,
70
76
  onIsPlayingChanged,
71
77
  onPlaybackSpeedChanged,
72
78
  onIsLoadingChanged,
73
79
  onError,
80
+ onAccessTokenExpired,
74
81
  ...restProps
75
82
  } = props;
76
83
 
@@ -160,6 +167,22 @@ const TPStreamsPlayerView = forwardRef<
160
167
  [onError]
161
168
  );
162
169
 
170
+ const handleAccessTokenExpired = useCallback(
171
+ (event: { nativeEvent: { videoId: string } }) => {
172
+ if (onAccessTokenExpired) {
173
+ const { videoId: expiredVideoId } = event.nativeEvent;
174
+ onAccessTokenExpired(expiredVideoId, (newToken: string) => {
175
+ if (nativeRef.current) {
176
+ Commands.setNewAccessToken(nativeRef.current, newToken);
177
+ } else {
178
+ console.error('[RN] Native ref is not available');
179
+ }
180
+ });
181
+ }
182
+ },
183
+ [onAccessTokenExpired]
184
+ );
185
+
163
186
  // Helper to create promise-based API methods
164
187
  const createPromiseMethod = useCallback(
165
188
  (command: (ref: any) => void, eventKey: string) => {
@@ -215,6 +238,9 @@ const TPStreamsPlayerView = forwardRef<
215
238
  startAt,
216
239
  enableDownload,
217
240
  showDefaultCaptions,
241
+ downloadMetadata: downloadMetadata
242
+ ? JSON.stringify(downloadMetadata)
243
+ : undefined,
218
244
  style,
219
245
  onCurrentPosition,
220
246
  onDuration,
@@ -225,6 +251,7 @@ const TPStreamsPlayerView = forwardRef<
225
251
  onPlaybackSpeedChanged: handlePlaybackSpeedChanged,
226
252
  onIsLoadingChanged: handleIsLoadingChanged,
227
253
  onError: handleError,
254
+ onAccessTokenExpired: handleAccessTokenExpired,
228
255
  };
229
256
 
230
257
  return <TPStreamsPlayerNative {...nativeProps} ref={nativeRef} />;
@@ -22,6 +22,7 @@ export interface NativeProps extends ViewProps {
22
22
  startAt?: Double;
23
23
  enableDownload?: boolean;
24
24
  showDefaultCaptions?: boolean;
25
+ downloadMetadata?: string;
25
26
 
26
27
  // Event props for receiving data from native methods
27
28
  onCurrentPosition?: DirectEventHandler<{ position: Double }>;
@@ -35,6 +36,7 @@ export interface NativeProps extends ViewProps {
35
36
  onPlaybackSpeedChanged?: DirectEventHandler<{ speed: Double }>;
36
37
  onIsLoadingChanged?: DirectEventHandler<{ isLoading: boolean }>;
37
38
  onError?: DirectEventHandler<ErrorEvent>;
39
+ onAccessTokenExpired?: DirectEventHandler<{ videoId: string }>;
38
40
  }
39
41
 
40
42
  interface TPStreamsPlayerViewCommands {
@@ -56,6 +58,10 @@ interface TPStreamsPlayerViewCommands {
56
58
  getPlaybackSpeed: (
57
59
  viewRef: React.ElementRef<HostComponent<NativeProps>>
58
60
  ) => void;
61
+ setNewAccessToken: (
62
+ viewRef: React.ElementRef<HostComponent<NativeProps>>,
63
+ newToken: string
64
+ ) => void;
59
65
  }
60
66
 
61
67
  export const Commands = codegenNativeCommands<TPStreamsPlayerViewCommands>({
@@ -68,6 +74,7 @@ export const Commands = codegenNativeCommands<TPStreamsPlayerViewCommands>({
68
74
  'getDuration',
69
75
  'isPlaying',
70
76
  'getPlaybackSpeed',
77
+ 'setNewAccessToken',
71
78
  ],
72
79
  });
73
80