@takeoffmedia/react-native-penthera 0.2.0 → 0.2.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/ios/Catalog.swift +7 -2
- package/ios/Penthera.swift +76 -89
- package/ios/Util.swift +20 -0
- package/lib/commonjs/hooks/usePenthera/usePenthera.js +16 -11
- package/lib/commonjs/hooks/usePenthera/usePenthera.js.map +1 -1
- package/lib/module/hooks/usePenthera/usePenthera.js +16 -11
- package/lib/module/hooks/usePenthera/usePenthera.js.map +1 -1
- package/lib/typescript/hooks/usePenthera/usePenthera.d.ts.map +1 -1
- package/lib/typescript/hooks/usePenthera/usePenthera.types.d.ts +4 -2
- package/lib/typescript/hooks/usePenthera/usePenthera.types.d.ts.map +1 -1
- package/lib/typescript/interface/PentheraTypes.d.ts +5 -1
- package/lib/typescript/interface/PentheraTypes.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/usePenthera/usePenthera.tsx +23 -12
- package/src/hooks/usePenthera/usePenthera.types.ts +5 -2
- package/src/interface/PentheraTypes.ts +6 -1
- package/ios/Penthera copy.swift +0 -501
- package/ios/Penthera.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/Penthera.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/Penthera.xcodeproj/project.xcworkspace/xcuserdata/joseguerreroot.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Penthera.xcodeproj/xcuserdata/joseguerreroot.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -104
- package/ios/Penthera.xcodeproj/xcuserdata/joseguerreroot.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
package/ios/Catalog.swift
CHANGED
|
@@ -52,14 +52,14 @@ struct DataItem: Codable {
|
|
|
52
52
|
var customFields: CustomFields?
|
|
53
53
|
var classification: Classification?
|
|
54
54
|
var estimatedSize: Int?
|
|
55
|
-
var dataOffers: Array<
|
|
55
|
+
var dataOffers: Array<Category>?
|
|
56
56
|
var expiryDate: String?
|
|
57
57
|
var expiryAfterPlay: String?
|
|
58
58
|
var expiryAfterDownload: String?
|
|
59
59
|
var isExpired: Bool?
|
|
60
60
|
var inForcedExpire: Bool?
|
|
61
61
|
var effectiveExpiryDate: String?
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
struct Offers: Codable {
|
|
@@ -81,6 +81,11 @@ struct Classification: Codable {
|
|
|
81
81
|
var name: String = ""
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
struct Category: Codable {
|
|
85
|
+
var bold: Bool = false
|
|
86
|
+
var label: String = ""
|
|
87
|
+
}
|
|
88
|
+
|
|
84
89
|
struct CustomFields: Codable {
|
|
85
90
|
var CCFlag, DLFlag, DRM, HDFlag: String?
|
|
86
91
|
var IngestionHash, Now, PayloadId, Premiere: String?
|
package/ios/Penthera.swift
CHANGED
|
@@ -25,7 +25,7 @@ class Penthera: RCTEventEmitter, VirtuosoDownloadEngineNotificationsDelegate {
|
|
|
25
25
|
virtuoso.startup(engineConfig) { status in
|
|
26
26
|
switch(status) {
|
|
27
27
|
case .vde_EngineStartupSuccess:
|
|
28
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: "Virtuoso Success", assetId: "test", body: "asset")
|
|
28
|
+
//EventEmitter.sharedInstance.dispatch(name: "penthera", code: "Virtuoso Success", assetId: "test", body: "asset")
|
|
29
29
|
resolve("Success")
|
|
30
30
|
case .vde_EngineStartupAlreadyStarted:
|
|
31
31
|
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Aready Started")
|
|
@@ -70,94 +70,6 @@ class Penthera: RCTEventEmitter, VirtuosoDownloadEngineNotificationsDelegate {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
@objc(getDownloads:withResolver:withRejecter:)
|
|
74
|
-
func getDownloads(blank: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
75
|
-
let completedAssets = VirtuosoAsset.completedAssets(withAvailabilityFilter: false)
|
|
76
|
-
let pendingAssets = VirtuosoAsset.pendingAssets(withAvailabilityFilter: false)
|
|
77
|
-
var offlineCatalogs: [OfflineCatalog] = []
|
|
78
|
-
|
|
79
|
-
for case let va as VirtuosoAsset in completedAssets {
|
|
80
|
-
let thumbnail = va.findAllAncillaries(withTag: "thumbnail").first
|
|
81
|
-
let show = va.findAllAncillaries(withTag: "show").first
|
|
82
|
-
let thumbnails = Thumbnails(
|
|
83
|
-
thumbnail: thumbnail?.fileDownloadURL ?? "",
|
|
84
|
-
show: show?.fileDownloadURL ?? ""
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
let expiryDate = va.expiryDate // Assuming this is a valid Date object
|
|
88
|
-
let effectiveExpiryDate = va.effectiveExpiryDate // Assuming this is a valid Date object
|
|
89
|
-
|
|
90
|
-
let dataItem = DataItem(
|
|
91
|
-
title: va.userInfo?["title"] as? String,
|
|
92
|
-
seasonId: va.userInfo?["seasonId"] as? String,
|
|
93
|
-
seasonTitle: va.userInfo?["seasonTitle"] as? String,
|
|
94
|
-
duration: va.duration,
|
|
95
|
-
estimatedSize: Int(va.estimatedSize),
|
|
96
|
-
dataOffers: parseDataOffer(offer: va.userInfo?["dataOffers"] as Any),
|
|
97
|
-
expiryDate: dateToString(expiryDate),
|
|
98
|
-
expiryAfterPlay: timeIntervalToString(va.expiryAfterPlay),
|
|
99
|
-
expiryAfterDownload: timeIntervalToString(va.expiryAfterDownload),
|
|
100
|
-
isExpired: va.isExpired,
|
|
101
|
-
inForcedExpire: va.inForcedExpire,
|
|
102
|
-
effectiveExpiryDate: dateToString(effectiveExpiryDate!)
|
|
103
|
-
)
|
|
104
|
-
let catalog = OfflineCatalog(
|
|
105
|
-
id: va.assetID,
|
|
106
|
-
title: va.description,
|
|
107
|
-
data: dataItem,
|
|
108
|
-
thumbnails: thumbnails,
|
|
109
|
-
isCompleted: va.isPlayable,
|
|
110
|
-
isPaused: va.isPaused,
|
|
111
|
-
percentage: Float(va.fractionComplete) / Float(va.estimatedSize)
|
|
112
|
-
)
|
|
113
|
-
offlineCatalogs.append(catalog)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
for case let va as VirtuosoAsset in pendingAssets {
|
|
117
|
-
|
|
118
|
-
let thumbnail = va.findAllAncillaries(withTag: "thumbnail").first
|
|
119
|
-
let show = va.findAllAncillaries(withTag: "show").first
|
|
120
|
-
let thumbnails = Thumbnails(
|
|
121
|
-
thumbnail: thumbnail?.fileDownloadURL ?? "",
|
|
122
|
-
show: show?.fileDownloadURL ?? ""
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
let expiryDate = va.expiryDate // Assuming this is a valid Date object
|
|
126
|
-
let effectiveExpiryDate = va.effectiveExpiryDate // Assuming this is a valid Date object
|
|
127
|
-
let dataItem = DataItem(
|
|
128
|
-
title: va.userInfo?["title"] as? String,
|
|
129
|
-
seasonId: va.userInfo?["seasonId"] as? String,
|
|
130
|
-
seasonTitle: va.userInfo?["seasonTitle"] as? String,
|
|
131
|
-
duration: va.duration,
|
|
132
|
-
estimatedSize: Int(va.estimatedSize),
|
|
133
|
-
dataOffers: parseDataOffer(offer: va.userInfo?["dataOffers"] as Any),
|
|
134
|
-
expiryAfterPlay: timeIntervalToString(va.expiryAfterPlay),
|
|
135
|
-
expiryAfterDownload: timeIntervalToString(va.expiryAfterDownload),
|
|
136
|
-
isExpired: va.isExpired
|
|
137
|
-
)
|
|
138
|
-
|
|
139
|
-
let catalog = OfflineCatalog(
|
|
140
|
-
id: va.assetID,
|
|
141
|
-
title: va.description,
|
|
142
|
-
data: dataItem,
|
|
143
|
-
thumbnails: thumbnails,
|
|
144
|
-
isCompleted: false,
|
|
145
|
-
isPaused: va.isPaused,
|
|
146
|
-
percentage: Float(va.fractionComplete) / Float(va.estimatedSize)
|
|
147
|
-
)
|
|
148
|
-
offlineCatalogs.append(catalog)
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
let decoder = JSONEncoder()
|
|
152
|
-
do {
|
|
153
|
-
let data = try decoder.encode(offlineCatalogs)
|
|
154
|
-
let json = String(data: data, encoding: .utf8)!
|
|
155
|
-
resolve(json)
|
|
156
|
-
} catch {
|
|
157
|
-
reject("penthere", error.localizedDescription, error)
|
|
158
|
-
}
|
|
159
|
-
//resolve(downloadComplete.map{ ($0 as? VirtuosoAsset)?.assetID })
|
|
160
|
-
}
|
|
161
73
|
|
|
162
74
|
func getDownloadedAsset(assetID: String) -> VirtuosoAsset? {
|
|
163
75
|
// assets that have finished downloading
|
|
@@ -329,6 +241,81 @@ class Penthera: RCTEventEmitter, VirtuosoDownloadEngineNotificationsDelegate {
|
|
|
329
241
|
}
|
|
330
242
|
}
|
|
331
243
|
|
|
244
|
+
@objc(getDownloads:withResolver:withRejecter:)
|
|
245
|
+
func getDownloads(blank: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
246
|
+
let completedAssets = VirtuosoAsset.completedAssets(withAvailabilityFilter: false)
|
|
247
|
+
let pendingAssets = VirtuosoAsset.pendingAssets(withAvailabilityFilter: false)
|
|
248
|
+
var offlineCatalogs: [OfflineCatalog] = []
|
|
249
|
+
|
|
250
|
+
// Process completed and pending assets using a shared function
|
|
251
|
+
func processAsset(_ va: VirtuosoAsset) {
|
|
252
|
+
let thumbnail = va.findAllAncillaries(withTag: "thumbnail").first
|
|
253
|
+
let show = va.findAllAncillaries(withTag: "show").first
|
|
254
|
+
let thumbnails = Thumbnails(
|
|
255
|
+
thumbnail: thumbnail?.fileDownloadURL ?? "",
|
|
256
|
+
show: show?.fileDownloadURL ?? ""
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
let expiryDate = va.expiryDate // Assuming this is a valid Date object
|
|
260
|
+
let effectiveExpiryDate = va.effectiveExpiryDate // Assuming this is a valid Date object
|
|
261
|
+
|
|
262
|
+
var dataItem = DataItem(
|
|
263
|
+
title: va.userInfo?["title"] as? String,
|
|
264
|
+
seasonId: va.userInfo?["seasonId"] as? String,
|
|
265
|
+
seasonTitle: va.userInfo?["seasonTitle"] as? String,
|
|
266
|
+
duration: va.duration,
|
|
267
|
+
estimatedSize: Int(va.estimatedSize),
|
|
268
|
+
dataOffers: parseDataOffersInObject(anyElement: va.userInfo?["dataOffers"] as Any),
|
|
269
|
+
expiryAfterPlay: timeIntervalToString(va.expiryAfterPlay),
|
|
270
|
+
expiryAfterDownload: timeIntervalToString(va.expiryAfterDownload),
|
|
271
|
+
isExpired: va.isExpired,
|
|
272
|
+
inForcedExpire: va.inForcedExpire
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
if let effectiveExpiryDate = effectiveExpiryDate {
|
|
276
|
+
dataItem.effectiveExpiryDate = dateToString(effectiveExpiryDate)
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if let expiryDate = expiryDate {
|
|
280
|
+
dataItem.expiryDate = dateToString(expiryDate)
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if va.isExpired {
|
|
284
|
+
va.delete()
|
|
285
|
+
} else {
|
|
286
|
+
let catalog = OfflineCatalog(
|
|
287
|
+
id: va.assetID,
|
|
288
|
+
title: va.description,
|
|
289
|
+
data: dataItem,
|
|
290
|
+
thumbnails: thumbnails,
|
|
291
|
+
isCompleted: va.isPlayable,
|
|
292
|
+
isPaused: va.isPaused,
|
|
293
|
+
percentage: Float(va.fractionComplete) / Float(va.estimatedSize)
|
|
294
|
+
)
|
|
295
|
+
offlineCatalogs.append(catalog)
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Process completed assets
|
|
300
|
+
for case let va as VirtuosoAsset in completedAssets {
|
|
301
|
+
processAsset(va)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Process pending assets
|
|
305
|
+
for case let va as VirtuosoAsset in pendingAssets {
|
|
306
|
+
processAsset(va)
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
let encoder = JSONEncoder()
|
|
310
|
+
do {
|
|
311
|
+
let data = try encoder.encode(offlineCatalogs)
|
|
312
|
+
let json = String(data: data, encoding: .utf8)!
|
|
313
|
+
resolve(json)
|
|
314
|
+
} catch {
|
|
315
|
+
reject("penthera", error.localizedDescription, error)
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
332
319
|
@objc(delete:withResolver:withRejecter:)
|
|
333
320
|
func delete(assetID: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
334
321
|
//DispatchQueue.global(qos: .background).async {
|
package/ios/Util.swift
CHANGED
|
@@ -101,3 +101,23 @@ func parseDataOffer(offer: Any) -> Array<String> {
|
|
|
101
101
|
|
|
102
102
|
return result
|
|
103
103
|
}
|
|
104
|
+
|
|
105
|
+
func parseDataOffersInObject(anyElement: Any) -> [Category]? {
|
|
106
|
+
// Check if the element is an NSMutableArray.
|
|
107
|
+
if let array = anyElement as? NSMutableArray {
|
|
108
|
+
var classification: [Category] = []
|
|
109
|
+
|
|
110
|
+
for case let value as [String: Any] in array {
|
|
111
|
+
if let bold = value["bold"] as? Bool,
|
|
112
|
+
let label = value["label"] as? String {
|
|
113
|
+
let category = Category(bold: bold, label: label)
|
|
114
|
+
classification.append(category)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return classification
|
|
119
|
+
}
|
|
120
|
+
// The element is not an NSMutableArray, so return nil.
|
|
121
|
+
return nil
|
|
122
|
+
}
|
|
123
|
+
|
|
@@ -22,12 +22,23 @@ const usePenthera = (0, _zustand.create)(set => ({
|
|
|
22
22
|
deleteManyAssets: assetIds => set(state => ({
|
|
23
23
|
assets: state.assets.filter(asset => !assetIds.includes(asset.id))
|
|
24
24
|
})),
|
|
25
|
-
updateAssetsProgress: progress => set(state =>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
updateAssetsProgress: progress => set(state => {
|
|
26
|
+
var _Object$keys;
|
|
27
|
+
const assetId = (_Object$keys = Object.keys(progress)) === null || _Object$keys === void 0 ? void 0 : _Object$keys[0];
|
|
28
|
+
if (assetId && state.assetsProgress && progress && assetId in progress && assetId in state.assetsProgress) {
|
|
29
|
+
var _state$assetsProgress;
|
|
30
|
+
const prevProgress = (_state$assetsProgress = state.assetsProgress) === null || _state$assetsProgress === void 0 ? void 0 : _state$assetsProgress[assetId];
|
|
31
|
+
const newProgress = progress === null || progress === void 0 ? void 0 : progress[assetId];
|
|
32
|
+
if (prevProgress >= newProgress) return {}; // TODO: This a workaround for solution of inconsistent events from penthera module.
|
|
29
33
|
}
|
|
30
|
-
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
assetsProgress: {
|
|
37
|
+
...state.assetsProgress,
|
|
38
|
+
...progress
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}),
|
|
31
42
|
onGetAllAssets: async () => {
|
|
32
43
|
try {
|
|
33
44
|
const assets = await (0, _nativeModules.getDownloads)('');
|
|
@@ -139,12 +150,6 @@ function usePentheraInit(_ref2) {
|
|
|
139
150
|
updateAssetsProgress({
|
|
140
151
|
[info === null || info === void 0 ? void 0 : info.assetId]: '0'
|
|
141
152
|
});
|
|
142
|
-
addAsset({
|
|
143
|
-
id: info.assetId,
|
|
144
|
-
title: '',
|
|
145
|
-
path: '',
|
|
146
|
-
drm: ''
|
|
147
|
-
}); // TODO: Add others field item information
|
|
148
153
|
break;
|
|
149
154
|
case _usePenthera.PentheraEvent.PROGRESS_UPDATED:
|
|
150
155
|
updateAssetsProgress({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_zustand","_usePenthera","_nativeModules","usePenthera","create","set","assets","assetsProgress","loadAssets","addAsset","asset","state","deleteManyAssets","assetIds","filter","includes","id","updateAssetsProgress","progress","onGetAllAssets","getDownloads","length","error","console","log","onDownload","_ref","_item$thumbnails","item","url","drm","dataAndroid","asset_id","content_url","poster","thumbnails","thumbnail","subtitle","dataBySO","Platform","OS","download","JSON","stringify","onDelete","response","deleteMany","deleted","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_zustand","_usePenthera","_nativeModules","usePenthera","create","set","assets","assetsProgress","loadAssets","addAsset","asset","state","deleteManyAssets","assetIds","filter","includes","id","updateAssetsProgress","progress","_Object$keys","assetId","Object","keys","_state$assetsProgress","prevProgress","newProgress","onGetAllAssets","getDownloads","length","error","console","log","onDownload","_ref","_item$thumbnails","item","url","drm","dataAndroid","asset_id","content_url","poster","thumbnails","thumbnail","subtitle","dataBySO","Platform","OS","download","JSON","stringify","onDelete","response","deleteMany","deleted","updatedAssetsProgress","forEach","onPauseDownload","pauseDownload","onPlayVideo","playAsset","exports","onListener","sessionConnect","NEventEmitter","NativeModules","Penthera","eventEmitter","NativeEventEmitter","removeAllListeners","eventListener","addListener","usePentheraInit","_ref2","userId","BACKPLANE_PRIVATE_KEY","BACKPLANE_PUBLIC_KEY","BACKPLANE_URL","isInitialized","setIsInitialized","useState","useEffect","init","initialize","newEvent","info","parse","code","PentheraEvent","VIRTUOSO_SUCCESS","DID_START_DOWNLOADING","PROGRESS_UPDATED","body","DOWNLOAD_COMPLETE","ASSET_RESUME_DOWNLOAD_UPDATED","ASSET_DELETED","CONFIG_ASSET_FAILED","ERROR_DOWNLOAD","PENDING_ASSET_FOUND","_eventListener","remove"],"sourceRoot":"../../../../src","sources":["hooks/usePenthera/usePenthera.tsx"],"mappings":"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"}
|
|
@@ -15,12 +15,23 @@ export const usePenthera = create(set => ({
|
|
|
15
15
|
deleteManyAssets: assetIds => set(state => ({
|
|
16
16
|
assets: state.assets.filter(asset => !assetIds.includes(asset.id))
|
|
17
17
|
})),
|
|
18
|
-
updateAssetsProgress: progress => set(state =>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
updateAssetsProgress: progress => set(state => {
|
|
19
|
+
var _Object$keys;
|
|
20
|
+
const assetId = (_Object$keys = Object.keys(progress)) === null || _Object$keys === void 0 ? void 0 : _Object$keys[0];
|
|
21
|
+
if (assetId && state.assetsProgress && progress && assetId in progress && assetId in state.assetsProgress) {
|
|
22
|
+
var _state$assetsProgress;
|
|
23
|
+
const prevProgress = (_state$assetsProgress = state.assetsProgress) === null || _state$assetsProgress === void 0 ? void 0 : _state$assetsProgress[assetId];
|
|
24
|
+
const newProgress = progress === null || progress === void 0 ? void 0 : progress[assetId];
|
|
25
|
+
if (prevProgress >= newProgress) return {}; // TODO: This a workaround for solution of inconsistent events from penthera module.
|
|
22
26
|
}
|
|
23
|
-
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
assetsProgress: {
|
|
30
|
+
...state.assetsProgress,
|
|
31
|
+
...progress
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}),
|
|
24
35
|
onGetAllAssets: async () => {
|
|
25
36
|
try {
|
|
26
37
|
const assets = await getDownloads('');
|
|
@@ -131,12 +142,6 @@ export function usePentheraInit(_ref2) {
|
|
|
131
142
|
updateAssetsProgress({
|
|
132
143
|
[info === null || info === void 0 ? void 0 : info.assetId]: '0'
|
|
133
144
|
});
|
|
134
|
-
addAsset({
|
|
135
|
-
id: info.assetId,
|
|
136
|
-
title: '',
|
|
137
|
-
path: '',
|
|
138
|
-
drm: ''
|
|
139
|
-
}); // TODO: Add others field item information
|
|
140
145
|
break;
|
|
141
146
|
case PentheraEvent.PROGRESS_UPDATED:
|
|
142
147
|
updateAssetsProgress({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useState","NativeEventEmitter","NativeModules","Platform","create","PentheraEvent","deleteMany","download","getDownloads","initialize","pauseDownload","playAsset","usePenthera","set","assets","assetsProgress","loadAssets","addAsset","asset","state","deleteManyAssets","assetIds","filter","includes","id","updateAssetsProgress","progress","onGetAllAssets","length","error","console","log","onDownload","_ref","_item$thumbnails","item","url","drm","dataAndroid","asset_id","content_url","poster","thumbnails","thumbnail","subtitle","dataBySO","OS","JSON","stringify","onDelete","response","deleted","
|
|
1
|
+
{"version":3,"names":["useEffect","useState","NativeEventEmitter","NativeModules","Platform","create","PentheraEvent","deleteMany","download","getDownloads","initialize","pauseDownload","playAsset","usePenthera","set","assets","assetsProgress","loadAssets","addAsset","asset","state","deleteManyAssets","assetIds","filter","includes","id","updateAssetsProgress","progress","_Object$keys","assetId","Object","keys","_state$assetsProgress","prevProgress","newProgress","onGetAllAssets","length","error","console","log","onDownload","_ref","_item$thumbnails","item","url","drm","dataAndroid","asset_id","content_url","poster","thumbnails","thumbnail","subtitle","dataBySO","OS","JSON","stringify","onDelete","response","deleted","updatedAssetsProgress","forEach","onPauseDownload","onPlayVideo","onListener","sessionConnect","NEventEmitter","Penthera","eventEmitter","removeAllListeners","eventListener","addListener","usePentheraInit","_ref2","userId","BACKPLANE_PRIVATE_KEY","BACKPLANE_PUBLIC_KEY","BACKPLANE_URL","isInitialized","setIsInitialized","init","newEvent","info","parse","code","VIRTUOSO_SUCCESS","DID_START_DOWNLOADING","PROGRESS_UPDATED","body","DOWNLOAD_COMPLETE","ASSET_RESUME_DOWNLOAD_UPDATED","ASSET_DELETED","CONFIG_ASSET_FAILED","ERROR_DOWNLOAD","PENDING_ASSET_FOUND","_eventListener","remove"],"sourceRoot":"../../../../src","sources":["hooks/usePenthera/usePenthera.tsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePenthera.d.ts","sourceRoot":"","sources":["../../../../src/hooks/usePenthera/usePenthera.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,cAAc,
|
|
1
|
+
{"version":3,"file":"usePenthera.d.ts","sourceRoot":"","sources":["../../../../src/hooks/usePenthera/usePenthera.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,cAAc,EAGf,MAAM,qBAAqB,CAAC;AAW7B,eAAO,MAAM,WAAW,6FAiGrB,CAAC;AAUJ,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,GACd,EAAE,qBAAqB,QAoFvB"}
|
|
@@ -11,9 +11,11 @@ export declare enum PentheraEvent {
|
|
|
11
11
|
ERROR_DOWNLOAD = "ERROR_DOWNLOAD",
|
|
12
12
|
PENDING_ASSET_FOUND = "PENDING_ASSET_FOUND"
|
|
13
13
|
}
|
|
14
|
-
type AssetId = string;
|
|
14
|
+
export type AssetId = string;
|
|
15
15
|
type Progress = string;
|
|
16
|
-
export type AssetProgress =
|
|
16
|
+
export type AssetProgress = {
|
|
17
|
+
[key: string]: Progress;
|
|
18
|
+
};
|
|
17
19
|
export type PentheraState = {
|
|
18
20
|
assets: PentheraTypes.ItemCatalog[] | [];
|
|
19
21
|
assetsProgress: AssetProgress | {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePenthera.types.d.ts","sourceRoot":"","sources":["../../../../src/hooks/usePenthera/usePenthera.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,oBAAY,aAAa;IACvB,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,6BAA6B,kCAAkC;IAC/D,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;CAC5C;AACD,
|
|
1
|
+
{"version":3,"file":"usePenthera.types.d.ts","sourceRoot":"","sources":["../../../../src/hooks/usePenthera/usePenthera.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,oBAAY,aAAa;IACvB,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,6BAA6B,kCAAkC;IAC/D,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;CAC5C;AACD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,KAAK,QAAQ,GAAG,MAAM,CAAC;AAEvB,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;IACzC,cAAc,EAAE,aAAa,GAAG,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC;IACrD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC/C,oBAAoB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,cAAc,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
|
@@ -45,7 +45,7 @@ export declare namespace PentheraTypes {
|
|
|
45
45
|
customFields?: {
|
|
46
46
|
[key: string]: string;
|
|
47
47
|
} | {};
|
|
48
|
-
dataOffers?:
|
|
48
|
+
dataOffers?: Category[];
|
|
49
49
|
estimatedSize?: number;
|
|
50
50
|
expiryAfterDownload?: string;
|
|
51
51
|
expiryAfterPlay?: string;
|
|
@@ -58,6 +58,10 @@ export declare namespace PentheraTypes {
|
|
|
58
58
|
code: string;
|
|
59
59
|
name: string;
|
|
60
60
|
}
|
|
61
|
+
interface Category {
|
|
62
|
+
code: string;
|
|
63
|
+
name: string;
|
|
64
|
+
}
|
|
61
65
|
interface Images {
|
|
62
66
|
wallpaper: string;
|
|
63
67
|
themes: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PentheraTypes.d.ts","sourceRoot":"","sources":["../../../src/interface/PentheraTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,UAAiB,eAAe;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB;IAED,UAAiB,WAAW;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAED,UAAiB,QAAQ;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,GAAG,EAAE,CAAC;QAC9C,UAAU,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"PentheraTypes.d.ts","sourceRoot":"","sources":["../../../src/interface/PentheraTypes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
type PentheraProviderProps,
|
|
10
10
|
PentheraAction,
|
|
11
11
|
Event,
|
|
12
|
+
AssetProgress,
|
|
12
13
|
} from './usePenthera.types';
|
|
13
14
|
import {
|
|
14
15
|
deleteMany,
|
|
@@ -36,12 +37,28 @@ export const usePenthera = create<PentheraState & PentheraAction>((set) => ({
|
|
|
36
37
|
assets: state.assets.filter((asset) => !assetIds.includes(asset.id)),
|
|
37
38
|
})),
|
|
38
39
|
updateAssetsProgress: (progress) =>
|
|
39
|
-
set((state) =>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
set((state) => {
|
|
41
|
+
const assetId: keyof AssetProgress | undefined =
|
|
42
|
+
Object.keys(progress)?.[0];
|
|
43
|
+
if (
|
|
44
|
+
assetId &&
|
|
45
|
+
state.assetsProgress &&
|
|
46
|
+
progress &&
|
|
47
|
+
assetId in progress &&
|
|
48
|
+
assetId in state.assetsProgress
|
|
49
|
+
) {
|
|
50
|
+
const prevProgress: string =
|
|
51
|
+
state.assetsProgress?.[assetId as keyof typeof state.assetsProgress];
|
|
52
|
+
const newProgress = progress?.[assetId as keyof typeof progress];
|
|
53
|
+
if (prevProgress >= newProgress!) return {}; // TODO: This a workaround for solution of inconsistent events from penthera module.
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
assetsProgress: {
|
|
57
|
+
...state.assetsProgress,
|
|
58
|
+
...progress,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}),
|
|
45
62
|
onGetAllAssets: async () => {
|
|
46
63
|
try {
|
|
47
64
|
const assets: PentheraTypes.ItemCatalog[] = await getDownloads('');
|
|
@@ -158,12 +175,6 @@ export function usePentheraInit({
|
|
|
158
175
|
|
|
159
176
|
case PentheraEvent.DID_START_DOWNLOADING:
|
|
160
177
|
updateAssetsProgress({ [info?.assetId]: '0' });
|
|
161
|
-
addAsset({
|
|
162
|
-
id: info.assetId,
|
|
163
|
-
title: '',
|
|
164
|
-
path: '',
|
|
165
|
-
drm: '',
|
|
166
|
-
}); // TODO: Add others field item information
|
|
167
178
|
break;
|
|
168
179
|
|
|
169
180
|
case PentheraEvent.PROGRESS_UPDATED:
|
|
@@ -11,9 +11,12 @@ export enum PentheraEvent {
|
|
|
11
11
|
ERROR_DOWNLOAD = 'ERROR_DOWNLOAD',
|
|
12
12
|
PENDING_ASSET_FOUND = 'PENDING_ASSET_FOUND',
|
|
13
13
|
}
|
|
14
|
-
type AssetId = string;
|
|
14
|
+
export type AssetId = string;
|
|
15
15
|
type Progress = string;
|
|
16
|
-
|
|
16
|
+
|
|
17
|
+
export type AssetProgress = {
|
|
18
|
+
[key: string]: Progress;
|
|
19
|
+
};
|
|
17
20
|
|
|
18
21
|
export type PentheraState = {
|
|
19
22
|
assets: PentheraTypes.ItemCatalog[] | [];
|
|
@@ -45,7 +45,7 @@ export declare namespace PentheraTypes {
|
|
|
45
45
|
offers?: Offer[];
|
|
46
46
|
images?: Images;
|
|
47
47
|
customFields?: { [key: string]: string } | {};
|
|
48
|
-
dataOffers?:
|
|
48
|
+
dataOffers?: Category[];
|
|
49
49
|
estimatedSize?: number;
|
|
50
50
|
expiryAfterDownload?: string;
|
|
51
51
|
expiryAfterPlay?: string;
|
|
@@ -60,6 +60,11 @@ export declare namespace PentheraTypes {
|
|
|
60
60
|
name: string;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
export interface Category {
|
|
64
|
+
code: string;
|
|
65
|
+
name: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
63
68
|
export interface Images {
|
|
64
69
|
wallpaper: string;
|
|
65
70
|
themes: any[];
|
package/ios/Penthera copy.swift
DELETED
|
@@ -1,501 +0,0 @@
|
|
|
1
|
-
import VirtuosoClientDownloadEngine
|
|
2
|
-
|
|
3
|
-
@objc(Penthera)
|
|
4
|
-
class Penthera: RCTEventEmitter, VirtuosoDownloadEngineNotificationsDelegate {
|
|
5
|
-
var downloadEngineNotifications: VirtuosoDownloadEngineNotificationManager!
|
|
6
|
-
|
|
7
|
-
public override init() {
|
|
8
|
-
super.init()
|
|
9
|
-
EventEmitter.sharedInstance.registerEventEmitter(eventEmitter: self)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
var statusDownload: StatusDownload = StatusDownload()
|
|
13
|
-
|
|
14
|
-
@objc(initializeSdk:withBackplaneUrl:withPublicKey:withPrivateKey:withResolver:withRejecter:)
|
|
15
|
-
func initializeSdk(user: String, backplaneUrl: String, publicKey: String, privateKey: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
16
|
-
guard let engineConfig = VirtuosoEngineConfig(
|
|
17
|
-
user: user,
|
|
18
|
-
backplaneUrl: backplaneUrl,
|
|
19
|
-
publicKey: publicKey,
|
|
20
|
-
privateKey: privateKey) else {
|
|
21
|
-
return reject("Penthera", "engine Config", nil)
|
|
22
|
-
}
|
|
23
|
-
self.downloadEngineNotifications = VirtuosoDownloadEngineNotificationManager.init(delegate: self)
|
|
24
|
-
let virtuoso = VirtuosoDownloadEngine.instance()
|
|
25
|
-
virtuoso.startup(engineConfig) { status in
|
|
26
|
-
switch(status) {
|
|
27
|
-
case .vde_EngineStartupSuccess:
|
|
28
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: "Virtuoso Success", assetId: "test", body: "asset")
|
|
29
|
-
resolve("Success")
|
|
30
|
-
case .vde_EngineStartupAlreadyStarted:
|
|
31
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Aready Started")
|
|
32
|
-
resolve("Already Started")
|
|
33
|
-
case .vde_EngineStartupSuccessNoBackplane:
|
|
34
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Backplane")
|
|
35
|
-
resolve("No Backplane")
|
|
36
|
-
case .vde_EngineStartupInvalidOptions:
|
|
37
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Invalid")
|
|
38
|
-
resolve("Invalid Option")
|
|
39
|
-
case .vde_EngineStartupMethodIsDeprecated:
|
|
40
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Method Decraped")
|
|
41
|
-
resolve("Decraped")
|
|
42
|
-
case .vde_EngineStartupInternalException:
|
|
43
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Internal Exception")
|
|
44
|
-
resolve("Internal Exception")
|
|
45
|
-
case .vde_EngineDataMigrationError:
|
|
46
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Migrate Error")
|
|
47
|
-
resolve("Error")
|
|
48
|
-
@unknown default:
|
|
49
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", body: "Virtuoso Default")
|
|
50
|
-
resolve("Error Default")
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
func timeIntervalToString(_ timeInterval: TimeInterval?) -> String {
|
|
56
|
-
let formatter = DateComponentsFormatter()
|
|
57
|
-
formatter.allowedUnits = [.hour, .minute, .second]
|
|
58
|
-
formatter.unitsStyle = .positional
|
|
59
|
-
formatter.zeroFormattingBehavior = .pad
|
|
60
|
-
guard let interval = timeInterval else {
|
|
61
|
-
return "00:00:00"
|
|
62
|
-
}
|
|
63
|
-
return formatter.string(from: interval) ?? "00:00:00"
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
func dateToString (_ date: Date?) -> String? {
|
|
67
|
-
let dateFormatter = DateFormatter()
|
|
68
|
-
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
|
|
69
|
-
return date != nil ? dateFormatter.string(from: date!) : nil
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
@objc(getDownloads:withResolver:withRejecter:)
|
|
74
|
-
func getDownloads(blank: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
75
|
-
let completedAssets = VirtuosoAsset.completedAssets(withAvailabilityFilter: false)
|
|
76
|
-
let pendingAssets = VirtuosoAsset.pendingAssets(withAvailabilityFilter: false)
|
|
77
|
-
var offlineCatalogs: [OfflineCatalog] = []
|
|
78
|
-
|
|
79
|
-
for case let va as VirtuosoAsset in completedAssets {
|
|
80
|
-
let thumbnail = va.findAllAncillaries(withTag: "thumbnail").first
|
|
81
|
-
let show = va.findAllAncillaries(withTag: "show").first
|
|
82
|
-
let thumbnails = Thumbnails(
|
|
83
|
-
thumbnail: thumbnail?.fileDownloadURL ?? "",
|
|
84
|
-
show: show?.fileDownloadURL ?? ""
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
let expiryDate = va.expiryDate // Assuming this is a valid Date object
|
|
88
|
-
let effectiveExpiryDate = va.effectiveExpiryDate // Assuming this is a valid Date object
|
|
89
|
-
|
|
90
|
-
let dataItem = DataItem(
|
|
91
|
-
title: va.userInfo?["title"] as? String,
|
|
92
|
-
seasonId: va.userInfo?["seasonId"] as? String,
|
|
93
|
-
seasonTitle: va.userInfo?["seasonTitle"] as? String,
|
|
94
|
-
duration: va.duration,
|
|
95
|
-
estimatedSize: Int(va.estimatedSize),
|
|
96
|
-
dataOffers: parseDataOffer(offer: va.userInfo?["dataOffers"] as Any),
|
|
97
|
-
expiryDate: dateToString(expiryDate),
|
|
98
|
-
expiryAfterPlay: timeIntervalToString(va.expiryAfterPlay),
|
|
99
|
-
expiryAfterDownload: timeIntervalToString(va.expiryAfterDownload),
|
|
100
|
-
isExpired: va.isExpired,
|
|
101
|
-
inForcedExpire: va.inForcedExpire,
|
|
102
|
-
effectiveExpiryDate: dateToString(effectiveExpiryDate!)
|
|
103
|
-
)
|
|
104
|
-
let catalog = OfflineCatalog(
|
|
105
|
-
id: va.assetID,
|
|
106
|
-
title: va.description,
|
|
107
|
-
data: dataItem,
|
|
108
|
-
thumbnails: thumbnails,
|
|
109
|
-
isCompleted: va.isPlayable,
|
|
110
|
-
isPaused: va.isPaused,
|
|
111
|
-
percentage: Float(va.fractionComplete) / Float(va.estimatedSize)
|
|
112
|
-
)
|
|
113
|
-
offlineCatalogs.append(catalog)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
for case let va as VirtuosoAsset in pendingAssets {
|
|
117
|
-
|
|
118
|
-
let thumbnail = va.findAllAncillaries(withTag: "thumbnail").first
|
|
119
|
-
let show = va.findAllAncillaries(withTag: "show").first
|
|
120
|
-
let thumbnails = Thumbnails(
|
|
121
|
-
thumbnail: thumbnail?.fileDownloadURL ?? "",
|
|
122
|
-
show: show?.fileDownloadURL ?? ""
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
let expiryDate = va.expiryDate // Assuming this is a valid Date object
|
|
126
|
-
let effectiveExpiryDate = va.effectiveExpiryDate // Assuming this is a valid Date object
|
|
127
|
-
let dataItem = DataItem(
|
|
128
|
-
title: va.userInfo?["title"] as? String,
|
|
129
|
-
seasonId: va.userInfo?["seasonId"] as? String,
|
|
130
|
-
seasonTitle: va.userInfo?["seasonTitle"] as? String,
|
|
131
|
-
duration: va.duration,
|
|
132
|
-
estimatedSize: Int(va.estimatedSize),
|
|
133
|
-
dataOffers: parseDataOffer(offer: va.userInfo?["dataOffers"] as Any),
|
|
134
|
-
expiryAfterPlay: timeIntervalToString(va.expiryAfterPlay),
|
|
135
|
-
expiryAfterDownload: timeIntervalToString(va.expiryAfterDownload),
|
|
136
|
-
isExpired: va.isExpired
|
|
137
|
-
)
|
|
138
|
-
|
|
139
|
-
let catalog = OfflineCatalog(
|
|
140
|
-
id: va.assetID,
|
|
141
|
-
title: va.description,
|
|
142
|
-
data: dataItem,
|
|
143
|
-
thumbnails: thumbnails,
|
|
144
|
-
isCompleted: false,
|
|
145
|
-
isPaused: va.isPaused,
|
|
146
|
-
percentage: Float(va.fractionComplete) / Float(va.estimatedSize)
|
|
147
|
-
)
|
|
148
|
-
offlineCatalogs.append(catalog)
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
let decoder = JSONEncoder()
|
|
152
|
-
do {
|
|
153
|
-
let data = try decoder.encode(offlineCatalogs)
|
|
154
|
-
let json = String(data: data, encoding: .utf8)!
|
|
155
|
-
resolve(json)
|
|
156
|
-
} catch {
|
|
157
|
-
reject("penthere", error.localizedDescription, error)
|
|
158
|
-
}
|
|
159
|
-
//resolve(downloadComplete.map{ ($0 as? VirtuosoAsset)?.assetID })
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
func getDownloadedAsset(assetID: String) -> VirtuosoAsset? {
|
|
163
|
-
// assets that have finished downloading
|
|
164
|
-
let completedAssets = VirtuosoAsset.completedAssets(withAvailabilityFilter: false)
|
|
165
|
-
guard let asset = completedAssets.filter({ ($0 as! VirtuosoAsset).assetID == assetID }).first as? VirtuosoAsset else {
|
|
166
|
-
return nil
|
|
167
|
-
}
|
|
168
|
-
return asset
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
public func downloadEngineDidStartDownloadingAsset(_ asset: VirtuosoAsset) {
|
|
172
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.DID_START_DOWNLOADING, assetId: asset.assetID, body: "")
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
public func downloadEngineProgressUpdated(for asset: VirtuosoAsset) {
|
|
176
|
-
let percentage: Float = Float(asset.fractionComplete)/Float(asset.estimatedSize)
|
|
177
|
-
if(percentage.isFinite) {
|
|
178
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.PROGRESS_UPDATED, assetId: asset.assetID, body: "\(Int(asset.fractionComplete*100))")
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
public func downloadEngineProgressUpdatedProcessing(for asset: VirtuosoAsset) {
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
public func downloadEngineDidFinishDownloadingAsset(_ asset: VirtuosoAsset) {
|
|
187
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.DOWNLOAD_COMPLETE, assetId: asset.assetID, body: "")
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
public func downloadEngineDidEncounterError(for asset: VirtuosoAsset, error: Error?, task: URLSessionTask?, data: Data?, statusCode: NSNumber?) {
|
|
191
|
-
asset.delete()
|
|
192
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.ERROR_DOWNLOAD, assetId: asset.assetID, body: error.debugDescription ?? "Error downloading")
|
|
193
|
-
/*EventEmitter.sharedInstance.dispatch(name: "penthera", body: "\(asset.assetID): Engine did encounter error \(error?.localizedDescription ?? "-")")*/
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
public func downloadEngineInternalQueueUpdate(asset: VirtuosoAsset) {
|
|
197
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", code: "TEST downloadEngineInternalQueueUpdate", body: "Queue updated", assetId: asset.assetID)
|
|
198
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: "TEST downloadEngineInternalQueueUpdate", assetId: asset.assetID, body: "Queue updated")
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
public func downloadEngineStartupComplete(_ succeeded: Bool, asset: VirtuosoAsset) {
|
|
202
|
-
//EventEmitter.sharedInstance.dispatch(name: "penthera", code: "Test downloadEngineStartupComplete", body: "SDK startup complete", assetId: asset.assetID)
|
|
203
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: "TEST downloadEngineStartupComplete", assetId: asset.assetID, body: "SDK startup complete")
|
|
204
|
-
}
|
|
205
|
-
func getPendingAsset(assetID: String) -> VirtuosoAsset? {
|
|
206
|
-
let pendingAssets = VirtuosoAsset.pendingAssets(withAvailabilityFilter: false)
|
|
207
|
-
guard let asset = pendingAssets.filter({ ($0 as! VirtuosoAsset).assetID == assetID }).first as? VirtuosoAsset else {
|
|
208
|
-
return nil
|
|
209
|
-
}
|
|
210
|
-
return asset
|
|
211
|
-
}
|
|
212
|
-
func getAncillaryFiles(files: [String: AnyObject]) -> [VirtuosoAncillaryFile] {
|
|
213
|
-
var ancillaryFiles: [VirtuosoAncillaryFile] = []
|
|
214
|
-
files.forEach { file in
|
|
215
|
-
guard let url = file.value as? String else {
|
|
216
|
-
return
|
|
217
|
-
}
|
|
218
|
-
guard let ancillaryFile = VirtuosoAncillaryFile(downloadUrl: url, andTag: file.key) else {
|
|
219
|
-
return
|
|
220
|
-
}
|
|
221
|
-
ancillaryFiles.append(ancillaryFile)
|
|
222
|
-
}
|
|
223
|
-
return ancillaryFiles
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
@objc(download:withResolver:withRejecter:)
|
|
227
|
-
func download(catalogString: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
228
|
-
let virtuoso = VirtuosoDownloadEngine.instance()
|
|
229
|
-
var queue = virtuoso.assetsInQueue()
|
|
230
|
-
|
|
231
|
-
//let decoder = JSONDecoder()
|
|
232
|
-
|
|
233
|
-
do {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
let data = catalogString.getDictionary()
|
|
237
|
-
|
|
238
|
-
guard let item = data!["item"] as! [String: AnyObject]? else {
|
|
239
|
-
reject("No item", nil, nil)
|
|
240
|
-
return
|
|
241
|
-
}
|
|
242
|
-
guard let url = data!["url"] as? String else {
|
|
243
|
-
reject("No url", nil, nil)
|
|
244
|
-
return
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
let assetID = item["id"] as! String? ?? ""
|
|
248
|
-
let hasDRM = item["drm"] as! Bool? ?? false
|
|
249
|
-
let title = item["title"] as! String? ?? ""
|
|
250
|
-
|
|
251
|
-
let downloadAsset = getDownloadedAsset(assetID: assetID)
|
|
252
|
-
let pendingAsset = getPendingAsset(assetID: assetID)
|
|
253
|
-
|
|
254
|
-
if (pendingAsset != nil) {
|
|
255
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.PENDING_ASSET_FOUND, assetId: assetID, body: "")
|
|
256
|
-
pendingAsset?.delete()
|
|
257
|
-
return
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
if(downloadAsset == nil && pendingAsset == nil) {
|
|
261
|
-
DispatchQueue.global(qos: .background).async {
|
|
262
|
-
guard let config = VirtuosoAssetConfig(url: url,
|
|
263
|
-
assetID: assetID,
|
|
264
|
-
description: String(describing: title),
|
|
265
|
-
type: .vde_AssetTypeHLS) else {
|
|
266
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.CONFIG_ASSET_FAILED, assetId: assetID, body: "-")
|
|
267
|
-
return
|
|
268
|
-
}
|
|
269
|
-
// Ancillary Files
|
|
270
|
-
let thumbnails = item["thumbnails"] as! [String: AnyObject]? ?? [:]
|
|
271
|
-
let subtitles = item["subtitles"] as! [String: AnyObject]? ?? [:]
|
|
272
|
-
config.ancillaries = self.getAncillaryFiles(files: thumbnails) + self.getAncillaryFiles(files: subtitles)
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
//DRM
|
|
276
|
-
if(hasDRM) {
|
|
277
|
-
|
|
278
|
-
guard let drm = data!["drm"] as! [String: AnyObject]? else {
|
|
279
|
-
reject("No drm", nil, nil)
|
|
280
|
-
return
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
let token = drm["token"] as! String? ?? ""
|
|
284
|
-
let licenceHttpHeader = drm["licence_server_http_header"] as! String? ?? ""
|
|
285
|
-
let licence = drm["licence_server"] as! String? ?? ""
|
|
286
|
-
let cert = drm["fairplay_cert"] as! String? ?? ""
|
|
287
|
-
|
|
288
|
-
guard let drmSetup = FairPlayDrmSetup(assetID: assetID, certificateUrl: cert, licenceUrl: licence, header: licenceHttpHeader, token: token) else {
|
|
289
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.FAIR_PLAY_LICENSE_DELEGATE_ERROR, assetId: "", body: "")
|
|
290
|
-
return
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
if !drmSetup.configure() {
|
|
294
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.FAIR_PLAY_LICENSE_DELEGATE_ERROR, assetId: "", body: "")
|
|
295
|
-
return
|
|
296
|
-
}
|
|
297
|
-
config.protectionType = .vde_AssetProtectionTypeFairPlay
|
|
298
|
-
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
let asset = VirtuosoAsset.init(config: config)
|
|
302
|
-
|
|
303
|
-
let data = item["data"] as! [String: AnyObject]? ?? [:]
|
|
304
|
-
|
|
305
|
-
asset?.userInfo = data
|
|
306
|
-
|
|
307
|
-
config.ancillaries?.forEach{ file in
|
|
308
|
-
asset?.add(file)
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
//asset?.add(subtitle!)
|
|
313
|
-
|
|
314
|
-
//let calendar = Calendar.current
|
|
315
|
-
//guard let expiryDate = calendar.date(byAdding: .minute, value: 1, to: Date()) else {
|
|
316
|
-
// return
|
|
317
|
-
//}
|
|
318
|
-
|
|
319
|
-
//asset?.expiryAfterDownload = expiryDate.timeIntervalSinceNow
|
|
320
|
-
|
|
321
|
-
queue.append(asset!)
|
|
322
|
-
resolve(assetID)
|
|
323
|
-
//resolve(queue.count)
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
} catch {
|
|
328
|
-
reject("penthera", error.localizedDescription, error)
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
@objc(delete:withResolver:withRejecter:)
|
|
333
|
-
func delete(assetID: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
334
|
-
//DispatchQueue.global(qos: .background).async {
|
|
335
|
-
|
|
336
|
-
let downloadComplete = VirtuosoAsset.completedAssets(withAvailabilityFilter: false)
|
|
337
|
-
if(downloadComplete.count > 0) {
|
|
338
|
-
for case let va as VirtuosoAsset in downloadComplete {
|
|
339
|
-
if(va.assetID == assetID){
|
|
340
|
-
va.delete()
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
//(downloadComplete.first as! VirtuosoAsset).delete()
|
|
344
|
-
}
|
|
345
|
-
resolve("Delete complete")
|
|
346
|
-
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
|
347
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.ASSET_DELETED, assetId: assetID, body: "")
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
@objc(deleteMany:withResolver:withRejecter:)
|
|
354
|
-
func deleteMany(assetIDS: [String], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
355
|
-
// initialize assetResponse {}. Ex {"123":false, "543":false}
|
|
356
|
-
var assetsResponse: [String: Bool] = Dictionary(uniqueKeysWithValues: assetIDS.map { ($0, false) })
|
|
357
|
-
|
|
358
|
-
let downloadComplete = VirtuosoAsset.completedAssets(withAvailabilityFilter: false)
|
|
359
|
-
if(downloadComplete.count > 0) {
|
|
360
|
-
var assetsToDelete: [VirtuosoAsset] = []
|
|
361
|
-
for asset in downloadComplete {
|
|
362
|
-
if let va = asset as? VirtuosoAsset, assetIDS.contains(va.assetID) {
|
|
363
|
-
assetsToDelete.append(va)
|
|
364
|
-
assetsResponse[va.assetID] = true
|
|
365
|
-
if assetsToDelete.count == assetIDS.count { // Se encontraron todos los assets, break for.
|
|
366
|
-
break
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
VirtuosoAsset.delete(assetsToDelete) { () in
|
|
373
|
-
resolve(assetsResponse)
|
|
374
|
-
}
|
|
375
|
-
} else {
|
|
376
|
-
// No hay assets completados para eliminar
|
|
377
|
-
let errorMessage = "deleteMany: completedAssets is empty"
|
|
378
|
-
let userInfo = [NSLocalizedDescriptionKey: errorMessage]
|
|
379
|
-
let error = NSError(domain: "takeoffmedia-react-native-penthera", code: 0, userInfo: userInfo)
|
|
380
|
-
reject("ASSET_DELETE_ERROR", errorMessage, error)
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
@objc open override func supportedEvents() -> [String] {
|
|
387
|
-
return EventEmitter.sharedInstance.allEvents
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
@objc(playAsset:withResolver:withRejecter:)
|
|
391
|
-
func playAsset(assetID: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
392
|
-
|
|
393
|
-
let downloadComplete = VirtuosoAsset.completedAssets(withAvailabilityFilter: false)
|
|
394
|
-
guard let asset = downloadComplete.filter({ ($0 as! VirtuosoAsset).assetID == assetID }).first as? VirtuosoAsset else {
|
|
395
|
-
reject("Error streaming asset", "", nil)
|
|
396
|
-
return
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
let decoder = JSONEncoder()
|
|
400
|
-
|
|
401
|
-
do {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
// let subtitle = vcHttpServer?.ancillaryURLForAncillary(withTag: "subtitle", usingMime: "text/vtt")
|
|
405
|
-
// let thumbnailOffline = asset.findAllAncillaries(withTag: "thumbnailOffline").first
|
|
406
|
-
//let wallpaper = asset.findAllAncillaries(withTag: "wallpaper").first
|
|
407
|
-
|
|
408
|
-
let vcHttpServer = VirtuosoClientHTTPServer(asset: asset)
|
|
409
|
-
|
|
410
|
-
let licenseURL = vcHttpServer?.fairPlayLicenseServerURL
|
|
411
|
-
let certificateURL = vcHttpServer?.fairPlayCertificateDataURL(forSubType: nil)
|
|
412
|
-
|
|
413
|
-
//let avContentKeySession = VirtuosoLicenseManager.registeredAVContentKeySession()
|
|
414
|
-
|
|
415
|
-
//let userInfoData = try encoder.encode(asset.userInfo)
|
|
416
|
-
//let userInfo = String(data: userInfoData, encoding: .utf8)
|
|
417
|
-
|
|
418
|
-
let assetData = [
|
|
419
|
-
"id": asset.assetID,
|
|
420
|
-
"url": vcHttpServer?.playbackURL ?? "",
|
|
421
|
-
"certificate": certificateURL ,
|
|
422
|
-
"license": licenseURL
|
|
423
|
-
]
|
|
424
|
-
|
|
425
|
-
let data = try decoder.encode(assetData)
|
|
426
|
-
let json = String(data: data, encoding: .utf8)!
|
|
427
|
-
resolve(json)
|
|
428
|
-
|
|
429
|
-
// let config = PlayerConfig()
|
|
430
|
-
// config.styleConfig.userInterfaceType = .system
|
|
431
|
-
// config.key = "ASSSSSS"
|
|
432
|
-
|
|
433
|
-
// let player = PlayerFactory.create(playerConfig: config)
|
|
434
|
-
|
|
435
|
-
// guard let streamUrl = URL(string: vcHttpServer!.playbackURL) else {
|
|
436
|
-
// return
|
|
437
|
-
// }
|
|
438
|
-
|
|
439
|
-
// // Create a SourceConfig
|
|
440
|
-
// let sourceConfig = SourceConfig(url: streamUrl, type: .hls)
|
|
441
|
-
// print(streamUrl.absoluteString)
|
|
442
|
-
|
|
443
|
-
// // Optionally set additional properties
|
|
444
|
-
// sourceConfig.title = "Art of motion"
|
|
445
|
-
|
|
446
|
-
// DispatchQueue.main.async {
|
|
447
|
-
// let source = SourceFactory.create(from: sourceConfig)
|
|
448
|
-
|
|
449
|
-
// player.load(source: source)
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
// let viewController = UIApplication.shared.windows.first?.rootViewController as? UIViewController
|
|
453
|
-
|
|
454
|
-
// let playerView = PlayerView(player: player, frame: (viewController?.view.bounds)!)
|
|
455
|
-
|
|
456
|
-
// // Adding the view to the a container View
|
|
457
|
-
// viewController?.view.addSubview(playerView)
|
|
458
|
-
// viewController?.view.bringSubviewToFront(playerView)
|
|
459
|
-
// }
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
/*
|
|
463
|
-
let demoPlayer = DemoPlayerViewController()
|
|
464
|
-
DispatchQueue.main.async {
|
|
465
|
-
asset.play(using: .vde_AssetPlaybackTypeLocal,
|
|
466
|
-
andPlayer: demoPlayer as VirtuosoPlayer,
|
|
467
|
-
onSuccess: {
|
|
468
|
-
// Present the player
|
|
469
|
-
|
|
470
|
-
let viewController = UIApplication.shared.windows.first?.rootViewController as? UIViewController
|
|
471
|
-
viewController?.present(demoPlayer, animated: true)
|
|
472
|
-
//self.present(demoPlayer, animated: true, completion: nil)
|
|
473
|
-
},
|
|
474
|
-
onFail: {
|
|
475
|
-
//self.error = nil
|
|
476
|
-
})
|
|
477
|
-
}*/
|
|
478
|
-
|
|
479
|
-
} catch {
|
|
480
|
-
reject("penthere", error.localizedDescription, error)
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
@objc(pauseDownload:withResolver:withRejecter:)
|
|
486
|
-
func pauseDownload(assetID: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
487
|
-
let pendingAsset = getPendingAsset(assetID: assetID)
|
|
488
|
-
if (pendingAsset != nil) {
|
|
489
|
-
self.pauseAsset(asset: pendingAsset!)
|
|
490
|
-
return
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
func pauseAsset(asset: VirtuosoAsset) {
|
|
496
|
-
asset.isPaused = !asset.isPaused
|
|
497
|
-
EventEmitter.sharedInstance.dispatch(name: "penthera", code: PentheraEvent.ASSET_RESUME_DOWNLOAD_UPDATED, assetId: asset.assetID, body: "\(asset.isPaused)")
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
}
|
|
Binary file
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<Bucket
|
|
3
|
-
uuid = "3AE98629-7421-4561-B12C-C06B8B6A3023"
|
|
4
|
-
type = "1"
|
|
5
|
-
version = "2.0">
|
|
6
|
-
<Breakpoints>
|
|
7
|
-
<BreakpointProxy
|
|
8
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
9
|
-
<BreakpointContent
|
|
10
|
-
uuid = "A5D166B0-3C57-4F4D-A845-BDB81498DA0F"
|
|
11
|
-
shouldBeEnabled = "No"
|
|
12
|
-
ignoreCount = "0"
|
|
13
|
-
continueAfterRunningActions = "No"
|
|
14
|
-
filePath = "Penthera.swift"
|
|
15
|
-
startingColumnNumber = "9223372036854775807"
|
|
16
|
-
endingColumnNumber = "9223372036854775807"
|
|
17
|
-
startingLineNumber = "18"
|
|
18
|
-
endingLineNumber = "18"
|
|
19
|
-
landmarkName = "initializeSdk(user:backplaneUrl:publicKey:privateKey:resolve:reject:)"
|
|
20
|
-
landmarkType = "7">
|
|
21
|
-
</BreakpointContent>
|
|
22
|
-
</BreakpointProxy>
|
|
23
|
-
<BreakpointProxy
|
|
24
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
25
|
-
<BreakpointContent
|
|
26
|
-
uuid = "5D7AE47B-D5FC-4468-A75B-C414F3F8A58C"
|
|
27
|
-
shouldBeEnabled = "No"
|
|
28
|
-
ignoreCount = "0"
|
|
29
|
-
continueAfterRunningActions = "No"
|
|
30
|
-
filePath = "Penthera.swift"
|
|
31
|
-
startingColumnNumber = "9223372036854775807"
|
|
32
|
-
endingColumnNumber = "9223372036854775807"
|
|
33
|
-
startingLineNumber = "25"
|
|
34
|
-
endingLineNumber = "25"
|
|
35
|
-
landmarkName = "initializeSdk(user:backplaneUrl:publicKey:privateKey:resolve:reject:)"
|
|
36
|
-
landmarkType = "7">
|
|
37
|
-
</BreakpointContent>
|
|
38
|
-
</BreakpointProxy>
|
|
39
|
-
<BreakpointProxy
|
|
40
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
41
|
-
<BreakpointContent
|
|
42
|
-
uuid = "E3C50B30-46CF-4D56-8C49-C257C70E0ACC"
|
|
43
|
-
shouldBeEnabled = "No"
|
|
44
|
-
ignoreCount = "0"
|
|
45
|
-
continueAfterRunningActions = "No"
|
|
46
|
-
filePath = "Penthera.swift"
|
|
47
|
-
startingColumnNumber = "9223372036854775807"
|
|
48
|
-
endingColumnNumber = "9223372036854775807"
|
|
49
|
-
startingLineNumber = "26"
|
|
50
|
-
endingLineNumber = "26"
|
|
51
|
-
landmarkName = "initializeSdk(user:backplaneUrl:publicKey:privateKey:resolve:reject:)"
|
|
52
|
-
landmarkType = "7">
|
|
53
|
-
</BreakpointContent>
|
|
54
|
-
</BreakpointProxy>
|
|
55
|
-
<BreakpointProxy
|
|
56
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
57
|
-
<BreakpointContent
|
|
58
|
-
uuid = "75EF43BF-56FF-4727-B372-E1A0EBC02C61"
|
|
59
|
-
shouldBeEnabled = "Yes"
|
|
60
|
-
ignoreCount = "0"
|
|
61
|
-
continueAfterRunningActions = "No"
|
|
62
|
-
filePath = "Penthera.swift"
|
|
63
|
-
startingColumnNumber = "9223372036854775807"
|
|
64
|
-
endingColumnNumber = "9223372036854775807"
|
|
65
|
-
startingLineNumber = "101"
|
|
66
|
-
endingLineNumber = "101"
|
|
67
|
-
landmarkName = "getDownloads(blank:resolve:reject:)"
|
|
68
|
-
landmarkType = "7">
|
|
69
|
-
</BreakpointContent>
|
|
70
|
-
</BreakpointProxy>
|
|
71
|
-
<BreakpointProxy
|
|
72
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
73
|
-
<BreakpointContent
|
|
74
|
-
uuid = "EF36B51B-4FC2-4989-A791-180E3212EFE3"
|
|
75
|
-
shouldBeEnabled = "Yes"
|
|
76
|
-
ignoreCount = "0"
|
|
77
|
-
continueAfterRunningActions = "No"
|
|
78
|
-
filePath = "Penthera.swift"
|
|
79
|
-
startingColumnNumber = "9223372036854775807"
|
|
80
|
-
endingColumnNumber = "9223372036854775807"
|
|
81
|
-
startingLineNumber = "149"
|
|
82
|
-
endingLineNumber = "149"
|
|
83
|
-
landmarkName = "getDownloads(blank:resolve:reject:)"
|
|
84
|
-
landmarkType = "7">
|
|
85
|
-
</BreakpointContent>
|
|
86
|
-
</BreakpointProxy>
|
|
87
|
-
<BreakpointProxy
|
|
88
|
-
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
89
|
-
<BreakpointContent
|
|
90
|
-
uuid = "C467C00E-2428-4D24-843A-E7CDF28CB553"
|
|
91
|
-
shouldBeEnabled = "Yes"
|
|
92
|
-
ignoreCount = "0"
|
|
93
|
-
continueAfterRunningActions = "No"
|
|
94
|
-
filePath = "Penthera.swift"
|
|
95
|
-
startingColumnNumber = "9223372036854775807"
|
|
96
|
-
endingColumnNumber = "9223372036854775807"
|
|
97
|
-
startingLineNumber = "148"
|
|
98
|
-
endingLineNumber = "148"
|
|
99
|
-
landmarkName = "getDownloads(blank:resolve:reject:)"
|
|
100
|
-
landmarkType = "7">
|
|
101
|
-
</BreakpointContent>
|
|
102
|
-
</BreakpointProxy>
|
|
103
|
-
</Breakpoints>
|
|
104
|
-
</Bucket>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>SchemeUserState</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>Penthera.xcscheme_^#shared#^_</key>
|
|
8
|
-
<dict>
|
|
9
|
-
<key>orderHint</key>
|
|
10
|
-
<integer>0</integer>
|
|
11
|
-
</dict>
|
|
12
|
-
</dict>
|
|
13
|
-
</dict>
|
|
14
|
-
</plist>
|