@100mslive/react-native-hms 1.6.2 → 1.7.1
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/README.md +30 -39
- package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/build.gradle +24 -9
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/gradlew +103 -104
- package/android/gradlew.bat +3 -18
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +40 -17
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +248 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +101 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +12 -6
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +7 -14
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +118 -113
- package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +1 -1
- package/android/src/main/res/layout/player_view.xml +9 -0
- package/ios/HMSDecoder.swift +8 -7
- package/ios/HMSHLSPlayerManager.m +22 -0
- package/ios/HMSHLSPlayerManager.swift +368 -0
- package/ios/HMSHelper.swift +6 -2
- package/ios/HMSManager.m +5 -2
- package/ios/HMSManager.swift +30 -16
- package/ios/HMSRNSDK.swift +84 -105
- package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSBrowserRecordingState.js +2 -0
- package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/commonjs/classes/HMSCameraControl.js +3 -5
- package/lib/commonjs/classes/HMSCameraControl.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +44 -38
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSEventEmitter.js +10 -0
- package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -0
- package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSManagerModule.js +18 -0
- package/lib/commonjs/classes/HMSManagerModule.js.map +1 -0
- package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -1
- package/lib/commonjs/classes/HMSNativeEventListener.js +13 -0
- package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -0
- package/lib/commonjs/classes/HMSPeer.js +55 -20
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerUpdate.js +1 -1
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPeersCache.js +33 -43
- package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
- package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
- package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSRoom.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomCache.js +10 -5
- package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +108 -113
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSSessionStore.js +6 -7
- package/lib/commonjs/classes/HMSSessionStore.js.map +1 -1
- package/lib/commonjs/classes/HMSTrack.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +4 -1
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +147 -0
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -0
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +12 -0
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -0
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js +71 -0
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -0
- package/lib/commonjs/components/HMSHLSPlayer/index.js +63 -0
- package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -0
- package/lib/commonjs/hooks/useHMSPeerUpdates.js +77 -0
- package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -0
- package/lib/commonjs/index.js +63 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hls-player-playback-slice.js +23 -0
- package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -0
- package/lib/commonjs/stores/hls-player-stats-store.js +36 -0
- package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -0
- package/lib/commonjs/stores/hms-store.js +16 -0
- package/lib/commonjs/stores/hms-store.js.map +1 -0
- package/lib/commonjs/stores/types.js +6 -0
- package/lib/commonjs/stores/types.js.map +1 -0
- package/lib/commonjs/types.js +36 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/classes/HMSAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSBrowserRecordingState.js +2 -0
- package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/module/classes/HMSCameraControl.js +1 -4
- package/lib/module/classes/HMSCameraControl.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +42 -37
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSEventEmitter.js +3 -0
- package/lib/module/classes/HMSEventEmitter.js.map +1 -0
- package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSLocalPeer.js.map +1 -1
- package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSManagerModule.js +11 -0
- package/lib/module/classes/HMSManagerModule.js.map +1 -0
- package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -1
- package/lib/module/classes/HMSNativeEventListener.js +5 -0
- package/lib/module/classes/HMSNativeEventListener.js.map +1 -0
- package/lib/module/classes/HMSPeer.js +55 -20
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerUpdate.js +1 -1
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPeersCache.js +31 -42
- package/lib/module/classes/HMSPeersCache.js.map +1 -1
- package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
- package/lib/module/classes/HMSRemotePeer.js.map +1 -1
- package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
- package/lib/module/classes/HMSRoom.js.map +1 -1
- package/lib/module/classes/HMSRoomCache.js +8 -4
- package/lib/module/classes/HMSRoomCache.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +57 -62
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSSessionStore.js +2 -4
- package/lib/module/classes/HMSSessionStore.js.map +1 -1
- package/lib/module/classes/HMSTrack.js.map +1 -1
- package/lib/module/classes/HMSVideoTrack.js.map +1 -1
- package/lib/module/classes/HmsView.js +4 -1
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +138 -0
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -0
- package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +4 -0
- package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -0
- package/lib/module/components/HMSHLSPlayer/hooks.js +56 -0
- package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -0
- package/lib/module/components/HMSHLSPlayer/index.js +3 -0
- package/lib/module/components/HMSHLSPlayer/index.js.map +1 -0
- package/lib/module/hooks/useHMSPeerUpdates.js +67 -0
- package/lib/module/hooks/useHMSPeerUpdates.js.map +1 -0
- package/lib/module/index.js +13 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/stores/hls-player-playback-slice.js +16 -0
- package/lib/module/stores/hls-player-playback-slice.js.map +1 -0
- package/lib/module/stores/hls-player-stats-store.js +29 -0
- package/lib/module/stores/hls-player-stats-store.js.map +1 -0
- package/lib/module/stores/hms-store.js +9 -0
- package/lib/module/stores/hms-store.js.map +1 -0
- package/lib/module/stores/types.js +2 -0
- package/lib/module/stores/types.js.map +1 -0
- package/lib/module/types.js +32 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/classes/HMSAudioTrack.d.ts +2 -1
- package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +2 -0
- package/lib/typescript/classes/HMSEncoder.d.ts +1 -0
- package/lib/typescript/classes/HMSEventEmitter.d.ts +2 -0
- package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +2 -1
- package/lib/typescript/classes/HMSLocalPeer.d.ts +3 -3
- package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +2 -1
- package/lib/typescript/classes/HMSManagerModule.d.ts +3 -0
- package/lib/typescript/classes/HMSNativeEventListener.d.ts +4 -0
- package/lib/typescript/classes/HMSPeer.d.ts +10 -5
- package/lib/typescript/classes/HMSPeersCache.d.ts +17 -2
- package/lib/typescript/classes/HMSRTMPConfig.d.ts +2 -2
- package/lib/typescript/classes/HMSRemoteAudioTrack.d.ts +2 -1
- package/lib/typescript/classes/HMSRemotePeer.d.ts +3 -3
- package/lib/typescript/classes/HMSRemoteVideoTrack.d.ts +2 -1
- package/lib/typescript/classes/HMSRoom.d.ts +1 -1
- package/lib/typescript/classes/HMSSDK.d.ts +5 -15
- package/lib/typescript/classes/HMSTrack.d.ts +3 -2
- package/lib/typescript/classes/HMSVideoTrack.d.ts +2 -1
- package/lib/typescript/classes/HmsView.d.ts +1 -1
- package/lib/typescript/components/HMSHLSPlayer/HMSHLSPlayer.d.ts +21 -0
- package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +19 -0
- package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +17 -0
- package/lib/typescript/components/HMSHLSPlayer/index.d.ts +2 -0
- package/lib/typescript/hooks/useHMSPeerUpdates.d.ts +7 -0
- package/lib/typescript/index.d.ts +5 -0
- package/lib/typescript/stores/hls-player-playback-slice.d.ts +5 -0
- package/lib/typescript/stores/hls-player-stats-store.d.ts +9 -0
- package/lib/typescript/stores/hms-store.d.ts +9 -0
- package/lib/typescript/stores/types.d.ts +25 -0
- package/lib/typescript/types.d.ts +63 -0
- package/package.json +4 -1
- package/react-native-hms.podspec +1 -0
- package/sdk-versions.json +3 -2
- package/src/classes/HMSAudioTrack.ts +2 -1
- package/src/classes/HMSBrowserRecordingState.ts +3 -0
- package/src/classes/HMSCameraControl.ts +1 -2
- package/src/classes/HMSEncoder.ts +18 -8
- package/src/classes/HMSEventEmitter.ts +3 -0
- package/src/classes/HMSLocalAudioTrack.ts +2 -1
- package/src/classes/HMSLocalPeer.ts +3 -3
- package/src/classes/HMSLocalVideoTrack.ts +2 -1
- package/src/classes/HMSManagerModule.ts +18 -0
- package/src/classes/HMSNativeEventEmitter.ts +2 -1
- package/src/classes/HMSNativeEventListener.ts +8 -0
- package/src/classes/HMSPeer.ts +96 -48
- package/src/classes/HMSPeerUpdate.ts +4 -4
- package/src/classes/HMSPeersCache.ts +55 -43
- package/src/classes/HMSRTMPConfig.ts +2 -2
- package/src/classes/HMSRemoteAudioTrack.ts +2 -1
- package/src/classes/HMSRemotePeer.ts +3 -3
- package/src/classes/HMSRemoteVideoTrack.ts +2 -1
- package/src/classes/HMSRoom.ts +1 -1
- package/src/classes/HMSRoomCache.ts +11 -3
- package/src/classes/HMSSDK.tsx +74 -73
- package/src/classes/HMSSessionStore.ts +6 -8
- package/src/classes/HMSTrack.ts +3 -2
- package/src/classes/HMSVideoTrack.ts +2 -1
- package/src/classes/HmsView.tsx +8 -2
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +261 -0
- package/src/components/HMSHLSPlayer/RCTHMSHLSPlayer.ts +37 -0
- package/src/components/HMSHLSPlayer/hooks.ts +101 -0
- package/src/components/HMSHLSPlayer/index.ts +9 -0
- package/src/hooks/useHMSPeerUpdates.ts +85 -0
- package/src/index.ts +14 -0
- package/src/stores/hls-player-playback-slice.ts +25 -0
- package/src/stores/hls-player-stats-store.ts +37 -0
- package/src/stores/hms-store.ts +11 -0
- package/src/stores/types.ts +49 -0
- package/src/types.ts +119 -0
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.idea/compiler.xml +0 -6
- package/android/.idea/gradle.xml +0 -18
- package/android/.idea/jarRepositories.xml +0 -50
- package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_3_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_4_1_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_4_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_3_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_core_core_1_7_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_4_0.xml +0 -11
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_4_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +0 -16
- package/android/.idea/libraries/Gradle__androidx_tracing_tracing_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_0_3_0_aar.xml +0 -14
- package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +0 -18
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +0 -15
- package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_71_0_rc_0_debug_aar.xml +0 -14
- package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_4.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_4.xml +0 -13
- package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_4_aar.xml +0 -14
- package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +0 -13
- package/android/.idea/libraries/Gradle__com_github_100mslive_android_sdk_lib_2_5_1_aar.xml +0 -10
- package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m104_hms_1_3_aar.xml +0 -10
- package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_2.xml +0 -13
- package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +0 -13
- package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_10.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_10.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_10.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_10.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_6_0.xml +0 -13
- package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_6_0.xml +0 -13
- package/android/.idea/misc.xml +0 -9
- package/android/.idea/modules/android.androidTest.iml +0 -203
- package/android/.idea/modules/android.iml +0 -40
- package/android/.idea/modules/android.main.iml +0 -199
- package/android/.idea/modules/android.unitTest.iml +0 -197
- package/android/.idea/modules.xml +0 -11
- package/android/.idea/sonarlint/issuestore/3/c/3c46088b6add3088181589d8ed726652742b6221 +0 -5
- package/android/.idea/sonarlint/issuestore/index.pb +0 -7
- package/android/.idea/vcs.xml +0 -6
- package/android/local.properties +0 -8
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/yogesh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Hmssdk.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- /package/android/{.idea/sonarlint/issuestore/a/8/a8c9f5ddd88723818e51ae3cf8693d02355a8691 → .gradle/6.7.1/gc.properties} +0 -0
- /package/android/{.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 → .gradle/configuration-cache/gc.properties} +0 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import React, { useImperativeHandle, useRef } from 'react';
|
|
2
|
+
import { View, StyleSheet, UIManager, findNodeHandle } from 'react-native';
|
|
3
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
setHMSHLSPlayerCue,
|
|
7
|
+
setHMSHLSPlayerPlaybackError,
|
|
8
|
+
setHMSHLSPlayerPlaybackState,
|
|
9
|
+
setHMSHLSPlayerStats,
|
|
10
|
+
setHMSHLSPlayerStatsError,
|
|
11
|
+
} from './hooks';
|
|
12
|
+
import {
|
|
13
|
+
RCTHMSHLSPlayer,
|
|
14
|
+
RCTHMSHLSPlayerViewManagerConfig,
|
|
15
|
+
} from './RCTHMSHLSPlayer';
|
|
16
|
+
import type {
|
|
17
|
+
HmsHlsPlaybackEventHandler,
|
|
18
|
+
HmsHlsStatsEventHandler,
|
|
19
|
+
RCTHMSHLSPlayerRef,
|
|
20
|
+
} from './RCTHMSHLSPlayer';
|
|
21
|
+
import {
|
|
22
|
+
HMSHLSPlayerPlaybackEventTypes,
|
|
23
|
+
HMSHLSPlayerStatsEventTypes,
|
|
24
|
+
} from '../../types';
|
|
25
|
+
import type { HMSHLSPlayerPlaybackCueEventData } from '../../types';
|
|
26
|
+
import { HMSEncoder } from '../../classes/HMSEncoder';
|
|
27
|
+
import type { HMSHLSPlayerPlaybackCue } from '../../stores/types';
|
|
28
|
+
|
|
29
|
+
export interface HMSHLSPlayerProps {
|
|
30
|
+
url?: string;
|
|
31
|
+
style?: StyleProp<ViewStyle>;
|
|
32
|
+
containerStyle?: StyleProp<ViewStyle>;
|
|
33
|
+
aspectRatio?: number;
|
|
34
|
+
enableStats?: boolean;
|
|
35
|
+
enableControls?: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface HMSHLSPlayerRefProperties {
|
|
39
|
+
play: (url?: string) => void;
|
|
40
|
+
stop: () => void;
|
|
41
|
+
pause: () => void;
|
|
42
|
+
resume: () => void;
|
|
43
|
+
seekForward: (seconds: number) => void;
|
|
44
|
+
seekBackward: (seconds: number) => void;
|
|
45
|
+
seekToLivePosition: () => void;
|
|
46
|
+
setVolume: (level: number) => void;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const _HMSHLSPlayer: React.ForwardRefRenderFunction<
|
|
50
|
+
HMSHLSPlayerRefProperties,
|
|
51
|
+
HMSHLSPlayerProps
|
|
52
|
+
> = (
|
|
53
|
+
{
|
|
54
|
+
url = '',
|
|
55
|
+
style,
|
|
56
|
+
containerStyle,
|
|
57
|
+
aspectRatio = 9 / 16,
|
|
58
|
+
enableStats,
|
|
59
|
+
enableControls = false,
|
|
60
|
+
},
|
|
61
|
+
ref
|
|
62
|
+
) => {
|
|
63
|
+
const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);
|
|
64
|
+
|
|
65
|
+
useImperativeHandle(
|
|
66
|
+
ref,
|
|
67
|
+
() => ({
|
|
68
|
+
play: (url?: string) => {
|
|
69
|
+
if (
|
|
70
|
+
hmsHlsPlayerRef.current &&
|
|
71
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.play
|
|
72
|
+
) {
|
|
73
|
+
UIManager.dispatchViewManagerCommand(
|
|
74
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
75
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.play,
|
|
76
|
+
url ? [url] : ['']
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
stop: () => {
|
|
81
|
+
if (
|
|
82
|
+
hmsHlsPlayerRef.current &&
|
|
83
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.stop
|
|
84
|
+
) {
|
|
85
|
+
UIManager.dispatchViewManagerCommand(
|
|
86
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
87
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.stop,
|
|
88
|
+
undefined
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
pause: () => {
|
|
93
|
+
if (
|
|
94
|
+
hmsHlsPlayerRef.current &&
|
|
95
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.pause
|
|
96
|
+
) {
|
|
97
|
+
UIManager.dispatchViewManagerCommand(
|
|
98
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
99
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.pause,
|
|
100
|
+
undefined
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
resume: () => {
|
|
105
|
+
if (
|
|
106
|
+
hmsHlsPlayerRef.current &&
|
|
107
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.resume
|
|
108
|
+
) {
|
|
109
|
+
UIManager.dispatchViewManagerCommand(
|
|
110
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
111
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.resume,
|
|
112
|
+
undefined
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
seekForward: (seconds: number) => {
|
|
117
|
+
if (typeof seconds !== 'number') {
|
|
118
|
+
throw new Error(
|
|
119
|
+
seconds
|
|
120
|
+
? 'seconds must be a `number` type'
|
|
121
|
+
: 'seconds was not provided'
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (
|
|
126
|
+
hmsHlsPlayerRef.current &&
|
|
127
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward
|
|
128
|
+
) {
|
|
129
|
+
UIManager.dispatchViewManagerCommand(
|
|
130
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
131
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,
|
|
132
|
+
[seconds]
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
seekBackward: (seconds: number) => {
|
|
137
|
+
if (typeof seconds !== 'number') {
|
|
138
|
+
throw new Error(
|
|
139
|
+
seconds
|
|
140
|
+
? 'seconds must be a `number` type'
|
|
141
|
+
: 'seconds was not provided'
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (
|
|
146
|
+
hmsHlsPlayerRef.current &&
|
|
147
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward
|
|
148
|
+
) {
|
|
149
|
+
UIManager.dispatchViewManagerCommand(
|
|
150
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
151
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,
|
|
152
|
+
[seconds]
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
seekToLivePosition: () => {
|
|
157
|
+
if (
|
|
158
|
+
hmsHlsPlayerRef.current &&
|
|
159
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition
|
|
160
|
+
) {
|
|
161
|
+
UIManager.dispatchViewManagerCommand(
|
|
162
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
163
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,
|
|
164
|
+
undefined
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
setVolume: (level: number) => {
|
|
169
|
+
if (typeof level !== 'number') {
|
|
170
|
+
throw new Error(
|
|
171
|
+
level ? 'level must be a `number` type' : 'level was not provided'
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (
|
|
176
|
+
hmsHlsPlayerRef.current &&
|
|
177
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume
|
|
178
|
+
) {
|
|
179
|
+
UIManager.dispatchViewManagerCommand(
|
|
180
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
181
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,
|
|
182
|
+
[level]
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
}),
|
|
187
|
+
[]
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
// Handle HLS Playback events
|
|
191
|
+
const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({
|
|
192
|
+
nativeEvent,
|
|
193
|
+
}) => {
|
|
194
|
+
const { event, data } = nativeEvent;
|
|
195
|
+
|
|
196
|
+
if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {
|
|
197
|
+
const transformedData = HMSEncoder.transformHMSHLSCueEventData<
|
|
198
|
+
HMSHLSPlayerPlaybackCueEventData,
|
|
199
|
+
HMSHLSPlayerPlaybackCue
|
|
200
|
+
>(data);
|
|
201
|
+
setHMSHLSPlayerCue(transformedData);
|
|
202
|
+
} else if (
|
|
203
|
+
event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT
|
|
204
|
+
) {
|
|
205
|
+
setHMSHLSPlayerPlaybackError(data.error);
|
|
206
|
+
} else {
|
|
207
|
+
setHMSHLSPlayerPlaybackState(data.state);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
// Handle HLS Stats events
|
|
212
|
+
const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {
|
|
213
|
+
const { event, data } = nativeEvent;
|
|
214
|
+
|
|
215
|
+
if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {
|
|
216
|
+
setHMSHLSPlayerStatsError(data);
|
|
217
|
+
} else {
|
|
218
|
+
setHMSHLSPlayerStats(data);
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
return (
|
|
223
|
+
<View style={[styles.container, containerStyle]}>
|
|
224
|
+
<View style={[styles.playerWrapper, style]}>
|
|
225
|
+
<RCTHMSHLSPlayer
|
|
226
|
+
ref={hmsHlsPlayerRef}
|
|
227
|
+
url={url}
|
|
228
|
+
style={[styles.player, { aspectRatio }]}
|
|
229
|
+
enableStats={enableStats}
|
|
230
|
+
enableControls={enableControls}
|
|
231
|
+
onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}
|
|
232
|
+
onHmsHlsStatsEvent={handleHLSStatsEvent}
|
|
233
|
+
/>
|
|
234
|
+
</View>
|
|
235
|
+
</View>
|
|
236
|
+
);
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
export const HMSHLSPlayer = React.forwardRef<
|
|
240
|
+
HMSHLSPlayerRefProperties,
|
|
241
|
+
HMSHLSPlayerProps
|
|
242
|
+
>(_HMSHLSPlayer);
|
|
243
|
+
|
|
244
|
+
const styles = StyleSheet.create({
|
|
245
|
+
container: {
|
|
246
|
+
flex: 1,
|
|
247
|
+
alignItems: 'center',
|
|
248
|
+
justifyContent: 'center',
|
|
249
|
+
},
|
|
250
|
+
playerWrapper: {
|
|
251
|
+
backgroundColor: '#000000',
|
|
252
|
+
alignItems: 'center',
|
|
253
|
+
justifyContent: 'center',
|
|
254
|
+
},
|
|
255
|
+
player: {
|
|
256
|
+
width: '100%',
|
|
257
|
+
maxHeight: '100%',
|
|
258
|
+
maxWidth: '100%',
|
|
259
|
+
aspectRatio: 9 / 16,
|
|
260
|
+
},
|
|
261
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { requireNativeComponent, UIManager } from 'react-native';
|
|
2
|
+
import type {
|
|
3
|
+
StyleProp,
|
|
4
|
+
NativeSyntheticEvent,
|
|
5
|
+
ViewStyle,
|
|
6
|
+
NativeMethods,
|
|
7
|
+
} from 'react-native';
|
|
8
|
+
import type {
|
|
9
|
+
HMSHLSPlayerPlaybackEvent,
|
|
10
|
+
HMSHLSPlayerStatsEvent,
|
|
11
|
+
} from '../../types';
|
|
12
|
+
|
|
13
|
+
export type HmsHlsPlaybackEventHandler = (
|
|
14
|
+
event: NativeSyntheticEvent<HMSHLSPlayerPlaybackEvent>
|
|
15
|
+
) => void;
|
|
16
|
+
|
|
17
|
+
export type HmsHlsStatsEventHandler = (
|
|
18
|
+
event: NativeSyntheticEvent<HMSHLSPlayerStatsEvent>
|
|
19
|
+
) => void;
|
|
20
|
+
|
|
21
|
+
export type RCTHMSHLSPlayerProps = {
|
|
22
|
+
url?: string;
|
|
23
|
+
style?: StyleProp<ViewStyle>;
|
|
24
|
+
enableStats?: boolean;
|
|
25
|
+
enableControls?: boolean;
|
|
26
|
+
onHmsHlsPlaybackEvent?: HmsHlsPlaybackEventHandler;
|
|
27
|
+
onHmsHlsStatsEvent?: HmsHlsStatsEventHandler;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const RCTHMSHLSPlayer =
|
|
31
|
+
requireNativeComponent<RCTHMSHLSPlayerProps>('HMSHLSPlayer');
|
|
32
|
+
|
|
33
|
+
export type RCTHMSHLSPlayerRef = React.Component<RCTHMSHLSPlayerProps> &
|
|
34
|
+
Readonly<NativeMethods>;
|
|
35
|
+
|
|
36
|
+
export const RCTHMSHLSPlayerViewManagerConfig =
|
|
37
|
+
UIManager.getViewManagerConfig('HMSHLSPlayer');
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import type { DependencyList } from 'react';
|
|
3
|
+
import { shallow } from 'zustand/shallow';
|
|
4
|
+
|
|
5
|
+
import { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';
|
|
6
|
+
import { useHMSStore } from '../../stores/hms-store';
|
|
7
|
+
import type { HMSHLSPlayerStatsUpdateEventData } from '../../types';
|
|
8
|
+
import type {
|
|
9
|
+
HMSHLSPlayerCue,
|
|
10
|
+
HMSHLSPlayerPlaybackError,
|
|
11
|
+
HMSHLSPlayerStatsError,
|
|
12
|
+
} from '../../stores/types';
|
|
13
|
+
|
|
14
|
+
// use latest state (with component rerender)
|
|
15
|
+
|
|
16
|
+
export const useHMSHLSPlayerPlaybackState = () => {
|
|
17
|
+
return useHMSStore((state) => state.playbackState);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const useHMSHLSPlayerStats = () => {
|
|
21
|
+
return useHMSHLSPlayerStatsStore(
|
|
22
|
+
(state) => ({
|
|
23
|
+
stats: state.stats,
|
|
24
|
+
error: state.error,
|
|
25
|
+
}),
|
|
26
|
+
shallow
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const useHMSHLSPlayerStat = <
|
|
31
|
+
T extends keyof HMSHLSPlayerStatsUpdateEventData,
|
|
32
|
+
>(
|
|
33
|
+
stat: T
|
|
34
|
+
) => {
|
|
35
|
+
return useHMSHLSPlayerStatsStore((state) => state.stats[stat]);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// // The distance of current playback position from the live edge of HLS stream
|
|
39
|
+
// export const useIsHLSStreamLive = (liveOffsetMillis: number = 1000) => {
|
|
40
|
+
// return useHMSHLSPlayerStatsStore((state) => state.stats.distanceFromLive < liveOffsetMillis);
|
|
41
|
+
// }
|
|
42
|
+
|
|
43
|
+
// get latest state (without component rerender)
|
|
44
|
+
|
|
45
|
+
export const useHMSHLSPlayerStatsError = (
|
|
46
|
+
callback: (error: NonNullable<HMSHLSPlayerStatsError>) => void,
|
|
47
|
+
deps: DependencyList
|
|
48
|
+
) => {
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
return useHMSHLSPlayerStatsStore.subscribe(
|
|
51
|
+
(state) => state.error,
|
|
52
|
+
(data) => {
|
|
53
|
+
if (data) callback(data);
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
}, deps);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const useHMSHLSPlayerPlaybackError = (
|
|
60
|
+
callback: (error: NonNullable<HMSHLSPlayerPlaybackError>) => void,
|
|
61
|
+
deps: DependencyList
|
|
62
|
+
) => {
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
return useHMSStore.subscribe(
|
|
65
|
+
(state) => state.error,
|
|
66
|
+
(data) => {
|
|
67
|
+
if (data) callback(data);
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}, deps);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export const useHMSHLSPlayerCue = (
|
|
74
|
+
callback: (error: NonNullable<HMSHLSPlayerCue>) => void,
|
|
75
|
+
deps: DependencyList
|
|
76
|
+
) => {
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
return useHMSStore.subscribe(
|
|
79
|
+
(state) => state.cue,
|
|
80
|
+
(data) => {
|
|
81
|
+
if (data) callback(data);
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
}, deps);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// state setters
|
|
88
|
+
|
|
89
|
+
export const setHMSHLSPlayerPlaybackState =
|
|
90
|
+
useHMSStore.getState().setPlaybackState;
|
|
91
|
+
|
|
92
|
+
export const setHMSHLSPlayerCue = useHMSStore.getState().setCue;
|
|
93
|
+
|
|
94
|
+
export const setHMSHLSPlayerPlaybackError =
|
|
95
|
+
useHMSStore.getState().setPlaybackError;
|
|
96
|
+
|
|
97
|
+
export const setHMSHLSPlayerStats =
|
|
98
|
+
useHMSHLSPlayerStatsStore.getState().changeStats;
|
|
99
|
+
|
|
100
|
+
export const setHMSHLSPlayerStatsError =
|
|
101
|
+
useHMSHLSPlayerStatsStore.getState().setError;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import { HMSConstants } from '../classes/HMSConstants';
|
|
4
|
+
import { HMSEncoder } from '../classes/HMSEncoder';
|
|
5
|
+
import { HMSEventEmitter } from '../classes/HMSEventEmitter';
|
|
6
|
+
import { getLogger } from '../classes/HMSLogger';
|
|
7
|
+
import HMSNativeEventListener from '../classes/HMSNativeEventListener';
|
|
8
|
+
import type { HMSNativeEventSubscription } from '../classes/HMSNativeEventListener';
|
|
9
|
+
import type { HMSPeer } from '../classes/HMSPeer';
|
|
10
|
+
import { HMSPeerUpdate, HMSPeerUpdateOrdinals } from '../classes/HMSPeerUpdate';
|
|
11
|
+
import { getHmsPeersCache } from '../classes/HMSPeersCache';
|
|
12
|
+
import { HMSUpdateListenerActions } from '../classes/HMSUpdateListenerActions';
|
|
13
|
+
|
|
14
|
+
const eventType = HMSUpdateListenerActions.ON_PEER_UPDATE;
|
|
15
|
+
|
|
16
|
+
// TODO: How to handle events which have already been received?
|
|
17
|
+
// TODO(DOUBT): add HMSInstance as dependency because of actions enabling/disabling events on HMSInstance?
|
|
18
|
+
export const useHMSPeerUpdates = (
|
|
19
|
+
effect: (data: { peer: HMSPeer; type: HMSPeerUpdate }) => void,
|
|
20
|
+
deps: React.DependencyList | undefined = []
|
|
21
|
+
) => {
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
if (HMSEventEmitter.listenerCount(eventType) <= 0) {
|
|
24
|
+
addPeerUpdateSubscription();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const subscription = HMSEventEmitter.addListener(eventType, effect, null);
|
|
28
|
+
|
|
29
|
+
return () => {
|
|
30
|
+
subscription.remove();
|
|
31
|
+
|
|
32
|
+
if (HMSEventEmitter.listenerCount(eventType) <= 0) {
|
|
33
|
+
removePeerUpdateSubscription();
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}, deps);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
let peerUpdateSubscription: HMSNativeEventSubscription | null = null;
|
|
40
|
+
|
|
41
|
+
function addPeerUpdateSubscription() {
|
|
42
|
+
if (peerUpdateSubscription !== null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
peerUpdateSubscription = HMSNativeEventListener.addListener(
|
|
47
|
+
HMSConstants.DEFAULT_SDK_ID,
|
|
48
|
+
HMSUpdateListenerActions.ON_PEER_UPDATE,
|
|
49
|
+
(peerData: any) => {
|
|
50
|
+
const data: { peer: any; type: any } = {
|
|
51
|
+
peer: peerData,
|
|
52
|
+
type: null,
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
for (const ordinal of HMSPeerUpdateOrdinals.keys()) {
|
|
56
|
+
if (ordinal in peerData) {
|
|
57
|
+
data.peer.peerID = peerData[ordinal];
|
|
58
|
+
data.type = ordinal;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);
|
|
64
|
+
const type = HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;
|
|
65
|
+
|
|
66
|
+
getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);
|
|
67
|
+
|
|
68
|
+
getLogger()?.verbose('#Listener ON_PEER_LISTENER_CALL', {
|
|
69
|
+
peer,
|
|
70
|
+
type,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
HMSEventEmitter.emit(eventType, { peer, type });
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function removePeerUpdateSubscription() {
|
|
79
|
+
if (peerUpdateSubscription === null) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
peerUpdateSubscription.remove();
|
|
84
|
+
peerUpdateSubscription = null;
|
|
85
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -88,4 +88,18 @@ export type {
|
|
|
88
88
|
export type { HmsViewComponent as HMSView } from './classes/HmsView';
|
|
89
89
|
|
|
90
90
|
import { HMSSDK as HmsManager } from './classes/HMSSDK';
|
|
91
|
+
|
|
92
|
+
// 100ms React Native Native Module
|
|
93
|
+
export { default as HMSManagerModule } from './classes/HMSManagerModule';
|
|
94
|
+
|
|
95
|
+
// 100ms Components
|
|
96
|
+
export * from './components/HMSHLSPlayer';
|
|
97
|
+
|
|
98
|
+
// 100ms Hooks
|
|
99
|
+
export * from './hooks/useHMSPeerUpdates';
|
|
100
|
+
|
|
101
|
+
// 100ms types
|
|
102
|
+
export * from './types';
|
|
103
|
+
export * from './stores/types';
|
|
104
|
+
|
|
91
105
|
export default HmsManager;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { StateCreator } from 'zustand';
|
|
2
|
+
import { HMSHLSPlayerPlaybackState } from '../types';
|
|
3
|
+
import type {
|
|
4
|
+
HMSHLSPlayerPlaybackCue,
|
|
5
|
+
HMSHLSPlayerPlaybackError,
|
|
6
|
+
HMSHLSPlayerPlaybackSlice,
|
|
7
|
+
HMSStore,
|
|
8
|
+
} from './types';
|
|
9
|
+
|
|
10
|
+
export const createHMSHLSPlayerPlaybackSlice: StateCreator<
|
|
11
|
+
HMSStore,
|
|
12
|
+
[],
|
|
13
|
+
[],
|
|
14
|
+
HMSHLSPlayerPlaybackSlice
|
|
15
|
+
> = (set) => ({
|
|
16
|
+
cue: undefined,
|
|
17
|
+
setCue: (cue: HMSHLSPlayerPlaybackCue) => set({ cue }),
|
|
18
|
+
|
|
19
|
+
playbackState: HMSHLSPlayerPlaybackState.UNKNOWN,
|
|
20
|
+
setPlaybackState: (playbackState: HMSHLSPlayerPlaybackState) =>
|
|
21
|
+
set({ playbackState }),
|
|
22
|
+
|
|
23
|
+
error: undefined,
|
|
24
|
+
setPlaybackError: (error: HMSHLSPlayerPlaybackError) => set({ error }),
|
|
25
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { subscribeWithSelector } from 'zustand/middleware';
|
|
3
|
+
import type {
|
|
4
|
+
HMSHLSPlayerStats,
|
|
5
|
+
HMSHLSPlayerStatsError,
|
|
6
|
+
HMSHLSPlayerStatsStore,
|
|
7
|
+
} from './types';
|
|
8
|
+
|
|
9
|
+
export const useHMSHLSPlayerStatsStore = create<HMSHLSPlayerStatsStore>()(
|
|
10
|
+
subscribeWithSelector((set) => ({
|
|
11
|
+
// Handle Stats
|
|
12
|
+
stats: {
|
|
13
|
+
// bandwidth
|
|
14
|
+
bandWidthEstimate: 0,
|
|
15
|
+
totalBytesLoaded: 0,
|
|
16
|
+
|
|
17
|
+
// bufferedDuration
|
|
18
|
+
bufferedDuration: 0,
|
|
19
|
+
|
|
20
|
+
// distanceFromLive
|
|
21
|
+
distanceFromLive: 0,
|
|
22
|
+
|
|
23
|
+
// frameInfo
|
|
24
|
+
droppedFrameCount: 0,
|
|
25
|
+
|
|
26
|
+
// videoInfo
|
|
27
|
+
averageBitrate: 0,
|
|
28
|
+
videoHeight: 0,
|
|
29
|
+
videoWidth: 0,
|
|
30
|
+
},
|
|
31
|
+
changeStats: (stats: HMSHLSPlayerStats) => set({ stats }),
|
|
32
|
+
|
|
33
|
+
// Handle Stats Error
|
|
34
|
+
error: undefined,
|
|
35
|
+
setError: (error: HMSHLSPlayerStatsError) => set({ error }),
|
|
36
|
+
}))
|
|
37
|
+
);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { create } from 'zustand';
|
|
2
|
+
import { subscribeWithSelector } from 'zustand/middleware';
|
|
3
|
+
|
|
4
|
+
import { createHMSHLSPlayerPlaybackSlice } from './hls-player-playback-slice';
|
|
5
|
+
import type { HMSStore } from './types';
|
|
6
|
+
|
|
7
|
+
export const useHMSStore = create<HMSStore>()(
|
|
8
|
+
subscribeWithSelector((...a) => ({
|
|
9
|
+
...createHMSHLSPlayerPlaybackSlice(...a),
|
|
10
|
+
}))
|
|
11
|
+
);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Stores
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
HMSHLSPlayerPlaybackState,
|
|
5
|
+
HMSHLSPlayerPlaybackCueEventData,
|
|
6
|
+
HMSHLSPlayerPlaybackFailureEventData,
|
|
7
|
+
HMSHLSPlayerStatsErrorEventData,
|
|
8
|
+
HMSHLSPlayerStatsUpdateEventData,
|
|
9
|
+
} from '../types';
|
|
10
|
+
|
|
11
|
+
export type HMSStore = HMSHLSPlayerPlaybackSlice;
|
|
12
|
+
export type HMSHLSPlayerStatsStore = HMSHLSPlayerStatsSlice;
|
|
13
|
+
|
|
14
|
+
// HLS Player Playback Slice
|
|
15
|
+
|
|
16
|
+
export interface HMSHLSPlayerPlaybackCue
|
|
17
|
+
extends Omit<HMSHLSPlayerPlaybackCueEventData, 'endDate' | 'startDate'> {
|
|
18
|
+
endDate?: Date;
|
|
19
|
+
startDate: Date;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type HMSHLSPlayerCue = HMSHLSPlayerPlaybackCue | undefined;
|
|
23
|
+
|
|
24
|
+
export type HMSHLSPlayerPlaybackError =
|
|
25
|
+
| HMSHLSPlayerPlaybackFailureEventData['error']
|
|
26
|
+
| undefined;
|
|
27
|
+
|
|
28
|
+
export interface HMSHLSPlayerPlaybackSlice {
|
|
29
|
+
cue: HMSHLSPlayerCue;
|
|
30
|
+
playbackState: HMSHLSPlayerPlaybackState;
|
|
31
|
+
error: HMSHLSPlayerPlaybackError;
|
|
32
|
+
setCue(cue: HMSHLSPlayerPlaybackCue): void;
|
|
33
|
+
setPlaybackState(playbackState: HMSHLSPlayerPlaybackState): void;
|
|
34
|
+
setPlaybackError(error: HMSHLSPlayerPlaybackError): void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// HLS Player Stats Slice
|
|
38
|
+
|
|
39
|
+
export type HMSHLSPlayerStats = HMSHLSPlayerStatsUpdateEventData;
|
|
40
|
+
export type HMSHLSPlayerStatsError =
|
|
41
|
+
| HMSHLSPlayerStatsErrorEventData
|
|
42
|
+
| undefined;
|
|
43
|
+
|
|
44
|
+
export interface HMSHLSPlayerStatsSlice {
|
|
45
|
+
stats: HMSHLSPlayerStats;
|
|
46
|
+
error: HMSHLSPlayerStatsError | undefined;
|
|
47
|
+
changeStats(stats: HMSHLSPlayerStats): void;
|
|
48
|
+
setError(error: HMSHLSPlayerStatsError): void;
|
|
49
|
+
}
|