react-native-theoplayer 9.10.0 → 10.0.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 (149) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +2 -1
  3. package/android/build.gradle +8 -8
  4. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/10.0.0/ads-wrapper-10.0.0.aar +0 -0
  5. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/{9.0.0/ads-wrapper-9.0.0.pom → 10.0.0/ads-wrapper-10.0.0.pom} +3 -3
  6. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +4 -4
  7. package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +18 -1
  8. package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.kt +32 -14
  9. package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +18 -6
  10. package/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt +15 -5
  11. package/android/src/main/java/com/theoplayer/cache/CacheAdapter.kt +0 -12
  12. package/android/src/main/java/com/theoplayer/cache/CacheModule.kt +20 -7
  13. package/android/src/main/java/com/theoplayer/cast/CastModule.kt +17 -3
  14. package/android/src/main/java/com/theoplayer/drm/ContentProtectionAdapter.kt +1 -1
  15. package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +28 -11
  16. package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +16 -3
  17. package/android/src/main/java/com/theoplayer/presentation/PresentationManager.kt +12 -3
  18. package/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +15 -36
  19. package/android/src/main/java/com/theoplayer/theoads/THEOadsAdapter.kt +83 -0
  20. package/android/src/main/java/com/theoplayer/theoads/THEOadsEventAdapter.kt +52 -0
  21. package/android/src/main/java/com/theoplayer/theoads/THEOadsModule.kt +63 -0
  22. package/android/src/main/java/com/theoplayer/theolive/THEOliveModule.kt +16 -3
  23. package/ios/THEOplayerRCTBridge.m +19 -0
  24. package/ios/THEOplayerRCTDebug.swift +4 -1
  25. package/ios/THEOplayerRCTPlayerAPI.swift +3 -3
  26. package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +2 -1
  27. package/ios/THEOplayerRCTView.swift +12 -0
  28. package/ios/theoAds/THEOplayerRCTTHEOAdsAPI.swift +101 -0
  29. package/ios/theoAds/THEOplayerRCTTHEOAdsEventAdapter.swift +118 -0
  30. package/ios/theoAds/THEOplayerRCTTHEOAdsEventHandler.swift +174 -0
  31. package/ios/theolive/THEOplayerRCTSourceDescriptionBuilder+Theolive.swift +0 -1
  32. package/ios/theolive/THEOplayerRCTTHEOliveEventHandler.swift +1 -1
  33. package/ios/theolive/THEOplayerRCTView+THEOlive.swift +1 -5
  34. package/ios/theolive/THEOplayerRCTView+THEOliveConfig.swift +0 -2
  35. package/lib/commonjs/api/barrel.js +45 -56
  36. package/lib/commonjs/api/barrel.js.map +1 -1
  37. package/lib/commonjs/api/cache/CachingTaskParameters.js +0 -19
  38. package/lib/commonjs/api/cache/CachingTaskParameters.js.map +1 -1
  39. package/lib/commonjs/api/event/TheoAdsEvent.js +7 -0
  40. package/lib/commonjs/api/event/TheoAdsEvent.js.map +1 -1
  41. package/lib/commonjs/api/source/SourceDescription.js +1 -13
  42. package/lib/commonjs/api/source/SourceDescription.js.map +1 -1
  43. package/lib/commonjs/api/source/ads/{THEOplayerAdDescription.js → CsaiAdDescription.js} +1 -1
  44. package/lib/commonjs/api/source/ads/CsaiAdDescription.js.map +1 -0
  45. package/lib/commonjs/api/source/ads/barrel.js +4 -4
  46. package/lib/commonjs/api/source/ads/barrel.js.map +1 -1
  47. package/lib/commonjs/index.js +0 -8
  48. package/lib/commonjs/index.js.map +1 -1
  49. package/lib/commonjs/internal/THEOplayerView.js +5 -0
  50. package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
  51. package/lib/commonjs/internal/adapter/WebEventForwarder.js +8 -1
  52. package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
  53. package/lib/commonjs/internal/adapter/event/PlayerEvents.js +10 -1
  54. package/lib/commonjs/internal/adapter/event/PlayerEvents.js.map +1 -1
  55. package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js +20 -0
  56. package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
  57. package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
  58. package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
  59. package/lib/commonjs/manifest.json +1 -1
  60. package/lib/module/api/barrel.js +0 -1
  61. package/lib/module/api/barrel.js.map +1 -1
  62. package/lib/module/api/cache/CachingTaskParameters.js +1 -19
  63. package/lib/module/api/cache/CachingTaskParameters.js.map +1 -1
  64. package/lib/module/api/event/TheoAdsEvent.js +8 -0
  65. package/lib/module/api/event/TheoAdsEvent.js.map +1 -1
  66. package/lib/module/api/source/SourceDescription.js +0 -13
  67. package/lib/module/api/source/SourceDescription.js.map +1 -1
  68. package/lib/module/api/source/ads/CsaiAdDescription.js +4 -0
  69. package/lib/module/api/source/ads/CsaiAdDescription.js.map +1 -0
  70. package/lib/module/api/source/ads/barrel.js +1 -1
  71. package/lib/module/api/source/ads/barrel.js.map +1 -1
  72. package/lib/module/index.js +0 -1
  73. package/lib/module/index.js.map +1 -1
  74. package/lib/module/internal/THEOplayerView.js +5 -0
  75. package/lib/module/internal/THEOplayerView.js.map +1 -1
  76. package/lib/module/internal/adapter/WebEventForwarder.js +9 -2
  77. package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
  78. package/lib/module/internal/adapter/event/PlayerEvents.js +8 -0
  79. package/lib/module/internal/adapter/event/PlayerEvents.js.map +1 -1
  80. package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js +16 -0
  81. package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
  82. package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
  83. package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
  84. package/lib/module/manifest.json +1 -1
  85. package/lib/typescript/api/barrel.d.ts +0 -1
  86. package/lib/typescript/api/barrel.d.ts.map +1 -1
  87. package/lib/typescript/api/cache/CachingTaskParameters.d.ts +0 -34
  88. package/lib/typescript/api/cache/CachingTaskParameters.d.ts.map +1 -1
  89. package/lib/typescript/api/event/TheoAdsEvent.d.ts +13 -0
  90. package/lib/typescript/api/event/TheoAdsEvent.d.ts.map +1 -1
  91. package/lib/typescript/api/source/SourceDescription.d.ts +0 -20
  92. package/lib/typescript/api/source/SourceDescription.d.ts.map +1 -1
  93. package/lib/typescript/api/source/ads/{THEOplayerAdDescription.d.ts → CsaiAdDescription.d.ts} +2 -2
  94. package/lib/typescript/api/source/ads/CsaiAdDescription.d.ts.map +1 -0
  95. package/lib/typescript/api/source/ads/barrel.d.ts +1 -1
  96. package/lib/typescript/api/source/ads/barrel.d.ts.map +1 -1
  97. package/lib/typescript/index.d.ts +0 -1
  98. package/lib/typescript/index.d.ts.map +1 -1
  99. package/lib/typescript/internal/THEOplayerView.d.ts +1 -0
  100. package/lib/typescript/internal/THEOplayerView.d.ts.map +1 -1
  101. package/lib/typescript/internal/adapter/WebEventForwarder.d.ts.map +1 -1
  102. package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts +7 -1
  103. package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts.map +1 -1
  104. package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts +18 -0
  105. package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts.map +1 -0
  106. package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts +1 -1
  107. package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts.map +1 -1
  108. package/package.json +6 -6
  109. package/react-native-theoplayer.podspec +7 -7
  110. package/src/api/barrel.ts +0 -1
  111. package/src/api/cache/CachingTaskParameters.ts +0 -37
  112. package/src/api/event/TheoAdsEvent.ts +14 -0
  113. package/src/api/source/SourceDescription.ts +0 -22
  114. package/src/api/source/ads/{THEOplayerAdDescription.ts → CsaiAdDescription.ts} +1 -1
  115. package/src/api/source/ads/barrel.ts +1 -1
  116. package/src/index.tsx +0 -1
  117. package/src/internal/THEOplayerView.tsx +7 -0
  118. package/src/internal/adapter/WebEventForwarder.ts +7 -1
  119. package/src/internal/adapter/event/PlayerEvents.ts +11 -0
  120. package/src/internal/adapter/event/native/NativeTheoAdsEvent.ts +30 -0
  121. package/src/internal/adapter/theoads/THEOAdsNativeAdapter.ts +7 -12
  122. package/src/manifest.json +1 -1
  123. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/9.0.0/ads-wrapper-9.0.0.aar +0 -0
  124. package/android/src/main/java/com/theoplayer/playback/PlaybackSettingsModule.kt +0 -28
  125. package/lib/commonjs/api/playback/PlaybackSettingsAPI.js +0 -2
  126. package/lib/commonjs/api/playback/PlaybackSettingsAPI.js.map +0 -1
  127. package/lib/commonjs/api/playback/barrel.js +0 -17
  128. package/lib/commonjs/api/playback/barrel.js.map +0 -1
  129. package/lib/commonjs/api/source/ads/THEOplayerAdDescription.js.map +0 -1
  130. package/lib/commonjs/internal/playback/PlaybackSettings.js +0 -28
  131. package/lib/commonjs/internal/playback/PlaybackSettings.js.map +0 -1
  132. package/lib/module/api/playback/PlaybackSettingsAPI.js +0 -2
  133. package/lib/module/api/playback/PlaybackSettingsAPI.js.map +0 -1
  134. package/lib/module/api/playback/barrel.js +0 -4
  135. package/lib/module/api/playback/barrel.js.map +0 -1
  136. package/lib/module/api/source/ads/THEOplayerAdDescription.js +0 -4
  137. package/lib/module/api/source/ads/THEOplayerAdDescription.js.map +0 -1
  138. package/lib/module/internal/playback/PlaybackSettings.js +0 -23
  139. package/lib/module/internal/playback/PlaybackSettings.js.map +0 -1
  140. package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts +0 -35
  141. package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts.map +0 -1
  142. package/lib/typescript/api/playback/barrel.d.ts +0 -2
  143. package/lib/typescript/api/playback/barrel.d.ts.map +0 -1
  144. package/lib/typescript/api/source/ads/THEOplayerAdDescription.d.ts.map +0 -1
  145. package/lib/typescript/internal/playback/PlaybackSettings.d.ts +0 -7
  146. package/lib/typescript/internal/playback/PlaybackSettings.d.ts.map +0 -1
  147. package/src/api/playback/PlaybackSettingsAPI.ts +0 -36
  148. package/src/api/playback/barrel.ts +0 -1
  149. package/src/internal/playback/PlaybackSettings.ts +0 -25
