react-native-theoplayer 3.7.0 → 3.8.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 (82) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/android/build.gradle +1 -1
  3. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/6.10.0/ads-wrapper-6.10.0.aar +0 -0
  4. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/{4.8.0/ads-wrapper-4.8.0.pom → 6.10.0/ads-wrapper-6.10.0.pom} +1 -1
  5. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +4 -4
  6. package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +4 -0
  7. package/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt +9 -4
  8. package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +1 -1
  9. package/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt +1 -1
  10. package/android/src/main/java/com/theoplayer/cache/CacheModule.kt +1 -1
  11. package/android/src/main/java/com/theoplayer/cast/CastModule.kt +1 -1
  12. package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +1 -1
  13. package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +1 -1
  14. package/ios/THEOplayerRCTBridge.m +6 -6
  15. package/ios/THEOplayerRCTPlayerAPI.swift +25 -25
  16. package/ios/ads/THEOplayerRCTAdsAPI.swift +17 -17
  17. package/ios/cache/THEOplayerRCTCacheAPI.swift +29 -29
  18. package/ios/casting/THEOplayerRCTCastAPI.swift +9 -9
  19. package/ios/contentprotection/THEOplayerRCTContentProtectionAPI.swift +22 -22
  20. package/ios/eventBroadcasting/THEOplayerRCTEventBroadcastAPI.swift +5 -5
  21. package/lib/commonjs/api/config/PlayerConfiguration.js.map +1 -1
  22. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +18 -17
  23. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
  24. package/lib/commonjs/internal/adapter/abr/AbrAdapter.js +2 -1
  25. package/lib/commonjs/internal/adapter/abr/AbrAdapter.js.map +1 -1
  26. package/lib/commonjs/internal/adapter/ads/THEOplayerNativeAdsAdapter.js +7 -6
  27. package/lib/commonjs/internal/adapter/ads/THEOplayerNativeAdsAdapter.js.map +1 -1
  28. package/lib/commonjs/internal/adapter/ads/THEOplayerNativeGoogleDAI.js +5 -4
  29. package/lib/commonjs/internal/adapter/ads/THEOplayerNativeGoogleDAI.js.map +1 -1
  30. package/lib/commonjs/internal/adapter/broadcast/EventBroadcastAdapter.js +2 -1
  31. package/lib/commonjs/internal/adapter/broadcast/EventBroadcastAdapter.js.map +1 -1
  32. package/lib/commonjs/internal/adapter/cast/THEOplayerNativeAirplay.js +5 -4
  33. package/lib/commonjs/internal/adapter/cast/THEOplayerNativeAirplay.js.map +1 -1
  34. package/lib/commonjs/internal/adapter/cast/THEOplayerNativeChromecast.js +7 -6
  35. package/lib/commonjs/internal/adapter/cast/THEOplayerNativeChromecast.js.map +1 -1
  36. package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js +11 -10
  37. package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
  38. package/lib/commonjs/internal/cache/MediaCache.js +4 -3
  39. package/lib/commonjs/internal/cache/MediaCache.js.map +1 -1
  40. package/lib/commonjs/internal/cache/NativeCachingTaskAdapter.js +5 -4
  41. package/lib/commonjs/internal/cache/NativeCachingTaskAdapter.js.map +1 -1
  42. package/lib/commonjs/internal/drm/ContentProtectionRegistry.js +23 -22
  43. package/lib/commonjs/internal/drm/ContentProtectionRegistry.js.map +1 -1
  44. package/lib/module/api/config/PlayerConfiguration.js.map +1 -1
  45. package/lib/module/internal/adapter/THEOplayerAdapter.js +18 -17
  46. package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
  47. package/lib/module/internal/adapter/abr/AbrAdapter.js +2 -1
  48. package/lib/module/internal/adapter/abr/AbrAdapter.js.map +1 -1
  49. package/lib/module/internal/adapter/ads/THEOplayerNativeAdsAdapter.js +7 -6
  50. package/lib/module/internal/adapter/ads/THEOplayerNativeAdsAdapter.js.map +1 -1
  51. package/lib/module/internal/adapter/ads/THEOplayerNativeGoogleDAI.js +5 -4
  52. package/lib/module/internal/adapter/ads/THEOplayerNativeGoogleDAI.js.map +1 -1
  53. package/lib/module/internal/adapter/broadcast/EventBroadcastAdapter.js +2 -1
  54. package/lib/module/internal/adapter/broadcast/EventBroadcastAdapter.js.map +1 -1
  55. package/lib/module/internal/adapter/cast/THEOplayerNativeAirplay.js +5 -4
  56. package/lib/module/internal/adapter/cast/THEOplayerNativeAirplay.js.map +1 -1
  57. package/lib/module/internal/adapter/cast/THEOplayerNativeChromecast.js +7 -6
  58. package/lib/module/internal/adapter/cast/THEOplayerNativeChromecast.js.map +1 -1
  59. package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js +11 -10
  60. package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
  61. package/lib/module/internal/cache/MediaCache.js +4 -3
  62. package/lib/module/internal/cache/MediaCache.js.map +1 -1
  63. package/lib/module/internal/cache/NativeCachingTaskAdapter.js +5 -4
  64. package/lib/module/internal/cache/NativeCachingTaskAdapter.js.map +1 -1
  65. package/lib/module/internal/drm/ContentProtectionRegistry.js +23 -22
  66. package/lib/module/internal/drm/ContentProtectionRegistry.js.map +1 -1
  67. package/lib/typescript/api/config/PlayerConfiguration.d.ts +10 -0
  68. package/package.json +1 -1
  69. package/react-native-theoplayer.podspec +15 -8
  70. package/src/api/config/PlayerConfiguration.ts +11 -0
  71. package/src/internal/adapter/THEOplayerAdapter.ts +19 -17
  72. package/src/internal/adapter/abr/AbrAdapter.ts +3 -1
  73. package/src/internal/adapter/ads/THEOplayerNativeAdsAdapter.ts +8 -6
  74. package/src/internal/adapter/ads/THEOplayerNativeGoogleDAI.ts +6 -4
  75. package/src/internal/adapter/broadcast/EventBroadcastAdapter.ts +3 -1
  76. package/src/internal/adapter/cast/THEOplayerNativeAirplay.ts +6 -4
  77. package/src/internal/adapter/cast/THEOplayerNativeChromecast.ts +8 -6
  78. package/src/internal/adapter/track/TextTrackStyleAdapter.ts +11 -10
  79. package/src/internal/cache/MediaCache.ts +5 -3
  80. package/src/internal/cache/NativeCachingTaskAdapter.ts +6 -4
  81. package/src/internal/drm/ContentProtectionRegistry.ts +24 -22
  82. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/4.8.0/ads-wrapper-4.8.0.aar +0 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.0/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.8.0] - 24-02-23
