react-native-theoplayer 2.5.0 → 2.7.0

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +9 -15
  3. package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +2 -1
  4. package/android/src/main/java/com/theoplayer/util/ViewResolver.kt +9 -1
  5. package/ios/THEOplayerRCTDebug.swift +3 -3
  6. package/ios/THEOplayerRCTMainEventHandler.swift +59 -59
  7. package/ios/THEOplayerRCTMediaTrackEventHandler.swift +18 -18
  8. package/ios/THEOplayerRCTNetworkUtils.swift +1 -1
  9. package/ios/THEOplayerRCTPlayerAPI.swift +14 -14
  10. package/ios/THEOplayerRCTPrintUtils.swift +16 -0
  11. package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +6 -6
  12. package/ios/THEOplayerRCTTextTrackEventHandler.swift +21 -21
  13. package/ios/THEOplayerRCTView.swift +29 -29
  14. package/ios/ads/THEOplayerRCTAdsAPI+DAI.swift +6 -6
  15. package/ios/ads/THEOplayerRCTAdsAPI.swift +13 -13
  16. package/ios/ads/THEOplayerRCTAdsEventHandler.swift +27 -27
  17. package/ios/ads/THEOplayerRCTSourceDescriptionBuilder+Ads.swift +5 -5
  18. package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +63 -37
  19. package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +16 -16
  20. package/ios/casting/THEOplayerRCTCastAPI+Airplay.swift +6 -6
  21. package/ios/casting/THEOplayerRCTCastAPI+Chromecast.swift +10 -10
  22. package/ios/casting/THEOplayerRCTCastAPI.swift +1 -1
  23. package/ios/casting/THEOplayerRCTCastEventHandler.swift +11 -11
  24. package/ios/contentprotection/THEOplayerRCTContentProtectionAPI.swift +1 -1
  25. package/ios/pip/THEOplayerRCTPipControlsManager.swift +1 -1
  26. package/lib/commonjs/api/abr/ABRConfiguration.js +25 -0
  27. package/lib/commonjs/api/abr/ABRConfiguration.js.map +1 -1
  28. package/lib/commonjs/api/track/Track.js +5 -1
  29. package/lib/commonjs/api/track/Track.js.map +1 -1
  30. package/lib/commonjs/internal/THEOplayerView.web.js +2 -6
  31. package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
  32. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +41 -10
  33. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
  34. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +105 -52
  35. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  36. package/lib/module/api/abr/ABRConfiguration.js +19 -0
  37. package/lib/module/api/abr/ABRConfiguration.js.map +1 -1
  38. package/lib/module/api/track/Track.js +4 -1
  39. package/lib/module/api/track/Track.js.map +1 -1
  40. package/lib/module/internal/THEOplayerView.web.js +2 -6
  41. package/lib/module/internal/THEOplayerView.web.js.map +1 -1
  42. package/lib/module/internal/adapter/THEOplayerAdapter.js +41 -10
  43. package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
  44. package/lib/module/internal/adapter/THEOplayerWebAdapter.js +106 -53
  45. package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  46. package/lib/typescript/api/abr/ABRConfiguration.d.ts +5 -1
  47. package/lib/typescript/api/track/Track.d.ts +1 -0
  48. package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +2 -0
  49. package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +3 -3
  50. package/package.json +1 -1
  51. package/react-native-theoplayer.podspec +1 -1
  52. package/src/api/abr/ABRConfiguration.ts +5 -1
  53. package/src/api/track/Track.ts +5 -1
  54. package/src/internal/THEOplayerView.web.tsx +2 -6
  55. package/src/internal/adapter/THEOplayerAdapter.ts +44 -10
  56. package/src/internal/adapter/THEOplayerWebAdapter.ts +97 -50