@@ -0,0 +1,101 @@
1
+ //
2
+ // THEOplayerRCTTHEOAdsAPI.swift
3
+ // Theoplayer
4
+ //
5
+ import Foundation
6
+
7
+ #if canImport(THEOplayerTHEOadsIntegration)
8
+ import THEOplayerTHEOadsIntegration
9
+ #endif
10
+
11
+ let ERROR_MESSAGE_THEOADS_UNSUPPORTED_FEATURE = "This functionality is not supported by the provided iOS SDKs"
12
+ let ERROR_CODE_THEOADS_ACCESS_FAILURE = "theoads_access_failure"
13
+ let ERROR_MESSAGE_THEOADS_ACCESS_FAILURE = "Could not access THEOplayer THEOAds Module"
14
+
15
+ @objc(THEOplayerRCTTHEOAdsAPI)
16
+ class THEOplayerRCTTHEOAdsAPI: NSObject, RCTBridgeModule {
17
+ @objc var bridge: RCTBridge!
18
+
19
+ static func moduleName() -> String! {
20
+ return "THEORCTTHEOAdsModule"
21
+ }
22
+
23
+ static func requiresMainQueueSetup() -> Bool {
24
+ return false
25
+ }
26
+
27
+ #if canImport(THEOplayerTHEOadsIntegration)
28
+ @objc(currentInterstitials:resolver:rejecter:)
29
+ func currentInterstitials(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
30
+ DispatchQueue.main.async {
31
+ if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
32
+ let player = theView.player,
33
+ let theoAds = player.ads.theoAds {
34
+ var currentInterstitials: [[String:Any]] = []
35
+ for interstitial in theoAds.currentInterstitials {
36
+ currentInterstitials.append(THEOplayerRCTTHEOadsEventAdapter.fromInterstitial(interstitial))
37
+ }
38
+ resolve(currentInterstitials)
39
+ } else {
40
+ if DEBUG_THEOADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not get currentInterstitials (THEOAds module unavailable).") }
41
+ reject(ERROR_CODE_THEOADS_ACCESS_FAILURE, ERROR_MESSAGE_THEOADS_ACCESS_FAILURE, nil)
42
+ }
43
+ }
44
+ }
45
+
46
+ @objc(scheduledInterstitials:resolver:rejecter:)
47
+ func scheduledInterstitials(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
48
+ DispatchQueue.main.async {
49
+ if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
50
+ let player = theView.player,
51
+ let theoAds = player.ads.theoAds {
52
+ var scheduledInterstitials: [[String:Any]] = []
53
+ for interstitial in theoAds.scheduledInterstitials {
54
+ scheduledInterstitials.append(THEOplayerRCTTHEOadsEventAdapter.fromInterstitial(interstitial))
55
+ }
56
+ resolve(scheduledInterstitials)
57
+ } else {
58
+ if DEBUG_THEOADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not get scheduledInterstitials (THEOAds module unavailable).") }
59
+ reject(ERROR_CODE_THEOADS_ACCESS_FAILURE, ERROR_MESSAGE_THEOADS_ACCESS_FAILURE, nil)
60
+ }
61
+ }
62
+ }
63
+
64
+ @objc(replaceAdTagParameters:adTagParameters:)
65
+ func replaceAdTagParameters(_ node: NSNumber, adTagParameters: [String:Any]?) -> Void {
66
+ DispatchQueue.main.async {
67
+ if let theView = self.bridge.uiManager.view(forReactTag: node) as? THEOplayerRCTView,
68
+ let player = theView.player,
69
+ let theoAds = player.ads.theoAds {
70
+ if let newParams = adTagParameters as? [String: String] {
71
+ theoAds.replaceAdTagParams(params: newParams)
72
+ if DEBUG_THEOADS_API { PrintUtils.printLog(logText: "[NATIVE] THEOAds adTagParameters replaced.") }
73
+ } else {
74
+ if DEBUG_THEOADS_API { PrintUtils.printLog(logText: "[NATIVE] Could not replace THEOAds adTagParameters.") }
75
+ }
76
+ }
77
+ }
78
+ }
79
+
80
+ #else
81
+
82
+ @objc(currentInterstitials:resolver:rejecter:)
83
+ func currentInterstitials(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
84
+ if DEBUG_THEOADS_API { print(ERROR_MESSAGE_THEOADS_UNSUPPORTED_FEATURE) }
85
+ reject(ERROR_CODE_THEOADS_ACCESS_FAILURE, ERROR_MESSAGE_THEOADS_ACCESS_FAILURE, nil)
86
+ }
87
+
88
+ @objc(scheduledInterstitials:resolver:rejecter:)
89
+ func scheduledInterstitials(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
90
+ if DEBUG_THEOADS_API { print(ERROR_MESSAGE_THEOADS_UNSUPPORTED_FEATURE) }
91
+ reject(ERROR_CODE_THEOADS_ACCESS_FAILURE, ERROR_MESSAGE_THEOADS_ACCESS_FAILURE, nil)
92
+ }
93
+
94
+ @objc(replaceAdTagParameters:token:)
95
+ func replaceAdTagParameters(_ node: NSNumber, adTagParameters: [String:Any]?) -> Void {
96
+ if DEBUG_THEOADS_API { print(ERROR_MESSAGE_THEOADS_UNSUPPORTED_FEATURE) }
97
+ }
98
+
99
+ #endif
100
+
101
+ }
@@ -0,0 +1,118 @@
1
+ // THEOplayerRCTTHEOadsEventAdapter.swift
2
+
3
+ import Foundation
4
+ import THEOplayerSDK
5
+
6
+ #if canImport(THEOplayerTHEOadsIntegration)
7
+ @_spi(Core) import THEOplayerTHEOadsIntegration
8
+ #endif
9
+
10
+ // general
11
+ let PROP_INTERSTITIAL_ID: String = "id"
12
+ let PROP_INTERSTITIAL_TYPE: String = "type"
13
+ let PROP_INTERSTITIAL_START_TIME: String = "startTime"
14
+ let PROP_INTERSTITIAL_DURATION: String = "duration"
15
+
16
+ // adbreak specific
17
+ let PROP_ADBREAK_INTERSTITIAL_LAYOUT: String = "layout"
18
+ let PROP_ADBREAK_INTERSTITIAL_BACKDROPURI: String = "backdropUri"
19
+ let PROP_ADBREAK_INTERSTITIAL_ADS: String = "ads"
20
+
21
+ // overlay specific
22
+ let PROP_OVERLAY_INTERSTITIAL_IMAGE_URL: String = "imageUrl"
23
+ let PROP_OVERLAY_INTERSTITIAL_CLICKTHROUGH: String = "clickThrough"
24
+ let PROP_OVERLAY_INTERSTITIAL_POSITION: String = "position"
25
+ let PROP_OVERLAY_INTERSTITIAL_SIZE: String = "size"
26
+
27
+ class THEOplayerRCTTHEOadsEventAdapter {
28
+
29
+ #if canImport(THEOplayerTHEOadsIntegration)
30
+ class func fromInterstitial(_ interstitial: THEOplayerTHEOadsIntegration.Interstitial?) -> [String:Any] {
31
+ guard let interstitial = interstitial else {
32
+ return [:]
33
+ }
34
+
35
+ var interstitialData: [String:Any] = [:]
36
+ interstitialData[PROP_INTERSTITIAL_ID] = interstitial.id
37
+ interstitialData[PROP_INTERSTITIAL_TYPE] = THEOplayerRCTTHEOadsEventAdapter.fromInterstitialType(interstitial.type)
38
+ interstitialData[PROP_INTERSTITIAL_START_TIME] = interstitial.startTime
39
+ if let duration = interstitial.duration {
40
+ interstitialData[PROP_INTERSTITIAL_DURATION] = duration
41
+ }
42
+
43
+ // ADBREAK-INTERSTITIAL SPECIFIC:
44
+ if let adBreakInterstitial = interstitial as? THEOplayerTHEOadsIntegration.AdBreakInterstitial {
45
+ interstitialData[PROP_ADBREAK_INTERSTITIAL_LAYOUT] = THEOplayerRCTTHEOadsEventAdapter.fromInterstitialLayout(adBreakInterstitial.layout)
46
+ if let backdropUri = adBreakInterstitial.backdropUri {
47
+ interstitialData[PROP_ADBREAK_INTERSTITIAL_BACKDROPURI] = backdropUri
48
+ }
49
+ let interstitialAds = adBreakInterstitial.ads
50
+ var ads: [[String:Any]] = []
51
+ for ad in interstitialAds {
52
+ ads.append(THEOplayerRCTAdAdapter.fromAd(ad: ad))
53
+ }
54
+ interstitialData[PROP_ADBREAK_INTERSTITIAL_ADS] = ads
55
+ }
56
+
57
+ // OVERLAY-INTERSTITIAL SPECIFIC
58
+ if let overlayInterstitial = interstitial as? THEOplayerTHEOadsIntegration.OverlayInterstitial {
59
+ if let imageUrl = overlayInterstitial.imageUrl {
60
+ interstitialData[PROP_OVERLAY_INTERSTITIAL_IMAGE_URL] = imageUrl
61
+ }
62
+ if let clickThrough = overlayInterstitial.clickThrough {
63
+ interstitialData[PROP_OVERLAY_INTERSTITIAL_CLICKTHROUGH] = clickThrough
64
+ }
65
+ interstitialData[PROP_OVERLAY_INTERSTITIAL_POSITION] = THEOplayerRCTTHEOadsEventAdapter.fromOverlayPosition(overlayInterstitial.position)
66
+ interstitialData[PROP_OVERLAY_INTERSTITIAL_SIZE] = THEOplayerRCTTHEOadsEventAdapter.fromOverlaySize(overlayInterstitial.size)
67
+ }
68
+
69
+ return interstitialData
70
+ }
71
+
72
+ class func fromInterstitialType(_ interstitialType: THEOplayerTHEOadsIntegration.InterstitialType) -> String {
73
+ switch interstitialType {
74
+ case InterstitialType.adbreak:
75
+ return "adbreak"
76
+ default:
77
+ return "overlay"
78
+ }
79
+ }
80
+
81
+ class func fromInterstitialLayout(_ interstitialLayout: THEOplayerTHEOadsIntegration.THEOadsLayout) -> String {
82
+ switch interstitialLayout {
83
+ case THEOadsLayout.single:
84
+ return "single"
85
+ case THEOadsLayout.double:
86
+ return "double"
87
+ default:
88
+ return "l-shape"
89
+ }
90
+ }
91
+
92
+ class func fromOverlayPosition(_ overlayPosition: THEOplayerTHEOadsIntegration.OverlayPosition) -> [String:Any] {
93
+ var overlayPositionData: [String:Any] = [:]
94
+ if let left = overlayPosition.left {
95
+ overlayPositionData["left"] = left
96
+ }
97
+ if let right = overlayPosition.right {
98
+ overlayPositionData["right"] = right
99
+ }
100
+ if let top = overlayPosition.top {
101
+ overlayPositionData["top"] = top
102
+ }
103
+ if let bottom = overlayPosition.bottom {
104
+ overlayPositionData["bottom"] = bottom
105
+ }
106
+ return overlayPositionData
107
+ }
108
+
109
+ class func fromOverlaySize(_ overlaySize: THEOplayerTHEOadsIntegration.OverlaySize) -> [String:Any] {
110
+ var overlaySizeData: [String:Any] = [:]
111
+ overlaySizeData["width"] = overlaySize.width
112
+ overlaySizeData["height"] = overlaySize.height
113
+ return overlaySizeData
114
+ }
115
+
116
+ #endif
117
+
118
+ }
@@ -0,0 +1,174 @@
1
+ // THEOplayerRCTTHEOadsEventHandler.swift
2
+
3
+ import Foundation
4
+ import THEOplayerSDK
5
+
6
+ #if canImport(THEOplayerTHEOadsIntegration)
7
+ import THEOplayerTHEOadsIntegration
8
+ #endif
9
+
10
+ let EVENT_TYPE_ADD_INTERSTITIAL: String = "addinterstitial"
11
+ let EVENT_TYPE_INTERSTITIAL_BEGIN: String = "interstitialbegin"
12
+ let EVENT_TYPE_INTERSTITIAL_END: String = "interstitialend"
13
+ let EVENT_TYPE_INTERSTITIAL_UPDATE: String = "interstitialupdate"
14
+ let EVENT_TYPE_INTERSTITIAL_ERROR: String = "interstitialerror"
15
+
16
+ let THEOADS_EVENT_PROP_TYPE: String = "type"
17
+ let THEOADS_EVENT_PROP_INTERSTITIAL: String = "interstitial"
18
+ let THEOADS_EVENT_PROP_MESSAGE: String = "message"
19
+
20
+ class THEOplayerRCTTHEOadsEventHandler {
21
+ // MARK: Members
22
+ private weak var player: THEOplayer?
23
+
24
+ // MARK: Events
25
+ var onNativeTHEOadsEvent: RCTDirectEventBlock?
26
+
27
+ // MARK: THEOAds Listeners
28
+ private var addInterstitialListener: EventListener?
29
+ private var interstitialBeginListener: EventListener?
30
+ private var interstitialEndListener: EventListener?
31
+ private var interstitialUpdateListener: EventListener?
32
+ private var interstitialErrorListener: EventListener?
33
+
34
+ // MARK: - destruction
35
+ func destroy() {
36
+ // dettach listeners
37
+ self.dettachListeners()
38
+ }
39
+
40
+ // MARK: - player setup / breakdown
41
+ func setPlayer(_ player: THEOplayer) {
42
+ self.player = player;
43
+
44
+ // attach listeners
45
+ self.attachListeners()
46
+ }
47
+
48
+ // MARK: - attach/dettach Listeners
49
+ private func attachListeners() {
50
+ guard let player = self.player else {
51
+ return
52
+ }
53
+
54
+ #if canImport(THEOplayerTHEOadsIntegration)
55
+ // ADD_INTERSTITIAL
56
+ self.addInterstitialListener = player.ads.theoAds?.addEventListener(type: THEOadsEventTypes.ADD_INTERSTITIAL) { [weak self] event in
57
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received AddInterstitial event from THEOplayer.ads.theoAds") }
58
+ if let forwardedTHEOadsEvent = self?.onNativeTHEOadsEvent {
59
+ forwardedTHEOadsEvent([
60
+ THEOADS_EVENT_PROP_TYPE: EVENT_TYPE_ADD_INTERSTITIAL,
61
+ THEOADS_EVENT_PROP_INTERSTITIAL: THEOplayerRCTTHEOadsEventAdapter.fromInterstitial(event.interstitial)
62
+ ])
63
+ }
64
+ }
65
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddInterstitial listener attached to THEOplayer.ads.theoAds") }
66
+
67
+ // INTERSTITIAL_BEGIN
68
+ self.interstitialBeginListener = player.ads.theoAds?.addEventListener(type: THEOadsEventTypes.INTERSTITIAL_BEGIN) { [weak self] event in
69
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received InterstitialBegin event from THEOplayer.ads.theoAds") }
70
+ if let forwardedTHEOadsEvent = self?.onNativeTHEOadsEvent {
71
+ forwardedTHEOadsEvent([
72
+ THEOADS_EVENT_PROP_TYPE: EVENT_TYPE_INTERSTITIAL_BEGIN,
73
+ THEOADS_EVENT_PROP_INTERSTITIAL: THEOplayerRCTTHEOadsEventAdapter.fromInterstitial(event.interstitial)
74
+ ])
75
+ }
76
+ }
77
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialBegin listener attached to THEOplayer.ads.theoAds") }
78
+
79
+ // INTERSTITIAL_END
80
+ self.interstitialEndListener = player.ads.theoAds?.addEventListener(type: THEOadsEventTypes.INTERSTITIAL_END) { [weak self] event in
81
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received InterstitialEnd event from THEOplayer.ads.theoAds") }
82
+ if let forwardedTHEOadsEvent = self?.onNativeTHEOadsEvent {
83
+ forwardedTHEOadsEvent([
84
+ THEOADS_EVENT_PROP_TYPE: EVENT_TYPE_INTERSTITIAL_END,
85
+ THEOADS_EVENT_PROP_INTERSTITIAL: THEOplayerRCTTHEOadsEventAdapter.fromInterstitial(event.interstitial)
86
+ ])
87
+ }
88
+ }
89
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialEnd listener attached to THEOplayer.ads.theoAds") }
90
+
91
+ // INTERSTITIAL_UPDATE
92
+ self.interstitialUpdateListener = player.ads.theoAds?.addEventListener(type: THEOadsEventTypes.INTERSTITIAL_UPDATE) { [weak self] event in
93
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received InterstitialUpdate event from THEOplayer.ads.theoAds") }
94
+ if let forwardedTHEOadsEvent = self?.onNativeTHEOadsEvent {
95
+ forwardedTHEOadsEvent([
96
+ THEOADS_EVENT_PROP_TYPE: EVENT_TYPE_INTERSTITIAL_UPDATE,
97
+ THEOADS_EVENT_PROP_INTERSTITIAL: THEOplayerRCTTHEOadsEventAdapter.fromInterstitial(event.interstitial)
98
+ ])
99
+ }
100
+ }
101
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialUpdate listener attached to THEOplayer.ads.theoAds") }
102
+
103
+ // INTERSTITIAL_ERROR
104
+ self.interstitialErrorListener = player.ads.theoAds?.addEventListener(type: THEOadsEventTypes.INTERSTITIAL_ERROR) { [weak self] event in
105
+ if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received InterstitialError event from THEOplayer.ads.theoAds") }
106
+ if let forwardedTHEOadsEvent = self?.onNativeTHEOadsEvent {
107
+ var interstitialData: [String: Any] = [:]
108
+ interstitialData[THEOADS_EVENT_PROP_TYPE] = EVENT_TYPE_INTERSTITIAL_ERROR
109
+ interstitialData[THEOADS_EVENT_PROP_INTERSTITIAL] = THEOplayerRCTTHEOadsEventAdapter.fromInterstitial(event.interstitial)
110
+ if let errorMessage = event.message {
111
+ interstitialData[THEOADS_EVENT_PROP_MESSAGE] = errorMessage
112
+ }
113
+ forwardedTHEOadsEvent(interstitialData)
114
+ }
115
+ }
116
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialError listener attached to THEOplayer.ads.theoAds") }
117
+
118
+ #endif
119
+ }
120
+
121
+ private func dettachListeners() {
122
+ guard let player = self.player else {
123
+ return
124
+ }
125
+
126
+ #if canImport(THEOplayerTHEOadsIntegration)
127
+ // ADD_INTERSTITIAL
128
+ if let addInterstitialListener = self.addInterstitialListener {
129
+ player.ads.theoAds?.removeEventListener(
130
+ type: THEOadsEventTypes.ADD_INTERSTITIAL,
131
+ listener: addInterstitialListener
132
+ )
133
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] AddInterstitial listener detached from THEOplayer.ads.theoAds") }
134
+ }
135
+
136
+ // INTERSTITIAL_BEGIN
137
+ if let interstitialBeginListener = self.interstitialBeginListener {
138
+ player.ads.theoAds?.removeEventListener(
139
+ type: THEOadsEventTypes.INTERSTITIAL_BEGIN,
140
+ listener: interstitialBeginListener
141
+ )
142
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialBegin listener detached from THEOplayer.ads.theoAds") }
143
+ }
144
+
145
+ // INTERSTITIAL_END
146
+ if let interstitialEndListener = self.interstitialEndListener {
147
+ player.ads.theoAds?.removeEventListener(
148
+ type: THEOadsEventTypes.INTERSTITIAL_END,
149
+ listener: interstitialEndListener
150
+ )
151
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialEnd listener detached from THEOplayer.ads.theoAds") }
152
+ }
153
+
154
+ // INTERSTITIAL_UPDATE
155
+ if let interstitialUpdateListener = self.interstitialUpdateListener {
156
+ player.ads.theoAds?.removeEventListener(
157
+ type: THEOadsEventTypes.INTERSTITIAL_UPDATE,
158
+ listener: interstitialUpdateListener
159
+ )
160
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialUpdate listener detached from THEOplayer.ads.theoAds") }
161
+ }
162
+
163
+ // INTERSTITIAL_ERROR
164
+ if let interstitialErrorListener = self.interstitialErrorListener {
165
+ player.ads.theoAds?.removeEventListener(
166
+ type: THEOadsEventTypes.INTERSTITIAL_ERROR,
167
+ listener: interstitialErrorListener
168
+ )
169
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] InterstitialError listener detached from THEOplayer.ads.theoAds") }
170
+ }
171
+ #endif
172
+
173
+ }
174
+ }
@@ -17,7 +17,6 @@ extension THEOplayerRCTSourceDescriptionBuilder {
17
17
  static func buildTHEOliveDescription(_ theoliveData: [String:Any]) -> TypedSource? {
18
18
  #if canImport(THEOplayerTHEOliveIntegration)
19
19
  if let src = theoliveData[SD_PROP_SRC] as? String {
20
- //let headers = typedSourceData[SD_PROP_HEADERS] as? [String:String]
21
20
  return TheoLiveSource(channelId: src)
22
21
  }
23
22
  #endif
@@ -24,7 +24,7 @@ class THEOplayerRCTTHEOliveEventHandler {
24
24
  // MARK: Events
25
25
  var onNativeTHEOliveEvent: RCTDirectEventBlock?
26
26
 
27
- // MARK: Ad Listeners
27
+ // MARK: THEOlive Listeners
28
28
  private var distributionLoadStartListener: EventListener?
29
29
  private var distributionOfflineListener: EventListener?
30
30
  private var endPointLoadedListener: EventListener?
@@ -4,7 +4,7 @@ import Foundation
4
4
  import THEOplayerSDK
5
5
 
6
6
  #if canImport(THEOplayerTHEOliveIntegration)
7
- @_spi(Experimental) import THEOplayerTHEOliveIntegration
7
+ import THEOplayerTHEOliveIntegration
8
8
  #endif
9
9
 
10
10
  extension THEOplayerRCTView {
@@ -15,11 +15,7 @@ extension THEOplayerRCTView {
15
15
 
16
16
  #if canImport(THEOplayerTHEOliveIntegration)
17
17
  let THEOliveConfig = THEOliveConfiguration(externalSessionId: self.theoliveConfig.externalSessionId,
18
- experimentalHespContentPlayer: !self.theoliveConfig.useLegacyTHEOlive,
19
18
  discoveryUrl: self.theoliveConfig.discoveryUrl)
20
- if DEBUG_THEOLIVE_API {
21
- PrintUtils.printLog(logText: "[NATIVE] Using \(self.theoliveConfig.useLegacyTHEOlive ? "legacy" : "new") theolive pipeline.")
22
- }
23
19
 
24
20
  self.THEOliveIntegration = THEOliveIntegrationFactory.createIntegration(with: THEOliveConfig)
25
21
  player.addIntegration(self.THEOliveIntegration!)
@@ -6,7 +6,6 @@ import THEOplayerSDK
6
6
  struct THEOliveConfig {
7
7
  var externalSessionId: String?
8
8
  var discoveryUrl: String?
9
- var useLegacyTHEOlive: Bool = false
10
9
  }
11
10
 
12
11
  extension THEOplayerRCTView {
@@ -15,7 +14,6 @@ extension THEOplayerRCTView {
15
14
  if let theoLiveConfig = configDict["theoLive"] as? NSDictionary {
16
15
  self.theoliveConfig.externalSessionId = theoLiveConfig["externalSessionId"] as? String
17
16
  self.theoliveConfig.discoveryUrl = theoLiveConfig["discoveryUrl"] as? String
18
- self.theoliveConfig.useLegacyTHEOlive = theoLiveConfig["useLegacyTHEOlive"] as? Bool ?? false
19
17
  }
20
18
  }
21
19
  }
@@ -102,7 +102,29 @@ Object.keys(_barrel9).forEach(function (key) {
102
102
  }
103
103
  });
104
104
  });
105
- var _barrel10 = require("./event/barrel");
105
+ var _barrel0 = require("./event/barrel");
106
+ Object.keys(_barrel0).forEach(function (key) {
107
+ if (key === "default" || key === "__esModule") return;
108
+ if (key in exports && exports[key] === _barrel0[key]) return;
109
+ Object.defineProperty(exports, key, {
110
+ enumerable: true,
111
+ get: function () {
112
+ return _barrel0[key];
113
+ }
114
+ });
115
+ });
116
+ var _barrel1 = require("./media/barrel");
117
+ Object.keys(_barrel1).forEach(function (key) {
118
+ if (key === "default" || key === "__esModule") return;
119
+ if (key in exports && exports[key] === _barrel1[key]) return;
120
+ Object.defineProperty(exports, key, {
121
+ enumerable: true,
122
+ get: function () {
123
+ return _barrel1[key];
124
+ }
125
+ });
126
+ });
127
+ var _barrel10 = require("./millicast/barrel");
106
128
  Object.keys(_barrel10).forEach(function (key) {
107
129
  if (key === "default" || key === "__esModule") return;
108
130
  if (key in exports && exports[key] === _barrel10[key]) return;
@@ -113,7 +135,7 @@ Object.keys(_barrel10).forEach(function (key) {
113
135
  }
114
136
  });
115
137
  });
116
- var _barrel11 = require("./media/barrel");
138
+ var _barrel11 = require("./drm/barrel");
117
139
  Object.keys(_barrel11).forEach(function (key) {
118
140
  if (key === "default" || key === "__esModule") return;
119
141
  if (key in exports && exports[key] === _barrel11[key]) return;
@@ -124,7 +146,7 @@ Object.keys(_barrel11).forEach(function (key) {
124
146
  }
125
147
  });
126
148
  });