9
+
10
+ ### Changed
11
+
12
+ - Renamed native modules to avoid name collisions with external packages.
13
+
14
+ ### Added
15
+
16
+ - Added `adbreakbegin` and `adbreakend` events for Google IMA on Android.
17
+ - Added `liveOffset` property to `PlayerConfiguration`, allowing to set a custom offset from the live point.
18
+ - Added a second, alternative config filename to the iOS podspec setup to prevent a react-native-theoplayer module resolving clash.
19
+
20
+ ## [3.7.1] - 24-02-09
21
+
22
+ ### Fixed
23
+
24
+ - Fixed a dependency issue on iOS when using chromecast or Google IMA features.
25
+
8
26
  ## [3.7.0] - 24-02-09
9
27
 
10
28
  ### Added
@@ -117,7 +117,7 @@ dependencies {
117
117
  println("Using THEOplayer (${versionString(theoplayer_sdk_version)})")
118
118
  implementation "com.theoplayer.theoplayer-sdk-android:core:${theoplayer_sdk_version}"
119
119
 
120
- implementation "com.theoplayer.theoplayer-sdk-android:ads-wrapper:4.8.0"
120
+ implementation "com.theoplayer.theoplayer-sdk-android:ads-wrapper:6.10.0"
121
121
 
122
122
  if (enabledMediaSession) {
123
123
  println("Enable THEOplayer MediaSession extension (${versionString(theoplayer_mediasession_version)})")
@@ -4,6 +4,6 @@
4
4
  <modelVersion>4.0.0</modelVersion>
5
5
  <groupId>com.theoplayer.theoplayer-sdk-android</groupId>
6
6
  <artifactId>ads-wrapper</artifactId>
7
- <version>4.8.0</version>
7
+ <version>6.10.0</version>
8
8
  <packaging>aar</packaging>
9
9
  </project>
@@ -3,11 +3,11 @@
3
3
  <groupId>com.theoplayer.theoplayer-sdk-android</groupId>
4
4
  <artifactId>ads-wrapper</artifactId>
5
5
  <versioning>
6
- <latest>4.8.0</latest>
7
- <release>4.8.0</release>
6
+ <latest>6.10.0</latest>
7
+ <release>6.10.0</release>
8
8
  <versions>
9
- <version>4.8.0</version>
9
+ <version>6.10.0</version>
10
10
  </versions>
11
- <lastUpdated>20230217111544</lastUpdated>
11
+ <lastUpdated>20240221111544</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -17,6 +17,7 @@ private const val PROP_LICENSE = "license"
17
17
  private const val PROP_LICENSE_URL = "licenseUrl"
18
18
  private const val PROP_PRELOAD = "preload"
19
19
  private const val PROP_LANGUAGE = "language"
20
+ private const val PROP_LIVE_OFFSET = "liveOffset"
20
21
  private const val PROP_UI_ENABLED = "uiEnabled"
21
22
  private const val PROP_CAST_STRATEGY = "strategy"
22
23
  private const val PROP_RETRY_CONFIG = "retryConfiguration"
@@ -48,6 +49,9 @@ class PlayerConfigAdapter(private val configProps: ReadableMap?) {
48
49
  if (hasKey(PROP_RETRY_CONFIG)) {
49
50
  networkConfiguration(networkConfig())
50
51
  }
52
+ if (hasKey(PROP_LIVE_OFFSET)) {
53
+ liveOffset(getDouble(PROP_LIVE_OFFSET))
54
+ }
51
55
  if (hasKey(PROP_UI_CONFIGURATION)) {
52
56
  ui(uiConfig())
53
57
  }
@@ -4,6 +4,7 @@ import com.facebook.react.bridge.Arguments
4
4
  import com.facebook.react.bridge.ReadableMap
5
5
  import com.theoplayer.android.api.ads.wrapper.AdsApiWrapper
6
6
  import com.facebook.react.bridge.WritableMap
7
+ import com.google.ads.interactivemedia.v3.api.AdError
7
8
  import com.theoplayer.android.api.ads.Ad
8
9
  import com.theoplayer.android.api.ads.AdBreak
9
10
  import com.theoplayer.android.api.ads.GoogleImaAd
@@ -30,7 +31,9 @@ private val ALL_AD_EVENTS = arrayOf(
30
31
  GoogleImaAdEventType.SKIPPED,
31
32
  GoogleImaAdEventType.AD_ERROR,
32
33
  GoogleImaAdEventType.AD_BUFFERING,
33
- GoogleImaAdEventType.AD_BREAK_FETCH_ERROR
34
+ GoogleImaAdEventType.AD_BREAK_FETCH_ERROR,
35
+ GoogleImaAdEventType.CONTENT_PAUSE_REQUESTED,
36
+ GoogleImaAdEventType.CONTENT_RESUME_REQUESTED
34
37
  )
35
38
 
36
39
  class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmitter) {
@@ -42,7 +45,7 @@ class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmi
42
45
 
43
46
  init {
44
47
  eventListener = object : AdEventListener {
45
- override fun <E : AdEvent<*>?> onAdEvent(type: EventType<E>?, ad: Ad?) {
48
+ override fun <E : AdEvent<*>?> onAdEvent(type: EventType<E>?, ad: Ad?, adData: Map<String, String>?, adError: AdError?) {
46
49
  val payload = Arguments.createMap()
47
50
  if (type != null) {
48
51
  payload.putString(EVENT_PROP_TYPE, mapAdType(type))
@@ -53,7 +56,7 @@ class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmi
53
56
  eventEmitter.emit(payload)
54
57
  }
55
58
 
56
- override fun <E : AdEvent<*>?> onAdBreakEvent(type: EventType<E>?, adBreak: AdBreak?) {
59
+ override fun <E : AdEvent<*>?> onAdBreakEvent(type: EventType<E>?, adBreak: AdBreak?, adData: Map<String, String>?, adError: AdError?) {
57
60
  val payload = Arguments.createMap()
58
61
  if (type != null) {
59
62
  payload.putString(EVENT_PROP_TYPE, mapAdType(type))
@@ -106,7 +109,7 @@ class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmi
106
109
  "aderror" -> GoogleImaAdEventType.AD_ERROR
107
110
  "adbuffering" -> GoogleImaAdEventType.AD_BUFFERING
108
111
  "adbreakbegin" -> GoogleImaAdEventType.AD_BREAK_STARTED
109
- "adbreakend" -> GoogleImaAdEventType.CONTENT_RESUME_REQUESTED
112
+ "adbreakend" -> GoogleImaAdEventType.AD_BREAK_ENDED
110
113
  else -> null /*unknown*/
111
114
  }
112
115
  }
@@ -122,6 +125,8 @@ class AdEventAdapter(private val adsApi: AdsApiWrapper, eventEmitter: AdEventEmi
122
125
  GoogleImaAdEventType.SKIPPED -> "adskip"
123
126
  GoogleImaAdEventType.AD_ERROR -> "aderror"
124
127
  GoogleImaAdEventType.AD_BUFFERING -> "adbuffering"
128
+ GoogleImaAdEventType.CONTENT_PAUSE_REQUESTED -> "adbreakbegin"
129
+ GoogleImaAdEventType.CONTENT_RESUME_REQUESTED -> "adbreakend"
125
130
  GoogleImaAdEventType.AD_BREAK_STARTED -> "adbreakbegin"
126
131
  GoogleImaAdEventType.AD_BREAK_ENDED -> "adbreakend"
127
132
  GoogleImaAdEventType.AD_BREAK_FETCH_ERROR -> "aderror"
@@ -9,7 +9,7 @@ import com.theoplayer.util.ViewResolver
9
9
  import com.theoplayer.ReactTHEOplayerView
10
10
  import com.theoplayer.android.api.error.THEOplayerException
11
11
 
12
- private const val TAG = "AdsModule"
12
+ private const val TAG = "THEORCTAdsModule"
13
13
 
14
14
  class AdsModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) {
15
15
  private val sourceHelper = SourceAdapter()
@@ -9,7 +9,7 @@ import com.facebook.react.module.annotations.ReactModule
9
9
  import com.theoplayer.ReactTHEOplayerView
10
10
  import com.theoplayer.util.ViewResolver
11
11
 
12
- private const val TAG = "EventBroadcastModule"
12
+ private const val TAG = "THEORCTEventBroadcastModule"
13
13
 
14
14
  @ReactModule(name = TAG)
15
15
  class EventBroadcastModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) {
@@ -30,7 +30,7 @@ import com.theoplayer.source.SourceAdapter
30
30
  import org.json.JSONException
31
31
  import org.json.JSONObject
32
32
 
33
- private const val TAG = "CacheModule"
33
+ private const val TAG = "THEORCTCacheModule"
34
34
 
35
35
  private const val PROP_STATUS = "status"
36
36
  private const val PROP_ID = "id"
@@ -14,7 +14,7 @@ class CastModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(
14
14
  private val viewResolver: ViewResolver = ViewResolver(context)
15
15
 
16
16
  override fun getName(): String {
17
- return "CastModule"
17
+ return "THEORCTCastModule"
18
18
  }
19
19
 
20
20
  @ReactMethod
@@ -19,7 +19,7 @@ data class BridgeRequest(
19
19
  val onTimeout: Runnable
20
20
  )
21
21
 
22
- private const val TAG = "ContentProtectionModule"
22
+ private const val TAG = "THEORCTContentProtectionModule"
23
23
 
24
24
  private const val EVENT_CERTIFICATE_REQUEST = "onCertificateRequest"
25
25
  private const val EVENT_CERTIFICATE_REQUEST_PROCESSED_AS_REQUEST = "onCertificateRequestProcessedAsRequest"
@@ -14,7 +14,7 @@ import com.theoplayer.presentation.PipConfigAdapter
14
14
  import com.theoplayer.track.TextTrackStyleAdapter
15
15
  import com.theoplayer.util.ViewResolver
16
16
 
17
- private const val TAG = "PlayerModule"
17
+ private const val TAG = "THEORCTPlayerModule"
18
18
 
19
19
  @Suppress("unused")
20
20
  class PlayerModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) {
@@ -57,7 +57,7 @@ RCT_EXTERN_METHOD(destroy:(nonnull NSNumber *)node);
57
57
  // ----------------------------------------------------------------------------
58
58
  // Player Module
59
59
  // ----------------------------------------------------------------------------
60
- @interface RCT_EXTERN_REMAP_MODULE(PlayerModule, THEOplayerRCTPlayerAPI, NSObject)
60
+ @interface RCT_EXTERN_REMAP_MODULE(THEORCTPlayerModule, THEOplayerRCTPlayerAPI, NSObject)
61
61
 
62
62
  RCT_EXTERN_METHOD(setPaused:(nonnull NSNumber *)node
63
63
  paused:(BOOL)paused)
@@ -116,7 +116,7 @@ RCT_EXTERN_METHOD(setTextTrackStyle:(nonnull NSNumber *)node
116
116
  // Ads Module
117
117
  // ----------------------------------------------------------------------------
118
118
 
119
- @interface RCT_EXTERN_REMAP_MODULE(AdsModule, THEOplayerRCTAdsAPI, NSObject)
119
+ @interface RCT_EXTERN_REMAP_MODULE(THEORCTAdsModule, THEOplayerRCTAdsAPI, NSObject)
120
120
 
121
121
  RCT_EXTERN_METHOD(skip:(nonnull NSNumber *)node)
122
122
 
@@ -161,7 +161,7 @@ RCT_EXTERN_METHOD(daiStreamTimeForContentTime:(nonnull NSNumber *)node
161
161
  // ----------------------------------------------------------------------------
162
162
  // ContentProtection Module
163
163
  // ----------------------------------------------------------------------------
164
- @interface RCT_EXTERN_REMAP_MODULE(ContentProtectionModule, THEOplayerRCTContentProtectionAPI, RCTEventEmitter)
164
+ @interface RCT_EXTERN_REMAP_MODULE(THEORCTContentProtectionModule, THEOplayerRCTContentProtectionAPI, RCTEventEmitter)
165
165
 
166
166
  RCT_EXTERN_METHOD(onBuildProcessed:(NSDictionary)result)
167
167
  RCT_EXTERN_METHOD(onCertificateRequestProcessedAsRequest:(NSDictionary)result)
@@ -180,7 +180,7 @@ RCT_EXTERN_METHOD(registerContentProtectionIntegration:(nonnull NSString *)integ
180
180
  // Cast Module
181
181
  // ----------------------------------------------------------------------------
182
182
 
183
- @interface RCT_EXTERN_REMAP_MODULE(CastModule, THEOplayerRCTCastAPI, NSObject)
183
+ @interface RCT_EXTERN_REMAP_MODULE(THEORCTCastModule, THEOplayerRCTCastAPI, NSObject)
184
184
 
185
185
  RCT_EXTERN_METHOD(casting:(nonnull NSNumber *)node
186
186
  resolver:(RCTPromiseResolveBlock)resolve
@@ -221,7 +221,7 @@ RCT_EXTERN_METHOD(airplayStop:(nonnull NSNumber *)node)
221
221
  // ----------------------------------------------------------------------------
222
222
  // Cache Module
223
223
  // ----------------------------------------------------------------------------
224
- @interface RCT_EXTERN_REMAP_MODULE(CacheModule, THEOplayerRCTCacheAPI, RCTEventEmitter)
224
+ @interface RCT_EXTERN_REMAP_MODULE(THEORCTCacheModule, THEOplayerRCTCacheAPI, RCTEventEmitter)
225
225
 
226
226
  RCT_EXTERN_METHOD(getInitialState:(RCTPromiseResolveBlock)resolve
227
227
  rejecter:(RCTPromiseRejectBlock)reject)
@@ -243,7 +243,7 @@ RCT_EXTERN_METHOD(renewLicense:(nonnull NSString *)id
243
243
  // ----------------------------------------------------------------------------
244
244
  // Broadcast Module
245
245
  // ----------------------------------------------------------------------------
246
- @interface RCT_EXTERN_REMAP_MODULE(EventBroadcastModule, THEOplayerRCTEventBroadcastAPI, NSObject)
246
+ @interface RCT_EXTERN_REMAP_MODULE(THEORCTEventBroadcastModule, THEOplayerRCTEventBroadcastAPI, NSObject)
247
247
 
248
248
  RCT_EXTERN_METHOD(broadcastEvent:(nonnull NSNumber *)node
249
249
  event:(NSDictionary)event)
@@ -28,15 +28,15 @@ let TTS_PROP_COLOR_A = "a"
28
28
  @objc(THEOplayerRCTPlayerAPI)
29
29
  class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
30
30
  @objc var bridge: RCTBridge!
31
-
31
+
32
32
  static func moduleName() -> String! {
33
- return "PlayerModule"
33
+ return "THEORCTPlayerModule"
34
34
  }
35
-
35
+
36
36
  static func requiresMainQueueSetup() -> Bool {
37
37
  return false
38
38
  }
39
-
39
+
40
40
  @objc(setPaused:paused:)
41
41
  func setPaused(_ node: NSNumber, paused: Bool) -> Void {
42
42
  DispatchQueue.main.async {
@@ -52,7 +52,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
52
52
  }
53
53
  }
54
54
  }
55
-
55
+
56
56
  @objc(setSource:src:)
57
57
  func setSource(_ node: NSNumber, src: NSDictionary) -> Void {
58
58
  DispatchQueue.main.async {
@@ -71,7 +71,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
71
71
  }
72
72
  }
73
73
  }
74
-
74
+
75
75
  private func setNewSourceDescription(player: THEOplayer, srcDescription: SourceDescription) {
76
76
  if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting new source on TheoPlayer") }
77
77
  #if canImport(THEOplayerConnectorSideloadedSubtitle)
@@ -80,12 +80,12 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
80
80
  player.source = srcDescription
81
81
  #endif
82
82
  }
83
-
83
+
84
84
  @objc(setABRConfig:abrConfig:)
85
85
  func setABRConfig(_ node: NSNumber, setABRConfig: NSDictionary) -> Void {
86
86
  if DEBUG_PLAYER_API { print(ERROR_MESSAGE_PLAYER_ABR_UNSUPPORTED_FEATURE) }
87
87
  }
88
-
88
+
89
89
  @objc(setCurrentTime:time:)
90
90
  func setCurrentTime(_ node: NSNumber, time: NSNumber) -> Void {
91
91
  DispatchQueue.main.async {
@@ -97,7 +97,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
97
97
  }
98
98
  }
99
99
  }
100
-
100
+
101
101
  @objc(setMuted:muted:)
102
102
  func setMuted(_ node: NSNumber, muted: Bool) -> Void {
103
103
  DispatchQueue.main.async {
@@ -110,12 +110,12 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
110
110
  }
111
111
  }
112
112
  }
113
-
113
+
114
114
  @objc(setVolume:volume:)
115
115
  func setVolume(_ node: NSNumber, volume: NSNumber) -> Void {
116
116
  if DEBUG_PLAYER_API { PrintUtils.printLog(logText: "[NATIVE] Setting volume: TheoPlayer does not handle volume changes for iOS. This is handled by the device.") }
117
117
  }
118
-
118
+
119
119
  @objc(setPlaybackRate:playbackRate:)
120
120
  func setPlaybackRate(_ node: NSNumber, playbackRate: NSNumber) -> Void {
121
121
  DispatchQueue.main.async {
@@ -129,7 +129,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
129
129
  }
130
130
  }
131
131
  }
132
-
132
+
133
133
  @objc(setPresentationMode:presentationMode:)
134
134
  func setPresentationMode(_ node: NSNumber, presentationMode: String) -> Void {
135
135
  DispatchQueue.main.async {
@@ -139,7 +139,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
139
139
  }
140
140
  }
141
141
  }
142
-
142
+
143
143
  @objc(setAspectRatio:ratio:)
144
144
  func setAspectRatio(_ node: NSNumber, ratio: String) -> Void {
145
145
  DispatchQueue.main.async {
@@ -153,7 +153,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
153
153
  }
154
154
  }
155
155
  }
156
-
156
+
157
157
  @objc(setPipConfig:pipConfig:)
158
158
  func setPipConfig(_ node: NSNumber, pipConfig: NSDictionary) -> Void {
159
159
  DispatchQueue.main.async {
@@ -163,13 +163,13 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
163
163
  }
164
164
  }
165
165
  }
166
-
166
+
167
167
  private func parsePipConfig(configDict: NSDictionary) -> PipConfig {
168
168
  var pipConfig = PipConfig()
169
169
  pipConfig.canStartPictureInPictureAutomaticallyFromInline = configDict["startsAutomatically"] as? Bool ?? false
170
170
  return pipConfig
171
171
  }
172
-
172
+
173
173
  @objc(setBackgroundAudioConfig:backgroundAudioConfig:)
174
174
  func setBackgroundAudioConfig(_ node: NSNumber, backgroundAudioConfig: NSDictionary) -> Void {
175
175
  DispatchQueue.main.async {
@@ -179,13 +179,13 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
179
179
  }
180
180
  }
181
181
  }
182
-
182
+
183
183
  private func parseBackgroundAudioConfig(configDict: NSDictionary) -> BackgroundAudioConfig {
184
184
  var backgroundAudio = BackgroundAudioConfig()
185
185
  backgroundAudio.enabled = configDict["enabled"] as? Bool ?? false
186
186
  return backgroundAudio
187
187
  }
188
-
188
+
189
189
  @objc(setSelectedTextTrack:uid:)
190
190
  func setSelectedTextTrack(_ node: NSNumber, uid: NSNumber) -> Void {
191
191
  DispatchQueue.main.async {
@@ -203,12 +203,12 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
203
203
  textTrack.mode = TextTrackMode.showing
204
204
  } else if textTrack.mode == TextTrackMode.showing {
205
205
  textTrack.mode = TextTrackMode.disabled
206
- }
206
+ }
207
207
  }
208
208
  }
209
209
  }
210
210
  }
211
-
211
+
212
212
  @objc(setSelectedAudioTrack:uid:)
213
213
  func setSelectedAudioTrack(_ node: NSNumber, uid: NSNumber) -> Void {
214
214
  DispatchQueue.main.async {
@@ -227,7 +227,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
227
227
  }
228
228
  }
229
229
  }
230
-
230
+
231
231
  @objc(setSelectedVideoTrack:uid:)
232
232
  func setSelectedVideoTrack(_ node: NSNumber, uid: NSNumber) -> Void {
233
233
  DispatchQueue.main.async {
@@ -246,13 +246,13 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
246
246
  }
247
247
  }
248
248
  }
