react-native-theoplayer 9.10.0 → 10.1.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 (236) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +2 -1
  3. package/android/build.gradle +11 -12
  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/AndroidManifest.xml +1 -1
  8. package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +39 -10
  9. package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.kt +32 -14
  10. package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +18 -6
  11. package/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt +15 -5
  12. package/android/src/main/java/com/theoplayer/cache/CacheAdapter.kt +0 -12
  13. package/android/src/main/java/com/theoplayer/cache/CacheModule.kt +20 -7
  14. package/android/src/main/java/com/theoplayer/cast/CastEventAdapter.kt +11 -7
  15. package/android/src/main/java/com/theoplayer/cast/CastModule.kt +17 -3
  16. package/android/src/main/java/com/theoplayer/drm/ContentProtectionAdapter.kt +1 -1
  17. package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +28 -11
  18. package/android/src/main/java/com/theoplayer/media/ConditionalMediaButtonReceiver.kt +38 -0
  19. package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +17 -4
  20. package/android/src/main/java/com/theoplayer/presentation/PresentationManager.kt +12 -3
  21. package/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +16 -37
  22. package/android/src/main/java/com/theoplayer/theoads/THEOadsAdapter.kt +83 -0
  23. package/android/src/main/java/com/theoplayer/theoads/THEOadsEventAdapter.kt +55 -0
  24. package/android/src/main/java/com/theoplayer/theoads/THEOadsModule.kt +63 -0
  25. package/android/src/main/java/com/theoplayer/theolive/THEOliveEventAdapter.kt +21 -8
  26. package/android/src/main/java/com/theoplayer/theolive/THEOliveModule.kt +16 -3
  27. package/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt +8 -1
  28. package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +8 -0
  29. package/ios/THEOplayerRCTBridge.m +21 -1
  30. package/ios/THEOplayerRCTDebug.swift +4 -1
  31. package/ios/THEOplayerRCTMainEventHandler.swift +24 -21
  32. package/ios/THEOplayerRCTPlayerAPI.swift +3 -3
  33. package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +2 -1
  34. package/ios/THEOplayerRCTView.swift +22 -4
  35. package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +96 -50
  36. package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +0 -1
  37. package/ios/casting/THEOplayerRCTCastEventHandler.swift +1 -1
  38. package/ios/presentationMode/THEOplayerRCTPresentationModeManager.swift +24 -6
  39. package/ios/theoAds/THEOplayerRCTTHEOAdsAPI.swift +101 -0
  40. package/ios/theoAds/THEOplayerRCTTHEOAdsEventAdapter.swift +118 -0
  41. package/ios/theoAds/THEOplayerRCTTHEOAdsEventHandler.swift +174 -0
  42. package/ios/theolive/THEOplayerRCTSourceDescriptionBuilder+Theolive.swift +0 -1
  43. package/ios/theolive/THEOplayerRCTTHEOliveEventHandler.swift +1 -1
  44. package/ios/theolive/THEOplayerRCTView+THEOlive.swift +1 -5
  45. package/ios/theolive/THEOplayerRCTView+THEOliveConfig.swift +0 -2
  46. package/lib/commonjs/api/barrel.js +45 -56
  47. package/lib/commonjs/api/barrel.js.map +1 -1
  48. package/lib/commonjs/api/cache/CachingTaskParameters.js +0 -19
  49. package/lib/commonjs/api/cache/CachingTaskParameters.js.map +1 -1
  50. package/lib/commonjs/api/event/PlayerEvent.js +16 -0
  51. package/lib/commonjs/api/event/PlayerEvent.js.map +1 -1
  52. package/lib/commonjs/api/event/TheoAdsEvent.js +7 -0
  53. package/lib/commonjs/api/event/TheoAdsEvent.js.map +1 -1
  54. package/lib/commonjs/api/player/PlayerEventMap.js +2 -0
  55. package/lib/commonjs/api/player/PlayerEventMap.js.map +1 -1
  56. package/lib/commonjs/api/source/SourceDescription.js +1 -13
  57. package/lib/commonjs/api/source/SourceDescription.js.map +1 -1
  58. package/lib/commonjs/api/source/ads/{THEOplayerAdDescription.js → CsaiAdDescription.js} +1 -1
  59. package/lib/commonjs/api/source/ads/CsaiAdDescription.js.map +1 -0
  60. package/lib/commonjs/api/source/ads/barrel.js +4 -4
  61. package/lib/commonjs/api/source/ads/barrel.js.map +1 -1
  62. package/lib/commonjs/api/track/Quality.js +37 -0
  63. package/lib/commonjs/api/track/Quality.js.map +1 -1
  64. package/lib/commonjs/api/track/TextTrackStyle.js.map +1 -1
  65. package/lib/commonjs/index.js +0 -8
  66. package/lib/commonjs/index.js.map +1 -1
  67. package/lib/commonjs/internal/THEOplayerView.js +15 -3
  68. package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
  69. package/lib/commonjs/internal/THEOplayerView.web.js +1 -1
  70. package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
  71. package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js +2 -0
  72. package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js.map +1 -1
  73. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +27 -9
  74. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
  75. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +18 -1
  76. package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  77. package/lib/commonjs/internal/adapter/WebEventForwarder.js +15 -1
  78. package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
  79. package/lib/commonjs/internal/adapter/event/PlayerEvents.js +30 -1
  80. package/lib/commonjs/internal/adapter/event/PlayerEvents.js.map +1 -1
  81. package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js +20 -0
  82. package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
  83. package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
  84. package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
  85. package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js +10 -0
  86. package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
  87. package/lib/commonjs/internal/utils/TypeUtils.js +4 -1
  88. package/lib/commonjs/internal/utils/TypeUtils.js.map +1 -1
  89. package/lib/commonjs/manifest.json +1 -1
  90. package/lib/module/api/barrel.js +0 -1
  91. package/lib/module/api/barrel.js.map +1 -1
  92. package/lib/module/api/cache/CachingTaskParameters.js +1 -19
  93. package/lib/module/api/cache/CachingTaskParameters.js.map +1 -1
  94. package/lib/module/api/event/PlayerEvent.js +18 -0
  95. package/lib/module/api/event/PlayerEvent.js.map +1 -1
  96. package/lib/module/api/event/TheoAdsEvent.js +8 -0
  97. package/lib/module/api/event/TheoAdsEvent.js.map +1 -1
  98. package/lib/module/api/player/PlayerEventMap.js +2 -0
  99. package/lib/module/api/player/PlayerEventMap.js.map +1 -1
  100. package/lib/module/api/source/SourceDescription.js +0 -13
  101. package/lib/module/api/source/SourceDescription.js.map +1 -1
  102. package/lib/module/api/source/ads/CsaiAdDescription.js +4 -0
  103. package/lib/module/api/source/ads/CsaiAdDescription.js.map +1 -0
  104. package/lib/module/api/source/ads/barrel.js +1 -1
  105. package/lib/module/api/source/ads/barrel.js.map +1 -1
  106. package/lib/module/api/track/Quality.js +34 -0
  107. package/lib/module/api/track/Quality.js.map +1 -1
  108. package/lib/module/api/track/TextTrackStyle.js.map +1 -1
  109. package/lib/module/index.js +0 -1
  110. package/lib/module/index.js.map +1 -1
  111. package/lib/module/internal/THEOplayerView.js +16 -4
  112. package/lib/module/internal/THEOplayerView.js.map +1 -1
  113. package/lib/module/internal/THEOplayerView.web.js +1 -1
  114. package/lib/module/internal/THEOplayerView.web.js.map +1 -1
  115. package/lib/module/internal/adapter/DefaultNativePlayerState.js +2 -0
  116. package/lib/module/internal/adapter/DefaultNativePlayerState.js.map +1 -1
  117. package/lib/module/internal/adapter/THEOplayerAdapter.js +28 -10
  118. package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
  119. package/lib/module/internal/adapter/THEOplayerWebAdapter.js +18 -1
  120. package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
  121. package/lib/module/internal/adapter/WebEventForwarder.js +16 -2
  122. package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
  123. package/lib/module/internal/adapter/event/PlayerEvents.js +26 -0
  124. package/lib/module/internal/adapter/event/PlayerEvents.js.map +1 -1
  125. package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js +16 -0
  126. package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
  127. package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
  128. package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
  129. package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js +10 -0
  130. package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
  131. package/lib/module/internal/utils/TypeUtils.js +3 -0
  132. package/lib/module/internal/utils/TypeUtils.js.map +1 -1
  133. package/lib/module/manifest.json +1 -1
  134. package/lib/typescript/api/barrel.d.ts +0 -1
  135. package/lib/typescript/api/barrel.d.ts.map +1 -1
  136. package/lib/typescript/api/cache/CachingTaskParameters.d.ts +0 -34
  137. package/lib/typescript/api/cache/CachingTaskParameters.d.ts.map +1 -1
  138. package/lib/typescript/api/event/PlayerEvent.d.ts +36 -0
  139. package/lib/typescript/api/event/PlayerEvent.d.ts.map +1 -1
  140. package/lib/typescript/api/event/TheoAdsEvent.d.ts +13 -0
  141. package/lib/typescript/api/event/TheoAdsEvent.d.ts.map +1 -1
  142. package/lib/typescript/api/player/PlayerEventMap.d.ts +17 -2
  143. package/lib/typescript/api/player/PlayerEventMap.d.ts.map +1 -1
  144. package/lib/typescript/api/player/THEOplayer.d.ts +8 -0
  145. package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
  146. package/lib/typescript/api/source/SourceDescription.d.ts +0 -20
  147. package/lib/typescript/api/source/SourceDescription.d.ts.map +1 -1
  148. package/lib/typescript/api/source/ads/{THEOplayerAdDescription.d.ts → CsaiAdDescription.d.ts} +2 -2
  149. package/lib/typescript/api/source/ads/CsaiAdDescription.d.ts.map +1 -0
  150. package/lib/typescript/api/source/ads/barrel.d.ts +1 -1
  151. package/lib/typescript/api/source/ads/barrel.d.ts.map +1 -1
  152. package/lib/typescript/api/track/Quality.d.ts +1 -0
  153. package/lib/typescript/api/track/Quality.d.ts.map +1 -1
  154. package/lib/typescript/api/track/TextTrackStyle.d.ts +7 -0
  155. package/lib/typescript/api/track/TextTrackStyle.d.ts.map +1 -1
  156. package/lib/typescript/index.d.ts +0 -1
  157. package/lib/typescript/index.d.ts.map +1 -1
  158. package/lib/typescript/internal/THEOplayerView.d.ts +3 -1
  159. package/lib/typescript/internal/THEOplayerView.d.ts.map +1 -1
  160. package/lib/typescript/internal/adapter/DefaultNativePlayerState.d.ts +2 -0
  161. package/lib/typescript/internal/adapter/DefaultNativePlayerState.d.ts.map +1 -1
  162. package/lib/typescript/internal/adapter/NativePlayerState.d.ts +2 -0
  163. package/lib/typescript/internal/adapter/NativePlayerState.d.ts.map +1 -1
  164. package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +5 -3
  165. package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts.map +1 -1
  166. package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +5 -0
  167. package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts.map +1 -1
  168. package/lib/typescript/internal/adapter/WebEventForwarder.d.ts +1 -0
  169. package/lib/typescript/internal/adapter/WebEventForwarder.d.ts.map +1 -1
  170. package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts +20 -1
  171. package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts.map +1 -1
  172. package/lib/typescript/internal/adapter/event/native/NativePlayerEvent.d.ts +11 -1
  173. package/lib/typescript/internal/adapter/event/native/NativePlayerEvent.d.ts.map +1 -1
  174. package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts +18 -0
  175. package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts.map +1 -0
  176. package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts +1 -1
  177. package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts.map +1 -1
  178. package/lib/typescript/internal/adapter/track/TextTrackStyleAdapter.d.ts +3 -0
  179. package/lib/typescript/internal/adapter/track/TextTrackStyleAdapter.d.ts.map +1 -1
  180. package/lib/typescript/internal/utils/TypeUtils.d.ts +1 -0
  181. package/lib/typescript/internal/utils/TypeUtils.d.ts.map +1 -1
  182. package/package.json +6 -6
  183. package/react-native-theoplayer.podspec +7 -7
  184. package/src/api/barrel.ts +0 -1
  185. package/src/api/cache/CachingTaskParameters.ts +0 -37
  186. package/src/api/event/PlayerEvent.ts +40 -0
  187. package/src/api/event/TheoAdsEvent.ts +14 -0
  188. package/src/api/player/PlayerEventMap.ts +19 -0
  189. package/src/api/player/THEOplayer.ts +10 -0
  190. package/src/api/source/SourceDescription.ts +0 -22
  191. package/src/api/source/ads/{THEOplayerAdDescription.ts → CsaiAdDescription.ts} +1 -1
  192. package/src/api/source/ads/barrel.ts +1 -1
  193. package/src/api/track/Quality.ts +15 -0
  194. package/src/api/track/TextTrackStyle.ts +8 -0
  195. package/src/index.tsx +0 -1
  196. package/src/internal/THEOplayerView.tsx +24 -5
  197. package/src/internal/THEOplayerView.web.tsx +1 -1
  198. package/src/internal/adapter/DefaultNativePlayerState.ts +2 -0
  199. package/src/internal/adapter/NativePlayerState.ts +2 -0
  200. package/src/internal/adapter/THEOplayerAdapter.ts +43 -21
  201. package/src/internal/adapter/THEOplayerWebAdapter.ts +22 -2
  202. package/src/internal/adapter/WebEventForwarder.ts +17 -1
  203. package/src/internal/adapter/event/PlayerEvents.ts +34 -0
  204. package/src/internal/adapter/event/native/NativePlayerEvent.ts +13 -1
  205. package/src/internal/adapter/event/native/NativeTheoAdsEvent.ts +30 -0
  206. package/src/internal/adapter/theoads/THEOAdsNativeAdapter.ts +7 -12
  207. package/src/internal/adapter/track/TextTrackStyleAdapter.ts +12 -0
  208. package/src/internal/utils/TypeUtils.ts +6 -0
  209. package/src/manifest.json +1 -1
  210. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/9.0.0/ads-wrapper-9.0.0.aar +0 -0
  211. package/android/src/main/java/com/theoplayer/playback/PlaybackSettingsModule.kt +0 -28
  212. package/lib/commonjs/api/playback/PlaybackSettingsAPI.js +0 -2
  213. package/lib/commonjs/api/playback/PlaybackSettingsAPI.js.map +0 -1
  214. package/lib/commonjs/api/playback/barrel.js +0 -17
  215. package/lib/commonjs/api/playback/barrel.js.map +0 -1
  216. package/lib/commonjs/api/source/ads/THEOplayerAdDescription.js.map +0 -1
  217. package/lib/commonjs/internal/playback/PlaybackSettings.js +0 -28
  218. package/lib/commonjs/internal/playback/PlaybackSettings.js.map +0 -1
  219. package/lib/module/api/playback/PlaybackSettingsAPI.js +0 -2
  220. package/lib/module/api/playback/PlaybackSettingsAPI.js.map +0 -1
  221. package/lib/module/api/playback/barrel.js +0 -4
  222. package/lib/module/api/playback/barrel.js.map +0 -1
  223. package/lib/module/api/source/ads/THEOplayerAdDescription.js +0 -4
  224. package/lib/module/api/source/ads/THEOplayerAdDescription.js.map +0 -1
  225. package/lib/module/internal/playback/PlaybackSettings.js +0 -23
  226. package/lib/module/internal/playback/PlaybackSettings.js.map +0 -1
  227. package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts +0 -35
  228. package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts.map +0 -1
  229. package/lib/typescript/api/playback/barrel.d.ts +0 -2
  230. package/lib/typescript/api/playback/barrel.d.ts.map +0 -1
  231. package/lib/typescript/api/source/ads/THEOplayerAdDescription.d.ts.map +0 -1
  232. package/lib/typescript/internal/playback/PlaybackSettings.d.ts +0 -7
  233. package/lib/typescript/internal/playback/PlaybackSettings.d.ts.map +0 -1
  234. package/src/api/playback/PlaybackSettingsAPI.ts +0 -36
  235. package/src/api/playback/barrel.ts +0 -1
  236. package/src/internal/playback/PlaybackSettings.ts +0 -25
