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
|
@@ -1,79 +1,95 @@
|
|
|
1
1
|
import BitmovinPlayer
|
|
2
|
+
import ExpoModulesCore
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Expo module for FullscreenHandler management with bidirectional communication.
|
|
6
|
+
* Handles synchronous fullscreen state changes between native code and JavaScript.
|
|
7
|
+
*/
|
|
8
|
+
public class FullscreenHandlerModule: Module {
|
|
9
|
+
/// In-memory mapping from `nativeId`s to `FullscreenHandlerBridge` instances.
|
|
10
|
+
private var fullscreenHandlers: Registry<FullscreenHandlerBridge> = [:]
|
|
7
11
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"FullscreenHandlerModule"
|
|
11
|
-
}
|
|
12
|
+
/// ResultWaiter used for blocking thread while waiting for fullscreen state change
|
|
13
|
+
private let waiter = ResultWaiter<Bool>()
|
|
12
14
|
|
|
13
|
-
public
|
|
14
|
-
|
|
15
|
-
}
|
|
15
|
+
public func definition() -> ModuleDefinition {
|
|
16
|
+
Name("FullscreenHandlerModule")
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
OnDestroy {
|
|
19
|
+
fullscreenHandlers.removeAll()
|
|
20
|
+
waiter.removeAll()
|
|
21
|
+
}
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
private var fullscreenHandlers: Registry<FullscreenHandlerBridge> = [:]
|
|
23
|
+
Events("onEnterFullscreen", "onExitFullscreen")
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
AsyncFunction("registerHandler") { (nativeId: NativeId) in
|
|
26
|
+
DispatchQueue.main.async { [weak self] in
|
|
27
|
+
guard let self, self.fullscreenHandlers[nativeId] == nil else {
|
|
28
|
+
return
|
|
29
|
+
}
|
|
30
|
+
self.fullscreenHandlers[nativeId] = FullscreenHandlerBridge(
|
|
31
|
+
nativeId,
|
|
32
|
+
moduleRegistry: appContext?.moduleRegistry
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
}.runOnQueue(.main)
|
|
36
|
+
|
|
37
|
+
AsyncFunction("destroy") { [weak self] (nativeId: NativeId) in
|
|
38
|
+
self?.fullscreenHandlers.removeValue(forKey: nativeId)
|
|
39
|
+
}.runOnQueue(.main)
|
|
40
|
+
|
|
41
|
+
AsyncFunction("notifyFullscreenChanged") { [weak self] (id: Int, isFullscreenEnabled: Bool) in
|
|
42
|
+
self?.waiter.complete(id: id, with: isFullscreenEnabled)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
AsyncFunction("setIsFullscreenActive") { [weak self] (nativeId: NativeId, isFullscreen: Bool) in
|
|
46
|
+
self?.fullscreenHandlers[nativeId]?.isFullscreenValueBox.update(isFullscreen)
|
|
47
|
+
}.runOnQueue(.main)
|
|
48
|
+
}
|
|
27
49
|
|
|
28
|
-
/**
|
|
29
|
-
Fetches the `FullscreenHandlerBridge` instance associated with `nativeId` from internal fullscreenHandlers.
|
|
30
|
-
- Parameter nativeId: `FullscreenHandlerBridge` instance ID.
|
|
31
|
-
- Returns: The associated `FullscreenHandlerBridge` instance or `nil`.
|
|
32
|
-
*/
|
|
33
|
-
@objc
|
|
34
50
|
func retrieve(_ nativeId: NativeId) -> FullscreenHandlerBridge? {
|
|
35
51
|
fullscreenHandlers[nativeId]
|
|
36
52
|
}
|
|
37
53
|
|
|
38
54
|
/**
|
|
39
|
-
|
|
40
|
-
|
|
55
|
+
* Handles fullscreen enter request from native code.
|
|
56
|
+
* Called by FullscreenHandlerBridge when fullscreen should be entered.
|
|
41
57
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
@MainActor
|
|
48
|
-
@objc(onFullscreenChanged:isFullscreenEnabled:)
|
|
49
|
-
func onFullscreenChanged(_ nativeId: NativeId, isFullscreenEnabled: Bool) -> Any? {
|
|
50
|
-
fullscreenHandlers[nativeId]?.isFullscreen = isFullscreenEnabled
|
|
51
|
-
fullscreenChangeDispatchGroup.leave()
|
|
52
|
-
return nil
|
|
53
|
-
}
|
|
58
|
+
func onFullscreenRequested(nativeId: NativeId) {
|
|
59
|
+
guard let handler = retrieve(nativeId) else {
|
|
60
|
+
return
|
|
61
|
+
}
|
|
54
62
|
|
|
55
|
-
|
|
56
|
-
@objc(registerHandler:)
|
|
57
|
-
func registerHandler(_ nativeId: NativeId) {
|
|
58
|
-
guard fullscreenHandlers[nativeId] == nil else { return }
|
|
59
|
-
fullscreenHandlers[nativeId] = FullscreenHandlerBridge(nativeId, bridge: bridge)
|
|
60
|
-
}
|
|
63
|
+
let (id, wait) = waiter.make(timeout: 0.25)
|
|
61
64
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
// Send event to JavaScript
|
|
66
|
+
sendEvent("onEnterFullscreen", [
|
|
67
|
+
"nativeId": nativeId,
|
|
68
|
+
"id": id
|
|
69
|
+
])
|
|
67
70
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
guard let result = wait() else {
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
handler.isFullscreenValueBox.update(result)
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
func onFullscreenExitRequested(nativeId: NativeId) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
guard let handler = retrieve(nativeId) else {
|
|
79
|
+
return
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let (id, wait) = waiter.make(timeout: 0.25)
|
|
83
|
+
|
|
84
|
+
// Send event to JavaScript
|
|
85
|
+
sendEvent("onExitFullscreen", [
|
|
86
|
+
"nativeId": nativeId,
|
|
87
|
+
"id": id
|
|
88
|
+
])
|
|
89
|
+
|
|
90
|
+
guard let result = wait() else {
|
|
91
|
+
return
|
|
92
|
+
}
|
|
93
|
+
handler.isFullscreenValueBox.update(result)
|
|
78
94
|
}
|
|
79
95
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
internal class LockedBox<T> {
|
|
4
|
+
private let lock = NSRecursiveLock()
|
|
5
|
+
var value: T {
|
|
6
|
+
lock.withLock {
|
|
7
|
+
_value
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
private var _value: T
|
|
11
|
+
|
|
12
|
+
init(value: T) {
|
|
13
|
+
self._value = value
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
func update(_ value: T) {
|
|
17
|
+
lock.withLock {
|
|
18
|
+
self._value = value
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import ExpoModulesCore
|
|
2
|
+
|
|
3
|
+
extension ModuleRegistry {
|
|
4
|
+
func get<T: Module>(_ type: T.Type = T.self) -> T? {
|
|
5
|
+
guard let name = String(describing: type)
|
|
6
|
+
.split(separator: ".", maxSplits: 1, omittingEmptySubsequences: true).last else {
|
|
7
|
+
return nil
|
|
8
|
+
}
|
|
9
|
+
return self.get(moduleWithName: String(name)) as? T
|
|
10
|
+
}
|
|
11
|
+
}
|
package/ios/NetworkModule.swift
CHANGED
|
@@ -1,38 +1,31 @@
|
|
|
1
1
|
import BitmovinPlayer
|
|
2
|
+
import ExpoModulesCore
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Expo module for NetworkConfig management with HTTP request/response preprocessing.
|
|
6
|
+
* Handles bidirectional communication between native code and JavaScript for network operations.
|
|
7
|
+
*/
|
|
8
|
+
public class NetworkModule: Module {
|
|
8
9
|
/// In-memory mapping from `nativeId`s to `NetworkConfig` instances.
|
|
9
10
|
private var networkConfigs: Registry<NetworkConfig> = [:]
|
|
10
|
-
private var preprocessHttpRequestDelegateBridges: Registry<PreprocessHttpRequestDelegate> = [:]
|
|
11
11
|
private var preprocessHttpRequestCompletionHandlers: Registry<(_ request: HttpRequest) -> Void> = [:]
|
|
12
12
|
private var preprocessHttpResponseCompletionHandlers: Registry<(_ response: HttpResponse) -> Void> = [:]
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"NetworkModule"
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public static func requiresMainQueueSetup() -> Bool {
|
|
20
|
-
true
|
|
21
|
-
}
|
|
14
|
+
public func definition() -> ModuleDefinition {
|
|
15
|
+
Name("NetworkModule")
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
OnDestroy {
|
|
18
|
+
networkConfigs.removeAll()
|
|
19
|
+
preprocessHttpRequestCompletionHandlers.removeAll()
|
|
20
|
+
preprocessHttpResponseCompletionHandlers.removeAll()
|
|
21
|
+
}
|
|
27
22
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
Events(
|
|
24
|
+
"onPreprocessHttpRequest",
|
|
25
|
+
"onPreprocessHttpResponse"
|
|
26
|
+
)
|
|
32
27
|
|
|
33
|
-
|
|
34
|
-
func initWithConfig(_ nativeId: NativeId, config: Any?) {
|
|
35
|
-
bridge.uiManager.addUIBlock { [weak self] _, _ in
|
|
28
|
+
AsyncFunction("initializeWithConfig") { [weak self] (nativeId: NativeId, config: [String: Any]) in
|
|
36
29
|
guard
|
|
37
30
|
self?.retrieve(nativeId) == nil,
|
|
38
31
|
let networkConfig = RCTConvert.networkConfig(config)
|
|
@@ -41,26 +34,47 @@ public class NetworkModule: NSObject, RCTBridgeModule {
|
|
|
41
34
|
}
|
|
42
35
|
self?.networkConfigs[nativeId] = networkConfig
|
|
43
36
|
self?.initConfigBlocks(nativeId, config)
|
|
44
|
-
}
|
|
45
|
-
}
|
|
37
|
+
}.runOnQueue(.main)
|
|
46
38
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
networkConfigs.removeValue(forKey: nativeId)
|
|
39
|
+
AsyncFunction("destroy") { [weak self] (nativeId: NativeId) in
|
|
40
|
+
self?.networkConfigs.removeValue(forKey: nativeId)
|
|
50
41
|
|
|
51
|
-
|
|
52
|
-
preprocessHttpRequestCompletionHandlers.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
42
|
+
// Clean up completion handlers
|
|
43
|
+
self?.preprocessHttpRequestCompletionHandlers.keys.filter { $0.starts(with: nativeId) }.forEach {
|
|
44
|
+
self?.preprocessHttpRequestCompletionHandlers.removeValue(forKey: $0)
|
|
45
|
+
}
|
|
46
|
+
self?.preprocessHttpResponseCompletionHandlers.keys.filter { $0.starts(with: nativeId) }.forEach {
|
|
47
|
+
self?.preprocessHttpResponseCompletionHandlers.removeValue(forKey: $0)
|
|
48
|
+
}
|
|
49
|
+
}.runOnQueue(.main)
|
|
50
|
+
|
|
51
|
+
AsyncFunction("setPreprocessedHttpRequest") { [weak self] (requestId: String, request: [String: Any]) in
|
|
52
|
+
guard let completionHandler = self?.preprocessHttpRequestCompletionHandlers[requestId],
|
|
53
|
+
let httpRequest = RCTConvert.httpRequest(request) else {
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
self?.preprocessHttpRequestCompletionHandlers.removeValue(forKey: requestId)
|
|
58
|
+
completionHandler(httpRequest)
|
|
59
|
+
}.runOnQueue(.main)
|
|
60
|
+
|
|
61
|
+
AsyncFunction("setPreprocessedHttpResponse") { [weak self] (responseId: String, response: [String: Any]) in
|
|
62
|
+
guard let completionHandler = self?.preprocessHttpResponseCompletionHandlers[responseId],
|
|
63
|
+
let httpResponse = RCTConvert.httpResponse(response) else {
|
|
64
|
+
return
|
|
65
|
+
}
|
|
66
|
+
self?.preprocessHttpResponseCompletionHandlers.removeValue(forKey: responseId)
|
|
67
|
+
completionHandler(httpResponse)
|
|
68
|
+
}.runOnQueue(.main)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
func retrieve(_ nativeId: NativeId) -> NetworkConfig? {
|
|
72
|
+
networkConfigs[nativeId]
|
|
58
73
|
}
|
|
59
74
|
|
|
60
|
-
private func initConfigBlocks(_ nativeId: NativeId, _ config: Any
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
initPreprocessHttpResponse(nativeId, networkConfigJson: json)
|
|
75
|
+
private func initConfigBlocks(_ nativeId: NativeId, _ config: [String: Any]) {
|
|
76
|
+
initPreprocessHttpRequest(nativeId, networkConfigJson: config)
|
|
77
|
+
initPreprocessHttpResponse(nativeId, networkConfigJson: config)
|
|
64
78
|
}
|
|
65
79
|
|
|
66
80
|
private func initPreprocessHttpRequest(_ nativeId: NativeId, networkConfigJson: [String: Any]) {
|
|
@@ -68,11 +82,14 @@ public class NetworkModule: NSObject, RCTBridgeModule {
|
|
|
68
82
|
networkConfigJson["preprocessHttpRequest"] != nil else {
|
|
69
83
|
return
|
|
70
84
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
networkConfig.preprocessHttpRequest = { [weak self] type, request, completionHandler in
|
|
86
|
+
self?.preprocessHttpRequestFromJS(
|
|
87
|
+
nativeId: nativeId,
|
|
88
|
+
type: type,
|
|
89
|
+
request: request,
|
|
90
|
+
completionHandler: completionHandler
|
|
91
|
+
)
|
|
92
|
+
}
|
|
76
93
|
}
|
|
77
94
|
|
|
78
95
|
private func initPreprocessHttpResponse(_ nativeId: NativeId, networkConfigJson: [String: Any]) {
|
|
@@ -93,31 +110,20 @@ public class NetworkModule: NSObject, RCTBridgeModule {
|
|
|
93
110
|
|
|
94
111
|
internal func preprocessHttpRequestFromJS(
|
|
95
112
|
nativeId: NativeId,
|
|
96
|
-
type:
|
|
113
|
+
type: HttpRequestType,
|
|
97
114
|
request: HttpRequest,
|
|
98
115
|
completionHandler: @escaping (
|
|
99
116
|
_ request: HttpRequest
|
|
100
117
|
) -> Void
|
|
101
118
|
) {
|
|
102
|
-
let requestId = "\(nativeId)
|
|
103
|
-
let args: [Any] = [
|
|
104
|
-
requestId,
|
|
105
|
-
type,
|
|
106
|
-
RCTConvert.toJson(httpRequest: request),
|
|
107
|
-
]
|
|
119
|
+
let requestId = "\(nativeId)-\(UUID().uuidString)"
|
|
108
120
|
preprocessHttpRequestCompletionHandlers[requestId] = completionHandler
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
let httpRequest = RCTConvert.httpRequest(request) else {
|
|
116
|
-
return
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
preprocessHttpRequestCompletionHandlers.removeValue(forKey: requestId)
|
|
120
|
-
completionHandler(httpRequest)
|
|
121
|
+
sendEvent("onPreprocessHttpRequest", [
|
|
122
|
+
"nativeId": nativeId,
|
|
123
|
+
"requestId": requestId,
|
|
124
|
+
"type": RCTConvert.toJson(httpRequestType: type),
|
|
125
|
+
"request": RCTConvert.toJson(httpRequest: request)
|
|
126
|
+
])
|
|
121
127
|
}
|
|
122
128
|
|
|
123
129
|
private func preprocessHttpResponseFromJS(
|
|
@@ -128,23 +134,13 @@ public class NetworkModule: NSObject, RCTBridgeModule {
|
|
|
128
134
|
_ response: HttpResponse
|
|
129
135
|
) -> Void
|
|
130
136
|
) {
|
|
131
|
-
let responseId = "\(nativeId)
|
|
132
|
-
let args: [Any] = [
|
|
133
|
-
responseId,
|
|
134
|
-
RCTConvert.toJson(httpRequestType: type),
|
|
135
|
-
RCTConvert.toJson(httpResponse: response),
|
|
136
|
-
]
|
|
137
|
+
let responseId = "\(nativeId)-\(UUID().uuidString)"
|
|
137
138
|
preprocessHttpResponseCompletionHandlers[responseId] = completionHandler
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
let httpResponse = RCTConvert.httpResponse(response) else {
|
|
145
|
-
return
|
|
146
|
-
}
|
|
147
|
-
preprocessHttpResponseCompletionHandlers.removeValue(forKey: responseId)
|
|
148
|
-
completionHandler(httpResponse)
|
|
139
|
+
sendEvent("onPreprocessHttpResponse", [
|
|
140
|
+
"nativeId": nativeId,
|
|
141
|
+
"responseId": responseId,
|
|
142
|
+
"type": RCTConvert.toJson(httpRequestType: type),
|
|
143
|
+
"response": RCTConvert.toJson(httpResponse: response)
|
|
144
|
+
])
|
|
149
145
|
}
|
|
150
146
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#if os(iOS)
|
|
2
2
|
import BitmovinPlayer
|
|
3
|
+
import ExpoModulesCore
|
|
3
4
|
import Foundation
|
|
5
|
+
import React
|
|
4
6
|
|
|
5
7
|
internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListener {
|
|
6
8
|
enum EventType: String {
|
|
@@ -16,19 +18,19 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
let offlineContentManager: OfflineContentManager
|
|
19
|
-
|
|
21
|
+
private weak var module: OfflineModule?
|
|
20
22
|
let nativeId: NativeId
|
|
21
23
|
let identifier: String
|
|
22
24
|
var currentTrackSelection: OfflineTrackSelection?
|
|
23
25
|
|
|
24
26
|
init(
|
|
25
27
|
forManager offlineContentManager: OfflineContentManager,
|
|
26
|
-
|
|
28
|
+
module: OfflineModule,
|
|
27
29
|
nativeId: NativeId,
|
|
28
30
|
identifier: String
|
|
29
31
|
) {
|
|
30
32
|
self.offlineContentManager = offlineContentManager
|
|
31
|
-
self.
|
|
33
|
+
self.module = module
|
|
32
34
|
self.nativeId = nativeId
|
|
33
35
|
self.identifier = identifier
|
|
34
36
|
super.init()
|
|
@@ -47,22 +49,16 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
47
49
|
sendOfflineEvent(eventType: .onOptionsAvailable)
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
/**
|
|
51
|
-
Called when an error occurs.
|
|
52
|
-
*/
|
|
53
52
|
func onOfflineError(
|
|
54
53
|
_ event: OfflineErrorEvent,
|
|
55
54
|
offlineContentManager: OfflineContentManager
|
|
56
55
|
) {
|
|
57
56
|
sendOfflineEvent(eventType: .onError, body: [
|
|
58
|
-
"code": event.
|
|
57
|
+
"code": event.errorCode,
|
|
59
58
|
"message": event.message
|
|
60
59
|
])
|
|
61
60
|
}
|
|
62
61
|
|
|
63
|
-
/**
|
|
64
|
-
Called after a getOptions or when am OfflineOptionEntry has been updated during a process call.
|
|
65
|
-
*/
|
|
66
62
|
func onAvailableTracksFetched(
|
|
67
63
|
_ event: AvailableTracksFetchedEvent,
|
|
68
64
|
offlineContentManager: OfflineContentManager
|
|
@@ -70,25 +66,19 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
70
66
|
currentTrackSelection = event.tracks
|
|
71
67
|
|
|
72
68
|
sendOfflineEvent(eventType: .onOptionsAvailable, body: [
|
|
73
|
-
"options": RCTConvert.toJson(offlineTracks: event.tracks)
|
|
69
|
+
"options": RCTConvert.toJson(offlineTracks: event.tracks) ?? [:]
|
|
74
70
|
])
|
|
75
71
|
}
|
|
76
72
|
|
|
77
|
-
/**
|
|
78
|
-
Called when a process call has completed.
|
|
79
|
-
*/
|
|
80
73
|
func onContentDownloadFinished(
|
|
81
74
|
_ event: ContentDownloadFinishedEvent,
|
|
82
75
|
offlineContentManager: OfflineContentManager
|
|
83
76
|
) {
|
|
84
77
|
sendOfflineEvent(eventType: .onCompleted, body: [
|
|
85
|
-
"options": RCTConvert.toJson(offlineTracks: currentTrackSelection)
|
|
78
|
+
"options": RCTConvert.toJson(offlineTracks: currentTrackSelection) ?? [:]
|
|
86
79
|
])
|
|
87
80
|
}
|
|
88
81
|
|
|
89
|
-
/**
|
|
90
|
-
Called when the progress for a process call changes.
|
|
91
|
-
*/
|
|
92
82
|
func onContentDownloadProgressChanged(
|
|
93
83
|
_ event: ContentDownloadProgressChangedEvent,
|
|
94
84
|
offlineContentManager: OfflineContentManager
|
|
@@ -98,9 +88,6 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
98
88
|
])
|
|
99
89
|
}
|
|
100
90
|
|
|
101
|
-
/**
|
|
102
|
-
Called when all actions have been suspended.
|
|
103
|
-
*/
|
|
104
91
|
func onContentDownloadSuspended(
|
|
105
92
|
_ event: ContentDownloadSuspendedEvent,
|
|
106
93
|
offlineContentManager: OfflineContentManager
|
|
@@ -108,9 +95,6 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
108
95
|
sendOfflineEvent(eventType: .onSuspended)
|
|
109
96
|
}
|
|
110
97
|
|
|
111
|
-
/**
|
|
112
|
-
Called when all actions have been resumed.
|
|
113
|
-
*/
|
|
114
98
|
func onContentDownloadResumed(
|
|
115
99
|
_ event: ContentDownloadResumedEvent,
|
|
116
100
|
offlineContentManager: OfflineContentManager
|
|
@@ -118,10 +102,6 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
118
102
|
sendOfflineEvent(eventType: .onResumed)
|
|
119
103
|
}
|
|
120
104
|
|
|
121
|
-
/**
|
|
122
|
-
Called when the download of the media content was canceled by the user
|
|
123
|
-
and all partially downloaded content has been deleted from disk.
|
|
124
|
-
*/
|
|
125
105
|
func onContentDownloadCanceled(
|
|
126
106
|
_ event: ContentDownloadCanceledEvent,
|
|
127
107
|
offlineContentManager: OfflineContentManager
|
|
@@ -129,9 +109,6 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
129
109
|
sendOfflineEvent(eventType: .onCanceled)
|
|
130
110
|
}
|
|
131
111
|
|
|
132
|
-
/**
|
|
133
|
-
Called when the DRM license was renewed.
|
|
134
|
-
*/
|
|
135
112
|
func onOfflineContentLicenseRenewed(
|
|
136
113
|
_ event: OfflineContentLicenseRenewedEvent,
|
|
137
114
|
offlineContentManager: OfflineContentManager
|
|
@@ -150,8 +127,8 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
150
127
|
sendOfflineEvent(eventType: .onDrmLicenseExpired)
|
|
151
128
|
}
|
|
152
129
|
|
|
153
|
-
private func sendOfflineEvent(eventType: EventType, body: [String: Any
|
|
154
|
-
|
|
130
|
+
private func sendOfflineEvent(eventType: EventType, body: [String: Any] = [:]) {
|
|
131
|
+
let baseEvent: [String: Any] = [
|
|
155
132
|
"nativeId": nativeId,
|
|
156
133
|
"identifier": identifier,
|
|
157
134
|
"eventType": eventType.rawValue,
|
|
@@ -160,11 +137,7 @@ internal class OfflineContentManagerBridge: NSObject, OfflineContentManagerListe
|
|
|
160
137
|
|
|
161
138
|
let eventBody = baseEvent.merging(body) { current, _ in current }
|
|
162
139
|
|
|
163
|
-
|
|
164
|
-
try eventEmitter?.sendEvent(withName: "BitmovinOfflineEvent", body: eventBody)
|
|
165
|
-
} catch let error as NSError {
|
|
166
|
-
print(error)
|
|
167
|
-
}
|
|
140
|
+
module?.sendEvent("onBitmovinOfflineEvent", eventBody)
|
|
168
141
|
}
|
|
169
142
|
}
|
|
170
143
|
#endif
|