249
-
249
+
250
250
  @objc(setTargetVideoQuality:uid:)
251
251
  func setTargetVideoQuality(_ node: NSNumber, uid: [NSNumber]) -> Void {
252
252
  if DEBUG_PLAYER_API { print(ERROR_MESSAGE_PLAYER_QUALITY_UNSUPPORTED_FEATURE) }
253
253
  return
254
254
  }
255
-
255
+
256
256
  @objc(setPreload:type:)
257
257
  func setPreload(_ node: NSNumber, type: String) -> Void {
258
258
  DispatchQueue.main.async {
@@ -266,7 +266,7 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
266
266
  }
267
267
  }
268
268
  }
269
-
269
+
270
270
  @objc(setTextTrackStyle:textTrackStyle:)
271
271
  func setTextTrackStyle(_ node: NSNumber, textTrackStyle: NSDictionary) -> Void {
272
272
  DispatchQueue.main.async {
@@ -306,5 +306,5 @@ class THEOplayerRCTPlayerAPI: NSObject, RCTBridgeModule {
306
306
  }
307
307
  }
308
308
  }
309
-
309
+
310
310
  }
@@ -25,11 +25,11 @@ let ERROR_MESSAGE_ADS_GET_SCHEDULED_ADBREAKS_UNDEFINED = "Undefined adbreaks arr
25
25
  @objc(THEOplayerRCTAdsAPI)
