@100mslive/react-native-hms 1.6.1 → 1.7.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/android/build.gradle +15 -7
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +14 -15
- 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 +10 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +0 -14
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +90 -106
- 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 +4 -4
- package/ios/HMSHLSPlayerManager.m +22 -0
- package/ios/HMSHLSPlayerManager.swift +368 -0
- package/ios/HMSManager.m +1 -2
- package/ios/HMSManager.swift +22 -16
- package/ios/HMSRNSDK.swift +34 -85
- package/lib/commonjs/classes/HMSEncoder.js +12 -4
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSMessage.js +2 -1
- package/lib/commonjs/classes/HMSMessage.js.map +1 -1
- 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 +30 -38
- package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
- package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +36 -33
- package/lib/commonjs/classes/HMSSDK.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/index.js +38 -0
- 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/HMSEncoder.js +12 -4
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSLocalPeer.js.map +1 -1
- package/lib/module/classes/HMSMessage.js +2 -1
- package/lib/module/classes/HMSMessage.js.map +1 -1
- 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 +30 -38
- package/lib/module/classes/HMSPeersCache.js.map +1 -1
- package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
- package/lib/module/classes/HMSRemotePeer.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +36 -33
- package/lib/module/classes/HMSSDK.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/index.js +7 -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/HMSEncoder.d.ts +1 -0
- package/lib/typescript/classes/HMSLocalPeer.d.ts +0 -1
- package/lib/typescript/classes/HMSMessage.d.ts +2 -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/HMSRemotePeer.d.ts +0 -1
- package/lib/typescript/classes/HMSSDK.d.ts +12 -17
- 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/index.d.ts +3 -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 +10 -5
- package/react-native-hms.podspec +1 -0
- package/sdk-versions.json +3 -2
- package/src/classes/HMSEncoder.ts +15 -3
- package/src/classes/HMSLocalPeer.ts +0 -1
- package/src/classes/HMSMessage.ts +3 -1
- package/src/classes/HMSPeer.ts +96 -48
- package/src/classes/HMSPeerUpdate.ts +4 -4
- package/src/classes/HMSPeersCache.ts +53 -40
- package/src/classes/HMSRTMPConfig.ts +2 -2
- package/src/classes/HMSRemotePeer.ts +0 -1
- package/src/classes/HMSSDK.tsx +59 -47
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +235 -0
- package/src/components/HMSHLSPlayer/RCTHMSHLSPlayer.ts +38 -0
- package/src/components/HMSHLSPlayer/hooks.ts +100 -0
- package/src/components/HMSHLSPlayer/index.ts +9 -0
- package/src/index.ts +8 -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/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileChanges/last-build.bin +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/6.9/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- 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/.gradle/vcs-1/gc.properties +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/a/8/a8c9f5ddd88723818e51ae3cf8693d02355a8691 +0 -0
- package/android/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 +0 -0
- package/android/.idea/sonarlint/issuestore/index.pb +0 -7
- package/android/.idea/vcs.xml +0 -6
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { NativeModules } from 'react-native';
|
|
2
|
-
import type { HMSPeer } from './HMSPeer';
|
|
3
2
|
import { HMSEncoder } from './HMSEncoder';
|
|
4
3
|
import { HMSPeerUpdate } from './HMSPeerUpdate';
|
|
5
4
|
import { HMSTrackUpdate } from './HMSTrackUpdate';
|
|
6
5
|
import type { HMSTrack } from './HMSTrack';
|
|
7
6
|
import { HMSTrackType } from './HMSTrackType';
|
|
8
7
|
import { HMSTrackSource } from './HMSTrackSource';
|
|
8
|
+
import type { HMSNetworkQuality } from './HMSNetworkQuality';
|
|
9
|
+
import type { HMSRole } from './HMSRole';
|
|
10
|
+
import type { HMSAudioTrack } from './HMSAudioTrack';
|
|
11
|
+
import type { HMSVideoTrack } from './HMSVideoTrack';
|
|
9
12
|
|
|
10
13
|
const { HMSManager } = NativeModules;
|
|
11
14
|
|
|
@@ -26,9 +29,18 @@ export const clearHmsPeersCache = () => {
|
|
|
26
29
|
hmsPeersCache = undefined;
|
|
27
30
|
};
|
|
28
31
|
|
|
29
|
-
export type HMSPeerCacheProps =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
export type HMSPeerCacheProps = {
|
|
33
|
+
peerID?: string | undefined;
|
|
34
|
+
name?: string | undefined;
|
|
35
|
+
isLocal?: boolean | undefined;
|
|
36
|
+
networkQuality?: HMSNetworkQuality | undefined;
|
|
37
|
+
customerUserID?: string | undefined;
|
|
38
|
+
metadata?: string | undefined;
|
|
39
|
+
role?: HMSRole | undefined;
|
|
40
|
+
audioTrack?: HMSAudioTrack | undefined;
|
|
41
|
+
videoTrack?: HMSVideoTrack | undefined;
|
|
42
|
+
auxiliaryTracks?: HMSTrack[] | undefined;
|
|
43
|
+
};
|
|
32
44
|
|
|
33
45
|
export class HMSPeersCache {
|
|
34
46
|
private _data = new Map<string, HMSPeerCacheProps>();
|
|
@@ -66,12 +78,19 @@ export class HMSPeersCache {
|
|
|
66
78
|
) {
|
|
67
79
|
const peerObj = this._data.get(peerId);
|
|
68
80
|
|
|
81
|
+
if (updateType === HMSPeerUpdate.PEER_JOINED) {
|
|
82
|
+
if (!peerObj) {
|
|
83
|
+
this._data.set(peerId, data);
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
69
88
|
if (updateType === HMSPeerUpdate.PEER_LEFT) {
|
|
70
89
|
this._data.delete(peerId);
|
|
71
90
|
return;
|
|
72
91
|
}
|
|
73
92
|
|
|
74
|
-
let updatedObj =
|
|
93
|
+
let updatedObj = peerObj || {};
|
|
75
94
|
|
|
76
95
|
switch (updateType) {
|
|
77
96
|
case HMSTrackUpdate.TRACK_ADDED: {
|
|
@@ -79,7 +98,8 @@ export class HMSPeersCache {
|
|
|
79
98
|
|
|
80
99
|
if (track.source === HMSTrackSource.REGULAR) {
|
|
81
100
|
if (track.type === HMSTrackType.VIDEO) {
|
|
82
|
-
updatedObj.videoTrack =
|
|
101
|
+
updatedObj.videoTrack = track;
|
|
102
|
+
updatedObj.videoTrack.isDegraded = false;
|
|
83
103
|
} else if (track.type === HMSTrackType.AUDIO) {
|
|
84
104
|
updatedObj.audioTrack = track;
|
|
85
105
|
}
|
|
@@ -102,12 +122,9 @@ export class HMSPeersCache {
|
|
|
102
122
|
updatedObj.audioTrack = undefined;
|
|
103
123
|
}
|
|
104
124
|
} else if (Array.isArray(updatedObj.auxiliaryTracks)) {
|
|
105
|
-
updatedObj =
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
(auxiliaryTrack) => auxiliaryTrack.trackId !== track.trackId
|
|
109
|
-
),
|
|
110
|
-
};
|
|
125
|
+
updatedObj.auxiliaryTracks = updatedObj.auxiliaryTracks.filter(
|
|
126
|
+
(auxiliaryTrack) => auxiliaryTrack.trackId !== track.trackId
|
|
127
|
+
);
|
|
111
128
|
}
|
|
112
129
|
break;
|
|
113
130
|
}
|
|
@@ -117,10 +134,9 @@ export class HMSPeersCache {
|
|
|
117
134
|
|
|
118
135
|
if (track.source === HMSTrackSource.REGULAR) {
|
|
119
136
|
if (track.type === HMSTrackType.VIDEO) {
|
|
120
|
-
updatedObj.videoTrack
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
};
|
|
137
|
+
const oldIsDegraded = updatedObj.videoTrack?.isDegraded || false;
|
|
138
|
+
updatedObj.videoTrack = track;
|
|
139
|
+
updatedObj.videoTrack.isDegraded = oldIsDegraded;
|
|
124
140
|
} else if (track.type === HMSTrackType.AUDIO) {
|
|
125
141
|
updatedObj.audioTrack = track;
|
|
126
142
|
}
|
|
@@ -147,30 +163,26 @@ export class HMSPeersCache {
|
|
|
147
163
|
|
|
148
164
|
if (track.source === HMSTrackSource.REGULAR) {
|
|
149
165
|
if (track.type === HMSTrackType.VIDEO) {
|
|
150
|
-
updatedObj.videoTrack =
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
};
|
|
166
|
+
updatedObj.videoTrack = track;
|
|
167
|
+
updatedObj.videoTrack.isDegraded =
|
|
168
|
+
updateType === HMSTrackUpdate.TRACK_DEGRADED;
|
|
154
169
|
} else if (track.type === HMSTrackType.AUDIO) {
|
|
155
170
|
updatedObj.audioTrack = track;
|
|
156
171
|
}
|
|
157
172
|
} else {
|
|
158
173
|
if (Array.isArray(updatedObj.auxiliaryTracks)) {
|
|
159
|
-
updatedObj =
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
isDegraded: updateType === HMSTrackUpdate.TRACK_DEGRADED,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return auxiliaryTrack;
|
|
174
|
+
updatedObj.auxiliaryTracks = updatedObj.auxiliaryTracks.map(
|
|
175
|
+
(auxiliaryTrack) => {
|
|
176
|
+
if (auxiliaryTrack.trackId === track.trackId) {
|
|
177
|
+
return {
|
|
178
|
+
...auxiliaryTrack,
|
|
179
|
+
isDegraded: updateType === HMSTrackUpdate.TRACK_DEGRADED,
|
|
180
|
+
};
|
|
171
181
|
}
|
|
172
|
-
|
|
173
|
-
|
|
182
|
+
|
|
183
|
+
return auxiliaryTrack;
|
|
184
|
+
}
|
|
185
|
+
);
|
|
174
186
|
} else {
|
|
175
187
|
updatedObj.auxiliaryTracks = [track];
|
|
176
188
|
}
|
|
@@ -187,11 +199,12 @@ export class HMSPeersCache {
|
|
|
187
199
|
);
|
|
188
200
|
break;
|
|
189
201
|
}
|
|
190
|
-
case HMSPeerUpdate.METADATA_CHANGED:
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
202
|
+
case HMSPeerUpdate.METADATA_CHANGED: {
|
|
203
|
+
updatedObj.metadata = data.metadata;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case HMSPeerUpdate.NAME_CHANGED: {
|
|
207
|
+
updatedObj.name = data.name;
|
|
195
208
|
break;
|
|
196
209
|
}
|
|
197
210
|
default: {
|
|
@@ -243,7 +256,7 @@ export function getPeerPropertyFromNative<T extends keyof HMSPeerCacheProps>(
|
|
|
243
256
|
? HMSEncoder.encodeHmsAuxiliaryTracks(data.auxiliaryTracks, id)
|
|
244
257
|
: undefined;
|
|
245
258
|
} else if (property === 'name') {
|
|
246
|
-
value = data?.[property]
|
|
259
|
+
value = data?.[property];
|
|
247
260
|
} else {
|
|
248
261
|
value = data ? data[property] : undefined;
|
|
249
262
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { HMSRtmpVideoResolution } from './HMSRtmpVideoResolution';
|
|
2
2
|
|
|
3
3
|
export class HMSRTMPConfig {
|
|
4
|
-
meetingURL
|
|
4
|
+
meetingURL?: string;
|
|
5
5
|
rtmpURLs?: Array<string>;
|
|
6
6
|
record: boolean;
|
|
7
7
|
resolution?: HMSRtmpVideoResolution;
|
|
8
8
|
|
|
9
9
|
constructor(params: {
|
|
10
|
-
meetingURL
|
|
10
|
+
meetingURL?: string;
|
|
11
11
|
rtmpURLs?: Array<string>;
|
|
12
12
|
record: boolean;
|
|
13
13
|
resolution?: HMSRtmpVideoResolution;
|
package/src/classes/HMSSDK.tsx
CHANGED
|
@@ -314,11 +314,14 @@ export class HMSSDK {
|
|
|
314
314
|
type: type || null,
|
|
315
315
|
id: this.id,
|
|
316
316
|
});
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
317
|
+
const data: { messageId: string | undefined } =
|
|
318
|
+
await HMSManager.sendBroadcastMessage({
|
|
319
|
+
message,
|
|
320
|
+
type: type || null,
|
|
321
|
+
id: this.id,
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
return data;
|
|
322
325
|
};
|
|
323
326
|
|
|
324
327
|
/**
|
|
@@ -340,12 +343,15 @@ export class HMSSDK {
|
|
|
340
343
|
id: this.id,
|
|
341
344
|
type: type || null,
|
|
342
345
|
});
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
346
|
+
const data: { messageId: string | undefined } =
|
|
347
|
+
await HMSManager.sendGroupMessage({
|
|
348
|
+
message,
|
|
349
|
+
roles: HMSHelper.getRoleNames(roles),
|
|
350
|
+
id: this.id,
|
|
351
|
+
type: type || null,
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
return data;
|
|
349
355
|
};
|
|
350
356
|
|
|
351
357
|
/**
|
|
@@ -367,12 +373,15 @@ export class HMSSDK {
|
|
|
367
373
|
id: this.id,
|
|
368
374
|
type: type || null,
|
|
369
375
|
});
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
+
const data: { messageId: string | undefined } =
|
|
377
|
+
await HMSManager.sendDirectMessage({
|
|
378
|
+
message,
|
|
379
|
+
peerId: peer.peerID,
|
|
380
|
+
id: this.id,
|
|
381
|
+
type: type || null,
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
return data;
|
|
376
385
|
};
|
|
377
386
|
|
|
378
387
|
/**
|
|
@@ -993,6 +1002,7 @@ export class HMSSDK {
|
|
|
993
1002
|
};
|
|
994
1003
|
|
|
995
1004
|
/**
|
|
1005
|
+
* Android Only
|
|
996
1006
|
* - This wrapper function used to switch output to device other than the default, currently available only for android.
|
|
997
1007
|
*
|
|
998
1008
|
* checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#switch-audio-focus-to-another-device} for more info
|
|
@@ -1013,6 +1023,19 @@ export class HMSSDK {
|
|
|
1013
1023
|
}
|
|
1014
1024
|
};
|
|
1015
1025
|
|
|
1026
|
+
switchAudioOutputUsingIOSUI = () => {
|
|
1027
|
+
logger?.verbose('#Function switchAudioOutputUsingIOSUI', {
|
|
1028
|
+
id: this.id,
|
|
1029
|
+
});
|
|
1030
|
+
if (Platform.OS !== 'ios') {
|
|
1031
|
+
throw new Error(
|
|
1032
|
+
'#Function `switchAudioOutputUsingIOSUI` is only available on iOS, use `switchAudioOutput` method instead!'
|
|
1033
|
+
);
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
return HMSManager.switchAudioOutputUsingIOSUI({ id: this.id });
|
|
1037
|
+
};
|
|
1038
|
+
|
|
1016
1039
|
/**
|
|
1017
1040
|
* - This wrapper function used to change Audio Mode manually, currently available only for android.
|
|
1018
1041
|
*
|
|
@@ -1058,36 +1081,6 @@ export class HMSSDK {
|
|
|
1058
1081
|
}
|
|
1059
1082
|
};
|
|
1060
1083
|
|
|
1061
|
-
/**
|
|
1062
|
-
* @deprecated Older SessionMetaData APIs has been deprecated in favour of newer Session Store APIs.
|
|
1063
|
-
* You can subscribe to `ON_SESSION_STORE_AVAILABLE` event to get notified when the `HMSSessionStore`
|
|
1064
|
-
* is available and use `set` method on `HMSSessionStore` instance
|
|
1065
|
-
* checkout {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/}
|
|
1066
|
-
*/
|
|
1067
|
-
setSessionMetaData = async (sessionMetaData: string | null) => {
|
|
1068
|
-
logger?.verbose('#Function setSessionMetaData', {
|
|
1069
|
-
id: this.id,
|
|
1070
|
-
sessionMetaData,
|
|
1071
|
-
});
|
|
1072
|
-
return await HMSManager.setSessionMetaData({
|
|
1073
|
-
id: this.id,
|
|
1074
|
-
sessionMetaData,
|
|
1075
|
-
});
|
|
1076
|
-
};
|
|
1077
|
-
|
|
1078
|
-
/**
|
|
1079
|
-
* @deprecated Older SessionMetaData APIs has been deprecated in favour of newer Session Store APIs.
|
|
1080
|
-
* You can subscribe to `ON_SESSION_STORE_AVAILABLE` event to get notified when the `HMSSessionStore`
|
|
1081
|
-
* is available and use `get` or `addKeyChangeListener` method on `HMSSessionStore` instance
|
|
1082
|
-
* checkout {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/}
|
|
1083
|
-
*/
|
|
1084
|
-
getSessionMetaData = async () => {
|
|
1085
|
-
logger?.verbose('#Function getSessionMetaData', {
|
|
1086
|
-
id: this.id,
|
|
1087
|
-
});
|
|
1088
|
-
return await HMSManager.getSessionMetaData({ id: this.id });
|
|
1089
|
-
};
|
|
1090
|
-
|
|
1091
1084
|
getRemoteVideoTrackFromTrackId = async (trackId: string) => {
|
|
1092
1085
|
logger?.verbose('#Function getRemoteVideoTrackFromTrackId', {
|
|
1093
1086
|
id: this.id,
|
|
@@ -1116,6 +1109,25 @@ export class HMSSDK {
|
|
|
1116
1109
|
return HMSEncoder.encodeHmsRemoteAudioTrack(remoteAudioTrackData, this.id);
|
|
1117
1110
|
};
|
|
1118
1111
|
|
|
1112
|
+
getPeerFromPeerId = (peerId: string) => {
|
|
1113
|
+
logger?.verbose('#Function getPeerFromPeerId', {
|
|
1114
|
+
id: this.id,
|
|
1115
|
+
peerId,
|
|
1116
|
+
});
|
|
1117
|
+
// Getting Peer Cache
|
|
1118
|
+
const peersCache = getHmsPeersCache();
|
|
1119
|
+
|
|
1120
|
+
// If Peer Cache doesn't exist, return `undefined` as we don't have Peer
|
|
1121
|
+
if (!peersCache) return;
|
|
1122
|
+
|
|
1123
|
+
const peerRole = peersCache.getProperty(peerId, 'role');
|
|
1124
|
+
|
|
1125
|
+
// If Peer doesn't have valid Role, return `undefined` as we don't have Peer
|
|
1126
|
+
if (!peerRole) return;
|
|
1127
|
+
|
|
1128
|
+
return HMSEncoder.encodeHmsPeer({ peerID: peerId });
|
|
1129
|
+
};
|
|
1130
|
+
|
|
1119
1131
|
/**
|
|
1120
1132
|
* - This is a prototype event listener that takes action and listens for updates related to that particular action
|
|
1121
1133
|
*
|
|
@@ -0,0 +1,235 @@
|
|
|
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
|
+
HmsHlsPlaybackEventHandler,
|
|
14
|
+
HmsHlsStatsEventHandler,
|
|
15
|
+
RCTHMSHLSPlayer,
|
|
16
|
+
RCTHMSHLSPlayerRef,
|
|
17
|
+
RCTHMSHLSPlayerViewManagerConfig,
|
|
18
|
+
} from './RCTHMSHLSPlayer';
|
|
19
|
+
import {
|
|
20
|
+
HMSHLSPlayerPlaybackEventTypes,
|
|
21
|
+
HMSHLSPlayerStatsEventTypes,
|
|
22
|
+
} from '../../types';
|
|
23
|
+
import type { HMSHLSPlayerPlaybackCueEventData } from '../../types';
|
|
24
|
+
import { HMSEncoder } from '../../classes/HMSEncoder';
|
|
25
|
+
import type { HMSHLSPlayerPlaybackCue } from '../../stores/types';
|
|
26
|
+
|
|
27
|
+
export interface HMSHLSPlayerProps {
|
|
28
|
+
url?: string;
|
|
29
|
+
style?: StyleProp<ViewStyle>;
|
|
30
|
+
containerStyle?: StyleProp<ViewStyle>;
|
|
31
|
+
aspectRatio?: number;
|
|
32
|
+
enableStats?: boolean;
|
|
33
|
+
enableControls?: boolean;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface HMSHLSPlayerRefProperties {
|
|
37
|
+
play: (url?: string) => void;
|
|
38
|
+
stop: () => void;
|
|
39
|
+
pause: () => void;
|
|
40
|
+
resume: () => void;
|
|
41
|
+
seekForward: (seconds: number) => void;
|
|
42
|
+
seekBackward: (seconds: number) => void;
|
|
43
|
+
seekToLivePosition: () => void;
|
|
44
|
+
setVolume: (level: number) => void;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const _HMSHLSPlayer: React.ForwardRefRenderFunction<
|
|
48
|
+
HMSHLSPlayerRefProperties,
|
|
49
|
+
HMSHLSPlayerProps
|
|
50
|
+
> = (
|
|
51
|
+
{
|
|
52
|
+
url = '',
|
|
53
|
+
style,
|
|
54
|
+
containerStyle,
|
|
55
|
+
aspectRatio = 9 / 16,
|
|
56
|
+
enableStats,
|
|
57
|
+
enableControls = false,
|
|
58
|
+
},
|
|
59
|
+
ref
|
|
60
|
+
) => {
|
|
61
|
+
const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);
|
|
62
|
+
|
|
63
|
+
useImperativeHandle(
|
|
64
|
+
ref,
|
|
65
|
+
() => ({
|
|
66
|
+
play: (url?: string) => {
|
|
67
|
+
if (hmsHlsPlayerRef.current) {
|
|
68
|
+
UIManager.dispatchViewManagerCommand(
|
|
69
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
70
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.play,
|
|
71
|
+
url ? [url] : ['']
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
stop: () => {
|
|
76
|
+
if (hmsHlsPlayerRef.current) {
|
|
77
|
+
UIManager.dispatchViewManagerCommand(
|
|
78
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
79
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.stop,
|
|
80
|
+
undefined
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
pause: () => {
|
|
85
|
+
if (hmsHlsPlayerRef.current) {
|
|
86
|
+
UIManager.dispatchViewManagerCommand(
|
|
87
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
88
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.pause,
|
|
89
|
+
undefined
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
resume: () => {
|
|
94
|
+
if (hmsHlsPlayerRef.current) {
|
|
95
|
+
UIManager.dispatchViewManagerCommand(
|
|
96
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
97
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.resume,
|
|
98
|
+
undefined
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
seekForward: (seconds: number) => {
|
|
103
|
+
if (typeof seconds !== 'number') {
|
|
104
|
+
throw new Error(
|
|
105
|
+
seconds
|
|
106
|
+
? 'seconds must be a `number` type'
|
|
107
|
+
: 'seconds was not provided'
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (hmsHlsPlayerRef.current) {
|
|
112
|
+
UIManager.dispatchViewManagerCommand(
|
|
113
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
114
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,
|
|
115
|
+
[seconds]
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
seekBackward: (seconds: number) => {
|
|
120
|
+
if (typeof seconds !== 'number') {
|
|
121
|
+
throw new Error(
|
|
122
|
+
seconds
|
|
123
|
+
? 'seconds must be a `number` type'
|
|
124
|
+
: 'seconds was not provided'
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (hmsHlsPlayerRef.current) {
|
|
129
|
+
UIManager.dispatchViewManagerCommand(
|
|
130
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
131
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,
|
|
132
|
+
[seconds]
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
seekToLivePosition: () => {
|
|
137
|
+
if (hmsHlsPlayerRef.current) {
|
|
138
|
+
UIManager.dispatchViewManagerCommand(
|
|
139
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
140
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,
|
|
141
|
+
undefined
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
setVolume: (level: number) => {
|
|
146
|
+
if (typeof level !== 'number') {
|
|
147
|
+
throw new Error(
|
|
148
|
+
level ? 'level must be a `number` type' : 'level was not provided'
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (hmsHlsPlayerRef.current) {
|
|
153
|
+
UIManager.dispatchViewManagerCommand(
|
|
154
|
+
findNodeHandle(hmsHlsPlayerRef.current),
|
|
155
|
+
RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,
|
|
156
|
+
[level]
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
}),
|
|
161
|
+
[]
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
// Handle HLS Playback events
|
|
165
|
+
const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({
|
|
166
|
+
nativeEvent,
|
|
167
|
+
}) => {
|
|
168
|
+
const { event, data } = nativeEvent;
|
|
169
|
+
|
|
170
|
+
if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {
|
|
171
|
+
const transformedData = HMSEncoder.transformHMSHLSCueEventData<
|
|
172
|
+
HMSHLSPlayerPlaybackCueEventData,
|
|
173
|
+
HMSHLSPlayerPlaybackCue
|
|
174
|
+
>(data);
|
|
175
|
+
setHMSHLSPlayerCue(transformedData);
|
|
176
|
+
} else if (
|
|
177
|
+
event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT
|
|
178
|
+
) {
|
|
179
|
+
setHMSHLSPlayerPlaybackError(data.error);
|
|
180
|
+
} else {
|
|
181
|
+
setHMSHLSPlayerPlaybackState(data.state);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
// Handle HLS Stats events
|
|
186
|
+
const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {
|
|
187
|
+
const { event, data } = nativeEvent;
|
|
188
|
+
|
|
189
|
+
if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {
|
|
190
|
+
setHMSHLSPlayerStatsError(data);
|
|
191
|
+
} else {
|
|
192
|
+
setHMSHLSPlayerStats(data);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
return (
|
|
197
|
+
<View style={[styles.container, containerStyle]}>
|
|
198
|
+
<View style={[styles.playerWrapper, style]}>
|
|
199
|
+
<RCTHMSHLSPlayer
|
|
200
|
+
ref={hmsHlsPlayerRef}
|
|
201
|
+
url={url}
|
|
202
|
+
style={[styles.player, { aspectRatio }]}
|
|
203
|
+
enableStats={enableStats}
|
|
204
|
+
enableControls={enableControls}
|
|
205
|
+
onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}
|
|
206
|
+
onHmsHlsStatsEvent={handleHLSStatsEvent}
|
|
207
|
+
/>
|
|
208
|
+
</View>
|
|
209
|
+
</View>
|
|
210
|
+
);
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
export const HMSHLSPlayer = React.forwardRef<
|
|
214
|
+
HMSHLSPlayerRefProperties,
|
|
215
|
+
HMSHLSPlayerProps
|
|
216
|
+
>(_HMSHLSPlayer);
|
|
217
|
+
|
|
218
|
+
const styles = StyleSheet.create({
|
|
219
|
+
container: {
|
|
220
|
+
flex: 1,
|
|
221
|
+
alignItems: 'center',
|
|
222
|
+
justifyContent: 'center',
|
|
223
|
+
},
|
|
224
|
+
playerWrapper: {
|
|
225
|
+
backgroundColor: '#000000',
|
|
226
|
+
alignItems: 'center',
|
|
227
|
+
justifyContent: 'center',
|
|
228
|
+
},
|
|
229
|
+
player: {
|
|
230
|
+
width: '100%',
|
|
231
|
+
maxHeight: '100%',
|
|
232
|
+
maxWidth: '100%',
|
|
233
|
+
aspectRatio: 9 / 16,
|
|
234
|
+
},
|
|
235
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {
|
|
2
|
+
requireNativeComponent,
|
|
3
|
+
StyleProp,
|
|
4
|
+
NativeSyntheticEvent,
|
|
5
|
+
ViewStyle,
|
|
6
|
+
UIManager,
|
|
7
|
+
NativeMethods,
|
|
8
|
+
} from 'react-native';
|
|
9
|
+
import type {
|
|
10
|
+
HMSHLSPlayerPlaybackEvent,
|
|
11
|
+
HMSHLSPlayerStatsEvent,
|
|
12
|
+
} from '../../types';
|
|
13
|
+
|
|
14
|
+
export type HmsHlsPlaybackEventHandler = (
|
|
15
|
+
event: NativeSyntheticEvent<HMSHLSPlayerPlaybackEvent>
|
|
16
|
+
) => void;
|
|
17
|
+
|
|
18
|
+
export type HmsHlsStatsEventHandler = (
|
|
19
|
+
event: NativeSyntheticEvent<HMSHLSPlayerStatsEvent>
|
|
20
|
+
) => void;
|
|
21
|
+
|
|
22
|
+
export type RCTHMSHLSPlayerProps = {
|
|
23
|
+
url?: string;
|
|
24
|
+
style?: StyleProp<ViewStyle>;
|
|
25
|
+
enableStats?: boolean;
|
|
26
|
+
enableControls?: boolean;
|
|
27
|
+
onHmsHlsPlaybackEvent?: HmsHlsPlaybackEventHandler;
|
|
28
|
+
onHmsHlsStatsEvent?: HmsHlsStatsEventHandler;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const RCTHMSHLSPlayer =
|
|
32
|
+
requireNativeComponent<RCTHMSHLSPlayerProps>('HMSHLSPlayer');
|
|
33
|
+
|
|
34
|
+
export type RCTHMSHLSPlayerRef = React.Component<RCTHMSHLSPlayerProps> &
|
|
35
|
+
Readonly<NativeMethods>;
|
|
36
|
+
|
|
37
|
+
export const RCTHMSHLSPlayerViewManagerConfig =
|
|
38
|
+
UIManager.getViewManagerConfig('HMSHLSPlayer');
|