127
- var _barrel12 = require("./millicast/barrel");
149
+ var _barrel12 = require("./source/barrel");
128
150
  Object.keys(_barrel12).forEach(function (key) {
129
151
  if (key === "default" || key === "__esModule") return;
130
152
  if (key in exports && exports[key] === _barrel12[key]) return;
@@ -135,7 +157,7 @@ Object.keys(_barrel12).forEach(function (key) {
135
157
  }
136
158
  });
137
159
  });
138
- var _barrel13 = require("./drm/barrel");
160
+ var _barrel13 = require("./theolive/barrel");
139
161
  Object.keys(_barrel13).forEach(function (key) {
140
162
  if (key === "default" || key === "__esModule") return;
141
163
  if (key in exports && exports[key] === _barrel13[key]) return;
@@ -146,7 +168,7 @@ Object.keys(_barrel13).forEach(function (key) {
146
168
  }
147
169
  });
148
170
  });
149
- var _barrel14 = require("./source/barrel");
171
+ var _barrel14 = require("./timeranges/barrel");
150
172
  Object.keys(_barrel14).forEach(function (key) {
151
173
  if (key === "default" || key === "__esModule") return;
152
174
  if (key in exports && exports[key] === _barrel14[key]) return;
@@ -157,7 +179,7 @@ Object.keys(_barrel14).forEach(function (key) {
157
179
  }
158
180
  });
159
181
  });