26
26
  class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
27
27
  @objc var bridge: RCTBridge!
28
-
28
+
29
29
  static func moduleName() -> String! {
30
- return "AdsModule"
30
+ return "THEORCTAdsModule"
31
31
  }
32
-
32
+
33
33
  static func requiresMainQueueSetup() -> Bool {
34
34
  return false
35
35
  }
@@ -37,7 +37,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
37
37
  #if (GOOGLE_IMA || GOOGLE_DAI) || canImport(THEOplayerGoogleIMAIntegration)
38
38
  @objc(skip:)
39
39
  func skip(_ node: NSNumber) -> Void {
40
-
40
+
41
41
  DispatchQueue.main.async {
42
42
  let theView = self.bridge.uiManager.view(forReactTag: node) as! THEOplayerRCTView
43
43
  if let ads = theView.ads() {
@@ -47,7 +47,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
47
47
  }
48
48
  }
49
49
  }
50
-
50
+
51
51
  @objc(playing:resolver:rejecter:)
52
52
  func playing(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
53
53
  DispatchQueue.main.async {
@@ -60,7 +60,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
60
60
  }
61
61
  }
62
62
  }
63
-
63
+
64
64
  @objc(currentAdBreak:resolver:rejecter:)
65
65
  func currentAdBreak(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
66
66
  DispatchQueue.main.async {
@@ -74,7 +74,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
74
74
  }
75
75
  }