@@ -49,7 +49,7 @@ class THEOplayerRCTMediaTrackEventHandler {
49
49
  guard let welf = self else { return }
50
50
  if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
51
51
  let audioTrack = event.track as? AudioTrack {
52
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received ADD_TRACK event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
52
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_TRACK event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
53
53
  // trigger tracklist event
54
54
  forwardedMediaTrackListEvent([
55
55
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedAudioTrackInfo(audioTrack: audioTrack),
@@ -58,14 +58,14 @@ class THEOplayerRCTMediaTrackEventHandler {
58
58
  ])
59
59
  }
60
60
  }
61
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddTrack listener attached to THEOplayer audioTrack list") }
61
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener attached to THEOplayer audioTrack list") }
62
62
 
63
63
  // AUDIO REMOVE_TRACK
64
64
  self.audioRemoveTrackListener = player.audioTracks.addEventListener(type: AudioTrackListEventTypes.REMOVE_TRACK) { [weak self] event in
65
65
  guard let welf = self else { return }
66
66
  if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
67
67
  let audioTrack = event.track as? AudioTrack {
68
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received REMOVE_TRACK event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
68
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_TRACK event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
69
69
  // trigger tracklist event
70
70
  forwardedMediaTrackListEvent([
71
71
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedAudioTrackInfo(audioTrack: audioTrack),
@@ -74,14 +74,14 @@ class THEOplayerRCTMediaTrackEventHandler {
74
74
  ])
75
75
  }
76
76
  }
77
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveTrack listener attached to THEOplayer audioTrack list") }
77
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener attached to THEOplayer audioTrack list") }
78
78
 
79
79
  // AUDIO CHANGE
80
80
  self.audioChangeTrackListener = player.audioTracks.addEventListener(type: AudioTrackListEventTypes.CHANGE) { [weak self] event in
81
81
  guard let welf = self else { return }
82
82
  if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
83
83
  let audioTrack = event.track as? AudioTrack {
84
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received CHANGE event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
84
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received CHANGE event from THEOplayer audioTrack list: trackUid = \(audioTrack.uid)") }
85
85
  // trigger tracklist event
86
86
  forwardedMediaTrackListEvent([
87
87
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedAudioTrackInfo(audioTrack: audioTrack),
@@ -90,14 +90,14 @@ class THEOplayerRCTMediaTrackEventHandler {
90
90
  ])
91
91
  }
92
92
  }
93
- if DEBUG_EVENTHANDLER { print("[NATIVE] ChangeTrack listener attached to THEOplayer audioTrack list") }
93
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener attached to THEOplayer audioTrack list") }
94
94
 
95
95
  // VIDEO ADD_TRACK
96
96
  self.videoAddTrackListener = player.videoTracks.addEventListener(type: VideoTrackListEventTypes.ADD_TRACK) { [weak self] event in
97
97
  guard let welf = self else { return }
98
98
  if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
99
99
  let videoTrack = event.track as? VideoTrack {
100
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received ADD_TRACK event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
100
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_TRACK event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
101
101
  // trigger tracklist event
102
102
  forwardedMediaTrackListEvent([
103
103
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedVideoTrackInfo(videoTrack: videoTrack),
@@ -106,14 +106,14 @@ class THEOplayerRCTMediaTrackEventHandler {
106
106
  ])
107
107
  }
108
108
  }
109
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddTrack listener attached to THEOplayer videoTrack list") }
109
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener attached to THEOplayer videoTrack list") }
110
110
 
111
111
  // VIDEO REMOVE_TRACK
112
112
  self.videoRemoveTrackListener = player.videoTracks.addEventListener(type: VideoTrackListEventTypes.REMOVE_TRACK) { [weak self] event in
113
113
  guard let welf = self else { return }
114
114
  if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
115
115
  let videoTrack = event.track as? VideoTrack {
116
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received REMOVE_TRACK event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
116
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_TRACK event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
117
117
  // trigger tracklist event
118
118
  forwardedMediaTrackListEvent([
119
119
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedVideoTrackInfo(videoTrack: videoTrack),
@@ -122,14 +122,14 @@ class THEOplayerRCTMediaTrackEventHandler {
122
122
  ])
123
123
  }
124
124
  }
125
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveTrack listener attached to THEOplayer videoTrack list") }
125
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener attached to THEOplayer videoTrack list") }
126
126
 
127
127
  // VIDEO CHANGE
128
128
  self.videoChangeTrackListener = player.videoTracks.addEventListener(type: VideoTrackListEventTypes.CHANGE) { [weak self] event in
129
129
  guard let welf = self else { return }
130
130
  if let forwardedMediaTrackListEvent = welf.onNativeMediaTrackListEvent,
131
131
  let videoTrack = event.track as? VideoTrack {
132
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received CHANGE event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
132
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received CHANGE event from THEOplayer videoTrack list: trackUid = \(videoTrack.uid)") }
133
133
  // trigger tracklist event
134
134
  forwardedMediaTrackListEvent([
135
135
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedVideoTrackInfo(videoTrack: videoTrack),
@@ -138,7 +138,7 @@ class THEOplayerRCTMediaTrackEventHandler {
138
138
  ])
139
139
  }
140
140
  }
141
- if DEBUG_EVENTHANDLER { print("[NATIVE] ChangeTrack listener attached to THEOplayer audioTrack list") }
141
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener attached to THEOplayer audioTrack list") }
142
142
  }
143
143
 
144
144
  private func dettachListeners() {
@@ -149,37 +149,37 @@ class THEOplayerRCTMediaTrackEventHandler {
149
149
  // AUDIO ADD_TRACK
150
150
  if let audioAddTrackListener = self.audioAddTrackListener {
151
151
  player.audioTracks.removeEventListener(type: AudioTrackListEventTypes.ADD_TRACK, listener: audioAddTrackListener)
152
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddTrack listener dettached from THEOplayer audioTrack list") }
152
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener dettached from THEOplayer audioTrack list") }
153
153
  }
154
154
 
155
155
  // AUDIO REMOVE_TRACK
156
156
  if let audioRemoveTrackListener = self.audioRemoveTrackListener {
157
157
  player.audioTracks.removeEventListener(type: AudioTrackListEventTypes.REMOVE_TRACK, listener: audioRemoveTrackListener)
158
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveTrack listener dettached from THEOplayer audioTrack list") }
158
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener dettached from THEOplayer audioTrack list") }
159
159
  }
160
160
 
161
161
  // AUDIO CHANGE
162
162
  if let audioChangeTrackListener = self.audioChangeTrackListener {
163
163
  player.audioTracks.removeEventListener(type: AudioTrackListEventTypes.CHANGE, listener: audioChangeTrackListener)
164
- if DEBUG_EVENTHANDLER { print("[NATIVE] ChangeTrack listener dettached from THEOplayer audioTrack list") }
164
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener dettached from THEOplayer audioTrack list") }
165
165
  }
166
166
 
167
167
  // VIDEO ADD_TRACK
168
168
  if let videoAddTrackListener = self.videoAddTrackListener {
169
169
  player.videoTracks.removeEventListener(type: VideoTrackListEventTypes.ADD_TRACK, listener: videoAddTrackListener)
170
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddTrack listener dettached from THEOplayer videoTrack list") }
170
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener dettached from THEOplayer videoTrack list") }
171
171
  }
172
172
 
173
173
  // VIDEO REMOVE_TRACK
174
174
  if let videoRemoveTrackListener = self.videoRemoveTrackListener {
175
175
  player.videoTracks.removeEventListener(type: VideoTrackListEventTypes.REMOVE_TRACK, listener: videoRemoveTrackListener)
176
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveTrack listener dettached from THEOplayer videoTrack list") }
176
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener dettached from THEOplayer videoTrack list") }
177
177
  }
178
178
 
179
179
  // VIDEO CHANGE
180
180
  if let videoChangeTrackListener = self.videoChangeTrackListener {
181
181
  player.videoTracks.removeEventListener(type: VideoTrackListEventTypes.CHANGE, listener: videoChangeTrackListener)
182
- if DEBUG_EVENTHANDLER { print("[NATIVE] ChangeTrack listener dettached from THEOplayer videoTrack list") }
182
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener dettached from THEOplayer videoTrack list") }
183
183
  }
184
184
  }
185
185
  }
@@ -32,7 +32,7 @@ class THEOplayerRCTNetworkUtils: NSObject, URLSessionDataDelegate {
32
32
  request.httpBody = body
33
33
  let task = self.defaultUrlSession.dataTask(with: request) { data, response, error in
34
34
  if let error = error {
35
- print("request Error: \(error.localizedDescription)")
35
+ PrintUtils.printLog(logText: "request Error: \(error.localizedDescription)")
36
36
  return
37
37
  }
38
38
  if let urlResponse = response as? HTTPURLResponse {
@@ -28,10 +28,10 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
28
28
  if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
29
29
  let player = theView.player {
30
30
  if paused && !player.paused {
31
- if DEBUG_PLAYER_API { print("[NATIVE] Triggering pause on TheoPlayer") }
31
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Triggering pause on TheoPlayer") }
32
32
  player.pause()
33
33
  } else if !paused && player.paused {
34
- if DEBUG_PLAYER_API { print("[NATIVE] Triggering play on TheoPlayer") }
34
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Triggering play on TheoPlayer") }
35
35
  player.play()
36
36
  }
37
37
  }
@@ -44,11 +44,11 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
44
44
  if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
45
45
  let srcDescription = THEOplayerRCTSourceDescriptionBuilder.buildSourceDescription(src) {
46
46
  if let player = theView.player {
47
- if DEBUG_PLAYER_API { print("[NATIVE] Setting new source on TheoPlayer") }
47
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting new source on TheoPlayer") }
48
48
  player.source = srcDescription
49
49
  }
50
50
  } else {
51
- if DEBUG_PLAYER_API { print("[NATIVE] Failed to update THEOplayer source.") }
51
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Failed to update THEOplayer source.") }
52
52
  }
53
53
  }
54
54
  }
@@ -65,7 +65,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
65
65
  if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
66
66
  let player = theView.player {
67
67
  let timeValue = time.doubleValue * 0.001
68
- if DEBUG_PLAYER_API { print("[NATIVE] Seeking to \(timeValue) on TheoPlayer") }
68
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Seeking to \(timeValue) on TheoPlayer") }
69
69
  player.setCurrentTime(timeValue)
70
70
  }
71
71
  }
@@ -77,7 +77,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
77
77
  if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
78
78
  let player = theView.player {
79
79
  if player.muted != muted {
80
- if DEBUG_PLAYER_API { print("[NATIVE] Changing TheoPlayer to \(muted ? "muted" : "not muted")") }
80
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer to \(muted ? "muted" : "not muted")") }
81
81
  player.muted = muted
82
82
  }
83
83
  }
@@ -86,7 +86,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
86
86
 
87
87
  @objc(setVolume:volume:)
88
88
  func setVolume(_ node: NSNumber, volume: NSNumber) -> Void {
89
- if DEBUG_PLAYER_API { print("[NATIVE] Setting volume: TheoPlayer does not handle volume changes for iOS. This is handled by the device.") }
89
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting volume: TheoPlayer does not handle volume changes for iOS. This is handled by the device.") }
90
90
  }
91
91
 
92
92
  @objc(setPlaybackRate:playbackRate:)
@@ -96,7 +96,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
96
96
  let player = theView.player {
97
97
  let playbackRateValue = playbackRate.doubleValue
98
98
  if player.playbackRate != playbackRateValue {
99
- if DEBUG_PLAYER_API { print("[NATIVE] Setting playbackRate on TheoPlayer to \(playbackRateValue)") }
99
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting playbackRate on TheoPlayer to \(playbackRateValue)") }
100
100
  player.setPlaybackRate(playbackRateValue)
101
101
  }
102
102
  }
@@ -113,7 +113,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
113
113
  if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
114
114
  let player = theView.player {
115
115
  if player.presentationMode != newPresentationMode {
116
- if DEBUG_PLAYER_API { print("[NATIVE] Changing TheoPlayer to \(presentationMode)") }
116
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer to \(presentationMode)") }
117
117
  player.presentationMode = newPresentationMode
118
118
  }
119
119
  }
@@ -128,7 +128,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
128
128
  if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
129
129
  let player = theView.player {
130
130
  if player.fullscreen.aspectRatio != newAspectRatio {
131
- if DEBUG_PLAYER_API { print("[NATIVE] Changing TheoPlayer's aspectRatio to \(ratio)") }
131
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer's aspectRatio to \(ratio)") }
132
132
  player.fullscreen.setAspectRatio(aspectRatio: newAspectRatio)
133
133
  }
134
134
  }
@@ -180,7 +180,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
180
180
  guard textTracks.count > 0 else {
181
181
  return
182
182
  }
183
- if DEBUG_PLAYER_API { print("[NATIVE] Showing textTrack \(uidValue) on TheoPlayer") }
183
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Showing textTrack \(uidValue) on TheoPlayer") }
184
184
  for i in 0...textTracks.count-1 {
185
185
  var textTrack: TextTrack = textTracks.get(i)
186
186
  if textTrack.uid == uidValue {
@@ -203,7 +203,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
203
203
  guard audioTracks.count > 0 else {
204
204
  return
205
205
  }
206
- if DEBUG_PLAYER_API { print("[NATIVE] Enabling audioTrack \(uidValue) on TheoPlayer") }
206
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Enabling audioTrack \(uidValue) on TheoPlayer") }
207
207
  for i in 0...audioTracks.count-1 {
208
208
  var audioTrack: MediaTrack = audioTracks.get(i)
209
209
  audioTrack.enabled = (audioTrack.uid == uidValue)
@@ -222,7 +222,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
222
222
  guard videoTracks.count > 0 else {
223
223
  return
224
224
  }
225
- if DEBUG_PLAYER_API { print("[NATIVE] Enabling videoTrack \(uidValue) on TheoPlayer") }
225
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Enabling videoTrack \(uidValue) on TheoPlayer") }
226
226
  for i in 0...videoTracks.count-1 {
227
227
  var videoTrack: MediaTrack = videoTracks.get(i)
228
228
  videoTrack.enabled = (videoTrack.uid == uidValue)
@@ -244,7 +244,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
244
244
  let player = theView.player {
245
245
  let preloadType = THEOplayerRCTTypeUtils.preloadTypeFromString(type)
246
246
  if player.preload != preloadType {
247
- if DEBUG_PLAYER_API { print("[NATIVE] Changing TheoPlayer preload type to \(type)") }
247
+ if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Changing TheoPlayer preload type to \(type)") }
248
248
  player.setPreload(preloadType)
249
249
  }
250
250
  }
@@ -0,0 +1,16 @@
1
+ //
2
+ // Printing.swift
3
+ // THEOliveSDK
4
+ //
5
+ // Created by William van Haevre on 21/06/2021.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ class PrintUtils {
11
+ static func printLog(logText: String) {
12
+ let formatter = DateFormatter()
13
+ formatter.dateFormat = "HH:mm:ss.SSS"
14
+ print(formatter.string(from: Date()), logText)
15
+ }
16
+ }
@@ -75,7 +75,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
75
75
  typedSources.append(typedSource)
76
76
  } else {
77
77
  if DEBUG_SOURCE_DESCRIPTION_BUIDER {
78
- print("[NATIVE] Could not create THEOplayer TypedSource from sourceData array")
78
+ PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer TypedSource from sourceData array")
79
79
  }
80
80
  return nil
81
81
  }
@@ -87,7 +87,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
87
87
  typedSources.append(typedSource)
88
88
  } else {
89
89
  if DEBUG_SOURCE_DESCRIPTION_BUIDER {
90
- print("[NATIVE] Could not create THEOplayer TypedSource from sourceData")
90
+ PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer TypedSource from sourceData")
91
91
  }
92
92
  return nil
93
93
  }
@@ -105,7 +105,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
105
105
  textTrackDescriptions?.append(textTrackDescription)
106
106
  } else {
107
107
  if DEBUG_SOURCE_DESCRIPTION_BUIDER {
108
- print("[NATIVE] Could not create THEOplayer TextTrackDescription from textTrackData array")
108
+ PrintUtils.printLog(logText: "[NATIVE] Could not create THEOplayer TextTrackDescription from textTrackData array")
109
109
  }
110
110
  return nil
111
111
  }
@@ -152,7 +152,7 @@ class THEOplayerRCTSourceDescriptionBuilder {
152
152
  }
153
153
 
154
154
  if DEBUG_SOURCE_DESCRIPTION_BUIDER {
155
- print("[NATIVE] THEOplayer TypedSource requires 'src' property in 'sources' description")
155
+ PrintUtils.printLog(logText: "[NATIVE] THEOplayer TypedSource requires 'src' property in 'sources' description")
156
156
  }
157
157
  return nil
158
158
  }
@@ -329,11 +329,11 @@ class THEOplayerRCTSourceDescriptionBuilder {
329
329
  default: return try JSONDecoder().decode(MultiplatformDRMConfiguration.self, from: data)
330
330
  }
331
331
  } else {
332
- print("[NATIVE] integration type not specified... trying default drm integration")
332
+ PrintUtils.printLog(logText: "[NATIVE] integration type not specified... trying default drm integration")
333
333
  return try JSONDecoder().decode(MultiplatformDRMConfiguration.self, from: data)
334
334
  }
335
335
  } catch {
336
- print("[NATIVE] unsupported contentProtection data format")
336
+ PrintUtils.printLog(logText: "[NATIVE] unsupported contentProtection data format")
337
337
  }
338
338
  return nil
339
339
  }
@@ -48,7 +48,7 @@ class THEOplayerRCTTextTrackEventHandler {
48
48
  guard let welf = self else { return }
49
49
  if let forwardedTextTrackListEvent = welf.onNativeTextTrackListEvent,
50
50
  let textTrack = event.track as? TextTrack {
51
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received ADD_TRACK event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
51
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_TRACK event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
52
52
  // trigger tracklist event
53
53
  forwardedTextTrackListEvent([
54
54
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedTextTrackInfo(textTrack: textTrack),
@@ -56,23 +56,23 @@ class THEOplayerRCTTextTrackEventHandler {
56
56
  ])
57
57
  // start listening for cue events on this track and keep listener for later removal
58
58
  welf.addCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.ADD_CUE, listener: welf.addCueListener(_:))
59
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
59
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
60
60
  welf.removeCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.REMOVE_CUE, listener: welf.removeCueListener(_:))
61
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
61
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
62
62
  welf.enterCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.ENTER_CUE, listener: welf.enterCueListener(_:))
63
- if DEBUG_EVENTHANDLER { print("[NATIVE] EnterCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
63
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] EnterCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
64
64
  welf.exitCueListeners[textTrack.uid] = textTrack.addEventListener(type: TextTrackEventTypes.EXIT_CUE, listener: welf.exitCueListener(_:))
65
- if DEBUG_EVENTHANDLER { print("[NATIVE] ExitCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
65
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ExitCue listener attached to THEOplayer textTrack with uid \(textTrack.uid)") }
66
66
  }
67
67
  }
68
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddTrack listener attached to THEOplayer textTrack list") }
68
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener attached to THEOplayer textTrack list") }
69
69
 
70
70
  // REMOVE_TRACK
71
71
  self.removeTrackListener = player.textTracks.addEventListener(type: TextTrackListEventTypes.REMOVE_TRACK) { [weak self] event in
72
72
  guard let welf = self else { return }
73
73
  if let forwardedTextTrackListEvent = welf.onNativeTextTrackListEvent,
74
74
  let textTrack = event.track as? TextTrack {
75
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received REMOVE_TRACK event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
75
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_TRACK event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
76
76
  // trigger tracklist event
77
77
  forwardedTextTrackListEvent([
78
78
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedTextTrackInfo(textTrack: textTrack),
@@ -84,24 +84,24 @@ class THEOplayerRCTTextTrackEventHandler {
84
84
  let enterCueListener = welf.enterCueListeners[textTrack.uid],
85
85
  let exitCueListener = welf.exitCueListeners[textTrack.uid] {
86
86
  textTrack.removeEventListener(type: TextTrackEventTypes.ADD_CUE, listener: addCueListener)
87
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
87
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
88
88
  textTrack.removeEventListener(type: TextTrackEventTypes.REMOVE_CUE, listener: removeCueListener)
89
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
89
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
90
90
  textTrack.removeEventListener(type: TextTrackEventTypes.ENTER_CUE, listener: enterCueListener)
91
- if DEBUG_EVENTHANDLER { print("[NATIVE] EnterCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
91
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] EnterCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
92
92
  textTrack.removeEventListener(type: TextTrackEventTypes.EXIT_CUE, listener: exitCueListener)
93
- if DEBUG_EVENTHANDLER { print("[NATIVE] ExitCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
93
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ExitCue listener removed from THEOplayer textTrack with uid \(textTrack.uid)") }
94
94
  }
95
95
  }
96
96
  }
97
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveTrack listener attached to THEOplayer textTrack list") }
97
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener attached to THEOplayer textTrack list") }
98
98
 
99
99
  // CHANGE
100
100
  self.changeTrackListener = player.textTracks.addEventListener(type: TextTrackListEventTypes.CHANGE) { [weak self] event in
101
101
  guard let welf = self else { return }
102
102
  if let forwardedTextTrackListEvent = welf.onNativeTextTrackListEvent,
103
103
  let textTrack = event.track as? TextTrack {
104
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received CHANGE event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
104
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received CHANGE event from THEOplayer textTrack list: trackUid = \(textTrack.uid)") }
105
105
  // trigger tracklist event
106
106
  forwardedTextTrackListEvent([
107
107
  "track" : THEOplayerRCTTrackMetadataAggregator.aggregatedTextTrackInfo(textTrack: textTrack),
@@ -109,7 +109,7 @@ class THEOplayerRCTTextTrackEventHandler {
109
109
  ])
110
110
  }
111
111
  }
112
- if DEBUG_EVENTHANDLER { print("[NATIVE] ChangeTrack listener attached to THEOplayer textTrack list") }
112
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener attached to THEOplayer textTrack list") }
113
113
  }
114
114
 
115
115
  private func dettachListeners() {
@@ -120,19 +120,19 @@ class THEOplayerRCTTextTrackEventHandler {
120
120
  // ADD_TRACK
121
121
  if let addTrackListener = self.addTrackListener {
122
122
  player.textTracks.removeEventListener(type: TextTrackListEventTypes.ADD_TRACK, listener: addTrackListener)
123
- if DEBUG_EVENTHANDLER { print("[NATIVE] AddTrack listener dettached from THEOplayer textTrack list") }
123
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddTrack listener dettached from THEOplayer textTrack list") }
124
124
  }
125
125
 
126
126
  // REMOVE_TRACK
127
127
  if let removeTrackListener = self.removeTrackListener {
128
128
  player.textTracks.removeEventListener(type: TextTrackListEventTypes.REMOVE_TRACK, listener: removeTrackListener)
129
- if DEBUG_EVENTHANDLER { print("[NATIVE] RemoveTrack listener dettached from THEOplayer textTrack list") }
129
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] RemoveTrack listener dettached from THEOplayer textTrack list") }
130
130
  }
131
131
 
132
132
  // CHANGE
133
133
  if let changeTrackListener = self.changeTrackListener {
134
134
  player.textTracks.removeEventListener(type: TextTrackListEventTypes.CHANGE, listener: changeTrackListener)
135
- if DEBUG_EVENTHANDLER { print("[NATIVE] ChangeTrack listener dettached from THEOplayer textTrack list") }
135
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] ChangeTrack listener dettached from THEOplayer textTrack list") }
136
136
  }
137
137
  }
138
138
 
@@ -140,7 +140,7 @@ class THEOplayerRCTTextTrackEventHandler {
140
140
  private func addCueListener(_ event: AddCueEvent) {
141
141
  if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
142
142
  let textTrack = event.cue.track {
143
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received ADD_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
143
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ADD_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
144
144
  forwardedTextTrackEvent([
145
145
  "trackUid" : textTrack.uid,
146
146
  "type": TrackCueEventType.ADD_CUE.rawValue,
@@ -152,7 +152,7 @@ class THEOplayerRCTTextTrackEventHandler {
152
152
  private func removeCueListener(_ event: RemoveCueEvent) {
153
153
  if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
154
154
  let textTrack = event.cue.track {
155
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received REMOVE_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
155
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received REMOVE_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
156
156
  forwardedTextTrackEvent([
157
157
  "trackUid" : textTrack.uid,
158
158
  "type": TrackCueEventType.REMOVE_CUE.rawValue,
@@ -164,7 +164,7 @@ class THEOplayerRCTTextTrackEventHandler {
164
164
  private func enterCueListener(_ event: EnterCueEvent) {
165
165
  if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
166
166
  let textTrack = event.cue.track {
167
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received ENTER_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
167
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received ENTER_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
168
168
  forwardedTextTrackEvent([
169
169
  "trackUid" : textTrack.uid,
170
170
  "type": TrackCueEventType.ENTER_CUE.rawValue,
@@ -176,7 +176,7 @@ class THEOplayerRCTTextTrackEventHandler {
176
176
  private func exitCueListener(_ event: ExitCueEvent) {
177
177
  if let forwardedTextTrackEvent = self.onNativeTextTrackEvent,
178
178
  let textTrack = event.cue.track {
179
- if DEBUG_THEOPLAYER_EVENTS { print("[NATIVE] Received EXIT_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
179
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received EXIT_CUE event from textTrack: trackUid = \(textTrack.uid), cueUid = \(event.cue.uid)") }
180
180
  forwardedTextTrackEvent([
181
181
  "trackUid" : textTrack.uid,
182
182
  "type": TrackCueEventType.EXIT_CUE.rawValue,