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.
- package/CHANGELOG.md +35 -0
- package/README.md +2 -1
- package/android/build.gradle +11 -12
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/10.0.0/ads-wrapper-10.0.0.aar +0 -0
- 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
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +4 -4
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +39 -10
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerPackage.kt +32 -14
- package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +18 -6
- package/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt +15 -5
- package/android/src/main/java/com/theoplayer/cache/CacheAdapter.kt +0 -12
- package/android/src/main/java/com/theoplayer/cache/CacheModule.kt +20 -7
- package/android/src/main/java/com/theoplayer/cast/CastEventAdapter.kt +11 -7
- package/android/src/main/java/com/theoplayer/cast/CastModule.kt +17 -3
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionAdapter.kt +1 -1
- package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +28 -11
- package/android/src/main/java/com/theoplayer/media/ConditionalMediaButtonReceiver.kt +38 -0
- package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +17 -4
- package/android/src/main/java/com/theoplayer/presentation/PresentationManager.kt +12 -3
- package/android/src/main/java/com/theoplayer/source/SourceAdapter.kt +16 -37
- package/android/src/main/java/com/theoplayer/theoads/THEOadsAdapter.kt +83 -0
- package/android/src/main/java/com/theoplayer/theoads/THEOadsEventAdapter.kt +55 -0
- package/android/src/main/java/com/theoplayer/theoads/THEOadsModule.kt +63 -0
- package/android/src/main/java/com/theoplayer/theolive/THEOliveEventAdapter.kt +21 -8
- package/android/src/main/java/com/theoplayer/theolive/THEOliveModule.kt +16 -3
- package/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt +8 -1
- package/android/src/main/java/com/theoplayer/util/PayloadBuilder.kt +8 -0
- package/ios/THEOplayerRCTBridge.m +21 -1
- package/ios/THEOplayerRCTDebug.swift +4 -1
- package/ios/THEOplayerRCTMainEventHandler.swift +24 -21
- package/ios/THEOplayerRCTPlayerAPI.swift +3 -3
- package/ios/THEOplayerRCTSourceDescriptionBuilder.swift +2 -1
- package/ios/THEOplayerRCTView.swift +22 -4
- package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +96 -50
- package/ios/backgroundAudio/THEOplayerRCTRemoteCommandsManager.swift +0 -1
- package/ios/casting/THEOplayerRCTCastEventHandler.swift +1 -1
- package/ios/presentationMode/THEOplayerRCTPresentationModeManager.swift +24 -6
- package/ios/theoAds/THEOplayerRCTTHEOAdsAPI.swift +101 -0
- package/ios/theoAds/THEOplayerRCTTHEOAdsEventAdapter.swift +118 -0
- package/ios/theoAds/THEOplayerRCTTHEOAdsEventHandler.swift +174 -0
- package/ios/theolive/THEOplayerRCTSourceDescriptionBuilder+Theolive.swift +0 -1
- package/ios/theolive/THEOplayerRCTTHEOliveEventHandler.swift +1 -1
- package/ios/theolive/THEOplayerRCTView+THEOlive.swift +1 -5
- package/ios/theolive/THEOplayerRCTView+THEOliveConfig.swift +0 -2
- package/lib/commonjs/api/barrel.js +45 -56
- package/lib/commonjs/api/barrel.js.map +1 -1
- package/lib/commonjs/api/cache/CachingTaskParameters.js +0 -19
- package/lib/commonjs/api/cache/CachingTaskParameters.js.map +1 -1
- package/lib/commonjs/api/event/PlayerEvent.js +16 -0
- package/lib/commonjs/api/event/PlayerEvent.js.map +1 -1
- package/lib/commonjs/api/event/TheoAdsEvent.js +7 -0
- package/lib/commonjs/api/event/TheoAdsEvent.js.map +1 -1
- package/lib/commonjs/api/player/PlayerEventMap.js +2 -0
- package/lib/commonjs/api/player/PlayerEventMap.js.map +1 -1
- package/lib/commonjs/api/source/SourceDescription.js +1 -13
- package/lib/commonjs/api/source/SourceDescription.js.map +1 -1
- package/lib/commonjs/api/source/ads/{THEOplayerAdDescription.js → CsaiAdDescription.js} +1 -1
- package/lib/commonjs/api/source/ads/CsaiAdDescription.js.map +1 -0
- package/lib/commonjs/api/source/ads/barrel.js +4 -4
- package/lib/commonjs/api/source/ads/barrel.js.map +1 -1
- package/lib/commonjs/api/track/Quality.js +37 -0
- package/lib/commonjs/api/track/Quality.js.map +1 -1
- package/lib/commonjs/api/track/TextTrackStyle.js.map +1 -1
- package/lib/commonjs/index.js +0 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.js +15 -3
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js +2 -0
- package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +27 -9
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js +18 -1
- package/lib/commonjs/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/WebEventForwarder.js +15 -1
- package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/commonjs/internal/adapter/event/PlayerEvents.js +30 -1
- package/lib/commonjs/internal/adapter/event/PlayerEvents.js.map +1 -1
- package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js +20 -0
- package/lib/commonjs/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
- package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
- package/lib/commonjs/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js +10 -0
- package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
- package/lib/commonjs/internal/utils/TypeUtils.js +4 -1
- package/lib/commonjs/internal/utils/TypeUtils.js.map +1 -1
- package/lib/commonjs/manifest.json +1 -1
- package/lib/module/api/barrel.js +0 -1
- package/lib/module/api/barrel.js.map +1 -1
- package/lib/module/api/cache/CachingTaskParameters.js +1 -19
- package/lib/module/api/cache/CachingTaskParameters.js.map +1 -1
- package/lib/module/api/event/PlayerEvent.js +18 -0
- package/lib/module/api/event/PlayerEvent.js.map +1 -1
- package/lib/module/api/event/TheoAdsEvent.js +8 -0
- package/lib/module/api/event/TheoAdsEvent.js.map +1 -1
- package/lib/module/api/player/PlayerEventMap.js +2 -0
- package/lib/module/api/player/PlayerEventMap.js.map +1 -1
- package/lib/module/api/source/SourceDescription.js +0 -13
- package/lib/module/api/source/SourceDescription.js.map +1 -1
- package/lib/module/api/source/ads/CsaiAdDescription.js +4 -0
- package/lib/module/api/source/ads/CsaiAdDescription.js.map +1 -0
- package/lib/module/api/source/ads/barrel.js +1 -1
- package/lib/module/api/source/ads/barrel.js.map +1 -1
- package/lib/module/api/track/Quality.js +34 -0
- package/lib/module/api/track/Quality.js.map +1 -1
- package/lib/module/api/track/TextTrackStyle.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/internal/THEOplayerView.js +16 -4
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +1 -1
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/adapter/DefaultNativePlayerState.js +2 -0
- package/lib/module/internal/adapter/DefaultNativePlayerState.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +28 -10
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js +18 -1
- package/lib/module/internal/adapter/THEOplayerWebAdapter.js.map +1 -1
- package/lib/module/internal/adapter/WebEventForwarder.js +16 -2
- package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/module/internal/adapter/event/PlayerEvents.js +26 -0
- package/lib/module/internal/adapter/event/PlayerEvents.js.map +1 -1
- package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js +16 -0
- package/lib/module/internal/adapter/event/native/NativeTheoAdsEvent.js.map +1 -0
- package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js +6 -12
- package/lib/module/internal/adapter/theoads/THEOAdsNativeAdapter.js.map +1 -1
- package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js +10 -0
- package/lib/module/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
- package/lib/module/internal/utils/TypeUtils.js +3 -0
- package/lib/module/internal/utils/TypeUtils.js.map +1 -1
- package/lib/module/manifest.json +1 -1
- package/lib/typescript/api/barrel.d.ts +0 -1
- package/lib/typescript/api/barrel.d.ts.map +1 -1
- package/lib/typescript/api/cache/CachingTaskParameters.d.ts +0 -34
- package/lib/typescript/api/cache/CachingTaskParameters.d.ts.map +1 -1
- package/lib/typescript/api/event/PlayerEvent.d.ts +36 -0
- package/lib/typescript/api/event/PlayerEvent.d.ts.map +1 -1
- package/lib/typescript/api/event/TheoAdsEvent.d.ts +13 -0
- package/lib/typescript/api/event/TheoAdsEvent.d.ts.map +1 -1
- package/lib/typescript/api/player/PlayerEventMap.d.ts +17 -2
- package/lib/typescript/api/player/PlayerEventMap.d.ts.map +1 -1
- package/lib/typescript/api/player/THEOplayer.d.ts +8 -0
- package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
- package/lib/typescript/api/source/SourceDescription.d.ts +0 -20
- package/lib/typescript/api/source/SourceDescription.d.ts.map +1 -1
- package/lib/typescript/api/source/ads/{THEOplayerAdDescription.d.ts → CsaiAdDescription.d.ts} +2 -2
- package/lib/typescript/api/source/ads/CsaiAdDescription.d.ts.map +1 -0
- package/lib/typescript/api/source/ads/barrel.d.ts +1 -1
- package/lib/typescript/api/source/ads/barrel.d.ts.map +1 -1
- package/lib/typescript/api/track/Quality.d.ts +1 -0
- package/lib/typescript/api/track/Quality.d.ts.map +1 -1
- package/lib/typescript/api/track/TextTrackStyle.d.ts +7 -0
- package/lib/typescript/api/track/TextTrackStyle.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +0 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/internal/THEOplayerView.d.ts +3 -1
- package/lib/typescript/internal/THEOplayerView.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/DefaultNativePlayerState.d.ts +2 -0
- package/lib/typescript/internal/adapter/DefaultNativePlayerState.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/NativePlayerState.d.ts +2 -0
- package/lib/typescript/internal/adapter/NativePlayerState.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +5 -3
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts +5 -0
- package/lib/typescript/internal/adapter/THEOplayerWebAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/WebEventForwarder.d.ts +1 -0
- package/lib/typescript/internal/adapter/WebEventForwarder.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts +20 -1
- package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/event/native/NativePlayerEvent.d.ts +11 -1
- package/lib/typescript/internal/adapter/event/native/NativePlayerEvent.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts +18 -0
- package/lib/typescript/internal/adapter/event/native/NativeTheoAdsEvent.d.ts.map +1 -0
- package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts +1 -1
- package/lib/typescript/internal/adapter/theoads/THEOAdsNativeAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/track/TextTrackStyleAdapter.d.ts +3 -0
- package/lib/typescript/internal/adapter/track/TextTrackStyleAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/utils/TypeUtils.d.ts +1 -0
- package/lib/typescript/internal/utils/TypeUtils.d.ts.map +1 -1
- package/package.json +6 -6
- package/react-native-theoplayer.podspec +7 -7
- package/src/api/barrel.ts +0 -1
- package/src/api/cache/CachingTaskParameters.ts +0 -37
- package/src/api/event/PlayerEvent.ts +40 -0
- package/src/api/event/TheoAdsEvent.ts +14 -0
- package/src/api/player/PlayerEventMap.ts +19 -0
- package/src/api/player/THEOplayer.ts +10 -0
- package/src/api/source/SourceDescription.ts +0 -22
- package/src/api/source/ads/{THEOplayerAdDescription.ts → CsaiAdDescription.ts} +1 -1
- package/src/api/source/ads/barrel.ts +1 -1
- package/src/api/track/Quality.ts +15 -0
- package/src/api/track/TextTrackStyle.ts +8 -0
- package/src/index.tsx +0 -1
- package/src/internal/THEOplayerView.tsx +24 -5
- package/src/internal/THEOplayerView.web.tsx +1 -1
- package/src/internal/adapter/DefaultNativePlayerState.ts +2 -0
- package/src/internal/adapter/NativePlayerState.ts +2 -0
- package/src/internal/adapter/THEOplayerAdapter.ts +43 -21
- package/src/internal/adapter/THEOplayerWebAdapter.ts +22 -2
- package/src/internal/adapter/WebEventForwarder.ts +17 -1
- package/src/internal/adapter/event/PlayerEvents.ts +34 -0
- package/src/internal/adapter/event/native/NativePlayerEvent.ts +13 -1
- package/src/internal/adapter/event/native/NativeTheoAdsEvent.ts +30 -0
- package/src/internal/adapter/theoads/THEOAdsNativeAdapter.ts +7 -12
- package/src/internal/adapter/track/TextTrackStyleAdapter.ts +12 -0
- package/src/internal/utils/TypeUtils.ts +6 -0
- package/src/manifest.json +1 -1
- package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/9.0.0/ads-wrapper-9.0.0.aar +0 -0
- package/android/src/main/java/com/theoplayer/playback/PlaybackSettingsModule.kt +0 -28
- package/lib/commonjs/api/playback/PlaybackSettingsAPI.js +0 -2
- package/lib/commonjs/api/playback/PlaybackSettingsAPI.js.map +0 -1
- package/lib/commonjs/api/playback/barrel.js +0 -17
- package/lib/commonjs/api/playback/barrel.js.map +0 -1
- package/lib/commonjs/api/source/ads/THEOplayerAdDescription.js.map +0 -1
- package/lib/commonjs/internal/playback/PlaybackSettings.js +0 -28
- package/lib/commonjs/internal/playback/PlaybackSettings.js.map +0 -1
- package/lib/module/api/playback/PlaybackSettingsAPI.js +0 -2
- package/lib/module/api/playback/PlaybackSettingsAPI.js.map +0 -1
- package/lib/module/api/playback/barrel.js +0 -4
- package/lib/module/api/playback/barrel.js.map +0 -1
- package/lib/module/api/source/ads/THEOplayerAdDescription.js +0 -4
- package/lib/module/api/source/ads/THEOplayerAdDescription.js.map +0 -1
- package/lib/module/internal/playback/PlaybackSettings.js +0 -23
- package/lib/module/internal/playback/PlaybackSettings.js.map +0 -1
- package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts +0 -35
- package/lib/typescript/api/playback/PlaybackSettingsAPI.d.ts.map +0 -1
- package/lib/typescript/api/playback/barrel.d.ts +0 -2
- package/lib/typescript/api/playback/barrel.d.ts.map +0 -1
- package/lib/typescript/api/source/ads/THEOplayerAdDescription.d.ts.map +0 -1
- package/lib/typescript/internal/playback/PlaybackSettings.d.ts +0 -7
- package/lib/typescript/internal/playback/PlaybackSettings.d.ts.map +0 -1
- package/src/api/playback/PlaybackSettingsAPI.ts +0 -36
- package/src/api/playback/barrel.ts +0 -1
- 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,
|
|
26
|
-
theoLiveApi.addEventListener(TheoLiveEventTypes.DISTRIBUTIONOFFLINE,
|
|
27
|
-
theoLiveApi.addEventListener(TheoLiveEventTypes.ENDPOINTLOADED,
|
|
28
|
-
theoLiveApi.addEventListener(TheoLiveEventTypes.INTENTTOFALLBACK,
|
|
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(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
55
|
-
private var presentationModeChangeListener: EventListener?
|
|
55
|
+
private var videoResizeListener: EventListener?
|
|
56
56
|
|
|
57
57
|
// MARK: player observer
|
|
58
|
-
private var
|
|
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
|
|
314
|
-
|
|
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
|
|
318
|
-
|
|
317
|
+
let forwardedVideoResizeEvent = self?.onNativeVideoResize {
|
|
318
|
+
forwardedVideoResizeEvent(
|
|
319
319
|
[
|
|
320
|
-
"
|
|
321
|
-
"
|
|
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
|
-
//
|
|
329
|
-
self.
|
|
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
|
|
333
|
-
|
|
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
|
-
|
|
458
|
-
|
|
459
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
358
|
-
func
|
|
359
|
-
self.mainEventHandler.
|
|
360
|
-
if DEBUG_VIEW { PrintUtils.printLog(logText: "[NATIVE]
|
|
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
|
}
|