bitmovin-player-react-native 0.44.1-alpha.0 → 1.0.0-alpha.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/.eslintignore +11 -0
- package/.eslintrc.js +7 -0
- package/.gitattributes +3 -0
- package/.prettierignore +11 -0
- package/.ruby-version +1 -0
- package/.swiftlint.yml +171 -0
- package/Brewfile +2 -0
- package/CHANGELOG.md +627 -0
- package/CONTRIBUTING.md +255 -0
- package/TODO.md +0 -0
- package/android/.editorconfig +8 -0
- package/android/build.gradle +78 -75
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/android/gradle.properties +1 -0
- package/android/gradlew +248 -0
- package/android/gradlew.bat +92 -0
- package/android/ktlint.gradle +31 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/ActivityLifecycleListener.kt +51 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinCastManagerModule.kt +32 -55
- package/android/src/main/java/com/bitmovin/player/reactnative/BufferModule.kt +33 -45
- package/android/src/main/java/com/bitmovin/player/reactnative/CustomMessageHandlerModule.kt +84 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/DebugModule.kt +6 -14
- package/android/src/main/java/com/bitmovin/player/reactnative/DecoderConfigModule.kt +89 -44
- package/android/src/main/java/com/bitmovin/player/reactnative/DrmModule.kt +80 -99
- package/android/src/main/java/com/bitmovin/player/reactnative/EventSubscription.kt +22 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/FullscreenHandlerModule.kt +100 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/MediaSessionPlaybackManager.kt +5 -5
- package/android/src/main/java/com/bitmovin/player/reactnative/NetworkModule.kt +98 -56
- package/android/src/main/java/com/bitmovin/player/reactnative/OfflineModule.kt +132 -186
- package/android/src/main/java/com/bitmovin/player/reactnative/PlayerAnalyticsModule.kt +37 -36
- package/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +252 -528
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerPackage.kt +11 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerView.kt +558 -213
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewManager.kt +99 -286
- package/android/src/main/java/com/bitmovin/player/reactnative/ResultWaiter.kt +58 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/SourceModule.kt +77 -151
- package/android/src/main/java/com/bitmovin/player/reactnative/Types.kt +44 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/UuidModule.kt +12 -15
- package/android/src/main/java/com/bitmovin/player/reactnative/converter/JsonConverter.kt +296 -456
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ListExtension.kt +89 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/MapExtension.kt +95 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/offline/OfflineContentManagerBridge.kt +20 -52
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerBridge.kt +10 -20
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerBridge.kt +4 -9
- package/app.plugin.js +21 -0
- package/build/BitmovinPlayerReactNative.types.d.ts +18 -0
- package/build/BitmovinPlayerReactNative.types.d.ts.map +1 -0
- package/build/BitmovinPlayerReactNative.types.js +2 -0
- package/build/BitmovinPlayerReactNative.types.js.map +1 -0
- package/build/adaptationConfig.d.ts +18 -0
- package/build/adaptationConfig.d.ts.map +1 -0
- package/build/adaptationConfig.js +2 -0
- package/build/adaptationConfig.js.map +1 -0
- package/build/advertising.d.ts +175 -0
- package/build/advertising.d.ts.map +1 -0
- package/build/advertising.js +37 -0
- package/build/advertising.js.map +1 -0
- package/build/analytics/config.d.ts +194 -0
- package/build/analytics/config.d.ts.map +1 -0
- package/build/analytics/config.js +2 -0
- package/build/analytics/config.js.map +1 -0
- package/build/analytics/index.d.ts +3 -0
- package/build/analytics/index.d.ts.map +1 -0
- package/build/analytics/index.js +3 -0
- package/build/analytics/index.js.map +1 -0
- package/build/analytics/player.d.ts +24 -0
- package/build/analytics/player.d.ts.map +1 -0
- package/build/analytics/player.js +30 -0
- package/build/analytics/player.js.map +1 -0
- package/build/analytics/playerAnalyticsModule.d.ts +13 -0
- package/build/analytics/playerAnalyticsModule.d.ts.map +1 -0
- package/build/analytics/playerAnalyticsModule.js +3 -0
- package/build/analytics/playerAnalyticsModule.js.map +1 -0
- package/build/audioSession.d.ts +33 -0
- package/build/audioSession.d.ts.map +1 -0
- package/build/audioSession.js +21 -0
- package/build/audioSession.js.map +1 -0
- package/build/audioTrack.d.ts +39 -0
- package/build/audioTrack.d.ts.map +1 -0
- package/build/audioTrack.js +2 -0
- package/build/audioTrack.js.map +1 -0
- package/build/bitmovinCastManager.d.ts +58 -0
- package/build/bitmovinCastManager.d.ts.map +1 -0
- package/build/bitmovinCastManager.js +64 -0
- package/build/bitmovinCastManager.js.map +1 -0
- package/build/bufferApi.d.ts +85 -0
- package/build/bufferApi.d.ts.map +1 -0
- package/build/bufferApi.js +60 -0
- package/build/bufferApi.js.map +1 -0
- package/build/bufferConfig.d.ts +42 -0
- package/build/bufferConfig.d.ts.map +1 -0
- package/build/bufferConfig.js +2 -0
- package/build/bufferConfig.js.map +1 -0
- package/build/components/PlayerView/events.d.ts +310 -0
- package/build/components/PlayerView/events.d.ts.map +1 -0
- package/build/components/PlayerView/events.js +2 -0
- package/build/components/PlayerView/events.js.map +1 -0
- package/build/components/PlayerView/index.d.ts +10 -0
- package/build/components/PlayerView/index.d.ts.map +1 -0
- package/build/components/PlayerView/index.js +72 -0
- package/build/components/PlayerView/index.js.map +1 -0
- package/build/components/PlayerView/native.d.ts +30 -0
- package/build/components/PlayerView/native.d.ts.map +1 -0
- package/build/components/PlayerView/native.js +6 -0
- package/build/components/PlayerView/native.js.map +1 -0
- package/build/components/PlayerView/nativeEvents.d.ts +437 -0
- package/build/components/PlayerView/nativeEvents.d.ts.map +1 -0
- package/build/components/PlayerView/nativeEvents.js +2 -0
- package/build/components/PlayerView/nativeEvents.js.map +1 -0
- package/build/components/PlayerView/pictureInPictureConfig.d.ts +22 -0
- package/build/components/PlayerView/pictureInPictureConfig.d.ts.map +1 -0
- package/build/components/PlayerView/pictureInPictureConfig.js +2 -0
- package/build/components/PlayerView/pictureInPictureConfig.js.map +1 -0
- package/build/components/PlayerView/playerViewConfig.d.ts +111 -0
- package/build/components/PlayerView/playerViewConfig.d.ts.map +1 -0
- package/build/components/PlayerView/playerViewConfig.js +51 -0
- package/build/components/PlayerView/playerViewConfig.js.map +1 -0
- package/build/components/PlayerView/properties.d.ts +61 -0
- package/build/components/PlayerView/properties.d.ts.map +1 -0
- package/build/components/PlayerView/properties.js +2 -0
- package/build/components/PlayerView/properties.js.map +1 -0
- package/build/components/index.d.ts +5 -0
- package/build/components/index.d.ts.map +1 -0
- package/build/components/index.js +5 -0
- package/build/components/index.js.map +1 -0
- package/build/debug.d.ts +46 -0
- package/build/debug.d.ts.map +1 -0
- package/build/debug.js +52 -0
- package/build/debug.js.map +1 -0
- package/build/decoder/decoderConfig.d.ts +96 -0
- package/build/decoder/decoderConfig.d.ts.map +1 -0
- package/build/decoder/decoderConfig.js +6 -0
- package/build/decoder/decoderConfig.js.map +1 -0
- package/build/decoder/decoderConfigModule.d.ts +14 -0
- package/build/decoder/decoderConfigModule.d.ts.map +1 -0
- package/build/decoder/decoderConfigModule.js +31 -0
- package/build/decoder/decoderConfigModule.js.map +1 -0
- package/build/decoder/index.d.ts +26 -0
- package/build/decoder/index.d.ts.map +1 -0
- package/build/decoder/index.js +50 -0
- package/build/decoder/index.js.map +1 -0
- package/build/drm/drmModule.d.ts +55 -0
- package/build/drm/drmModule.d.ts.map +1 -0
- package/build/drm/drmModule.js +3 -0
- package/build/drm/drmModule.js.map +1 -0
- package/build/drm/fairplayConfig.d.ts +91 -0
- package/build/drm/fairplayConfig.d.ts.map +1 -0
- package/build/drm/fairplayConfig.js +2 -0
- package/build/drm/fairplayConfig.js.map +1 -0
- package/build/drm/index.d.ts +112 -0
- package/build/drm/index.d.ts.map +1 -0
- package/build/drm/index.js +191 -0
- package/build/drm/index.js.map +1 -0
- package/build/drm/widevineConfig.d.ts +58 -0
- package/build/drm/widevineConfig.d.ts.map +1 -0
- package/build/drm/widevineConfig.js +2 -0
- package/build/drm/widevineConfig.js.map +1 -0
- package/build/events.d.ts +692 -0
- package/build/events.d.ts.map +1 -0
- package/build/events.js +2 -0
- package/build/events.js.map +1 -0
- package/build/hooks/index.d.ts +2 -0
- package/build/hooks/index.d.ts.map +1 -0
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -0
- package/build/hooks/usePlayer.d.ts +8 -0
- package/build/hooks/usePlayer.d.ts.map +1 -0
- package/build/hooks/usePlayer.js +10 -0
- package/build/hooks/usePlayer.js.map +1 -0
- package/build/hooks/useProxy.d.ts +18 -0
- package/build/hooks/useProxy.d.ts.map +1 -0
- package/build/hooks/useProxy.js +16 -0
- package/build/hooks/useProxy.js.map +1 -0
- package/build/index.d.ts +32 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +32 -0
- package/build/index.js.map +1 -0
- package/build/liveConfig.d.ts +13 -0
- package/build/liveConfig.d.ts.map +1 -0
- package/build/liveConfig.js +2 -0
- package/build/liveConfig.js.map +1 -0
- package/build/media.d.ts +85 -0
- package/build/media.d.ts.map +1 -0
- package/build/media.js +2 -0
- package/build/media.js.map +1 -0
- package/build/mediaControlConfig.d.ts +62 -0
- package/build/mediaControlConfig.d.ts.map +1 -0
- package/build/mediaControlConfig.js +2 -0
- package/build/mediaControlConfig.js.map +1 -0
- package/build/mediaTrackRole.d.ts +28 -0
- package/build/mediaTrackRole.d.ts.map +1 -0
- package/build/mediaTrackRole.js +2 -0
- package/build/mediaTrackRole.js.map +1 -0
- package/build/modules/AudioSessionModule.d.ts +8 -0
- package/build/modules/AudioSessionModule.d.ts.map +1 -0
- package/build/modules/AudioSessionModule.js +7 -0
- package/build/modules/AudioSessionModule.js.map +1 -0
- package/build/modules/BitmovinCastManagerModule.d.ts +11 -0
- package/build/modules/BitmovinCastManagerModule.d.ts.map +1 -0
- package/build/modules/BitmovinCastManagerModule.js +3 -0
- package/build/modules/BitmovinCastManagerModule.js.map +1 -0
- package/build/modules/BufferModule.d.ts +16 -0
- package/build/modules/BufferModule.d.ts.map +1 -0
- package/build/modules/BufferModule.js +3 -0
- package/build/modules/BufferModule.js.map +1 -0
- package/build/modules/DebugModule.d.ts +8 -0
- package/build/modules/DebugModule.d.ts.map +1 -0
- package/build/modules/DebugModule.js +3 -0
- package/build/modules/DebugModule.js.map +1 -0
- package/build/modules/PlayerModule.d.ts +188 -0
- package/build/modules/PlayerModule.d.ts.map +1 -0
- package/build/modules/PlayerModule.js +3 -0
- package/build/modules/PlayerModule.js.map +1 -0
- package/build/modules/SourceModule.d.ts +51 -0
- package/build/modules/SourceModule.d.ts.map +1 -0
- package/build/modules/SourceModule.js +3 -0
- package/build/modules/SourceModule.js.map +1 -0
- package/build/modules/UuidModule.d.ts +8 -0
- package/build/modules/UuidModule.d.ts.map +1 -0
- package/build/modules/UuidModule.js +3 -0
- package/build/modules/UuidModule.js.map +1 -0
- package/build/nativeInstance.d.ts +49 -0
- package/build/nativeInstance.d.ts.map +1 -0
- package/build/nativeInstance.js +20 -0
- package/build/nativeInstance.js.map +1 -0
- package/build/network/index.d.ts +50 -0
- package/build/network/index.d.ts.map +1 -0
- package/build/network/index.js +102 -0
- package/build/network/index.js.map +1 -0
- package/build/network/networkConfig.d.ts +151 -0
- package/build/network/networkConfig.d.ts.map +1 -0
- package/build/network/networkConfig.js +21 -0
- package/build/network/networkConfig.js.map +1 -0
- package/build/network/networkModule.d.ts +29 -0
- package/build/network/networkModule.d.ts.map +1 -0
- package/build/network/networkModule.js +3 -0
- package/build/network/networkModule.js.map +1 -0
- package/build/offline/index.d.ts +8 -0
- package/build/offline/index.d.ts.map +1 -0
- package/build/offline/index.js +8 -0
- package/build/offline/index.js.map +1 -0
- package/build/offline/offlineContentConfig.d.ts +18 -0
- package/build/offline/offlineContentConfig.d.ts.map +1 -0
- package/build/offline/offlineContentConfig.js +2 -0
- package/build/offline/offlineContentConfig.js.map +1 -0
- package/build/offline/offlineContentManager.d.ts +90 -0
- package/build/offline/offlineContentManager.d.ts.map +1 -0
- package/build/offline/offlineContentManager.js +177 -0
- package/build/offline/offlineContentManager.js.map +1 -0
- package/build/offline/offlineContentManagerListener.d.ts +174 -0
- package/build/offline/offlineContentManagerListener.d.ts.map +1 -0
- package/build/offline/offlineContentManagerListener.js +17 -0
- package/build/offline/offlineContentManagerListener.js.map +1 -0
- package/build/offline/offlineContentOptions.d.ts +29 -0
- package/build/offline/offlineContentOptions.d.ts.map +1 -0
- package/build/offline/offlineContentOptions.js +2 -0
- package/build/offline/offlineContentOptions.js.map +1 -0
- package/build/offline/offlineDownloadRequest.d.ts +19 -0
- package/build/offline/offlineDownloadRequest.d.ts.map +1 -0
- package/build/offline/offlineDownloadRequest.js +2 -0
- package/build/offline/offlineDownloadRequest.js.map +1 -0
- package/build/offline/offlineModule.d.ts +32 -0
- package/build/offline/offlineModule.d.ts.map +1 -0
- package/build/offline/offlineModule.js +3 -0
- package/build/offline/offlineModule.js.map +1 -0
- package/build/offline/offlineSourceOptions.d.ts +12 -0
- package/build/offline/offlineSourceOptions.d.ts.map +1 -0
- package/build/offline/offlineSourceOptions.js +2 -0
- package/build/offline/offlineSourceOptions.js.map +1 -0
- package/build/offline/offlineState.d.ts +23 -0
- package/build/offline/offlineState.d.ts.map +1 -0
- package/build/offline/offlineState.js +24 -0
- package/build/offline/offlineState.js.map +1 -0
- package/build/playbackConfig.d.ts +88 -0
- package/build/playbackConfig.d.ts.map +1 -0
- package/build/playbackConfig.js +2 -0
- package/build/playbackConfig.js.map +1 -0
- package/build/player.d.ts +308 -0
- package/build/player.d.ts.map +1 -0
- package/build/player.js +445 -0
- package/build/player.js.map +1 -0
- package/build/playerConfig.d.ts +83 -0
- package/build/playerConfig.d.ts.map +1 -0
- package/build/playerConfig.js +2 -0
- package/build/playerConfig.js.map +1 -0
- package/build/remoteControlConfig.d.ts +38 -0
- package/build/remoteControlConfig.d.ts.map +1 -0
- package/build/remoteControlConfig.js +2 -0
- package/build/remoteControlConfig.js.map +1 -0
- package/build/source.d.ts +216 -0
- package/build/source.d.ts.map +1 -0
- package/build/source.js +167 -0
- package/build/source.js.map +1 -0
- package/build/styleConfig.d.ts +120 -0
- package/build/styleConfig.d.ts.map +1 -0
- package/build/styleConfig.js +38 -0
- package/build/styleConfig.js.map +1 -0
- package/build/subtitleFormat.d.ts +27 -0
- package/build/subtitleFormat.d.ts.map +1 -0
- package/build/subtitleFormat.js +28 -0
- package/build/subtitleFormat.js.map +1 -0
- package/build/subtitleTrack.d.ts +55 -0
- package/build/subtitleTrack.d.ts.map +1 -0
- package/build/subtitleTrack.js +2 -0
- package/build/subtitleTrack.js.map +1 -0
- package/build/thumbnail.d.ts +38 -0
- package/build/thumbnail.d.ts.map +1 -0
- package/build/thumbnail.js +2 -0
- package/build/thumbnail.js.map +1 -0
- package/build/tweaksConfig.d.ts +197 -0
- package/build/tweaksConfig.d.ts.map +1 -0
- package/build/tweaksConfig.js +25 -0
- package/build/tweaksConfig.js.map +1 -0
- package/build/ui/customMessageHandlerModule.d.ts +27 -0
- package/build/ui/customMessageHandlerModule.d.ts.map +1 -0
- package/build/ui/customMessageHandlerModule.js +3 -0
- package/build/ui/customMessageHandlerModule.js.map +1 -0
- package/build/ui/custommessagehandler.d.ts +56 -0
- package/build/ui/custommessagehandler.d.ts.map +1 -0
- package/build/ui/custommessagehandler.js +54 -0
- package/build/ui/custommessagehandler.js.map +1 -0
- package/build/ui/custommessagehandlerbridge.d.ts +33 -0
- package/build/ui/custommessagehandlerbridge.d.ts.map +1 -0
- package/build/ui/custommessagehandlerbridge.js +72 -0
- package/build/ui/custommessagehandlerbridge.js.map +1 -0
- package/build/ui/custommessagesender.d.ts +5 -0
- package/build/ui/custommessagesender.d.ts.map +1 -0
- package/build/ui/custommessagesender.js +2 -0
- package/build/ui/custommessagesender.js.map +1 -0
- package/build/ui/fullscreenHandlerModule.d.ts +20 -0
- package/build/ui/fullscreenHandlerModule.d.ts.map +1 -0
- package/build/ui/fullscreenHandlerModule.js +3 -0
- package/build/ui/fullscreenHandlerModule.js.map +1 -0
- package/build/ui/fullscreenhandler.d.ts +18 -0
- package/build/ui/fullscreenhandler.d.ts.map +1 -0
- package/build/ui/fullscreenhandler.js +2 -0
- package/build/ui/fullscreenhandler.js.map +1 -0
- package/build/ui/fullscreenhandlerbridge.d.ts +26 -0
- package/build/ui/fullscreenhandlerbridge.d.ts.map +1 -0
- package/build/ui/fullscreenhandlerbridge.js +67 -0
- package/build/ui/fullscreenhandlerbridge.js.map +1 -0
- package/build/ui/index.d.ts +3 -0
- package/build/ui/index.d.ts.map +1 -0
- package/build/ui/index.js +3 -0
- package/build/ui/index.js.map +1 -0
- package/expo-module.config.json +40 -0
- package/ios/AppLifecycleDelegate.swift +25 -0
- package/ios/AudioSessionModule.swift +14 -40
- package/ios/BitmovinCastManagerModule.swift +30 -69
- package/ios/BufferModule.swift +26 -62
- package/ios/CustomMessageHandlerBridge.swift +11 -18
- package/ios/CustomMessageHandlerModule.swift +61 -63
- package/ios/DebugModule.swift +6 -27
- package/ios/DrmModule.swift +105 -379
- package/ios/Event+JSON.swift +1 -0
- package/ios/FullscreenHandlerBridge.swift +12 -5
- package/ios/FullscreenHandlerModule.swift +73 -57
- package/ios/LockedBox.swift +21 -0
- package/ios/ModuleRegistry+Generics.swift +11 -0
- package/ios/NetworkModule.swift +78 -82
- package/ios/OfflineContentManagerBridge.swift +11 -38
- package/ios/OfflineModule.swift +136 -454
- package/ios/PlayerAnalyticsModule.swift +24 -52
- package/ios/PlayerModule.swift +192 -770
- package/ios/RCTConvert+BitmovinPlayer.swift +38 -312
- package/ios/RNBitmovinPlayer.h +1 -8
- package/ios/RNBitmovinPlayer.podspec +47 -0
- package/ios/RNPlayerView.swift +600 -77
- package/ios/RNPlayerViewManager.swift +96 -210
- package/ios/Registry.swift +2 -2
- package/ios/ResultWaiter.swift +66 -0
- package/ios/SourceModule.swift +104 -223
- package/ios/UuidModule.swift +9 -18
- package/package.json +67 -71
- package/plugin/build/FeatureFlags.d.ts +24 -0
- package/plugin/build/FeatureFlags.js +2 -0
- package/plugin/build/index.d.ts +7 -0
- package/plugin/build/index.js +10 -0
- package/plugin/build/withAppGradleDependencies.d.ts +7 -0
- package/plugin/build/withAppGradleDependencies.js +49 -0
- package/plugin/build/withBitmovinAndroidConfig.d.ts +7 -0
- package/plugin/build/withBitmovinAndroidConfig.js +159 -0
- package/plugin/build/withBitmovinConfig.d.ts +7 -0
- package/plugin/build/withBitmovinConfig.js +21 -0
- package/plugin/build/withBitmovinIosConfig.d.ts +7 -0
- package/plugin/build/withBitmovinIosConfig.js +53 -0
- package/plugin/src/FeatureFlags.ts +21 -0
- package/plugin/src/index.ts +9 -0
- package/plugin/src/withAppGradleDependencies.ts +80 -0
- package/plugin/src/withBitmovinAndroidConfig.ts +224 -0
- package/plugin/src/withBitmovinConfig.ts +24 -0
- package/plugin/src/withBitmovinIosConfig.ts +71 -0
- package/plugin/tsconfig.json +9 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/prettier.config.js +7 -0
- package/scripts/format-android.sh +2 -0
- package/scripts/format-swift.sh +3 -0
- package/scripts/lint-android.sh +2 -0
- package/scripts/lint-swift.sh +3 -0
- package/scripts/pre-commit.sh +14 -0
- package/scripts/setup-hooks.sh +58 -0
- package/src/BitmovinPlayerReactNative.types.ts +19 -0
- package/src/adaptationConfig.ts +1 -1
- package/src/advertising.ts +1 -1
- package/src/analytics/config.ts +4 -4
- package/src/analytics/player.ts +4 -6
- package/src/analytics/playerAnalyticsModule.ts +19 -0
- package/src/audioSession.ts +4 -6
- package/src/audioTrack.ts +1 -1
- package/src/bitmovinCastManager.ts +14 -10
- package/src/bufferApi.ts +1 -3
- package/src/bufferConfig.ts +2 -2
- package/src/components/PlayerView/events.ts +92 -94
- package/src/components/PlayerView/index.tsx +109 -159
- package/src/components/PlayerView/native.ts +24 -11
- package/src/components/PlayerView/nativeEvents.ts +113 -94
- package/src/components/PlayerView/pictureInPictureConfig.ts +1 -1
- package/src/components/PlayerView/playerViewConfig.ts +4 -8
- package/src/components/PlayerView/properties.ts +23 -22
- package/src/debug.ts +1 -3
- package/src/decoder/decoderConfig.ts +3 -3
- package/src/decoder/decoderConfigModule.ts +62 -0
- package/src/decoder/index.ts +32 -16
- package/src/drm/drmModule.ts +84 -0
- package/src/drm/fairplayConfig.ts +1 -1
- package/src/drm/index.ts +130 -40
- package/src/drm/widevineConfig.ts +5 -5
- package/src/events.ts +47 -41
- package/src/hooks/useProxy.ts +13 -20
- package/src/mediaControlConfig.ts +1 -1
- package/src/modules/AudioSessionModule.ts +13 -0
- package/src/modules/BitmovinCastManagerModule.ts +14 -0
- package/src/modules/BufferModule.ts +18 -0
- package/src/modules/DebugModule.ts +9 -0
- package/src/modules/PlayerModule.ts +251 -0
- package/src/modules/SourceModule.ts +74 -0
- package/src/modules/UuidModule.ts +9 -0
- package/src/nativeInstance.ts +3 -3
- package/src/network/index.ts +42 -15
- package/src/network/networkConfig.ts +3 -3
- package/src/network/networkModule.ts +51 -0
- package/src/offline/offlineContentConfig.ts +1 -1
- package/src/offline/offlineContentManager.ts +15 -50
- package/src/offline/offlineContentManagerListener.ts +20 -23
- package/src/offline/offlineContentOptions.ts +2 -2
- package/src/offline/offlineDownloadRequest.ts +1 -1
- package/src/offline/offlineModule.ts +46 -0
- package/src/offline/offlineSourceOptions.ts +2 -2
- package/src/offline/offlineState.ts +1 -1
- package/src/playbackConfig.ts +5 -6
- package/src/player.ts +53 -48
- package/src/source.ts +15 -14
- package/src/styleConfig.ts +5 -5
- package/src/subtitleFormat.ts +5 -5
- package/src/subtitleTrack.ts +1 -1
- package/src/tweaksConfig.ts +16 -16
- package/src/ui/customMessageHandlerModule.ts +46 -0
- package/src/ui/custommessagehandlerbridge.ts +45 -18
- package/src/ui/fullscreenHandlerModule.ts +35 -0
- package/src/ui/fullscreenhandlerbridge.ts +35 -15
- package/tsconfig.json +9 -0
- package/typedoc.json +23 -0
- package/RNBitmovinPlayer.podspec +0 -26
- package/android/src/main/java/com/bitmovin/player/reactnative/BitmovinBaseModule.kt +0 -114
- package/android/src/main/java/com/bitmovin/player/reactnative/EventRelay.kt +0 -47
- package/android/src/main/java/com/bitmovin/player/reactnative/RNPlayerViewPackage.kt +0 -48
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReactContextExtension.kt +0 -24
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableArray.kt +0 -20
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMap.kt +0 -15
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/ReadableMapExtension.kt +0 -57
- package/android/src/main/java/com/bitmovin/player/reactnative/extensions/WritableMap.kt +0 -27
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/CustomMessageHandlerModule.kt +0 -86
- package/android/src/main/java/com/bitmovin/player/reactnative/ui/FullscreenHandlerModule.kt +0 -78
- package/ios/AudioSessionModule.m +0 -10
- package/ios/BitmovinCastManagerModule.m +0 -14
- package/ios/BufferModule.m +0 -8
- package/ios/CustomMessageHandlerModule.m +0 -10
- package/ios/DebugModule.m +0 -7
- package/ios/DrmModule.m +0 -16
- package/ios/FullscreenHandlerModule.m +0 -10
- package/ios/NetworkModule.m +0 -10
- package/ios/OfflineModule.m +0 -19
- package/ios/PlayerAnalyticsModule.m +0 -8
- package/ios/PlayerModule.m +0 -130
- package/ios/PreprocessHttpRequestDelegateBridge.swift +0 -30
- package/ios/RCTBridge+Generics.swift +0 -6
- package/ios/RNBitmovinPlayer.xcodeproj/project.pbxproj +0 -303
- package/ios/RNPlayerView+PlayerListener.swift +0 -229
- package/ios/RNPlayerView+UserInterfaceListener.swift +0 -35
- package/ios/RNPlayerViewManager.m +0 -79
- package/ios/SourceModule.m +0 -42
- package/ios/UuidModule.m +0 -9
- package/lib/index.d.mts +0 -4303
- package/lib/index.d.ts +0 -4303
- package/lib/index.js +0 -1895
- package/lib/index.mjs +0 -1836
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import UuidModule from '../modules/UuidModule';
|
|
2
|
+
import CustomMessageHandlerModule from './customMessageHandlerModule';
|
|
3
|
+
/**
|
|
4
|
+
* Takes care of JS/Native communication for a CustomMessageHandler.
|
|
5
|
+
*/
|
|
6
|
+
export class CustomMessageHandlerBridge {
|
|
7
|
+
nativeId;
|
|
8
|
+
customMessageHandler;
|
|
9
|
+
isDestroyed;
|
|
10
|
+
onReceivedSynchronousMessageSubscription;
|
|
11
|
+
onReceivedAsynchronousMessageSubscription;
|
|
12
|
+
constructor(nativeId) {
|
|
13
|
+
this.nativeId = nativeId ?? UuidModule.generate();
|
|
14
|
+
this.isDestroyed = false;
|
|
15
|
+
// Set up event listeners for synchronous and asynchronous messages
|
|
16
|
+
this.onReceivedSynchronousMessageSubscription =
|
|
17
|
+
CustomMessageHandlerModule.addListener('onReceivedSynchronousMessage', ({ nativeId, id, message, data }) => {
|
|
18
|
+
if (nativeId !== this.nativeId) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
this.receivedSynchronousMessage(id, message, data);
|
|
22
|
+
});
|
|
23
|
+
this.onReceivedAsynchronousMessageSubscription =
|
|
24
|
+
CustomMessageHandlerModule.addListener('onReceivedAsynchronousMessage', ({ nativeId, message, data }) => {
|
|
25
|
+
if (nativeId !== this.nativeId) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.receivedAsynchronousMessage(message, data);
|
|
29
|
+
});
|
|
30
|
+
CustomMessageHandlerModule.registerHandler(this.nativeId);
|
|
31
|
+
}
|
|
32
|
+
setCustomMessageHandler(customMessageHandler) {
|
|
33
|
+
this.customMessageHandler = customMessageHandler;
|
|
34
|
+
this.customMessageHandler.customMessageSender = this;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Destroys the native CustomMessageHandler
|
|
38
|
+
*/
|
|
39
|
+
destroy() {
|
|
40
|
+
if (!this.isDestroyed) {
|
|
41
|
+
CustomMessageHandlerModule.destroy(this.nativeId);
|
|
42
|
+
this.onReceivedSynchronousMessageSubscription?.remove();
|
|
43
|
+
this.onReceivedAsynchronousMessageSubscription?.remove();
|
|
44
|
+
this.onReceivedSynchronousMessageSubscription = undefined;
|
|
45
|
+
this.onReceivedAsynchronousMessageSubscription = undefined;
|
|
46
|
+
this.isDestroyed = true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Called by native code, when the UI sends a synchronous message.
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
receivedSynchronousMessage(id, message, data) {
|
|
54
|
+
const result = this.customMessageHandler?.receivedSynchronousMessage(message, data);
|
|
55
|
+
CustomMessageHandlerModule.onReceivedSynchronousMessageResult(id, result);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Called by native code, when the UI sends an asynchronous message.
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
receivedAsynchronousMessage(message, data) {
|
|
62
|
+
this.customMessageHandler?.receivedAsynchronousMessage(message, data);
|
|
63
|
+
}
|
|
64
|
+
// noinspection JSUnusedGlobalSymbols
|
|
65
|
+
/**
|
|
66
|
+
* Called by CustomMessageHandler, when sending a message to the UI.
|
|
67
|
+
*/
|
|
68
|
+
sendMessage(message, data) {
|
|
69
|
+
CustomMessageHandlerModule.sendMessage(this.nativeId, message, data);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=custommessagehandlerbridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custommessagehandlerbridge.js","sourceRoot":"","sources":["../../src/ui/custommessagehandlerbridge.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AAEtE;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAC5B,QAAQ,CAAS;IAClB,oBAAoB,CAAwB;IAC5C,WAAW,CAAU;IAErB,wCAAwC,CAAqB;IAC7D,yCAAyC,CAAqB;IAEtE,YAAY,QAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,mEAAmE;QACnE,IAAI,CAAC,wCAAwC;YAC3C,0BAA0B,CAAC,WAAW,CACpC,8BAA8B,EAC9B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CACF,CAAC;QAEJ,IAAI,CAAC,yCAAyC;YAC5C,0BAA0B,CAAC,WAAW,CACpC,+BAA+B,EAC/B,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC9B,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC,CACF,CAAC;QAEJ,0BAA0B,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,uBAAuB,CAAC,oBAA0C;QAChE,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,wCAAwC,EAAE,MAAM,EAAE,CAAC;YACxD,IAAI,CAAC,yCAAyC,EAAE,MAAM,EAAE,CAAC;YACzD,IAAI,CAAC,wCAAwC,GAAG,SAAS,CAAC;YAC1D,IAAI,CAAC,yCAAyC,GAAG,SAAS,CAAC;YAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,0BAA0B,CAChC,EAAU,EACV,OAAe,EACf,IAAwB;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,0BAA0B,CAClE,OAAO,EACP,IAAI,CACL,CAAC;QACF,0BAA0B,CAAC,kCAAkC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACK,2BAA2B,CACjC,OAAe,EACf,IAAwB;QAExB,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,qCAAqC;IACrC;;OAEG;IACH,WAAW,CAAC,OAAe,EAAE,IAAwB;QACnD,0BAA0B,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;CACF","sourcesContent":["import { EventSubscription } from 'expo-modules-core';\nimport { CustomMessageHandler } from './custommessagehandler';\nimport { CustomMessageSender } from './custommessagesender';\nimport UuidModule from '../modules/UuidModule';\nimport CustomMessageHandlerModule from './customMessageHandlerModule';\n\n/**\n * Takes care of JS/Native communication for a CustomMessageHandler.\n */\nexport class CustomMessageHandlerBridge implements CustomMessageSender {\n readonly nativeId: string;\n private customMessageHandler?: CustomMessageHandler;\n private isDestroyed: boolean;\n\n private onReceivedSynchronousMessageSubscription?: EventSubscription;\n private onReceivedAsynchronousMessageSubscription?: EventSubscription;\n\n constructor(nativeId?: string) {\n this.nativeId = nativeId ?? UuidModule.generate();\n this.isDestroyed = false;\n\n // Set up event listeners for synchronous and asynchronous messages\n this.onReceivedSynchronousMessageSubscription =\n CustomMessageHandlerModule.addListener(\n 'onReceivedSynchronousMessage',\n ({ nativeId, id, message, data }) => {\n if (nativeId !== this.nativeId) {\n return;\n }\n this.receivedSynchronousMessage(id, message, data);\n }\n );\n\n this.onReceivedAsynchronousMessageSubscription =\n CustomMessageHandlerModule.addListener(\n 'onReceivedAsynchronousMessage',\n ({ nativeId, message, data }) => {\n if (nativeId !== this.nativeId) {\n return;\n }\n this.receivedAsynchronousMessage(message, data);\n }\n );\n\n CustomMessageHandlerModule.registerHandler(this.nativeId);\n }\n\n setCustomMessageHandler(customMessageHandler: CustomMessageHandler) {\n this.customMessageHandler = customMessageHandler;\n this.customMessageHandler.customMessageSender = this;\n }\n\n /**\n * Destroys the native CustomMessageHandler\n */\n destroy() {\n if (!this.isDestroyed) {\n CustomMessageHandlerModule.destroy(this.nativeId);\n this.onReceivedSynchronousMessageSubscription?.remove();\n this.onReceivedAsynchronousMessageSubscription?.remove();\n this.onReceivedSynchronousMessageSubscription = undefined;\n this.onReceivedAsynchronousMessageSubscription = undefined;\n this.isDestroyed = true;\n }\n }\n\n /**\n * Called by native code, when the UI sends a synchronous message.\n * @internal\n */\n private receivedSynchronousMessage(\n id: number,\n message: string,\n data: string | undefined\n ): void {\n const result = this.customMessageHandler?.receivedSynchronousMessage(\n message,\n data\n );\n CustomMessageHandlerModule.onReceivedSynchronousMessageResult(id, result);\n }\n\n /**\n * Called by native code, when the UI sends an asynchronous message.\n * @internal\n */\n private receivedAsynchronousMessage(\n message: string,\n data: string | undefined\n ): void {\n this.customMessageHandler?.receivedAsynchronousMessage(message, data);\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Called by CustomMessageHandler, when sending a message to the UI.\n */\n sendMessage(message: string, data: string | undefined): void {\n CustomMessageHandlerModule.sendMessage(this.nativeId, message, data);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custommessagesender.d.ts","sourceRoot":"","sources":["../../src/ui/custommessagesender.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custommessagesender.js","sourceRoot":"","sources":["../../src/ui/custommessagesender.ts"],"names":[],"mappings":"","sourcesContent":["/** @internal */\nexport interface CustomMessageSender {\n sendMessage(message: string, data: string | undefined): void;\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NativeModule } from 'expo-modules-core';
|
|
2
|
+
export type FullscreenHandlerModuleEvents = {
|
|
3
|
+
onEnterFullscreen: ({ nativeId, id, }: {
|
|
4
|
+
nativeId: string;
|
|
5
|
+
id: number;
|
|
6
|
+
}) => void;
|
|
7
|
+
onExitFullscreen: ({ nativeId, id, }: {
|
|
8
|
+
nativeId: string;
|
|
9
|
+
id: number;
|
|
10
|
+
}) => void;
|
|
11
|
+
};
|
|
12
|
+
declare class FullscreenHandlerModule extends NativeModule<FullscreenHandlerModuleEvents> {
|
|
13
|
+
registerHandler(nativeId: string): Promise<void>;
|
|
14
|
+
destroy(nativeId: string): Promise<void>;
|
|
15
|
+
notifyFullscreenChanged(id: number, isFullscreenEnabled: boolean): Promise<void>;
|
|
16
|
+
setIsFullscreenActive(nativeId: string, isFullscreenActive: boolean): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
declare const _default: FullscreenHandlerModule;
|
|
19
|
+
export default _default;
|
|
20
|
+
//# sourceMappingURL=fullscreenHandlerModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreenHandlerModule.d.ts","sourceRoot":"","sources":["../../src/ui/fullscreenHandlerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,mBAAmB,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,iBAAiB,EAAE,CAAC,EAClB,QAAQ,EACR,EAAE,GACH,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;KACZ,KAAK,IAAI,CAAC;IACX,gBAAgB,EAAE,CAAC,EACjB,QAAQ,EACR,EAAE,GACH,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;KACZ,KAAK,IAAI,CAAC;CACZ,CAAC;AAEF,OAAO,OAAO,uBAAwB,SAAQ,YAAY,CAAC,6BAA6B,CAAC;IACvF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACxC,uBAAuB,CACrB,EAAE,EAAE,MAAM,EACV,mBAAmB,EAAE,OAAO,GAC3B,OAAO,CAAC,IAAI,CAAC;IAChB,qBAAqB,CACnB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAAC,IAAI,CAAC;CACjB;;AAED,wBAEE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreenHandlerModule.js","sourceRoot":"","sources":["../../src/ui/fullscreenHandlerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAgCtE,eAAe,mBAAmB,CAChC,yBAAyB,CAC1B,CAAC","sourcesContent":["import { NativeModule, requireNativeModule } from 'expo-modules-core';\n\nexport type FullscreenHandlerModuleEvents = {\n onEnterFullscreen: ({\n nativeId,\n id,\n }: {\n nativeId: string;\n id: number;\n }) => void;\n onExitFullscreen: ({\n nativeId,\n id,\n }: {\n nativeId: string;\n id: number;\n }) => void;\n};\n\ndeclare class FullscreenHandlerModule extends NativeModule<FullscreenHandlerModuleEvents> {\n registerHandler(nativeId: string): Promise<void>;\n destroy(nativeId: string): Promise<void>;\n notifyFullscreenChanged(\n id: number,\n isFullscreenEnabled: boolean\n ): Promise<void>;\n setIsFullscreenActive(\n nativeId: string,\n isFullscreenActive: boolean\n ): Promise<void>;\n}\n\nexport default requireNativeModule<FullscreenHandlerModule>(\n 'FullscreenHandlerModule'\n);\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles the UI state change when fullscreen should be entered or exited.
|
|
3
|
+
*/
|
|
4
|
+
export interface FullscreenHandler {
|
|
5
|
+
/**
|
|
6
|
+
* Indicates if the UI is currently in fullscreen mode
|
|
7
|
+
*/
|
|
8
|
+
isFullscreenActive: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Is called by the `PlayerView` when the UI should enter fullscreen mode.
|
|
11
|
+
*/
|
|
12
|
+
enterFullscreen(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Is called by the `PlayerView` when the UI should exit fullscreen mode.
|
|
15
|
+
*/
|
|
16
|
+
exitFullscreen(): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=fullscreenhandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreenhandler.d.ts","sourceRoot":"","sources":["../../src/ui/fullscreenhandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,eAAe,IAAI,IAAI,CAAC;IAExB;;OAEG;IACH,cAAc,IAAI,IAAI,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreenhandler.js","sourceRoot":"","sources":["../../src/ui/fullscreenhandler.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Handles the UI state change when fullscreen should be entered or exited.\n */\nexport interface FullscreenHandler {\n /**\n * Indicates if the UI is currently in fullscreen mode\n */\n isFullscreenActive: boolean;\n\n /**\n * Is called by the `PlayerView` when the UI should enter fullscreen mode.\n */\n enterFullscreen(): void;\n\n /**\n * Is called by the `PlayerView` when the UI should exit fullscreen mode.\n */\n exitFullscreen(): void;\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FullscreenHandler } from './fullscreenhandler';
|
|
2
|
+
/**
|
|
3
|
+
* Takes care of JS/Native communication for a FullscreenHandler.
|
|
4
|
+
*/
|
|
5
|
+
export declare class FullscreenHandlerBridge {
|
|
6
|
+
readonly nativeId: string;
|
|
7
|
+
fullscreenHandler?: FullscreenHandler;
|
|
8
|
+
isDestroyed: boolean;
|
|
9
|
+
private onEnterFullScreenSubscription?;
|
|
10
|
+
private onExitFullScreenSubscription?;
|
|
11
|
+
constructor(nativeId?: string);
|
|
12
|
+
setFullscreenHandler(fullscreenHandler: FullscreenHandler | undefined): void;
|
|
13
|
+
/**
|
|
14
|
+
* Destroys the native FullscreenHandler
|
|
15
|
+
*/
|
|
16
|
+
destroy(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Called by native code, when the UI should enter fullscreen.
|
|
19
|
+
*/
|
|
20
|
+
private enterFullscreen;
|
|
21
|
+
/**
|
|
22
|
+
* Called by native code, when the UI should exit fullscreen.
|
|
23
|
+
*/
|
|
24
|
+
private exitFullscreen;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=fullscreenhandlerbridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreenhandlerbridge.d.ts","sourceRoot":"","sources":["../../src/ui/fullscreenhandlerbridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD;;GAEG;AACH,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,6BAA6B,CAAC,CAAoB;IAC1D,OAAO,CAAC,4BAA4B,CAAC,CAAoB;gBAE7C,QAAQ,CAAC,EAAE,MAAM;IAyB7B,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS;IAcrE;;OAEG;IACH,OAAO;IAYP;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,cAAc;CAOvB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import UuidModule from '../modules/UuidModule';
|
|
2
|
+
import FullscreenHandlerModule from './fullscreenHandlerModule';
|
|
3
|
+
/**
|
|
4
|
+
* Takes care of JS/Native communication for a FullscreenHandler.
|
|
5
|
+
*/
|
|
6
|
+
export class FullscreenHandlerBridge {
|
|
7
|
+
nativeId;
|
|
8
|
+
fullscreenHandler;
|
|
9
|
+
isDestroyed;
|
|
10
|
+
onEnterFullScreenSubscription;
|
|
11
|
+
onExitFullScreenSubscription;
|
|
12
|
+
constructor(nativeId) {
|
|
13
|
+
this.nativeId = nativeId ?? UuidModule.generate();
|
|
14
|
+
this.isDestroyed = false;
|
|
15
|
+
this.onEnterFullScreenSubscription = FullscreenHandlerModule.addListener('onEnterFullscreen', ({ nativeId, id }) => {
|
|
16
|
+
if (nativeId !== this.nativeId) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
this.enterFullscreen(id);
|
|
20
|
+
});
|
|
21
|
+
this.onExitFullScreenSubscription = FullscreenHandlerModule.addListener('onExitFullscreen', ({ nativeId, id }) => {
|
|
22
|
+
if (nativeId !== this.nativeId) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this.exitFullscreen(id);
|
|
26
|
+
});
|
|
27
|
+
FullscreenHandlerModule.registerHandler(this.nativeId);
|
|
28
|
+
}
|
|
29
|
+
setFullscreenHandler(fullscreenHandler) {
|
|
30
|
+
if (this.fullscreenHandler === fullscreenHandler) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.fullscreenHandler = fullscreenHandler;
|
|
34
|
+
// synchronize current state from fullscreenHandler to native
|
|
35
|
+
FullscreenHandlerModule.setIsFullscreenActive(this.nativeId, fullscreenHandler?.isFullscreenActive ?? false);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Destroys the native FullscreenHandler
|
|
39
|
+
*/
|
|
40
|
+
destroy() {
|
|
41
|
+
if (!this.isDestroyed) {
|
|
42
|
+
FullscreenHandlerModule.destroy(this.nativeId);
|
|
43
|
+
this.onEnterFullScreenSubscription?.remove();
|
|
44
|
+
this.onExitFullScreenSubscription?.remove();
|
|
45
|
+
this.onEnterFullScreenSubscription = undefined;
|
|
46
|
+
this.onExitFullScreenSubscription = undefined;
|
|
47
|
+
this.isDestroyed = true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// noinspection JSUnusedGlobalSymbols
|
|
51
|
+
/**
|
|
52
|
+
* Called by native code, when the UI should enter fullscreen.
|
|
53
|
+
*/
|
|
54
|
+
enterFullscreen(id) {
|
|
55
|
+
this.fullscreenHandler?.enterFullscreen();
|
|
56
|
+
FullscreenHandlerModule.notifyFullscreenChanged(id, this.fullscreenHandler?.isFullscreenActive ?? false);
|
|
57
|
+
}
|
|
58
|
+
// noinspection JSUnusedGlobalSymbols
|
|
59
|
+
/**
|
|
60
|
+
* Called by native code, when the UI should exit fullscreen.
|
|
61
|
+
*/
|
|
62
|
+
exitFullscreen(id) {
|
|
63
|
+
this.fullscreenHandler?.exitFullscreen();
|
|
64
|
+
FullscreenHandlerModule.notifyFullscreenChanged(id, this.fullscreenHandler?.isFullscreenActive ?? false);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=fullscreenhandlerbridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreenhandlerbridge.js","sourceRoot":"","sources":["../../src/ui/fullscreenhandlerbridge.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,uBAAuB;IACzB,QAAQ,CAAS;IAC1B,iBAAiB,CAAqB;IACtC,WAAW,CAAU;IAEb,6BAA6B,CAAqB;IAClD,4BAA4B,CAAqB;IAEzD,YAAY,QAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,6BAA6B,GAAG,uBAAuB,CAAC,WAAW,CACtE,mBAAmB,EACnB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;YACnB,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CACF,CAAC;QACF,IAAI,CAAC,4BAA4B,GAAG,uBAAuB,CAAC,WAAW,CACrE,kBAAkB,EAClB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;YACnB,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;QACF,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,oBAAoB,CAAC,iBAAgD;QACnE,IAAI,IAAI,CAAC,iBAAiB,KAAK,iBAAiB,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAE3C,6DAA6D;QAC7D,uBAAuB,CAAC,qBAAqB,CAC3C,IAAI,CAAC,QAAQ,EACb,iBAAiB,EAAE,kBAAkB,IAAI,KAAK,CAC/C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,6BAA6B,EAAE,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC,4BAA4B,EAAE,MAAM,EAAE,CAAC;YAC5C,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;YAC/C,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;YAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC;;OAEG;IACK,eAAe,CAAC,EAAU;QAChC,IAAI,CAAC,iBAAiB,EAAE,eAAe,EAAE,CAAC;QAC1C,uBAAuB,CAAC,uBAAuB,CAC7C,EAAE,EACF,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,IAAI,KAAK,CACpD,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC;;OAEG;IACK,cAAc,CAAC,EAAU;QAC/B,IAAI,CAAC,iBAAiB,EAAE,cAAc,EAAE,CAAC;QACzC,uBAAuB,CAAC,uBAAuB,CAC7C,EAAE,EACF,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,IAAI,KAAK,CACpD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { EventSubscription } from 'expo-modules-core';\nimport { FullscreenHandler } from './fullscreenhandler';\nimport UuidModule from '../modules/UuidModule';\nimport FullscreenHandlerModule from './fullscreenHandlerModule';\n\n/**\n * Takes care of JS/Native communication for a FullscreenHandler.\n */\nexport class FullscreenHandlerBridge {\n readonly nativeId: string;\n fullscreenHandler?: FullscreenHandler;\n isDestroyed: boolean;\n\n private onEnterFullScreenSubscription?: EventSubscription;\n private onExitFullScreenSubscription?: EventSubscription;\n\n constructor(nativeId?: string) {\n this.nativeId = nativeId ?? UuidModule.generate();\n this.isDestroyed = false;\n\n this.onEnterFullScreenSubscription = FullscreenHandlerModule.addListener(\n 'onEnterFullscreen',\n ({ nativeId, id }) => {\n if (nativeId !== this.nativeId) {\n return;\n }\n this.enterFullscreen(id);\n }\n );\n this.onExitFullScreenSubscription = FullscreenHandlerModule.addListener(\n 'onExitFullscreen',\n ({ nativeId, id }) => {\n if (nativeId !== this.nativeId) {\n return;\n }\n this.exitFullscreen(id);\n }\n );\n FullscreenHandlerModule.registerHandler(this.nativeId);\n }\n\n setFullscreenHandler(fullscreenHandler: FullscreenHandler | undefined) {\n if (this.fullscreenHandler === fullscreenHandler) {\n return;\n }\n\n this.fullscreenHandler = fullscreenHandler;\n\n // synchronize current state from fullscreenHandler to native\n FullscreenHandlerModule.setIsFullscreenActive(\n this.nativeId,\n fullscreenHandler?.isFullscreenActive ?? false\n );\n }\n\n /**\n * Destroys the native FullscreenHandler\n */\n destroy() {\n if (!this.isDestroyed) {\n FullscreenHandlerModule.destroy(this.nativeId);\n this.onEnterFullScreenSubscription?.remove();\n this.onExitFullScreenSubscription?.remove();\n this.onEnterFullScreenSubscription = undefined;\n this.onExitFullScreenSubscription = undefined;\n this.isDestroyed = true;\n }\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Called by native code, when the UI should enter fullscreen.\n */\n private enterFullscreen(id: number): void {\n this.fullscreenHandler?.enterFullscreen();\n FullscreenHandlerModule.notifyFullscreenChanged(\n id,\n this.fullscreenHandler?.isFullscreenActive ?? false\n );\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Called by native code, when the UI should exit fullscreen.\n */\n private exitFullscreen(id: number): void {\n this.fullscreenHandler?.exitFullscreen();\n FullscreenHandlerModule.notifyFullscreenChanged(\n id,\n this.fullscreenHandler?.isFullscreenActive ?? false\n );\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './fullscreenhandler';\nexport * from './custommessagehandler';\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"platforms": ["apple", "android"],
|
|
3
|
+
"apple": {
|
|
4
|
+
"modules": [
|
|
5
|
+
"UuidModule",
|
|
6
|
+
"DebugModule",
|
|
7
|
+
"AudioSessionModule",
|
|
8
|
+
"BitmovinCastManagerModule",
|
|
9
|
+
"PlayerModule",
|
|
10
|
+
"SourceModule",
|
|
11
|
+
"BufferModule",
|
|
12
|
+
"NetworkModule",
|
|
13
|
+
"CustomMessageHandlerModule",
|
|
14
|
+
"DrmModule",
|
|
15
|
+
"FullscreenHandlerModule",
|
|
16
|
+
"PlayerAnalyticsModule",
|
|
17
|
+
"OfflineModule",
|
|
18
|
+
"RNPlayerViewManager"
|
|
19
|
+
],
|
|
20
|
+
"appDelegateSubscribers": ["AppLifecycleDelegate"]
|
|
21
|
+
},
|
|
22
|
+
"android": {
|
|
23
|
+
"modules": [
|
|
24
|
+
"com.bitmovin.player.reactnative.UuidModule",
|
|
25
|
+
"com.bitmovin.player.reactnative.DebugModule",
|
|
26
|
+
"com.bitmovin.player.reactnative.BitmovinCastManagerModule",
|
|
27
|
+
"com.bitmovin.player.reactnative.PlayerModule",
|
|
28
|
+
"com.bitmovin.player.reactnative.SourceModule",
|
|
29
|
+
"com.bitmovin.player.reactnative.BufferModule",
|
|
30
|
+
"com.bitmovin.player.reactnative.NetworkModule",
|
|
31
|
+
"com.bitmovin.player.reactnative.CustomMessageHandlerModule",
|
|
32
|
+
"com.bitmovin.player.reactnative.DrmModule",
|
|
33
|
+
"com.bitmovin.player.reactnative.FullscreenHandlerModule",
|
|
34
|
+
"com.bitmovin.player.reactnative.PlayerAnalyticsModule",
|
|
35
|
+
"com.bitmovin.player.reactnative.OfflineModule",
|
|
36
|
+
"com.bitmovin.player.reactnative.DecoderConfigModule",
|
|
37
|
+
"com.bitmovin.player.reactnative.RNPlayerViewManager"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import BitmovinPlayerCore
|
|
2
|
+
import ExpoModulesCore
|
|
3
|
+
|
|
4
|
+
public class AppLifecycleDelegate: ExpoAppDelegateSubscriber {
|
|
5
|
+
public func application(
|
|
6
|
+
_ application: UIApplication,
|
|
7
|
+
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
|
|
8
|
+
) -> Bool {
|
|
9
|
+
// TODO: Add support for OfflineConfig via config plugin
|
|
10
|
+
#if os(iOS)
|
|
11
|
+
OfflineManager.initializeOfflineManager()
|
|
12
|
+
#endif
|
|
13
|
+
return true
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public func application(
|
|
17
|
+
_ application: UIApplication,
|
|
18
|
+
handleEventsForBackgroundURLSession identifier: String,
|
|
19
|
+
completionHandler: @escaping () -> Void
|
|
20
|
+
) {
|
|
21
|
+
#if os(iOS)
|
|
22
|
+
OfflineManager.sharedInstance().add(completionHandler: completionHandler, for: identifier)
|
|
23
|
+
#endif
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,49 +1,23 @@
|
|
|
1
1
|
import AVFAudio
|
|
2
|
+
import ExpoModulesCore
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
public
|
|
5
|
-
|
|
6
|
-
public var methodQueue: DispatchQueue! {
|
|
7
|
-
DispatchQueue.main
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// swiftlint:disable:next implicitly_unwrapped_optional
|
|
11
|
-
public static func moduleName() -> String! {
|
|
12
|
-
"AudioSessionModule"
|
|
13
|
-
}
|
|
4
|
+
public class AudioSessionModule: Module {
|
|
5
|
+
public func definition() -> ModuleDefinition {
|
|
6
|
+
Name("AudioSessionModule")
|
|
14
7
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
@objc
|
|
26
|
-
func setCategory(
|
|
27
|
-
_ category: String,
|
|
28
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
29
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
30
|
-
) {
|
|
31
|
-
if let category = parseCategory(category) {
|
|
32
|
-
do {
|
|
33
|
-
try AVAudioSession.sharedInstance().setCategory(category)
|
|
34
|
-
resolve(nil)
|
|
35
|
-
} catch {
|
|
36
|
-
reject("\((error as NSError).code)", error.localizedDescription, error as NSError)
|
|
8
|
+
AsyncFunction("setCategory") { (category: String) in
|
|
9
|
+
if let parsedCategory = parseCategory(category) {
|
|
10
|
+
do {
|
|
11
|
+
try AVAudioSession.sharedInstance().setCategory(parsedCategory)
|
|
12
|
+
} catch {
|
|
13
|
+
throw Exception(name: "AUDIO_SESSION_ERROR", description: error.localizedDescription)
|
|
14
|
+
}
|
|
15
|
+
} else {
|
|
16
|
+
throw Exception(name: "INVALID_CATEGORY", description: "Unknown audio session category: \(category)")
|
|
37
17
|
}
|
|
38
|
-
}
|
|
39
|
-
let error = RCTErrorWithMessage("Unknown audio session category: \(category)") as NSError
|
|
40
|
-
reject("\(error.code)", error.localizedDescription, error)
|
|
41
|
-
}
|
|
18
|
+
}.runOnQueue(.main)
|
|
42
19
|
}
|
|
43
20
|
|
|
44
|
-
/**
|
|
45
|
-
Parse any category string to an `AVAudioSession.Category` type.
|
|
46
|
-
*/
|
|
47
21
|
private func parseCategory(_ category: String) -> AVAudioSession.Category? {
|
|
48
22
|
switch category {
|
|
49
23
|
case "ambient":
|
|
@@ -1,82 +1,43 @@
|
|
|
1
1
|
import BitmovinPlayer
|
|
2
|
+
import ExpoModulesCore
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
public
|
|
5
|
-
|
|
6
|
-
@objc public var bridge: RCTBridge!
|
|
4
|
+
public class BitmovinCastManagerModule: Module {
|
|
5
|
+
public func definition() -> ModuleDefinition {
|
|
6
|
+
Name("BitmovinCastManagerModule")
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// swiftlint:disable:next implicitly_unwrapped_optional
|
|
18
|
-
public var methodQueue: DispatchQueue! {
|
|
19
|
-
bridge.uiManager.methodQueue
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
Initializes the BitmovinCastManager with the given options or with no options when none given.
|
|
24
|
-
*/
|
|
25
|
-
@objc(initializeCastManager:resolver:rejecter:)
|
|
26
|
-
func initializeCastManager(
|
|
27
|
-
_ config: Any?,
|
|
28
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
29
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
30
|
-
) {
|
|
31
|
-
#if os(iOS)
|
|
32
|
-
bridge.uiManager.addUIBlock { _, _ in
|
|
33
|
-
if let config {
|
|
34
|
-
guard let options = RCTConvert.castManagerOptions(config) else {
|
|
35
|
-
reject("BitmovinCastManagerModule", "Could not deserialize BitmovinCastManagerOptions", nil)
|
|
36
|
-
return
|
|
8
|
+
AsyncFunction("initializeCastManager") { (options: [String: Any]?) throws in
|
|
9
|
+
#if os(iOS)
|
|
10
|
+
if let options {
|
|
11
|
+
guard let options = RCTConvert.castManagerOptions(options) else {
|
|
12
|
+
throw Exception(
|
|
13
|
+
name: "DESERIALIZATION_ERROR",
|
|
14
|
+
description: "Could not deserialize BitmovinCastManagerOptions"
|
|
15
|
+
)
|
|
37
16
|
}
|
|
38
17
|
BitmovinCastManager.initializeCasting(options: options)
|
|
39
|
-
resolve(nil)
|
|
40
18
|
} else {
|
|
41
19
|
BitmovinCastManager.initializeCasting()
|
|
42
|
-
resolve(nil)
|
|
43
20
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
21
|
+
#endif
|
|
22
|
+
}.runOnQueue(.main)
|
|
47
23
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
56
|
-
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
57
|
-
) {
|
|
58
|
-
bridge.uiManager.addUIBlock { _, _ in
|
|
59
|
-
#if os(iOS)
|
|
60
|
-
resolve(BitmovinCastManager.isInitialized())
|
|
61
|
-
#else
|
|
62
|
-
resolve(false)
|
|
63
|
-
#endif
|
|
64
|
-
}
|
|
65
|
-
}
|
|
24
|
+
AsyncFunction("isInitialized") { () -> Bool in
|
|
25
|
+
#if os(iOS)
|
|
26
|
+
return BitmovinCastManager.isInitialized()
|
|
27
|
+
#else
|
|
28
|
+
return false
|
|
29
|
+
#endif
|
|
30
|
+
}.runOnQueue(.main)
|
|
66
31
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
If no namespace is provided, the one returned by defaultChannel.protocolNamespace is used.
|
|
70
|
-
*/
|
|
71
|
-
@objc(sendMessage:messageNamespace:)
|
|
72
|
-
func sendMessage(
|
|
73
|
-
_ message: String,
|
|
74
|
-
messageNamespace: String?
|
|
75
|
-
) {
|
|
76
|
-
#if os(iOS)
|
|
77
|
-
bridge.uiManager.addUIBlock { _, _ in
|
|
32
|
+
AsyncFunction("sendMessage") { (message: String, messageNamespace: String?) in
|
|
33
|
+
#if os(iOS)
|
|
78
34
|
BitmovinCastManager.sharedInstance().sendMessage(message, withNamespace: messageNamespace)
|
|
79
|
-
|
|
80
|
-
|
|
35
|
+
#endif
|
|
36
|
+
}.runOnQueue(.main)
|
|
37
|
+
|
|
38
|
+
AsyncFunction("updateContext") { () in
|
|
39
|
+
// iOS/tvOS doesn't need updateContext like Android does
|
|
40
|
+
// This is a no-op for iOS compatibility
|
|
41
|
+
}.runOnQueue(.main)
|
|
81
42
|
}
|
|
82
43
|
}
|