@@ -2,6 +2,7 @@ package com.theoplayer.theolive
2
2
 
3
3
  import com.facebook.react.bridge.Arguments
4
4
  import com.facebook.react.bridge.WritableMap
5
+ import com.theoplayer.android.api.event.EventListener
5
6
  import com.theoplayer.android.api.event.player.theolive.DistributionLoadStartEvent
6
7
  import com.theoplayer.android.api.event.player.theolive.DistributionOfflineEvent
7
8
  import com.theoplayer.android.api.event.player.theolive.EndpointLoadedEvent
@@ -21,18 +22,30 @@ class THEOliveEventAdapter(private val theoLiveApi: TheoLive, private val emitte
21
22
  fun emit(payload: WritableMap?)
22
23
  }
23
24
 
25
+ private val onDistributionLoadStart =
26
+ EventListener<DistributionLoadStartEvent> { onDistributionLoadStart(it) }
27
+ private val onDistributionOffline =
28
+ EventListener<DistributionOfflineEvent> { onDistributionOffline(it) }
29
+ private val onEndPointLoaded =
30
+ EventListener<EndpointLoadedEvent> { onEndPointLoaded(it) }
31
+ private val onIntentOfFallback =
32
+ EventListener<IntentToFallbackEvent> { onIntentOfFallback(it) }
33
+
24
34
  init {
25
- theoLiveApi.addEventListener(TheoLiveEventTypes.DISTRIBUTIONLOADSTART, this::onDistributionLoadStart)
26
- theoLiveApi.addEventListener(TheoLiveEventTypes.DISTRIBUTIONOFFLINE, this::onDistributionOffline)
27
- theoLiveApi.addEventListener(TheoLiveEventTypes.ENDPOINTLOADED, this::onEndPointLoaded)
28
- theoLiveApi.addEventListener(TheoLiveEventTypes.INTENTTOFALLBACK, this::onIntentOfFallback)
35
+ theoLiveApi.addEventListener(TheoLiveEventTypes.DISTRIBUTIONLOADSTART, onDistributionLoadStart)
36
+ theoLiveApi.addEventListener(TheoLiveEventTypes.DISTRIBUTIONOFFLINE, onDistributionOffline)
37
+ theoLiveApi.addEventListener(TheoLiveEventTypes.ENDPOINTLOADED, onEndPointLoaded)
38
+ theoLiveApi.addEventListener(TheoLiveEventTypes.INTENTTOFALLBACK, onIntentOfFallback)
29
39
  }
