react-native-tpstreams 1.0.2 → 1.0.3
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/android/gradle.properties +1 -1
- package/android/src/main/java/com/tpstreams/TPStreamsDownloadModule.kt +44 -34
- package/ios/TPStreamsDownloadModule.swift +42 -4
- package/lib/module/TPStreamsDownload.js +5 -0
- package/lib/module/TPStreamsDownload.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/TPStreamsDownload.d.ts +6 -0
- package/lib/typescript/src/TPStreamsDownload.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TPStreamsDownload.tsx +18 -0
- package/src/index.tsx +2 -0
|
@@ -6,6 +6,7 @@ import com.facebook.react.bridge.Arguments
|
|
|
6
6
|
import com.facebook.react.bridge.ReactMethod
|
|
7
7
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
8
|
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
9
|
+
import com.facebook.react.bridge.WritableMap
|
|
9
10
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
10
11
|
import com.tpstreams.player.download.DownloadClient
|
|
11
12
|
import com.tpstreams.player.download.DownloadItem
|
|
@@ -68,31 +69,56 @@ class TPStreamsDownloadModule(private val reactContext: ReactApplicationContext)
|
|
|
68
69
|
|
|
69
70
|
val result = Arguments.createArray()
|
|
70
71
|
for (item in currentDownloads) {
|
|
71
|
-
val map =
|
|
72
|
-
map.putString("videoId", item.assetId)
|
|
73
|
-
map.putString("title", item.title)
|
|
74
|
-
item.thumbnailUrl?.let { map.putString("thumbnailUrl", it) }
|
|
75
|
-
map.putDouble("totalBytes", item.totalBytes.toDouble())
|
|
76
|
-
map.putDouble("downloadedBytes", item.downloadedBytes.toDouble())
|
|
77
|
-
map.putDouble("progressPercentage", item.progressPercentage.toDouble())
|
|
78
|
-
map.putString("state", downloadClient.getDownloadStatus(item.assetId))
|
|
79
|
-
|
|
80
|
-
val metadataJson = org.json.JSONObject()
|
|
81
|
-
item.metadata.forEach { (key, value) ->
|
|
82
|
-
metadataJson.put(key, value)
|
|
83
|
-
}
|
|
84
|
-
map.putString("metadata", metadataJson.toString())
|
|
85
|
-
|
|
72
|
+
val map = createDownloadItemMap(item)
|
|
86
73
|
result.pushMap(map)
|
|
87
74
|
}
|
|
88
|
-
|
|
89
75
|
emitEvent("onDownloadProgressChanged", result)
|
|
90
|
-
|
|
91
76
|
} catch (e: Exception) {
|
|
92
77
|
Log.e(TAG, "Error in onDownloadsChanged: ${e.message}", e)
|
|
93
78
|
}
|
|
94
79
|
}
|
|
95
80
|
|
|
81
|
+
override fun onDownloadStateChanged(downloadItem: DownloadItem, error: Exception?) {
|
|
82
|
+
try {
|
|
83
|
+
val map = Arguments.createMap()
|
|
84
|
+
val downloadItemMap = createDownloadItemMap(downloadItem)
|
|
85
|
+
map.putMap("downloadItem", downloadItemMap)
|
|
86
|
+
|
|
87
|
+
if (error != null) {
|
|
88
|
+
val errorMap = Arguments.createMap()
|
|
89
|
+
errorMap.putString("message", error.message ?: "Unknown error")
|
|
90
|
+
errorMap.putString("type", error.javaClass.simpleName)
|
|
91
|
+
map.putMap("error", errorMap)
|
|
92
|
+
} else {
|
|
93
|
+
map.putNull("error")
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
emitEvent("onDownloadStateChanged", map)
|
|
97
|
+
|
|
98
|
+
} catch (e: Exception) {
|
|
99
|
+
Log.e(TAG, "Error in onDownloadStateChanged: ${e.message}", e)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private fun createDownloadItemMap(item: DownloadItem): WritableMap {
|
|
104
|
+
val map = Arguments.createMap()
|
|
105
|
+
map.putString("videoId", item.assetId)
|
|
106
|
+
map.putString("title", item.title)
|
|
107
|
+
item.thumbnailUrl?.let { map.putString("thumbnailUrl", it) }
|
|
108
|
+
map.putDouble("totalBytes", item.totalBytes.toDouble())
|
|
109
|
+
map.putDouble("downloadedBytes", item.downloadedBytes.toDouble())
|
|
110
|
+
map.putDouble("progressPercentage", item.progressPercentage.toDouble())
|
|
111
|
+
map.putString("state", downloadClient.getDownloadStatus(item.assetId))
|
|
112
|
+
|
|
113
|
+
val metadataJson = org.json.JSONObject()
|
|
114
|
+
item.metadata.forEach { (key, value) ->
|
|
115
|
+
metadataJson.put(key, value)
|
|
116
|
+
}
|
|
117
|
+
map.putString("metadata", metadataJson.toString())
|
|
118
|
+
|
|
119
|
+
return map
|
|
120
|
+
}
|
|
121
|
+
|
|
96
122
|
private fun emitEvent(eventName: String, data: Any) {
|
|
97
123
|
reactContext
|
|
98
124
|
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
@@ -183,23 +209,7 @@ class TPStreamsDownloadModule(private val reactContext: ReactApplicationContext)
|
|
|
183
209
|
val result = Arguments.createArray()
|
|
184
210
|
|
|
185
211
|
for (item in downloadItems) {
|
|
186
|
-
val map =
|
|
187
|
-
map.putString("videoId", item.assetId)
|
|
188
|
-
map.putString("title", item.title)
|
|
189
|
-
item.thumbnailUrl?.let { map.putString("thumbnailUrl", it) }
|
|
190
|
-
map.putDouble("totalBytes", item.totalBytes.toDouble())
|
|
191
|
-
map.putDouble("downloadedBytes", item.downloadedBytes.toDouble())
|
|
192
|
-
map.putDouble("progressPercentage", item.progressPercentage.toDouble())
|
|
193
|
-
map.putString("state", downloadClient.getDownloadStatus(item.assetId))
|
|
194
|
-
|
|
195
|
-
try {
|
|
196
|
-
val metadataJson = org.json.JSONObject(item.metadata as Map<*, *>)
|
|
197
|
-
map.putString("metadata", metadataJson.toString())
|
|
198
|
-
} catch (e: Exception) {
|
|
199
|
-
Log.w(TAG, "Error serializing metadata for item ${item.assetId}: ${e.message}")
|
|
200
|
-
map.putString("metadata", "{}")
|
|
201
|
-
}
|
|
202
|
-
|
|
212
|
+
val map = createDownloadItemMap(item)
|
|
203
213
|
result.pushMap(map)
|
|
204
214
|
}
|
|
205
215
|
|
|
@@ -3,11 +3,13 @@ import React
|
|
|
3
3
|
import TPStreamsSDK
|
|
4
4
|
|
|
5
5
|
private enum PlayerConstants {
|
|
6
|
-
static let
|
|
6
|
+
static let statusQueued = "Queued"
|
|
7
7
|
static let statusDownloading = "Downloading"
|
|
8
8
|
static let statusPaused = "Paused"
|
|
9
9
|
static let statusCompleted = "Completed"
|
|
10
10
|
static let statusFailed = "Failed"
|
|
11
|
+
static let statusRemoving = "Removing"
|
|
12
|
+
static let statusRestarting = "Restarting"
|
|
11
13
|
static let statusUnknown = "Unknown"
|
|
12
14
|
}
|
|
13
15
|
|
|
@@ -64,36 +66,46 @@ class TPStreamsDownloadModule: RCTEventEmitter, TPStreamsDownloadDelegate {
|
|
|
64
66
|
|
|
65
67
|
func onDelete(assetId: String) {
|
|
66
68
|
if isListening {
|
|
69
|
+
if let offlineAsset = getOfflineAsset(assetId: assetId) {
|
|
70
|
+
notifyDownloadStateChanged(offlineAsset: offlineAsset)
|
|
71
|
+
}
|
|
67
72
|
notifyDownloadsChange()
|
|
68
73
|
}
|
|
69
74
|
}
|
|
70
75
|
|
|
71
76
|
func onStart(offlineAsset: OfflineAsset) {
|
|
72
77
|
if isListening {
|
|
78
|
+
notifyDownloadStateChanged(offlineAsset: offlineAsset)
|
|
73
79
|
notifyDownloadsChange()
|
|
74
80
|
}
|
|
75
81
|
}
|
|
76
82
|
|
|
77
83
|
func onComplete(offlineAsset: OfflineAsset) {
|
|
78
84
|
if isListening {
|
|
85
|
+
notifyDownloadStateChanged(offlineAsset: offlineAsset)
|
|
79
86
|
notifyDownloadsChange()
|
|
80
87
|
}
|
|
81
88
|
}
|
|
82
89
|
|
|
83
90
|
func onPause(offlineAsset: OfflineAsset) {
|
|
84
91
|
if isListening {
|
|
92
|
+
notifyDownloadStateChanged(offlineAsset: offlineAsset)
|
|
85
93
|
notifyDownloadsChange()
|
|
86
94
|
}
|
|
87
95
|
}
|
|
88
96
|
|
|
89
97
|
func onResume(offlineAsset: OfflineAsset) {
|
|
90
98
|
if isListening {
|
|
99
|
+
notifyDownloadStateChanged(offlineAsset: offlineAsset)
|
|
91
100
|
notifyDownloadsChange()
|
|
92
101
|
}
|
|
93
102
|
}
|
|
94
103
|
|
|
95
104
|
func onCanceled(assetId: String) {
|
|
96
105
|
if isListening {
|
|
106
|
+
if let offlineAsset = getOfflineAsset(assetId: assetId) {
|
|
107
|
+
notifyDownloadStateChanged(offlineAsset: offlineAsset)
|
|
108
|
+
}
|
|
97
109
|
notifyDownloadsChange()
|
|
98
110
|
}
|
|
99
111
|
}
|
|
@@ -114,6 +126,28 @@ class TPStreamsDownloadModule: RCTEventEmitter, TPStreamsDownloadDelegate {
|
|
|
114
126
|
}
|
|
115
127
|
}
|
|
116
128
|
|
|
129
|
+
private func notifyDownloadStateChanged(offlineAsset: OfflineAsset, error: Error? = nil) {
|
|
130
|
+
DispatchQueue.main.async { [weak self] in
|
|
131
|
+
guard let self = self else { return }
|
|
132
|
+
|
|
133
|
+
let downloadItem = self.mapOfflineAssetToDict(offlineAsset)
|
|
134
|
+
|
|
135
|
+
var eventData: [String: Any] = [:]
|
|
136
|
+
eventData["downloadItem"] = downloadItem
|
|
137
|
+
|
|
138
|
+
if let error = error {
|
|
139
|
+
eventData["error"] = [
|
|
140
|
+
"message": error.localizedDescription,
|
|
141
|
+
"type": String(describing: type(of: error))
|
|
142
|
+
]
|
|
143
|
+
} else {
|
|
144
|
+
eventData["error"] = NSNull()
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
self.sendEvent(withName: "onDownloadStateChanged", body: eventData)
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
117
151
|
private func getAllDownloadItems() -> [[String: Any]] {
|
|
118
152
|
let offlineAssets = downloadManager.getAllOfflineAssets()
|
|
119
153
|
return offlineAssets.map { mapOfflineAssetToDict($0) }
|
|
@@ -230,7 +264,7 @@ class TPStreamsDownloadModule: RCTEventEmitter, TPStreamsDownloadDelegate {
|
|
|
230
264
|
if let asset = offlineAssets.first(where: { $0.assetId == videoId }) {
|
|
231
265
|
resolve(mapDownloadStatus(Status(rawValue: asset.status)))
|
|
232
266
|
} else {
|
|
233
|
-
resolve(PlayerConstants.
|
|
267
|
+
resolve(PlayerConstants.statusUnknown)
|
|
234
268
|
}
|
|
235
269
|
}
|
|
236
270
|
}
|
|
@@ -260,13 +294,17 @@ class TPStreamsDownloadModule: RCTEventEmitter, TPStreamsDownloadDelegate {
|
|
|
260
294
|
case .failed:
|
|
261
295
|
return PlayerConstants.statusFailed
|
|
262
296
|
default:
|
|
263
|
-
return PlayerConstants.
|
|
297
|
+
return PlayerConstants.statusUnknown
|
|
264
298
|
}
|
|
265
299
|
}
|
|
266
300
|
|
|
301
|
+
private func getOfflineAsset(assetId: String) -> OfflineAsset? {
|
|
302
|
+
return downloadManager.getAllOfflineAssets().first(where: { $0.assetId == assetId })
|
|
303
|
+
}
|
|
304
|
+
|
|
267
305
|
@objc
|
|
268
306
|
override func supportedEvents() -> [String] {
|
|
269
|
-
return ["onDownloadProgressChanged"]
|
|
307
|
+
return ["onDownloadProgressChanged", "onDownloadStateChanged"]
|
|
270
308
|
}
|
|
271
309
|
|
|
272
310
|
@objc
|
|
@@ -14,6 +14,11 @@ export function removeDownloadProgressListener() {
|
|
|
14
14
|
export function onDownloadProgressChanged(listener) {
|
|
15
15
|
return downloadEventEmitter.addListener('onDownloadProgressChanged', listener);
|
|
16
16
|
}
|
|
17
|
+
export function onDownloadStateChanged(listener) {
|
|
18
|
+
return downloadEventEmitter.addListener('onDownloadStateChanged', event => {
|
|
19
|
+
listener(event.downloadItem, event.error);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
17
22
|
export function pauseDownload(videoId) {
|
|
18
23
|
return TPStreamsDownload.pauseDownload(videoId);
|
|
19
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","NativeEventEmitter","TPStreamsDownload","downloadEventEmitter","addDownloadProgressListener","removeDownloadProgressListener","onDownloadProgressChanged","listener","addListener","pauseDownload","videoId","resumeDownload","removeDownload","isDownloaded","isDownloading","isPaused","getDownloadStatus","getAllDownloads"],"sourceRoot":"../../src","sources":["TPStreamsDownload.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAGhE,MAAM;EAAEC;AAAkB,CAAC,GAAGF,aAAa;
|
|
1
|
+
{"version":3,"names":["NativeModules","NativeEventEmitter","TPStreamsDownload","downloadEventEmitter","addDownloadProgressListener","removeDownloadProgressListener","onDownloadProgressChanged","listener","addListener","onDownloadStateChanged","event","downloadItem","error","pauseDownload","videoId","resumeDownload","removeDownload","isDownloaded","isDownloading","isPaused","getDownloadStatus","getAllDownloads"],"sourceRoot":"../../src","sources":["TPStreamsDownload.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAGhE,MAAM;EAAEC;AAAkB,CAAC,GAAGF,aAAa;AA4B3C,MAAMG,oBAAoB,GAAG,IAAIF,kBAAkB,CAACC,iBAAiB,CAAC;AAEtE,OAAO,SAASE,2BAA2BA,CAAA,EAAkB;EAC3D,OAAOF,iBAAiB,CAACE,2BAA2B,CAAC,CAAC;AACxD;AAEA,OAAO,SAASC,8BAA8BA,CAAA,EAAkB;EAC9D,OAAOH,iBAAiB,CAACG,8BAA8B,CAAC,CAAC;AAC3D;AAEA,OAAO,SAASC,yBAAyBA,CACvCC,QAAkC,EACb;EACrB,OAAOJ,oBAAoB,CAACK,WAAW,CACrC,2BAA2B,EAC3BD,QACF,CAAC;AACH;AAEA,OAAO,SAASE,sBAAsBA,CACpCF,QAAqC,EAChB;EACrB,OAAOJ,oBAAoB,CAACK,WAAW,CAAC,wBAAwB,EAAGE,KAAK,IAAK;IAC3EH,QAAQ,CAACG,KAAK,CAACC,YAAY,EAAED,KAAK,CAACE,KAAK,CAAC;EAC3C,CAAC,CAAC;AACJ;AAEA,OAAO,SAASC,aAAaA,CAACC,OAAe,EAAiB;EAC5D,OAAOZ,iBAAiB,CAACW,aAAa,CAACC,OAAO,CAAC;AACjD;AAEA,OAAO,SAASC,cAAcA,CAACD,OAAe,EAAiB;EAC7D,OAAOZ,iBAAiB,CAACa,cAAc,CAACD,OAAO,CAAC;AAClD;AAEA,OAAO,SAASE,cAAcA,CAACF,OAAe,EAAiB;EAC7D,OAAOZ,iBAAiB,CAACc,cAAc,CAACF,OAAO,CAAC;AAClD;AAEA,OAAO,SAASG,YAAYA,CAACH,OAAe,EAAoB;EAC9D,OAAOZ,iBAAiB,CAACe,YAAY,CAACH,OAAO,CAAC;AAChD;AAEA,OAAO,SAASI,aAAaA,CAACJ,OAAe,EAAoB;EAC/D,OAAOZ,iBAAiB,CAACgB,aAAa,CAACJ,OAAO,CAAC;AACjD;AAEA,OAAO,SAASK,QAAQA,CAACL,OAAe,EAAoB;EAC1D,OAAOZ,iBAAiB,CAACiB,QAAQ,CAACL,OAAO,CAAC;AAC5C;AAEA,OAAO,SAASM,iBAAiBA,CAACN,OAAe,EAAmB;EAClE,OAAOZ,iBAAiB,CAACkB,iBAAiB,CAACN,OAAO,CAAC;AACrD;AAEA,OAAO,SAASO,eAAeA,CAAA,EAA4B;EACzD,OAAOnB,iBAAiB,CAACmB,eAAe,CAAC,CAAC;AAC5C","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export * from './TPStreamsPlayerViewNativeComponent';
|
|
|
7
7
|
|
|
8
8
|
// Export the wrapper component as TPStreamsPlayerView
|
|
9
9
|
export { default as TPStreamsPlayerView } from "./TPStreamsPlayer.js";
|
|
10
|
-
export { pauseDownload, resumeDownload, removeDownload, isDownloaded, isDownloading, isPaused, getDownloadStatus, getAllDownloads, addDownloadProgressListener, removeDownloadProgressListener, onDownloadProgressChanged } from "./TPStreamsDownload.js";
|
|
10
|
+
export { pauseDownload, resumeDownload, removeDownload, isDownloaded, isDownloading, isPaused, getDownloadStatus, getAllDownloads, addDownloadProgressListener, removeDownloadProgressListener, onDownloadProgressChanged, onDownloadStateChanged } from "./TPStreamsDownload.js";
|
|
11
11
|
const TPStreamsModule = NativeModules.TPStreams;
|
|
12
12
|
export const TPStreams = {
|
|
13
13
|
initialize: organizationId => {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","default","TPStreamsPlayerNative","TPStreamsPlayerView","pauseDownload","resumeDownload","removeDownload","isDownloaded","isDownloading","isPaused","getDownloadStatus","getAllDownloads","addDownloadProgressListener","removeDownloadProgressListener","onDownloadProgressChanged","TPStreamsModule","TPStreams","initialize","organizationId"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C;AACA,SAASC,OAAO,IAAIC,qBAAqB,QAAQ,sCAAsC;AACvF,cAAc,sCAAsC;;AAEpD;AACA,SAASD,OAAO,IAAIE,mBAAmB,QAAQ,sBAAmB;AAGlE,SACEC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,2BAA2B,EAC3BC,8BAA8B,EAC9BC,yBAAyB,
|
|
1
|
+
{"version":3,"names":["NativeModules","default","TPStreamsPlayerNative","TPStreamsPlayerView","pauseDownload","resumeDownload","removeDownload","isDownloaded","isDownloading","isPaused","getDownloadStatus","getAllDownloads","addDownloadProgressListener","removeDownloadProgressListener","onDownloadProgressChanged","onDownloadStateChanged","TPStreamsModule","TPStreams","initialize","organizationId"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C;AACA,SAASC,OAAO,IAAIC,qBAAqB,QAAQ,sCAAsC;AACvF,cAAc,sCAAsC;;AAEpD;AACA,SAASD,OAAO,IAAIE,mBAAmB,QAAQ,sBAAmB;AAGlE,SACEC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,2BAA2B,EAC3BC,8BAA8B,EAC9BC,yBAAyB,EACzBC,sBAAsB,QAKjB,wBAAqB;AAE5B,MAAMC,eAAe,GAAGhB,aAAa,CAACiB,SAAS;AAE/C,OAAO,MAAMA,SAAS,GAAG;EACvBC,UAAU,EAAGC,cAAsB,IAAW;IAC5CH,eAAe,CAACE,UAAU,CAACC,cAAc,CAAC;EAC5C;AACF,CAAC","ignoreList":[]}
|
|
@@ -11,9 +11,15 @@ export interface DownloadItem {
|
|
|
11
11
|
}
|
|
12
12
|
export type DownloadProgressChange = DownloadItem;
|
|
13
13
|
export type DownloadProgressListener = (downloads: DownloadProgressChange[]) => void;
|
|
14
|
+
export interface DownloadError {
|
|
15
|
+
message: string;
|
|
16
|
+
type: string;
|
|
17
|
+
}
|
|
18
|
+
export type DownloadStateChangeListener = (downloadItem: DownloadItem, error: DownloadError | null) => void;
|
|
14
19
|
export declare function addDownloadProgressListener(): Promise<void>;
|
|
15
20
|
export declare function removeDownloadProgressListener(): Promise<void>;
|
|
16
21
|
export declare function onDownloadProgressChanged(listener: DownloadProgressListener): EmitterSubscription;
|
|
22
|
+
export declare function onDownloadStateChanged(listener: DownloadStateChangeListener): EmitterSubscription;
|
|
17
23
|
export declare function pauseDownload(videoId: string): Promise<void>;
|
|
18
24
|
export declare function resumeDownload(videoId: string): Promise<void>;
|
|
19
25
|
export declare function removeDownload(videoId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TPStreamsDownload.d.ts","sourceRoot":"","sources":["../../../src/TPStreamsDownload.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,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,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAClD,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,sBAAsB,EAAE,KAChC,IAAI,CAAC;AAIV,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,wBAAwB,GACjC,mBAAmB,CAKrB;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":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,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,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAClD,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,sBAAsB,EAAE,KAChC,IAAI,CAAC;AAEV,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,2BAA2B,GAAG,CACxC,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,aAAa,GAAG,IAAI,KACxB,IAAI,CAAC;AAIV,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,wBAAwB,GACjC,mBAAmB,CAKrB;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,2BAA2B,GACpC,mBAAmB,CAIrB;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"}
|
|
@@ -2,7 +2,7 @@ export { default as TPStreamsPlayerNative } from './TPStreamsPlayerViewNativeCom
|
|
|
2
2
|
export * from './TPStreamsPlayerViewNativeComponent';
|
|
3
3
|
export { default as TPStreamsPlayerView } from './TPStreamsPlayer';
|
|
4
4
|
export type { TPStreamsPlayerRef } from './TPStreamsPlayer';
|
|
5
|
-
export { pauseDownload, resumeDownload, removeDownload, isDownloaded, isDownloading, isPaused, getDownloadStatus, getAllDownloads, addDownloadProgressListener, removeDownloadProgressListener, onDownloadProgressChanged, type DownloadItem, type DownloadProgressChange, type DownloadProgressListener, } from './TPStreamsDownload';
|
|
5
|
+
export { pauseDownload, resumeDownload, removeDownload, isDownloaded, isDownloading, isPaused, getDownloadStatus, getAllDownloads, addDownloadProgressListener, removeDownloadProgressListener, onDownloadProgressChanged, onDownloadStateChanged, type DownloadItem, type DownloadProgressChange, type DownloadProgressListener, type DownloadStateChangeListener, } from './TPStreamsDownload';
|
|
6
6
|
export declare const TPStreams: {
|
|
7
7
|
initialize: (organizationId: string) => void;
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AACxF,cAAc,sCAAsC,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AACxF,cAAc,sCAAsC,CAAC;AAGrD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,GACjC,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,SAAS;iCACS,MAAM,KAAG,IAAI;CAG3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -19,6 +19,16 @@ export type DownloadProgressListener = (
|
|
|
19
19
|
downloads: DownloadProgressChange[]
|
|
20
20
|
) => void;
|
|
21
21
|
|
|
22
|
+
export interface DownloadError {
|
|
23
|
+
message: string;
|
|
24
|
+
type: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type DownloadStateChangeListener = (
|
|
28
|
+
downloadItem: DownloadItem,
|
|
29
|
+
error: DownloadError | null
|
|
30
|
+
) => void;
|
|
31
|
+
|
|
22
32
|
const downloadEventEmitter = new NativeEventEmitter(TPStreamsDownload);
|
|
23
33
|
|
|
24
34
|
export function addDownloadProgressListener(): Promise<void> {
|
|
@@ -38,6 +48,14 @@ export function onDownloadProgressChanged(
|
|
|
38
48
|
);
|
|
39
49
|
}
|
|
40
50
|
|
|
51
|
+
export function onDownloadStateChanged(
|
|
52
|
+
listener: DownloadStateChangeListener
|
|
53
|
+
): EmitterSubscription {
|
|
54
|
+
return downloadEventEmitter.addListener('onDownloadStateChanged', (event) => {
|
|
55
|
+
listener(event.downloadItem, event.error);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
41
59
|
export function pauseDownload(videoId: string): Promise<void> {
|
|
42
60
|
return TPStreamsDownload.pauseDownload(videoId);
|
|
43
61
|
}
|
package/src/index.tsx
CHANGED
|
@@ -19,9 +19,11 @@ export {
|
|
|
19
19
|
addDownloadProgressListener,
|
|
20
20
|
removeDownloadProgressListener,
|
|
21
21
|
onDownloadProgressChanged,
|
|
22
|
+
onDownloadStateChanged,
|
|
22
23
|
type DownloadItem,
|
|
23
24
|
type DownloadProgressChange,
|
|
24
25
|
type DownloadProgressListener,
|
|
26
|
+
type DownloadStateChangeListener,
|
|
25
27
|
} from './TPStreamsDownload';
|
|
26
28
|
|
|
27
29
|
const TPStreamsModule = NativeModules.TPStreams;
|