160
- var _barrel15 = require("./theolive/barrel");
182
+ var _barrel15 = require("./resolution/barrel");
161
183
  Object.keys(_barrel15).forEach(function (key) {
162
184
  if (key === "default" || key === "__esModule") return;
163
185
  if (key in exports && exports[key] === _barrel15[key]) return;
@@ -168,7 +190,7 @@ Object.keys(_barrel15).forEach(function (key) {
168
190
  }
169
191
  });
170
192
  });
171
- var _barrel16 = require("./timeranges/barrel");
193
+ var _barrel16 = require("./track/barrel");
172
194
  Object.keys(_barrel16).forEach(function (key) {
173
195
  if (key === "default" || key === "__esModule") return;
174
196
  if (key in exports && exports[key] === _barrel16[key]) return;
@@ -179,7 +201,7 @@ Object.keys(_barrel16).forEach(function (key) {
179
201
  }
180
202
  });
181
203
  });
182
- var _barrel17 = require("./resolution/barrel");
204
+ var _barrel17 = require("./ui/barrel");
183
205
  Object.keys(_barrel17).forEach(function (key) {
184
206
  if (key === "default" || key === "__esModule") return;
185
207
  if (key in exports && exports[key] === _barrel17[key]) return;
@@ -190,7 +212,7 @@ Object.keys(_barrel17).forEach(function (key) {
190
212
  }
191
213
  });
192
214
  });