30
40
 
31
41
  fun destroy() {
32
- theoLiveApi.removeEventListener(TheoLiveEventTypes.DISTRIBUTIONLOADSTART, this::onDistributionLoadStart)
33
- theoLiveApi.removeEventListener(TheoLiveEventTypes.DISTRIBUTIONOFFLINE, this::onDistributionOffline)
34
- theoLiveApi.removeEventListener(TheoLiveEventTypes.ENDPOINTLOADED, this::onEndPointLoaded)
35
- theoLiveApi.removeEventListener(TheoLiveEventTypes.INTENTTOFALLBACK, this::onIntentOfFallback)
42
+ theoLiveApi.removeEventListener(
43
+ TheoLiveEventTypes.DISTRIBUTIONLOADSTART,
44
+ onDistributionLoadStart
45
+ )
46
+ theoLiveApi.removeEventListener(TheoLiveEventTypes.DISTRIBUTIONOFFLINE, onDistributionOffline)
47
+ theoLiveApi.removeEventListener(TheoLiveEventTypes.ENDPOINTLOADED, onEndPointLoaded)
48
+ theoLiveApi.removeEventListener(TheoLiveEventTypes.INTENTTOFALLBACK, onIntentOfFallback)
36
49
  }
37
50
 
38
51
  private fun onDistributionLoadStart(event: DistributionLoadStartEvent) {
@@ -1,22 +1,35 @@
1
1
  package com.theoplayer.theolive
2
2
 
3
3
  import com.facebook.react.bridge.*
4
+ import com.facebook.react.module.annotations.ReactModule
5
+ import com.facebook.react.module.model.ReactModuleInfo
4
6
  import com.theoplayer.*
5
7
  import com.theoplayer.util.ViewResolver
6
8
 
7
- private const val TAG = "THEORCTTHEOliveModule"
8
-
9
9
  private const val PROP_ENGINE_LATENCY = "engineLatency"
10
10
  private const val PROP_DISTRIBUTION_LATENCY = "distributionLatency"
11
11
  private const val PROP_PLAYER_LATENCY = "playerLatency"
12
12
  private const val PROP_THEOLIVE_LATENCY = "theoliveLatency"
13
13
 
14
14
  @Suppress("unused")
15
+ @ReactModule(name = THEOliveModule.NAME)
15
16
  class THEOliveModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) {
17
+ companion object {
18
+ const val NAME = "THEORCTTHEOliveModule"
19
+ val INFO = ReactModuleInfo(
20
+ name = NAME,
21
+ className = NAME,
22
+ canOverrideExistingModule = false,
23
+ needsEagerInit = false,
24
+ isCxxModule = false,
25
+ isTurboModule = false,
26
+ )
27
+ }
28
+
16
29
  private val viewResolver: ViewResolver = ViewResolver(context)
17
30
 
18
31
  override fun getName(): String {
19
- return TAG
32
+ return NAME
20
33
  }
21
34
 
22
35
  @ReactMethod
@@ -1,6 +1,8 @@
1
1
  package com.theoplayer.track
2
2
 
3
3
  import android.graphics.Color
4
+ import android.graphics.Typeface
5
+ import com.facebook.react.bridge.ReactApplicationContext
4
6
  import com.facebook.react.bridge.ReadableMap
5
7
  import com.theoplayer.android.api.player.track.texttrack.TextTrackStyle
6
8
 
@@ -10,6 +12,7 @@ private const val PROP_EDGE_COLOR = "edgeColor"
10
12
  private const val PROP_FONT_COLOR = "fontColor"
11
13
  private const val PROP_FONT_FAMILY = "fontFamily"
12
14
  private const val PROP_FONT_SIZE = "fontSize"
15
+ private const val PROP_FONT_PATH = "fontPath"
13
16
  private const val PROP_WINDOW_COLOR = "windowColor"
14
17
  private const val PROP_MARGIN_LEFT = "marginLeft"
15
18
  private const val PROP_MARGIN_RIGHT = "marginRight"
@@ -22,7 +25,7 @@ private const val PROP_COLOR_A = "a"
22
25
 
23
26
  object TextTrackStyleAdapter {
24
27
 
25
- fun applyTextTrackStyle(style: TextTrackStyle, props: ReadableMap?) {
28
+ fun applyTextTrackStyle(style: TextTrackStyle, context: ReactApplicationContext, props: ReadableMap?) {
26
29
  if (props == null) {
27
30
  return
28
31
  }
@@ -65,6 +68,10 @@ object TextTrackStyleAdapter {
65
68
  if (props.hasKey(PROP_MARGIN_RIGHT)) {
66
69
  style.marginRight = props.getInt(PROP_MARGIN_RIGHT)
67
70
  }
71
+ if (props.hasKey(PROP_FONT_PATH)) {
72
+ val font = Typeface.createFromAsset(context.assets, props.getString(PROP_FONT_PATH))
73
+ style.font = font
74
+ }
68
75
  }
69
76
 
70
77
  private fun edgeStyleFromProps(style: String?): TextTrackStyle.EdgeType {
@@ -57,6 +57,9 @@ private const val EVENT_PROP_MUTED = "muted"
57
57
  private const val EVENT_PROP_WIDTH = "width"
58
58
  private const val EVENT_PROP_HEIGHT = "height"
59
59
 
60
+ private const val EVENT_PROP_VIDEO_WIDTH = "videoWidth"
61
+ private const val EVENT_PROP_VIDEO_HEIGHT = "videoHeight"
62
+
60
63
  class PayloadBuilder {
61
64
  private val payload: WritableMap = Arguments.createMap()
62
65
 
@@ -138,6 +141,11 @@ class PayloadBuilder {
138
141
  payload.putInt(EVENT_PROP_WIDTH, width)
139
142
  payload.putInt(EVENT_PROP_HEIGHT, height)
140
143
  }
144
+
145
+ fun videoSize(videoWidth: Int, videoHeight: Int) = apply {
146
+ payload.putInt(EVENT_PROP_VIDEO_WIDTH, videoWidth)
147
+ payload.putInt(EVENT_PROP_VIDEO_HEIGHT, videoHeight)
148
+ }
141
149
  fun seekable(ranges: TimeRanges?) = apply {
142
150
  payload.putArray(EVENT_PROP_SEEKABLE, fromTimeRanges(ranges))
143
151
  }
@@ -46,9 +46,11 @@ RCT_EXPORT_VIEW_PROPERTY(onNativeMediaTrackEvent, RCTDirectEventBlock);
46
46
  RCT_EXPORT_VIEW_PROPERTY(onNativeDeviceOrientationChanged, RCTDirectEventBlock);
47
47
  RCT_EXPORT_VIEW_PROPERTY(onNativePlayerReady, RCTDirectEventBlock);
48
48
  RCT_EXPORT_VIEW_PROPERTY(onNativePresentationModeChange, RCTDirectEventBlock);
49
- RCT_EXPORT_VIEW_PROPERTY(onNativeResize, RCTDirectEventBlock);
49
+ RCT_EXPORT_VIEW_PROPERTY(onNativeDimensionChange, RCTDirectEventBlock);
50
+ RCT_EXPORT_VIEW_PROPERTY(onNativeVideoResize, RCTDirectEventBlock);
50
51
  RCT_EXPORT_VIEW_PROPERTY(onNativeAdEvent, RCTDirectEventBlock);
51
52
  RCT_EXPORT_VIEW_PROPERTY(onNativeTHEOliveEvent, RCTDirectEventBlock);
53
+ RCT_EXPORT_VIEW_PROPERTY(onNativeTHEOadsEvent, RCTDirectEventBlock);
52
54
  RCT_EXPORT_VIEW_PROPERTY(onNativeCastEvent, RCTDirectEventBlock);
53
55
 
54
56
  @end
@@ -285,3 +287,21 @@ RCT_EXTERN_METHOD(setAuthToken:(nonnull NSNumber *)node
285
287
 
286
288
  @end
287
289
 
290
+ // ----------------------------------------------------------------------------
291
+ // THEOAds Module
292
+ // ----------------------------------------------------------------------------
293
+ @interface RCT_EXTERN_REMAP_MODULE(THEORCTTHEOAdsModule, THEOplayerRCTTHEOAdsAPI, NSObject)
294
+
295
+ RCT_EXTERN_METHOD(currentInterstitials:(nonnull NSNumber *)node
296
+ resolver:(RCTPromiseResolveBlock)resolve
297
+ rejecter:(RCTPromiseRejectBlock)reject)
298
+
299
+ RCT_EXTERN_METHOD(scheduledInterstitials:(nonnull NSNumber *)node
300
+ resolver:(RCTPromiseResolveBlock)resolve
301
+ rejecter:(RCTPromiseRejectBlock)reject)
302
+
303
+ RCT_EXTERN_METHOD(replaceAdTagParameters:(nonnull NSNumber *)node
304
+ adTagParameters:(nullable NSDictionary *)adTagParameters)
305
+
306
+ @end
307
+
@@ -45,8 +45,11 @@ let DEBUG_CACHE_EVENTS = DEBUG && false
45
45
  // Debug flag to monitor cache API usage
46
46
  let DEBUG_CACHE_API = DEBUG && false
47
47
 
48
- // Debug flag to monitor theolive API usage
48
+ // Debug flag to monitor THEOLive API usage
49
49
  let DEBUG_THEOLIVE_API = DEBUG && false
50
50
 
51
+ // Debug flag to monitor THEOAds API usage
52
+ let DEBUG_THEOADS_API = DEBUG && false
53
+
51
54
  // Debug flag to monitor AudioSession interruptions (e.g. phone cll)
52
55
  let DEBUG_INTERRUPTIONS = DEBUG && false
@@ -29,7 +29,8 @@ public class THEOplayerRCTMainEventHandler {
29
29
  var onNativeRateChange: RCTDirectEventBlock?
30
30
  var onNativeWaiting: RCTDirectEventBlock?
31
31
  var onNativeCanPlay: RCTDirectEventBlock?
32
- var onNativeResize: RCTDirectEventBlock?
32
+ var onNativeDimensionChange: RCTDirectEventBlock?
33
+ var onNativeVideoResize: RCTDirectEventBlock?
33
34
 
34
35
  // MARK: player Listeners
35
36
  private var playListener: EventListener?
@@ -51,11 +52,10 @@ public class THEOplayerRCTMainEventHandler {
51
52
  private var rateChangeListener: EventListener?
52
53
  private var waitingListener: EventListener?
53
54
  private var canPlayListener: EventListener?
54
- private var resizeListener: EventListener?
55
- private var presentationModeChangeListener: EventListener?
55
+ private var videoResizeListener: EventListener?
56
56
 
57
57
  // MARK: player observer
58
- private var videoRectObserver: NSKeyValueObservation?
58
+ private var dimensionChangeObserver: NSKeyValueObservation?
59
59
 
60
60
  // MARK: - destruction
61
61
  func destroy() {
@@ -310,27 +310,27 @@ public class THEOplayerRCTMainEventHandler {
310
310
  }
311
311
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] CanPlay listener attached to THEOplayer") }
312
312
 
313
- // RESIZE: TODO on iOS SDK
314
- /*self.resizeListener = player.addEventListener(type: PlayerEventTypes.RESIZE) { [weak self, weak player] event in
313
+ // RESIZE
314
+ self.videoResizeListener = player.addEventListener(type: PlayerEventTypes.RESIZE) { [weak self, weak player] event in
315
315
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Received RESIZE event from THEOplayer") }
316
316
  if let wplayer = player,
317
- let forwardedResizeEvent = self?.onNativeResize {
318
- forwardedResizeEvent(
317
+ let forwardedVideoResizeEvent = self?.onNativeVideoResize {
318
+ forwardedVideoResizeEvent(
319
319
  [
320
- "width": wplayer.frame.width,
321
- "height": wplayer.frame.height,
320
+ "videoWidth": wplayer.videoWidth,
321
+ "videoHeight": wplayer.videoHeight,
322
322
  ]
323
323
  )
324
324
  }
325
325
  }
326
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] Resize listener attached to THEOplayer") }*/
326
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] Resize listener attached to THEOplayer") }
327
327
 
328
- // RESIZE: implemented using videoRect Observation
329
- self.videoRectObserver = player.observe(\.videoRect, options: [.new]) { [weak self, weak player] view, change in
328
+ // DIMENSION CHANGE: implemented using videoRect Observation
329
+ self.dimensionChangeObserver = player.observe(\.videoRect, options: [.new]) { [weak self, weak player] view, change in
330
330
  if DEBUG_THEOPLAYER_EVENTS { PrintUtils.printLog(logText: "[NATIVE] Observed videoRect change on THEOplayer") }
331
331
  if let wplayer = player,
332
- let forwardedResizeEvent = self?.onNativeResize {
333
- forwardedResizeEvent(
332
+ let forwardedDimensionChangeEvent = self?.onNativeDimensionChange {
333
+ forwardedDimensionChangeEvent(
334
334
  [
335
335
  "width": wplayer.frame.width,
336
336
  "height": wplayer.frame.height,
@@ -453,12 +453,15 @@ public class THEOplayerRCTMainEventHandler {
453
453
  if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] CanPlay listener dettached from THEOplayer") }
454
454
  }
455
455
 
456
+ // DIMENSION CHANGE
457
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] Invalidate dimensionChangeObserver from THEOplayer") }
458
+ self.dimensionChangeObserver?.invalidate()
459
+ self.dimensionChangeObserver = nil
460
+
456
461
  // RESIZE
457
- /*if let resizeListener = self.resizeListener {
458
- player.removeEventListener(type: PlayerEventTypes.RESIZE, listener: resizeListener)
459
- if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] Resize listener dettached from THEOplayer") }
460
- }*/
461
- self.videoRectObserver?.invalidate()
462
- self.videoRectObserver = nil
462
+ if let videoResizeListener = self.videoResizeListener {
463
+ player.removeEventListener(type: PlayerEventTypes.RESIZE, listener: videoResizeListener)
464
+ if DEBUG_EVENTHANDLER { PrintUtils.printLog(logText: "[NATIVE] Resize listener dettached from THEOplayer") }
465
+ }
463
466
  }
464
467
  }
@@ -276,7 +276,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
276
276
  }
277
277
  if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Showing textTrack \(uidValue) on TheoPlayer") }
278
278
  for i in 0...textTracks.count-1 {
279
- var textTrack: TextTrack = textTracks.get(i)
279
+ let textTrack: TextTrack = textTracks.get(i)
280
280
  if textTrack.uid == uidValue {
281
281
  textTrack.mode = TextTrackMode.showing
282
282
  } else if textTrack.mode == TextTrackMode.showing {
@@ -299,7 +299,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
299
299
  }
300
300
  if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Enabling audioTrack \(uidValue) on TheoPlayer") }
301
301
  for i in 0...audioTracks.count-1 {
302
- var audioTrack: MediaTrack = audioTracks.get(i)
302
+ let audioTrack: MediaTrack = audioTracks.get(i)
303
303
  audioTrack.enabled = (audioTrack.uid == uidValue)
304
304
  }
305
305
  }
@@ -318,7 +318,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
318
318
  }
319
319
  if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Enabling videoTrack \(uidValue) on TheoPlayer") }
320
320
  for i in 0...videoTracks.count-1 {
321
- var videoTrack: MediaTrack = videoTracks.get(i)
321
+ let videoTrack: MediaTrack = videoTracks.get(i)
322
322
  videoTrack.enabled = (videoTrack.uid == uidValue)
323
323
  }
324
324
  }
@@ -162,7 +162,8 @@ class THEOplayerRCTSourceDescriptionBuilder {
162
162
  }
163
163
 
164
164
  // 6. configure CMCD
165
- if let cmcd = sourceData[SD_PROP_CMCD] as? [String:Any] {
165
+ let cmcd = sourceData[SD_PROP_CMCD] as? [String:Any]
166
+ if cmcd != nil {
166
167
  typedSources.forEach { typedSource in
167
168
  typedSource.cmcd = true;
168
169
  }
@@ -32,6 +32,7 @@ public class THEOplayerRCTView: UIView {
32
32
  var metadataTrackEventHandler: THEOplayerRCTSideloadedMetadataTrackEventHandler
33
33
  var adEventHandler: THEOplayerRCTAdsEventHandler
34
34
  var theoliveEventHandler: THEOplayerRCTTHEOliveEventHandler
35
+ var theoadsEventHandler: THEOplayerRCTTHEOadsEventHandler
35
36
  var castEventHandler: THEOplayerRCTCastEventHandler
36
37
  var presentationModeManager: THEOplayerRCTPresentationModeManager
37
38
  var backgroundAudioManager: THEOplayerRCTBackgroundAudioManager
@@ -99,6 +100,7 @@ public class THEOplayerRCTView: UIView {
99
100
  self.metadataTrackEventHandler = THEOplayerRCTSideloadedMetadataTrackEventHandler()
100
101
  self.adEventHandler = THEOplayerRCTAdsEventHandler()
101
102
  self.theoliveEventHandler = THEOplayerRCTTHEOliveEventHandler()
103
+ self.theoadsEventHandler = THEOplayerRCTTHEOadsEventHandler()
102
104
  self.castEventHandler = THEOplayerRCTCastEventHandler()
103
105
  self.presentationModeManager = THEOplayerRCTPresentationModeManager()
104
106
  self.backgroundAudioManager = THEOplayerRCTBackgroundAudioManager()
@@ -121,6 +123,7 @@ public class THEOplayerRCTView: UIView {
121
123
  self.deviceEventHandler.destroy()
122
124
  self.adEventHandler.destroy()
123
125
  self.theoliveEventHandler.destroy()
126
+ self.theoadsEventHandler.destroy()
124
127
  self.castEventHandler.destroy()
125
128
  self.nowPlayingManager.destroy()
126
129
  self.remoteCommandsManager.destroy()
@@ -156,6 +159,7 @@ public class THEOplayerRCTView: UIView {
156
159
  self.mediaTrackEventHandler.setPlayer(player)
157
160
  self.adEventHandler.setPlayer(player)
158
161
  self.theoliveEventHandler.setPlayer(player)
162
+ self.theoadsEventHandler.setPlayer(player)
159
163
  self.castEventHandler.setPlayer(player)
160
164
  self.nowPlayingManager.setPlayer(player)
161
165
  self.remoteCommandsManager.setPlayer(player)
@@ -354,10 +358,16 @@ public class THEOplayerRCTView: UIView {
354
358
  if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeCanPlay prop set.") }
355
359
  }
356
360
 
357
- @objc(setOnNativeResize:)
358
- func setOnNativeResize(nativeResize: @escaping RCTDirectEventBlock) {
359
- self.mainEventHandler.onNativeResize = nativeResize
360
- if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeResize prop set.") }
361
+ @objc(setOnNativeDimensionChange:)
362
+ func setOnNativeDimensionChange(nativeDimensionChange: @escaping RCTDirectEventBlock) {
363
+ self.mainEventHandler.onNativeDimensionChange = nativeDimensionChange
364
+ if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeDimensionChange prop set.") }
365
+ }
366
+
367
+ @objc(setOnNativeVideoResize:)
368
+ func setOnNativeVideoResize(nativeVideoResize: @escaping RCTDirectEventBlock) {
369
+ self.mainEventHandler.onNativeVideoResize = nativeVideoResize
370
+ if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeVideoResize prop set.") }
361
371
  }
362
372
 
363
373
  // MARK: - Listener based PRESENTATIONMODE event bridging
@@ -427,4 +437,12 @@ public class THEOplayerRCTView: UIView {
427
437
  self.theoliveEventHandler.onNativeTHEOliveEvent = nativeTHEOliveEvent
428
438
  if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeTHEOliveEvent prop set.") }
429
439
  }
440
+
441
+ // MARK: - Listener based THEOADS event bridging
442
+
443
+ @objc(setOnNativeTHEOadsEvent:)
444
+ func setOnNativeTHEOadsEvent(nativeTHEOadsEvent: @escaping RCTDirectEventBlock) {
445
+ self.theoadsEventHandler.onNativeTHEOadsEvent = nativeTHEOadsEvent
446
+ if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE] nativeTHEOadsEvent prop set.") }
447
+ }
430
448
  }