76
76
  }
77
-
77
+
78
78
  @objc(currentAds:resolver:rejecter:)
79
79
  func currentAds(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
80
80
  DispatchQueue.main.async {
@@ -92,7 +92,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
92
92
  }
93
93
  }
94
94
  }
95
-
95
+
96
96
  @objc(scheduledAdBreaks:resolver:rejecter:)
97
97
  func scheduledAdBreaks(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
98
98
  DispatchQueue.main.async {
@@ -110,7 +110,7 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
110
110
  }
111
111
  }
112
112
  }
113
-
113
+
114
114
  @objc(schedule:ad:)
115
115
  func schedule(_ node: NSNumber, adDict: NSDictionary) -> Void {
116
116
  DispatchQueue.main.async {
@@ -124,46 +124,46 @@ class THEOplayerRCTAdsAPI: NSObject, RCTBridgeModule {
124
124
  }
125
125
  }
126
126
  }
127
-
127
+
128
128
  #else
129
-
129
+
130
130
  @objc(skip:)
131
131
  func skip(_ node: NSNumber) -> Void {
132
132
  if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
133
133
  return
134
134
  }
135
-
135
+
136
136
  @objc(playing:resolver:rejecter:)
137
137
  func playing(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
138
138
  if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
139
139
  resolve(false)
140
140
  }
141
-
141
+
142
142
  @objc(currentAdBreak:resolver:rejecter:)
143
143
  func currentAdBreak(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
144
144
  if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
145
145
  resolve([:])
146
146
  }
147
-
147
+
148
148
  @objc(currentAds:resolver:rejecter:)
149
149
  func currentAds(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
150
150
  if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
151
151
  resolve([])
152
152
  }
153
-
153
+
154
154
  @objc(scheduledAdBreaks:resolver:rejecter:)
155
155
  func scheduledAdBreaks(_ node: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
156
156
  if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
157
157
  resolve([])
158
158
  // TODO: handle request for scheduled adbreaks. Awaiting iOS SDK implementation
159
159
  }
160
-
160
+
161
161
  @objc(schedule:ad:)
162
162
  func schedule(_ node: NSNumber, adDict: NSDictionary) -> Void {
163
163
  if DEBUG_ADS_API { print(ERROR_MESSAGE_ADS_UNSUPPORTED_FEATURE) }
164
164
  return
165
165
  }
166
-
166
+
167
167
  #endif
168
168
 
169
169
  }