193
- var _barrel18 = require("./track/barrel");
215
+ var _barrel18 = require("./utils/barrel");
194
216
  Object.keys(_barrel18).forEach(function (key) {
195
217
  if (key === "default" || key === "__esModule") return;
196
218
  if (key in exports && exports[key] === _barrel18[key]) return;
@@ -201,40 +223,40 @@ Object.keys(_barrel18).forEach(function (key) {
201
223
  }
202
224
  });
203
225
  });
204
- var _barrel19 = require("./ui/barrel");
205
- Object.keys(_barrel19).forEach(function (key) {
226
+ var _THEOplayerView = require("./THEOplayerView");
227
+ Object.keys(_THEOplayerView).forEach(function (key) {
206
228
  if (key === "default" || key === "__esModule") return;
207
- if (key in exports && exports[key] === _barrel19[key]) return;
229
+ if (key in exports && exports[key] === _THEOplayerView[key]) return;
208
230
  Object.defineProperty(exports, key, {
209
231
  enumerable: true,
210
232
  get: function () {
211
- return _barrel19[key];
233
+ return _THEOplayerView[key];
212
234
  }
213
235
  });
214
236
  });
215
- var _barrel20 = require("./utils/barrel");
216
- Object.keys(_barrel20).forEach(function (key) {
237
+ var _barrel19 = require("./player/barrel");
238
+ Object.keys(_barrel19).forEach(function (key) {
217
239
  if (key === "default" || key === "__esModule") return;
218
- if (key in exports && exports[key] === _barrel20[key]) return;
240
+ if (key in exports && exports[key] === _barrel19[key]) return;
219
241
  Object.defineProperty(exports, key, {
220
242
  enumerable: true,
221
243
  get: function () {
222
- return _barrel20[key];
244
+ return _barrel19[key];
223
245
  }
224
246
  });
225
247
  });
226
- var _THEOplayerView = require("./THEOplayerView");
227
- Object.keys(_THEOplayerView).forEach(function (key) {
248
+ var _barrel20 = require("./presentation/barrel");
249
+ Object.keys(_barrel20).forEach(function (key) {
228
250
  if (key === "default" || key === "__esModule") return;
229
- if (key in exports && exports[key] === _THEOplayerView[key]) return;
251
+ if (key in exports && exports[key] === _barrel20[key]) return;
230
252
  Object.defineProperty(exports, key, {
231
253
  enumerable: true,
232
254
  get: function () {
233
- return _THEOplayerView[key];
255
+ return _barrel20[key];
234
256
  }
235
257
  });
236
258
  });
237
- var _barrel21 = require("./playback/barrel");
259
+ var _barrel21 = require("./version/barrel");
238
260
  Object.keys(_barrel21).forEach(function (key) {
239
261
  if (key === "default" || key === "__esModule") return;
240
262
  if (key in exports && exports[key] === _barrel21[key]) return;
@@ -245,7 +267,7 @@ Object.keys(_barrel21).forEach(function (key) {
245
267
  }
246
268
  });
247
269
  });
248
- var _barrel22 = require("./player/barrel");
270
+ var _barrel22 = require("./theoads/barrel");
249
271
  Object.keys(_barrel22).forEach(function (key) {
250
272
  if (key === "default" || key === "__esModule") return;
251
273
  if (key in exports && exports[key] === _barrel22[key]) return;
@@ -256,37 +278,4 @@ Object.keys(_barrel22).forEach(function (key) {
256
278
  }
257
279
  });
258
280
  });
259
- var _barrel23 = require("./presentation/barrel");
260
- Object.keys(_barrel23).forEach(function (key) {
261
- if (key === "default" || key === "__esModule") return;
262
- if (key in exports && exports[key] === _barrel23[key]) return;
263
- Object.defineProperty(exports, key, {
264
- enumerable: true,
265
- get: function () {
266
- return _barrel23[key];
267
- }
268
- });
269
- });
270
- var _barrel24 = require("./version/barrel");
271
- Object.keys(_barrel24).forEach(function (key) {
272
- if (key === "default" || key === "__esModule") return;
273
- if (key in exports && exports[key] === _barrel24[key]) return;
274
- Object.defineProperty(exports, key, {
275
- enumerable: true,
276
- get: function () {
277
- return _barrel24[key];
278
- }
279
- });
280
- });
281
- var _barrel25 = require("./theoads/barrel");
282
- Object.keys(_barrel25).forEach(function (key) {
283
- if (key === "default" || key === "__esModule") return;
284
- if (key in exports && exports[key] === _barrel25[key]) return;
285
- Object.defineProperty(exports, key, {
286
- enumerable: true,
287
- get: function () {
288
- return _barrel25[key];
289
- }
290
- });
291
- });
292
281
  //# sourceMappingURL=barrel.js.map