@100mslive/react-native-hms 1.11.0 → 1.12.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 +12 -11
- package/android/build.gradle +27 -42
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +2 -2
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +1 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +9 -9
- package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +2 -2
- package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +1 -1
- package/ios/HMSRNSDK.swift +32 -7
- package/lib/commonjs/classes/HMSNativeEventEmitter.js +1 -3
- package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerType.js +1 -1
- package/lib/commonjs/classes/HMSPeerType.js.map +1 -1
- package/lib/commonjs/classes/HMSSessionStore.js +1 -3
- package/lib/commonjs/classes/HMSSessionStore.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +1 -2
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +1 -2
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/hooks/useHMSPeerUpdates.js +1 -2
- package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
- package/lib/module/classes/HMSNativeEventEmitter.js +1 -3
- package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -1
- package/lib/module/classes/HMSPeerType.js +1 -1
- package/lib/module/classes/HMSPeerType.js.map +1 -1
- package/lib/module/classes/HMSSessionStore.js +1 -3
- package/lib/module/classes/HMSSessionStore.js.map +1 -1
- package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +1 -0
- package/package.json +12 -6
- package/react-native-hms.podspec +12 -2
- package/sdk-versions.json +3 -3
- package/src/classes/HMSNativeEventEmitter.ts +1 -7
- package/src/classes/HMSSessionStore.ts +1 -9
- package/android/local.properties +0 -1
- 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/README.md
CHANGED
|
@@ -47,27 +47,28 @@ Troubleshooting Guide for resolving issues in running the Example app is [availa
|
|
|
47
47
|
|
|
48
48
|
## ☝️ Minimum Configuration
|
|
49
49
|
|
|
50
|
-
- Support for React Native 0.
|
|
51
|
-
- Support for Java
|
|
50
|
+
- Support for React Native 0.73.0 or above
|
|
51
|
+
- Support for Java 17 or above
|
|
52
52
|
- Support for Android API level 24 or above
|
|
53
|
-
- Xcode
|
|
54
|
-
- Support for iOS
|
|
53
|
+
- Xcode 14 or above
|
|
54
|
+
- Support for iOS 16 or above
|
|
55
|
+
- Node.js 22 or above
|
|
55
56
|
|
|
56
57
|
## 🤝 Recommended Configuration
|
|
57
58
|
|
|
58
|
-
- React Native 0.
|
|
59
|
-
- Java
|
|
60
|
-
- Android API level
|
|
61
|
-
- Xcode
|
|
59
|
+
- React Native 0.77.3 or above
|
|
60
|
+
- Java 17 or above
|
|
61
|
+
- Android API level 35 or above
|
|
62
|
+
- Xcode 15 or above
|
|
62
63
|
- iOS 16 or above
|
|
64
|
+
- Node.js 22 or above
|
|
63
65
|
|
|
64
66
|
## 📱 Supported Devices
|
|
65
67
|
|
|
66
|
-
- The Android SDK supports Android API level
|
|
68
|
+
- The Android SDK supports Android API level 24 (Android 7.0) and higher. It is built for arm64-v8a and x86_64 architectures (64-bit only).
|
|
67
69
|
Devices running Android OS 11 or above is recommended.
|
|
68
70
|
|
|
69
|
-
- iPhone & iPads with iOS version
|
|
70
|
-
Devices running iOS 16 or above is recommended.
|
|
71
|
+
- iPhone & iPads with iOS version 16 or above are supported.
|
|
71
72
|
|
|
72
73
|
## Installation
|
|
73
74
|
|
package/android/build.gradle
CHANGED
|
@@ -3,67 +3,52 @@ import groovy.json.JsonSlurper
|
|
|
3
3
|
def sdkVersions = new JsonSlurper().parse file("../sdk-versions.json")
|
|
4
4
|
|
|
5
5
|
buildscript {
|
|
6
|
-
|
|
7
|
-
ext.safeExtGet = { prop, fallback ->
|
|
8
|
-
rootProject.ext.has(prop) ? rootProject.ext.get (prop) : fallback
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
ext.getKotlinVersion = {
|
|
12
|
-
if (ext.has("kotlinVersion")) {
|
|
13
|
-
ext.kotlinVersion()
|
|
14
|
-
} else {
|
|
15
|
-
ext.safeExtGet("kotlinVersion", "1.7.20")
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
ext.getKotlinGradlePluginVersion = {
|
|
19
|
-
if (ext.has("kotlinGradlePluginVersion")) {
|
|
20
|
-
ext.kotlinGradlePluginVersion()
|
|
21
|
-
} else {
|
|
22
|
-
ext.safeExtGet("kotlinGradlePluginVersion", "1.8.0")
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (project == rootProject) {
|
|
26
|
-
repositories {
|
|
27
|
-
google()
|
|
28
|
-
mavenCentral()
|
|
29
|
-
gradlePluginPortal( )
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
dependencies {
|
|
33
|
-
classpath 'com.android.tools.build:gradle:3.5.3'
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
6
|
repositories {
|
|
7
|
+
google()
|
|
37
8
|
mavenCentral()
|
|
38
9
|
}
|
|
39
10
|
dependencies {
|
|
40
|
-
classpath
|
|
11
|
+
classpath("com.android.tools.build:gradle:8.5.0")
|
|
12
|
+
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21")
|
|
41
13
|
}
|
|
42
14
|
}
|
|
43
15
|
|
|
44
16
|
apply plugin: 'com.android.library'
|
|
45
17
|
apply plugin: 'kotlin-android'
|
|
46
18
|
|
|
19
|
+
// Define helper functions for Kotlin version management (RN 0.77.3 requires 2.0.21)
|
|
20
|
+
def getKotlinVersion() {
|
|
21
|
+
return rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : "2.0.21"
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
def getKotlinGradlePluginVersion() {
|
|
25
|
+
return rootProject.ext.has("kotlinGradlePluginVersion") ? rootProject.ext.get("kotlinGradlePluginVersion") : "2.0.21"
|
|
26
|
+
}
|
|
27
|
+
|
|
47
28
|
def safeExtGet(prop, fallback) {
|
|
48
29
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
49
30
|
}
|
|
50
31
|
|
|
51
32
|
android {
|
|
52
33
|
namespace 'com.reactnativehmssdk'
|
|
53
|
-
|
|
34
|
+
buildToolsVersion = "35.0.0"
|
|
35
|
+
compileSdkVersion safeExtGet('Hmssdk_compileSdkVersion', 35)
|
|
54
36
|
defaultConfig {
|
|
55
|
-
minSdkVersion safeExtGet('Hmssdk_minSdkVersion',
|
|
56
|
-
targetSdkVersion safeExtGet('Hmssdk_targetSdkVersion',
|
|
37
|
+
minSdkVersion safeExtGet('Hmssdk_minSdkVersion', 24)
|
|
38
|
+
targetSdkVersion safeExtGet('Hmssdk_targetSdkVersion', 35)
|
|
57
39
|
versionCode 1
|
|
58
40
|
versionName "1.0"
|
|
59
41
|
}
|
|
60
42
|
|
|
61
|
-
|
|
43
|
+
lint {
|
|
62
44
|
disable 'GradleCompatible'
|
|
63
45
|
}
|
|
64
46
|
compileOptions {
|
|
65
|
-
sourceCompatibility JavaVersion.
|
|
66
|
-
targetCompatibility JavaVersion.
|
|
47
|
+
sourceCompatibility JavaVersion.VERSION_17
|
|
48
|
+
targetCompatibility JavaVersion.VERSION_17
|
|
49
|
+
}
|
|
50
|
+
kotlinOptions {
|
|
51
|
+
jvmTarget = "17"
|
|
67
52
|
}
|
|
68
53
|
}
|
|
69
54
|
|
|
@@ -82,12 +67,12 @@ repositories {
|
|
|
82
67
|
dependencies {
|
|
83
68
|
//noinspection GradleDynamicVersion
|
|
84
69
|
implementation "com.facebook.react:react-native:+"
|
|
85
|
-
implementation "com.google.code.gson:gson:2.
|
|
70
|
+
implementation "com.google.code.gson:gson:2.11.0"
|
|
86
71
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:${getKotlinVersion()}"
|
|
87
|
-
implementation "androidx.core:core-ktx:1.
|
|
88
|
-
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.
|
|
89
|
-
implementation "androidx.constraintlayout:constraintlayout:2.1.
|
|
90
|
-
implementation "androidx.appcompat:appcompat:1.
|
|
72
|
+
implementation "androidx.core:core-ktx:1.13.1"
|
|
73
|
+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1"
|
|
74
|
+
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
|
|
75
|
+
implementation "androidx.appcompat:appcompat:1.7.0"
|
|
91
76
|
|
|
92
77
|
implementation "live.100ms:android-sdk:${sdkVersions["android"]}"
|
|
93
78
|
implementation "live.100ms:video-view:${sdkVersions["android"]}"
|
|
@@ -21,7 +21,7 @@ class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
|
|
|
21
21
|
view.cleanup()
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
override fun getExportedCustomDirectEventTypeConstants():
|
|
24
|
+
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
|
|
25
25
|
super.getExportedCustomDirectEventTypeConstants()
|
|
26
26
|
|
|
27
27
|
return MapBuilder.of(
|
|
@@ -96,7 +96,7 @@ class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
override fun getCommandsMap():
|
|
99
|
+
override fun getCommandsMap(): Map<String, Int>? =
|
|
100
100
|
MapBuilder
|
|
101
101
|
.builder<String, Int>()
|
|
102
102
|
.put("play", 10)
|
|
@@ -11,6 +11,7 @@ import android.webkit.URLUtil
|
|
|
11
11
|
import androidx.annotation.RequiresApi
|
|
12
12
|
import com.facebook.react.bridge.*
|
|
13
13
|
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
14
|
+
import hms.webrtc.SurfaceViewRenderer
|
|
14
15
|
import live.hms.video.audio.HMSAudioManager
|
|
15
16
|
import live.hms.video.error.HMSException
|
|
16
17
|
import live.hms.video.events.AgentType
|
|
@@ -27,7 +28,6 @@ import live.hms.video.sdk.models.role.HMSRole
|
|
|
27
28
|
import live.hms.video.services.LogAlarmManager
|
|
28
29
|
import live.hms.video.utils.HMSLogger
|
|
29
30
|
import live.hms.video.utils.HmsUtilities
|
|
30
|
-
import org.webrtc.SurfaceViewRenderer
|
|
31
31
|
import java.io.ByteArrayOutputStream
|
|
32
32
|
import java.util.*
|
|
33
33
|
import kotlin.collections.ArrayList
|
|
@@ -96,7 +96,7 @@ class HMSManager(
|
|
|
96
96
|
reactAppContext = reactApplicationContext
|
|
97
97
|
|
|
98
98
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
99
|
-
currentActivity?.let {
|
|
99
|
+
reactApplicationContext?.currentActivity?.let {
|
|
100
100
|
pipReceiver?.register(it)
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -438,7 +438,7 @@ class HMSManager(
|
|
|
438
438
|
data: ReadableMap,
|
|
439
439
|
callback: Promise?,
|
|
440
440
|
) {
|
|
441
|
-
currentActivity?.application?.registerActivityLifecycleCallbacks(this)
|
|
441
|
+
reactApplicationContext?.currentActivity?.application?.registerActivityLifecycleCallbacks(this)
|
|
442
442
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
443
443
|
|
|
444
444
|
hms?.startScreenshare(callback)
|
|
@@ -461,7 +461,7 @@ class HMSManager(
|
|
|
461
461
|
) {
|
|
462
462
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
463
463
|
|
|
464
|
-
currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
|
|
464
|
+
reactApplicationContext?.currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
|
|
465
465
|
hms?.stopScreenshare(callback)
|
|
466
466
|
}
|
|
467
467
|
|
|
@@ -470,7 +470,7 @@ class HMSManager(
|
|
|
470
470
|
data: ReadableMap,
|
|
471
471
|
callback: Promise?,
|
|
472
472
|
) {
|
|
473
|
-
currentActivity?.application?.registerActivityLifecycleCallbacks(this)
|
|
473
|
+
reactApplicationContext?.currentActivity?.application?.registerActivityLifecycleCallbacks(this)
|
|
474
474
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
475
475
|
|
|
476
476
|
hms?.startAudioshare(data, callback)
|
|
@@ -493,7 +493,7 @@ class HMSManager(
|
|
|
493
493
|
) {
|
|
494
494
|
val hms = HMSHelper.getHms(data, hmsCollection)
|
|
495
495
|
|
|
496
|
-
currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
|
|
496
|
+
reactApplicationContext?.currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
|
|
497
497
|
hms?.stopAudioshare(callback)
|
|
498
498
|
}
|
|
499
499
|
|
|
@@ -784,7 +784,7 @@ class HMSManager(
|
|
|
784
784
|
return
|
|
785
785
|
}
|
|
786
786
|
|
|
787
|
-
val activity = currentActivity
|
|
787
|
+
val activity = reactApplicationContext?.currentActivity
|
|
788
788
|
|
|
789
789
|
if (activity !== null) {
|
|
790
790
|
val hmssdk = getHmsInstance()[PipActionReceiver.sdkIdForPIP!!]?.hmsSDK
|
|
@@ -1085,7 +1085,7 @@ class HMSManager(
|
|
|
1085
1085
|
throw Throwable(message = "PIP Mode is not supported!")
|
|
1086
1086
|
}
|
|
1087
1087
|
|
|
1088
|
-
val activity = currentActivity ?: return false
|
|
1088
|
+
val activity = reactApplicationContext?.currentActivity ?: return false
|
|
1089
1089
|
val pipParamConfig = readableMapToPipParamConfig(data) ?: return false
|
|
1090
1090
|
val pipParams = buildPipParams(pipParamConfig) ?: return false
|
|
1091
1091
|
|
|
@@ -1122,7 +1122,7 @@ class HMSManager(
|
|
|
1122
1122
|
throw Throwable(message = "PIP Mode is not supported!")
|
|
1123
1123
|
}
|
|
1124
1124
|
|
|
1125
|
-
val activity = currentActivity ?: return false
|
|
1125
|
+
val activity = reactApplicationContext?.currentActivity ?: return false
|
|
1126
1126
|
val pipParamConfig = readableMapToPipParamConfig(data) ?: return false
|
|
1127
1127
|
val pipParams = buildPipParams(pipParamConfig) ?: return false
|
|
1128
1128
|
|
|
@@ -1713,7 +1713,7 @@ class HMSManager(
|
|
|
1713
1713
|
hmsCollection[key]?.leave(null)
|
|
1714
1714
|
}
|
|
1715
1715
|
}
|
|
1716
|
-
currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
|
|
1716
|
+
reactApplicationContext?.currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
|
|
1717
1717
|
hmsCollection = mutableMapOf()
|
|
1718
1718
|
// unregistering pip actions on activity destroy.
|
|
1719
1719
|
if (pipReceiver !== null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
@@ -21,7 +21,7 @@ class HMSSDKViewManager : SimpleViewManager<HMSView>() {
|
|
|
21
21
|
return HMSView(reactContext)
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
override fun getExportedCustomBubblingEventTypeConstants():
|
|
24
|
+
override fun getExportedCustomBubblingEventTypeConstants(): Map<String, Any>? =
|
|
25
25
|
MapBuilder
|
|
26
26
|
.builder<String, Any>()
|
|
27
27
|
.put(
|
|
@@ -29,7 +29,7 @@ class HMSSDKViewManager : SimpleViewManager<HMSView>() {
|
|
|
29
29
|
MapBuilder.of("phasedRegistrationNames", MapBuilder.of("bubbled", "onChange")),
|
|
30
30
|
).build()
|
|
31
31
|
|
|
32
|
-
override fun getExportedCustomDirectEventTypeConstants():
|
|
32
|
+
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? =
|
|
33
33
|
MapBuilder.of(
|
|
34
34
|
"captureFrame",
|
|
35
35
|
MapBuilder.of("registrationName", "onDataReturned"),
|
|
@@ -12,11 +12,11 @@ import com.facebook.react.bridge.ReactContext
|
|
|
12
12
|
import com.facebook.react.bridge.ReadableArray
|
|
13
13
|
import com.facebook.react.bridge.WritableMap
|
|
14
14
|
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
15
|
+
import hms.webrtc.RendererCommon
|
|
15
16
|
import live.hms.video.media.tracks.HMSVideoTrack
|
|
16
17
|
import live.hms.video.utils.HmsUtilities
|
|
17
18
|
import live.hms.videoview.HMSVideoView
|
|
18
19
|
import live.hms.videoview.VideoViewStateChangeListener
|
|
19
|
-
import org.webrtc.RendererCommon
|
|
20
20
|
|
|
21
21
|
@SuppressLint("ViewConstructor")
|
|
22
22
|
class HMSView(
|
package/ios/HMSRNSDK.swift
CHANGED
|
@@ -2343,14 +2343,39 @@ class HMSRNSDK: NSObject, HMSUpdateListener, HMSPreviewListener {
|
|
|
2343
2343
|
reject?("6004", errorMessage, nil)
|
|
2344
2344
|
return
|
|
2345
2345
|
}
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2346
|
+
|
|
2347
|
+
// Check if it's a remote URL
|
|
2348
|
+
if let uriString = imageSource.value(forKey: "uri") as? String,
|
|
2349
|
+
(uriString.hasPrefix("http://") || uriString.hasPrefix("https://")),
|
|
2350
|
+
let url = URL(string: uriString) {
|
|
2351
|
+
// Download remote image
|
|
2352
|
+
URLSession.shared.dataTask(with: url) { data, response, error in
|
|
2353
|
+
DispatchQueue.main.async {
|
|
2354
|
+
if let error = error {
|
|
2355
|
+
let errorMessage = "\(#function) Failed to download image: \(error.localizedDescription)"
|
|
2356
|
+
reject?("6004", errorMessage, nil)
|
|
2357
|
+
return
|
|
2358
|
+
}
|
|
2359
|
+
guard let data = data, let image = UIImage(data: data) else {
|
|
2360
|
+
let errorMessage = "\(#function) Unable to create `UIImage` from downloaded data!"
|
|
2361
|
+
reject?("6004", errorMessage, nil)
|
|
2362
|
+
return
|
|
2363
|
+
}
|
|
2364
|
+
virtualBackgroundPlugin.backgroundImage = image
|
|
2365
|
+
resolve?(true)
|
|
2366
|
+
}
|
|
2367
|
+
}.resume()
|
|
2368
|
+
} else {
|
|
2369
|
+
// Use RCTConvert for local files and bundled resources
|
|
2370
|
+
DispatchQueue.main.async {
|
|
2371
|
+
guard let image = RCTConvert.uiImage(imageSource) else {
|
|
2372
|
+
let errorMessage = "\(#function) Unable to create `UIImage` from given background `source` object!"
|
|
2373
|
+
reject?("6004", errorMessage, nil)
|
|
2374
|
+
return
|
|
2375
|
+
}
|
|
2376
|
+
virtualBackgroundPlugin.backgroundImage = image
|
|
2377
|
+
resolve?(true)
|
|
2351
2378
|
}
|
|
2352
|
-
virtualBackgroundPlugin.backgroundImage = image
|
|
2353
|
-
resolve?(true)
|
|
2354
2379
|
}
|
|
2355
2380
|
default:
|
|
2356
2381
|
let errorMessage = "\(#function) Unknown background `type` passed!"
|
|
@@ -52,11 +52,9 @@ class HMSNativeEventEmitter {
|
|
|
52
52
|
let subscription = this._nativeEventEmitter.addListener(eventType, listener);
|
|
53
53
|
return {
|
|
54
54
|
remove: () => {
|
|
55
|
-
if (subscription
|
|
55
|
+
if (subscription) {
|
|
56
56
|
subscription.remove();
|
|
57
57
|
subscription = null;
|
|
58
|
-
} else {
|
|
59
|
-
this._nativeEventEmitter.removeListener(eventType, listener);
|
|
60
58
|
}
|
|
61
59
|
|
|
62
60
|
// disable `eventType` on `HMSSDK`, if all listeners has been removed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_HMSLogger","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSNativeEventEmitter","constructor","nativeModule","_nativeModule","_nativeEventEmitter","NativeEventEmitter","listenerCount","eventType","listeners","count","length","logger","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_HMSLogger","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSNativeEventEmitter","constructor","nativeModule","_nativeModule","_nativeEventEmitter","NativeEventEmitter","listenerCount","eventType","listeners","count","length","logger","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","disableHMSEventType","removeAllListeners","enableEvent","disableEvent","exports"],"sources":["HMSNativeEventEmitter.ts"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport type { EventSubscription } from 'react-native';\nimport { logger } from './HMSLogger';\n\nexport type HMSEventSubscription = {\n remove(): void;\n};\n\nexport class HMSNativeEventEmitter {\n private _nativeEventEmitter: NativeEventEmitter;\n private _nativeModule: any;\n\n constructor(nativeModule: any) {\n this._nativeModule = nativeModule;\n this._nativeEventEmitter = new NativeEventEmitter(nativeModule);\n }\n\n listenerCount(eventType: string): number {\n // For RN version < v0.64, listenerCount method is not available\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n if (typeof this._nativeEventEmitter.listeners === 'function') {\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n const count = this._nativeEventEmitter.listeners(eventType).length;\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n // For RN version >= v0.64\n const count = this._nativeEventEmitter.listenerCount(eventType);\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n addListener(\n id: string,\n eventType: string,\n listener: (...args: any[]) => any\n ): HMSEventSubscription {\n logger?.verbose('#Function HMSNativeEventEmitter.addListener', {\n id,\n eventType,\n listener,\n });\n\n // enable `eventType` on `HMSSDK`, if no listeners were added before\n // if some listeners were added before, then `eventType` on `HMSSDK` should already be enabled\n if (this.listenerCount(eventType) <= 0) {\n this.enableHMSEventType(id, eventType);\n }\n\n let subscription: EventSubscription | null =\n this._nativeEventEmitter.addListener(eventType, listener);\n\n return {\n remove: () => {\n if (subscription) {\n subscription.remove();\n subscription = null;\n }\n\n // disable `eventType` on `HMSSDK`, if all listeners has been removed\n if (this.listenerCount(eventType) <= 0) {\n this.disableHMSEventType(id, eventType);\n }\n },\n };\n }\n\n removeAllListeners(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.removeAllListeners', {\n id,\n eventType,\n });\n\n // disable `eventType` on `HMSSDK`\n this.disableHMSEventType(id, eventType);\n\n return this._nativeEventEmitter.removeAllListeners(eventType);\n }\n\n private enableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.enableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.enableEvent({ id, eventType });\n }\n\n private disableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.disableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.disableEvent({ id, eventType });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,6 +19,6 @@ let HMSPeerType = exports.HMSPeerType = /*#__PURE__*/function (HMSPeerType) {
|
|
|
19
19
|
HMSPeerType["SIP"] = "SIP";
|
|
20
20
|
HMSPeerType["REGULAR"] = "REGULAR";
|
|
21
21
|
return HMSPeerType;
|
|
22
|
-
}({});
|
|
22
|
+
}({});
|
|
23
23
|
const HMSPeerTypeOrdinals = exports.HMSPeerTypeOrdinals = new Map([['0', HMSPeerType.SIP], ['1', HMSPeerType.REGULAR]]);
|
|
24
24
|
//# sourceMappingURL=HMSPeerType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HMSPeerType","exports","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,IAWYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA
|
|
1
|
+
{"version":3,"names":["HMSPeerType","exports","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,IAWYA,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKhB,MAAME,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,GAAG,IAAIC,GAAG,CAAC,CACzC,CAAC,GAAG,EAAEH,WAAW,CAACI,GAAG,CAAC,EACtB,CAAC,GAAG,EAAEJ,WAAW,CAACK,OAAO,CAAC,CAC3B,CAAC","ignoreList":[]}
|
|
@@ -146,10 +146,8 @@ class HMSSessionStore {
|
|
|
146
146
|
this._addedKeyChangeListenerCount -= 1;
|
|
147
147
|
if (this._addedKeyChangeListenerCount <= 0) {
|
|
148
148
|
this._addedKeyChangeListenerCount = 0;
|
|
149
|
-
if (this._deviceEventEmitterSubscription
|
|
149
|
+
if (this._deviceEventEmitterSubscription) {
|
|
150
150
|
this._deviceEventEmitterSubscription.remove();
|
|
151
|
-
} else {
|
|
152
|
-
_reactNative.DeviceEventEmitter.removeListener(_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED, this._deviceEventEmitterListener);
|
|
153
151
|
}
|
|
154
152
|
this._deviceEventEmitterSubscription = undefined;
|
|
155
153
|
this._eventEmitter = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_HMSManagerModule","_interopRequireDefault","_HMSConstants","_HMSLogger","_HMSUpdateListenerActions","_utils","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSSessionStore","constructor","set","key","data","HMSManager","setSessionMetadataForKey","id","HMSConstants","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","DeviceEventEmitter","addListener","HMSUpdateListenerActions","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","EventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","getLogger","verbose","removeListener","undefined","_getLogger","_this$_eventEmitter","emit","exports"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_HMSManagerModule","_interopRequireDefault","_HMSConstants","_HMSLogger","_HMSUpdateListenerActions","_utils","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HMSSessionStore","constructor","set","key","data","HMSManager","setSessionMetadataForKey","id","HMSConstants","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","DeviceEventEmitter","addListener","HMSUpdateListenerActions","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","EventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","getLogger","verbose","undefined","_getLogger","_this$_eventEmitter","emit","exports"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription.remove();\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,8 +9,7 @@ var _reactNative = require("react-native");
|
|
|
9
9
|
var _HMSConstants = require("./HMSConstants");
|
|
10
10
|
var _HMSVideoViewMode = require("./HMSVideoViewMode");
|
|
11
11
|
var _hmsviews = require("../hooks/hmsviews");
|
|
12
|
-
function
|
|
13
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
13
|
/**
|
|
15
14
|
* Interface defining the properties for the `HmsView` component.
|
|
16
15
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_HMSConstants","_HMSVideoViewMode","_hmsviews","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","HmsView","requireNativeComponent","_nextRequestId","_requestMap","Map","HmsViewComponent","exports","React","forwardRef","props","ref","trackId","style","styles","hmsView","id","HMSConstants","DEFAULT_SDK_ID","mirror","setZOrderMediaOverlay","autoSimulcast","scaleType","HMSVideoViewMode","ASPECT_FILL","hmsViewRef","useRef","applyStyles_ANDROID","setApplyStyles_ANDROID","useState","data","onChange","nativeEvent","event","setHmsViewsResolutionsState","_onDataReturned","requestId","result","error","promise","resolve","reject","delete","capture","viewManagerConfig","UIManager","getViewManagerConfig","requestMap","Promise","dispatchViewManagerCommand","findNodeHandle","current","Commands","useImperativeHandle","createElement","Platform","OS","onDataReturned","StyleSheet","create","flex"],"sources":["HmsView.tsx"],"sourcesContent":["import React, { useState, useImperativeHandle, useRef } from 'react';\nimport {\n findNodeHandle,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n Platform,\n} from 'react-native';\nimport type { NativeSyntheticEvent, ViewStyle } from 'react-native';\nimport { HMSConstants } from './HMSConstants';\nimport { HMSVideoViewMode } from './HMSVideoViewMode';\nimport { setHmsViewsResolutionsState } from '../hooks/hmsviews';\n\n/**\n * Interface defining the properties for the `HmsView` component.\n *\n * This interface specifies the structure of the props that the `HmsView` component expects. It includes\n * properties for configuring the video track display, such as the track ID, mirroring options,\n * and scale type. It also includes properties for handling events and customizing the component's style.\n *\n * @interface HmsViewProps\n * @property {Object} data - An object containing the track ID, instance ID, mirroring option, and scale type for the video or audio track.\n * @property {string} data.trackId - The unique identifier for the track to be displayed.\n * @property {string} data.id - The identifier for the `HmsViewComponent` instance.\n * @property {boolean} data.mirror - Indicates whether the video should be mirrored. This is commonly used for local video tracks.\n * @property {HMSVideoViewMode} data.scaleType - Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} autoSimulcast - Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {boolean} setZOrderMediaOverlay - When true, the video view will be rendered above the regular view hierarchy.\n * @property {ViewStyle} style - Custom styles to apply to the view.\n * @property {Function} onChange - A callback function that is invoked when the `HmsView` component emits a change event.\n * @property {Function} onDataReturned - A callback function that is invoked when the `HmsView` component returns data in response to a capture frame event.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\ninterface HmsViewProps {\n data: {\n trackId: string;\n id: string;\n mirror: boolean;\n scaleType: HMSVideoViewMode;\n };\n autoSimulcast: boolean;\n setZOrderMediaOverlay: boolean;\n scaleType: HMSVideoViewMode;\n style: ViewStyle;\n onChange: Function;\n onDataReturned: Function;\n}\n\n// Imports the `HmsView` component from the native side using the `requireNativeComponent` function.\n// This component is used to render video tracks in the application.\nconst HmsView = requireNativeComponent<HmsViewProps>('HMSView');\nlet _nextRequestId = 1;\nlet _requestMap = new Map();\n\n/**\n * Defines the properties for the `HmsViewComponent`.\n *\n * This interface outlines the props that can be passed to the `HmsViewComponent` to configure its behavior and appearance.\n *\n * @interface HmsComponentProps\n * @property {string} trackId - The unique identifier for the track to be displayed.\n * @property {ViewStyle} [style] - Optional. Custom styles to apply to the view.\n * @property {boolean} [mirror] - Optional. If true, the video will be mirrored. This is commonly used for local video tracks.\n * @property {boolean} [autoSimulcast] - Optional. Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {HMSVideoViewMode} [scaleType] - Optional. Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} [setZOrderMediaOverlay] - Optional. When true, the video view will be rendered above the regular view hierarchy.\n * @property {string} id - The identifier for the `HmsViewComponent` instance.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\nexport interface HmsComponentProps {\n trackId: string;\n style?: ViewStyle;\n mirror?: boolean;\n autoSimulcast?: boolean;\n scaleType?: HMSVideoViewMode;\n setZOrderMediaOverlay?: boolean;\n id: string;\n}\n\nexport const HmsViewComponent = React.forwardRef<any, HmsComponentProps>(\n (props, ref) => {\n const {\n trackId,\n style = styles.hmsView,\n id = HMSConstants.DEFAULT_SDK_ID,\n mirror = false,\n setZOrderMediaOverlay = false,\n autoSimulcast = true,\n scaleType = HMSVideoViewMode.ASPECT_FILL,\n } = props;\n\n const hmsViewRef: any = useRef();\n const [applyStyles_ANDROID, setApplyStyles_ANDROID] = useState(false);\n const data = {\n trackId,\n id,\n mirror,\n scaleType,\n };\n\n /**\n * This method is passed to `onChange` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'topChange' event.\n */\n const onChange = ({\n nativeEvent,\n }: NativeSyntheticEvent<{\n data: { height: number; width: number };\n event: 'ON_RESOLUTION_CHANGE_EVENT';\n }>) => {\n const { event, data } = nativeEvent;\n\n setApplyStyles_ANDROID(true);\n\n if (event === 'ON_RESOLUTION_CHANGE_EVENT') {\n setHmsViewsResolutionsState(trackId, data);\n }\n };\n\n /**\n * This method is passed to `onDataReturned` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'captureFrame' event.\n */\n const _onDataReturned = (event: {\n nativeEvent: { requestId: any; result: any; error: any };\n }) => {\n // We grab the relevant data out of our event.\n let { requestId, result, error } = event.nativeEvent;\n // Then we get the promise we saved earlier for the given request ID.\n let promise = _requestMap.get(requestId);\n if (result) {\n // If it was successful, we resolve the promise.\n promise.resolve(result);\n } else {\n // Otherwise, we reject it.\n promise.reject(error);\n }\n // Finally, we clean up our request map.\n _requestMap.delete(requestId);\n };\n\n const capture = async () => {\n const viewManagerConfig = UIManager.getViewManagerConfig('HMSView');\n\n let requestId = _nextRequestId++;\n let requestMap = _requestMap;\n\n // We create a promise here that will be resolved once `_onRequestDone` is\n // called.\n let promise = new Promise(function (resolve, reject) {\n requestMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsViewRef.current),\n viewManagerConfig.Commands.capture,\n [requestId]\n );\n return promise;\n };\n\n useImperativeHandle(ref, () => {\n return {\n capture,\n };\n });\n\n return (\n <HmsView\n ref={hmsViewRef}\n onChange={onChange}\n data={data}\n style={\n Platform.OS === 'android' ? (applyStyles_ANDROID ? style : {}) : style\n }\n autoSimulcast={autoSimulcast}\n scaleType={scaleType}\n setZOrderMediaOverlay={setZOrderMediaOverlay}\n onDataReturned={_onDataReturned}\n />\n );\n }\n);\n\nconst styles = StyleSheet.create({\n hmsView: {\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_HMSConstants","_HMSVideoViewMode","_hmsviews","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","HmsView","requireNativeComponent","_nextRequestId","_requestMap","Map","HmsViewComponent","exports","React","forwardRef","props","ref","trackId","style","styles","hmsView","id","HMSConstants","DEFAULT_SDK_ID","mirror","setZOrderMediaOverlay","autoSimulcast","scaleType","HMSVideoViewMode","ASPECT_FILL","hmsViewRef","useRef","applyStyles_ANDROID","setApplyStyles_ANDROID","useState","data","onChange","nativeEvent","event","setHmsViewsResolutionsState","_onDataReturned","requestId","result","error","promise","resolve","reject","delete","capture","viewManagerConfig","UIManager","getViewManagerConfig","requestMap","Promise","dispatchViewManagerCommand","findNodeHandle","current","Commands","useImperativeHandle","createElement","Platform","OS","onDataReturned","StyleSheet","create","flex"],"sources":["HmsView.tsx"],"sourcesContent":["import React, { useState, useImperativeHandle, useRef } from 'react';\nimport {\n findNodeHandle,\n requireNativeComponent,\n StyleSheet,\n UIManager,\n Platform,\n} from 'react-native';\nimport type { NativeSyntheticEvent, ViewStyle } from 'react-native';\nimport { HMSConstants } from './HMSConstants';\nimport { HMSVideoViewMode } from './HMSVideoViewMode';\nimport { setHmsViewsResolutionsState } from '../hooks/hmsviews';\n\n/**\n * Interface defining the properties for the `HmsView` component.\n *\n * This interface specifies the structure of the props that the `HmsView` component expects. It includes\n * properties for configuring the video track display, such as the track ID, mirroring options,\n * and scale type. It also includes properties for handling events and customizing the component's style.\n *\n * @interface HmsViewProps\n * @property {Object} data - An object containing the track ID, instance ID, mirroring option, and scale type for the video or audio track.\n * @property {string} data.trackId - The unique identifier for the track to be displayed.\n * @property {string} data.id - The identifier for the `HmsViewComponent` instance.\n * @property {boolean} data.mirror - Indicates whether the video should be mirrored. This is commonly used for local video tracks.\n * @property {HMSVideoViewMode} data.scaleType - Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} autoSimulcast - Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {boolean} setZOrderMediaOverlay - When true, the video view will be rendered above the regular view hierarchy.\n * @property {ViewStyle} style - Custom styles to apply to the view.\n * @property {Function} onChange - A callback function that is invoked when the `HmsView` component emits a change event.\n * @property {Function} onDataReturned - A callback function that is invoked when the `HmsView` component returns data in response to a capture frame event.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\ninterface HmsViewProps {\n data: {\n trackId: string;\n id: string;\n mirror: boolean;\n scaleType: HMSVideoViewMode;\n };\n autoSimulcast: boolean;\n setZOrderMediaOverlay: boolean;\n scaleType: HMSVideoViewMode;\n style: ViewStyle;\n onChange: Function;\n onDataReturned: Function;\n}\n\n// Imports the `HmsView` component from the native side using the `requireNativeComponent` function.\n// This component is used to render video tracks in the application.\nconst HmsView = requireNativeComponent<HmsViewProps>('HMSView');\nlet _nextRequestId = 1;\nlet _requestMap = new Map();\n\n/**\n * Defines the properties for the `HmsViewComponent`.\n *\n * This interface outlines the props that can be passed to the `HmsViewComponent` to configure its behavior and appearance.\n *\n * @interface HmsComponentProps\n * @property {string} trackId - The unique identifier for the track to be displayed.\n * @property {ViewStyle} [style] - Optional. Custom styles to apply to the view.\n * @property {boolean} [mirror] - Optional. If true, the video will be mirrored. This is commonly used for local video tracks.\n * @property {boolean} [autoSimulcast] - Optional. Enables automatic simulcast layer switching based on network conditions, if supported.\n * @property {HMSVideoViewMode} [scaleType] - Optional. Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).\n * @property {boolean} [setZOrderMediaOverlay] - Optional. When true, the video view will be rendered above the regular view hierarchy.\n * @property {string} id - The identifier for the `HmsViewComponent` instance.\n *\n * @see {https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview}\n */\nexport interface HmsComponentProps {\n trackId: string;\n style?: ViewStyle;\n mirror?: boolean;\n autoSimulcast?: boolean;\n scaleType?: HMSVideoViewMode;\n setZOrderMediaOverlay?: boolean;\n id: string;\n}\n\nexport const HmsViewComponent = React.forwardRef<any, HmsComponentProps>(\n (props, ref) => {\n const {\n trackId,\n style = styles.hmsView,\n id = HMSConstants.DEFAULT_SDK_ID,\n mirror = false,\n setZOrderMediaOverlay = false,\n autoSimulcast = true,\n scaleType = HMSVideoViewMode.ASPECT_FILL,\n } = props;\n\n const hmsViewRef: any = useRef();\n const [applyStyles_ANDROID, setApplyStyles_ANDROID] = useState(false);\n const data = {\n trackId,\n id,\n mirror,\n scaleType,\n };\n\n /**\n * This method is passed to `onChange` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'topChange' event.\n */\n const onChange = ({\n nativeEvent,\n }: NativeSyntheticEvent<{\n data: { height: number; width: number };\n event: 'ON_RESOLUTION_CHANGE_EVENT';\n }>) => {\n const { event, data } = nativeEvent;\n\n setApplyStyles_ANDROID(true);\n\n if (event === 'ON_RESOLUTION_CHANGE_EVENT') {\n setHmsViewsResolutionsState(trackId, data);\n }\n };\n\n /**\n * This method is passed to `onDataReturned` prop of `HmsView` Native Component.\n * It is invoked when `HmsView` emits 'captureFrame' event.\n */\n const _onDataReturned = (event: {\n nativeEvent: { requestId: any; result: any; error: any };\n }) => {\n // We grab the relevant data out of our event.\n let { requestId, result, error } = event.nativeEvent;\n // Then we get the promise we saved earlier for the given request ID.\n let promise = _requestMap.get(requestId);\n if (result) {\n // If it was successful, we resolve the promise.\n promise.resolve(result);\n } else {\n // Otherwise, we reject it.\n promise.reject(error);\n }\n // Finally, we clean up our request map.\n _requestMap.delete(requestId);\n };\n\n const capture = async () => {\n const viewManagerConfig = UIManager.getViewManagerConfig('HMSView');\n\n let requestId = _nextRequestId++;\n let requestMap = _requestMap;\n\n // We create a promise here that will be resolved once `_onRequestDone` is\n // called.\n let promise = new Promise(function (resolve, reject) {\n requestMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsViewRef.current),\n viewManagerConfig.Commands.capture,\n [requestId]\n );\n return promise;\n };\n\n useImperativeHandle(ref, () => {\n return {\n capture,\n };\n });\n\n return (\n <HmsView\n ref={hmsViewRef}\n onChange={onChange}\n data={data}\n style={\n Platform.OS === 'android' ? (applyStyles_ANDROID ? style : {}) : style\n }\n autoSimulcast={autoSimulcast}\n scaleType={scaleType}\n setZOrderMediaOverlay={setZOrderMediaOverlay}\n onDataReturned={_onDataReturned}\n />\n );\n }\n);\n\nconst styles = StyleSheet.create({\n hmsView: {\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,8 +12,7 @@ var _types = require("../../types");
|
|
|
12
12
|
var _HMSEncoder = require("../../classes/HMSEncoder");
|
|
13
13
|
var _hmsStore = require("../../stores/hms-store");
|
|
14
14
|
var _hlsPlayerStatsStore = require("../../stores/hls-player-stats-store");
|
|
15
|
-
function
|
|
16
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
16
|
const _HMSHLSPlayer = ({
|
|
18
17
|
url = '',
|
|
19
18
|
style,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_hooks","_RCTHMSHLSPlayer","_types","_HMSEncoder","_hmsStore","_hlsPlayerStatsStore","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_HMSHLSPlayer","url","style","containerStyle","enableStats","enableControls","ref","hmsHlsPlayerRef","useRef","promiseAndIdsMap","useMemo","Map","currentRequestId","useImperativeHandle","play","current","RCTHMSHLSPlayerViewManagerConfig","Commands","UIManager","dispatchViewManagerCommand","findNodeHandle","stop","undefined","pause","resume","seekForward","seconds","Error","seekBackward","seekToLivePosition","setVolume","level","isClosedCaptionSupported","areClosedCaptionSupported","requestId","promise","Promise","resolve","reject","isClosedCaptionEnabled","enableClosedCaption","disableClosedCaption","getPlayerDurationDetails","streamDuration","rollingWindowTime","handleHLSPlaybackEvent","nativeEvent","event","data","HMSHLSPlayerPlaybackEventTypes","ON_PLAYBACK_CUE_EVENT","transformedData","HMSEncoder","transformHMSHLSCueEventData","setHMSHLSPlayerCue","ON_PLAYBACK_FAILURE_EVENT","setHMSHLSPlayerPlaybackError","error","ON_PLAYBACK_RESOLUTION_CHANGE_EVENT","setHMSHLSPlayerResolution","setHMSHLSPlayerPlaybackState","state","handleHLSStatsEvent","HMSHLSPlayerStatsEventTypes","ON_STATS_EVENT_ERROR","setHMSHLSPlayerStatsError","setHMSHLSPlayerStats","handleHLSPlayerCuesEvent","setHMSHLSPlayerSubtitles","handleRequestedDataReturned","promiseMethods","console","warn","useEffect","useHMSStore","getState","resetPlaybackSlice","useHMSHLSPlayerStatsStore","reset","createElement","View","styles","container","playerWrapper","RCTHMSHLSPlayer","player","onHmsHlsPlaybackEvent","onHmsHlsStatsEvent","onHlsPlayerCuesEvent","Platform","OS","onDataReturned","HMSHLSPlayer","exports","React","forwardRef","StyleSheet","create","flex","alignItems","justifyContent","backgroundColor","width","height"],"sources":["HMSHLSPlayer.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport {\n View,\n StyleSheet,\n UIManager,\n findNodeHandle,\n Platform,\n} from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport {\n setHMSHLSPlayerCue,\n setHMSHLSPlayerPlaybackError,\n setHMSHLSPlayerPlaybackState,\n setHMSHLSPlayerResolution,\n setHMSHLSPlayerStats,\n setHMSHLSPlayerStatsError,\n setHMSHLSPlayerSubtitles,\n} from './hooks';\nimport {\n RCTHMSHLSPlayer,\n RCTHMSHLSPlayerViewManagerConfig,\n} from './RCTHMSHLSPlayer';\nimport type {\n HlsSPlayerCuesEventHandler,\n HmsHlsPlaybackEventHandler,\n HmsHlsStatsEventHandler,\n RCTHMSHLSPlayerRef,\n RequestedDataEventHandler,\n} from './RCTHMSHLSPlayer';\nimport {\n HMSHLSPlayerPlaybackEventTypes,\n HMSHLSPlayerStatsEventTypes,\n} from '../../types';\nimport type {\n HLSPlayerDurationDetails,\n HMSHLSPlayerPlaybackCueEventData,\n} from '../../types';\nimport { HMSEncoder } from '../../classes/HMSEncoder';\nimport type { HMSHLSPlayerPlaybackCue } from '../../stores/types';\nimport { useHMSStore } from '../../stores/hms-store';\nimport { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';\n\nexport interface HMSHLSPlayerProps {\n url?: string;\n style?: StyleProp<ViewStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n aspectRatio?: number;\n enableStats?: boolean;\n enableControls?: boolean;\n}\n\nexport interface HMSHLSPlayerRefProperties {\n play: (url?: string) => void;\n stop: () => void;\n pause: () => void;\n resume: () => void;\n seekForward: (seconds: number) => void;\n seekBackward: (seconds: number) => void;\n seekToLivePosition: () => void;\n setVolume: (level: number) => void;\n isClosedCaptionSupported: () => Promise<boolean>;\n isClosedCaptionEnabled: () => Promise<boolean>;\n enableClosedCaption: () => void;\n disableClosedCaption: () => void;\n getPlayerDurationDetails: () => Promise<HLSPlayerDurationDetails>;\n}\n\nconst _HMSHLSPlayer: React.ForwardRefRenderFunction<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n> = (\n { url = '', style, containerStyle, enableStats, enableControls = false },\n ref\n) => {\n const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);\n const promiseAndIdsMap = useMemo(\n () =>\n new Map<\n number,\n { resolve(value: unknown): void; reject(reason?: any): void }\n >(),\n []\n );\n const currentRequestId = useRef(1);\n\n useImperativeHandle(\n ref,\n () => ({\n play: (url?: string) => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.play\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.play,\n url ? [url] : ['']\n );\n }\n },\n stop: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop,\n undefined\n );\n }\n },\n pause: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause,\n undefined\n );\n }\n },\n resume: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume,\n undefined\n );\n }\n },\n seekForward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,\n [seconds]\n );\n }\n },\n seekBackward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,\n [seconds]\n );\n }\n },\n seekToLivePosition: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,\n undefined\n );\n }\n },\n setVolume: (level: number) => {\n if (typeof level !== 'number') {\n throw new Error(\n level ? 'level must be a `number` type' : 'level was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,\n [level]\n );\n }\n },\n isClosedCaptionSupported: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n isClosedCaptionEnabled: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n enableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption,\n undefined\n );\n }\n },\n disableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption,\n undefined\n );\n }\n },\n getPlayerDurationDetails: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<HLSPlayerDurationDetails>(\n (resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n }\n );\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve({\n streamDuration: undefined,\n rollingWindowTime: undefined,\n });\n },\n }),\n [currentRequestId, promiseAndIdsMap]\n );\n\n // Handle HLS Playback events\n const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {\n const transformedData = HMSEncoder.transformHMSHLSCueEventData<\n HMSHLSPlayerPlaybackCueEventData,\n HMSHLSPlayerPlaybackCue\n >(data);\n setHMSHLSPlayerCue(transformedData);\n } else if (\n event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT\n ) {\n setHMSHLSPlayerPlaybackError(data.error);\n } else if (\n event ===\n HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT\n ) {\n setHMSHLSPlayerResolution({ ...data });\n } else {\n setHMSHLSPlayerPlaybackState(data.state);\n }\n };\n\n // Handle HLS Stats events\n const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {\n setHMSHLSPlayerStatsError(data);\n } else {\n setHMSHLSPlayerStats(data);\n }\n };\n\n // Handle HLS Player Cues events (e.g. usage - Closed Captions)\n const handleHLSPlayerCuesEvent: HlsSPlayerCuesEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === 'ON_CLOSED_CAPTION_UPDATE') {\n setHMSHLSPlayerSubtitles(data);\n }\n };\n\n // Handle Requested data\n const handleRequestedDataReturned: RequestedDataEventHandler = ({\n nativeEvent,\n }) => {\n const { requestId, data } = nativeEvent;\n const promiseMethods = promiseAndIdsMap.get(requestId);\n\n if (!promiseMethods) {\n console.warn(\n '#function handleRequestedDataReturned',\n \"Didn't found promise methods by requestId: \",\n requestId\n );\n return;\n }\n promiseMethods.resolve(data);\n };\n\n useEffect(() => {\n return () => {\n useHMSStore.getState().resetPlaybackSlice();\n useHMSHLSPlayerStatsStore.getState().reset();\n };\n }, []);\n\n return (\n <View style={[styles.container, containerStyle]}>\n <View style={[styles.playerWrapper, style]}>\n <RCTHMSHLSPlayer\n ref={hmsHlsPlayerRef}\n url={url}\n style={styles.player}\n enableStats={enableStats}\n enableControls={enableControls}\n onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}\n onHmsHlsStatsEvent={handleHLSStatsEvent}\n onHlsPlayerCuesEvent={\n Platform.OS === 'android' ? handleHLSPlayerCuesEvent : undefined\n }\n onDataReturned={handleRequestedDataReturned}\n />\n </View>\n </View>\n );\n};\n\nexport const HMSHLSPlayer = React.forwardRef<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n>(_HMSHLSPlayer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n playerWrapper: {\n backgroundColor: '#000000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n player: {\n width: '100%',\n height: '100%',\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_hooks","_RCTHMSHLSPlayer","_types","_HMSEncoder","_hmsStore","_hlsPlayerStatsStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_HMSHLSPlayer","url","style","containerStyle","enableStats","enableControls","ref","hmsHlsPlayerRef","useRef","promiseAndIdsMap","useMemo","Map","currentRequestId","useImperativeHandle","play","current","RCTHMSHLSPlayerViewManagerConfig","Commands","UIManager","dispatchViewManagerCommand","findNodeHandle","stop","undefined","pause","resume","seekForward","seconds","Error","seekBackward","seekToLivePosition","setVolume","level","isClosedCaptionSupported","areClosedCaptionSupported","requestId","promise","Promise","resolve","reject","isClosedCaptionEnabled","enableClosedCaption","disableClosedCaption","getPlayerDurationDetails","streamDuration","rollingWindowTime","handleHLSPlaybackEvent","nativeEvent","event","data","HMSHLSPlayerPlaybackEventTypes","ON_PLAYBACK_CUE_EVENT","transformedData","HMSEncoder","transformHMSHLSCueEventData","setHMSHLSPlayerCue","ON_PLAYBACK_FAILURE_EVENT","setHMSHLSPlayerPlaybackError","error","ON_PLAYBACK_RESOLUTION_CHANGE_EVENT","setHMSHLSPlayerResolution","setHMSHLSPlayerPlaybackState","state","handleHLSStatsEvent","HMSHLSPlayerStatsEventTypes","ON_STATS_EVENT_ERROR","setHMSHLSPlayerStatsError","setHMSHLSPlayerStats","handleHLSPlayerCuesEvent","setHMSHLSPlayerSubtitles","handleRequestedDataReturned","promiseMethods","console","warn","useEffect","useHMSStore","getState","resetPlaybackSlice","useHMSHLSPlayerStatsStore","reset","createElement","View","styles","container","playerWrapper","RCTHMSHLSPlayer","player","onHmsHlsPlaybackEvent","onHmsHlsStatsEvent","onHlsPlayerCuesEvent","Platform","OS","onDataReturned","HMSHLSPlayer","exports","React","forwardRef","StyleSheet","create","flex","alignItems","justifyContent","backgroundColor","width","height"],"sources":["HMSHLSPlayer.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport {\n View,\n StyleSheet,\n UIManager,\n findNodeHandle,\n Platform,\n} from 'react-native';\nimport type { StyleProp, ViewStyle } from 'react-native';\n\nimport {\n setHMSHLSPlayerCue,\n setHMSHLSPlayerPlaybackError,\n setHMSHLSPlayerPlaybackState,\n setHMSHLSPlayerResolution,\n setHMSHLSPlayerStats,\n setHMSHLSPlayerStatsError,\n setHMSHLSPlayerSubtitles,\n} from './hooks';\nimport {\n RCTHMSHLSPlayer,\n RCTHMSHLSPlayerViewManagerConfig,\n} from './RCTHMSHLSPlayer';\nimport type {\n HlsSPlayerCuesEventHandler,\n HmsHlsPlaybackEventHandler,\n HmsHlsStatsEventHandler,\n RCTHMSHLSPlayerRef,\n RequestedDataEventHandler,\n} from './RCTHMSHLSPlayer';\nimport {\n HMSHLSPlayerPlaybackEventTypes,\n HMSHLSPlayerStatsEventTypes,\n} from '../../types';\nimport type {\n HLSPlayerDurationDetails,\n HMSHLSPlayerPlaybackCueEventData,\n} from '../../types';\nimport { HMSEncoder } from '../../classes/HMSEncoder';\nimport type { HMSHLSPlayerPlaybackCue } from '../../stores/types';\nimport { useHMSStore } from '../../stores/hms-store';\nimport { useHMSHLSPlayerStatsStore } from '../../stores/hls-player-stats-store';\n\nexport interface HMSHLSPlayerProps {\n url?: string;\n style?: StyleProp<ViewStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n aspectRatio?: number;\n enableStats?: boolean;\n enableControls?: boolean;\n}\n\nexport interface HMSHLSPlayerRefProperties {\n play: (url?: string) => void;\n stop: () => void;\n pause: () => void;\n resume: () => void;\n seekForward: (seconds: number) => void;\n seekBackward: (seconds: number) => void;\n seekToLivePosition: () => void;\n setVolume: (level: number) => void;\n isClosedCaptionSupported: () => Promise<boolean>;\n isClosedCaptionEnabled: () => Promise<boolean>;\n enableClosedCaption: () => void;\n disableClosedCaption: () => void;\n getPlayerDurationDetails: () => Promise<HLSPlayerDurationDetails>;\n}\n\nconst _HMSHLSPlayer: React.ForwardRefRenderFunction<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n> = (\n { url = '', style, containerStyle, enableStats, enableControls = false },\n ref\n) => {\n const hmsHlsPlayerRef = useRef<RCTHMSHLSPlayerRef | null>(null);\n const promiseAndIdsMap = useMemo(\n () =>\n new Map<\n number,\n { resolve(value: unknown): void; reject(reason?: any): void }\n >(),\n []\n );\n const currentRequestId = useRef(1);\n\n useImperativeHandle(\n ref,\n () => ({\n play: (url?: string) => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.play\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.play,\n url ? [url] : ['']\n );\n }\n },\n stop: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.stop,\n undefined\n );\n }\n },\n pause: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.pause,\n undefined\n );\n }\n },\n resume: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.resume,\n undefined\n );\n }\n },\n seekForward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekForward,\n [seconds]\n );\n }\n },\n seekBackward: (seconds: number) => {\n if (typeof seconds !== 'number') {\n throw new Error(\n seconds\n ? 'seconds must be a `number` type'\n : 'seconds was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekBackward,\n [seconds]\n );\n }\n },\n seekToLivePosition: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.seekToLivePosition,\n undefined\n );\n }\n },\n setVolume: (level: number) => {\n if (typeof level !== 'number') {\n throw new Error(\n level ? 'level must be a `number` type' : 'level was not provided'\n );\n }\n\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.setVolume,\n [level]\n );\n }\n },\n isClosedCaptionSupported: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.areClosedCaptionSupported,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n isClosedCaptionEnabled: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<boolean>((resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n });\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.isClosedCaptionEnabled,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve(false);\n },\n enableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.enableClosedCaption,\n undefined\n );\n }\n },\n disableClosedCaption: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption\n ) {\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.disableClosedCaption,\n undefined\n );\n }\n },\n getPlayerDurationDetails: () => {\n if (\n hmsHlsPlayerRef.current &&\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails\n ) {\n const requestId = currentRequestId.current++;\n const promise = new Promise<HLSPlayerDurationDetails>(\n (resolve, reject) => {\n promiseAndIdsMap.set(requestId, { resolve, reject });\n }\n );\n\n UIManager.dispatchViewManagerCommand(\n findNodeHandle(hmsHlsPlayerRef.current),\n RCTHMSHLSPlayerViewManagerConfig.Commands.getPlayerDurationDetails,\n [requestId]\n );\n return promise;\n }\n return Promise.resolve({\n streamDuration: undefined,\n rollingWindowTime: undefined,\n });\n },\n }),\n [currentRequestId, promiseAndIdsMap]\n );\n\n // Handle HLS Playback events\n const handleHLSPlaybackEvent: HmsHlsPlaybackEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_CUE_EVENT) {\n const transformedData = HMSEncoder.transformHMSHLSCueEventData<\n HMSHLSPlayerPlaybackCueEventData,\n HMSHLSPlayerPlaybackCue\n >(data);\n setHMSHLSPlayerCue(transformedData);\n } else if (\n event === HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_FAILURE_EVENT\n ) {\n setHMSHLSPlayerPlaybackError(data.error);\n } else if (\n event ===\n HMSHLSPlayerPlaybackEventTypes.ON_PLAYBACK_RESOLUTION_CHANGE_EVENT\n ) {\n setHMSHLSPlayerResolution({ ...data });\n } else {\n setHMSHLSPlayerPlaybackState(data.state);\n }\n };\n\n // Handle HLS Stats events\n const handleHLSStatsEvent: HmsHlsStatsEventHandler = ({ nativeEvent }) => {\n const { event, data } = nativeEvent;\n\n if (event === HMSHLSPlayerStatsEventTypes.ON_STATS_EVENT_ERROR) {\n setHMSHLSPlayerStatsError(data);\n } else {\n setHMSHLSPlayerStats(data);\n }\n };\n\n // Handle HLS Player Cues events (e.g. usage - Closed Captions)\n const handleHLSPlayerCuesEvent: HlsSPlayerCuesEventHandler = ({\n nativeEvent,\n }) => {\n const { event, data } = nativeEvent;\n\n if (event === 'ON_CLOSED_CAPTION_UPDATE') {\n setHMSHLSPlayerSubtitles(data);\n }\n };\n\n // Handle Requested data\n const handleRequestedDataReturned: RequestedDataEventHandler = ({\n nativeEvent,\n }) => {\n const { requestId, data } = nativeEvent;\n const promiseMethods = promiseAndIdsMap.get(requestId);\n\n if (!promiseMethods) {\n console.warn(\n '#function handleRequestedDataReturned',\n \"Didn't found promise methods by requestId: \",\n requestId\n );\n return;\n }\n promiseMethods.resolve(data);\n };\n\n useEffect(() => {\n return () => {\n useHMSStore.getState().resetPlaybackSlice();\n useHMSHLSPlayerStatsStore.getState().reset();\n };\n }, []);\n\n return (\n <View style={[styles.container, containerStyle]}>\n <View style={[styles.playerWrapper, style]}>\n <RCTHMSHLSPlayer\n ref={hmsHlsPlayerRef}\n url={url}\n style={styles.player}\n enableStats={enableStats}\n enableControls={enableControls}\n onHmsHlsPlaybackEvent={handleHLSPlaybackEvent}\n onHmsHlsStatsEvent={handleHLSStatsEvent}\n onHlsPlayerCuesEvent={\n Platform.OS === 'android' ? handleHLSPlayerCuesEvent : undefined\n }\n onDataReturned={handleRequestedDataReturned}\n />\n </View>\n </View>\n );\n};\n\nexport const HMSHLSPlayer = React.forwardRef<\n HMSHLSPlayerRefProperties,\n HMSHLSPlayerProps\n>(_HMSHLSPlayer);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n playerWrapper: {\n backgroundColor: '#000000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n player: {\n width: '100%',\n height: '100%',\n flex: 1,\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,8 +14,7 @@ var _HMSPeerUpdate = require("../classes/HMSPeerUpdate");
|
|
|
14
14
|
var _HMSPeersCache = require("../classes/HMSPeersCache");
|
|
15
15
|
var _HMSUpdateListenerActions = require("../classes/HMSUpdateListenerActions");
|
|
16
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
-
function
|
|
18
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
19
18
|
const eventType = _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PEER_UPDATE;
|
|
20
19
|
|
|
21
20
|
// TODO: How to handle events which have already been received?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","_interopRequireWildcard","require","_HMSConstants","_HMSEncoder","_HMSEventEmitter","_HMSLogger","_HMSNativeEventListener","_interopRequireDefault","_HMSPeerUpdate","_HMSPeersCache","_HMSUpdateListenerActions","e","__esModule","default","
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_HMSConstants","_HMSEncoder","_HMSEventEmitter","_HMSLogger","_HMSNativeEventListener","_interopRequireDefault","_HMSPeerUpdate","_HMSPeersCache","_HMSUpdateListenerActions","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","eventType","HMSUpdateListenerActions","ON_PEER_UPDATE","useHMSPeerUpdates","effect","deps","useEffect","HMSEventEmitter","listenerCount","addPeerUpdateSubscription","subscription","addListener","remove","removePeerUpdateSubscription","exports","peerUpdateSubscription","HMSNativeEventListener","HMSConstants","DEFAULT_SDK_ID","peerData","_getHmsPeersCache","_getLogger","data","peer","type","ordinal","HMSPeerUpdateOrdinals","keys","peerID","HMSEncoder","encodeHmsPeer","encodeHmsPeerUpdate","getHmsPeersCache","updatePeerCache","getLogger","verbose","emit"],"sources":["useHMSPeerUpdates.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { HMSConstants } from '../classes/HMSConstants';\nimport { HMSEncoder } from '../classes/HMSEncoder';\nimport { HMSEventEmitter } from '../classes/HMSEventEmitter';\nimport { getLogger } from '../classes/HMSLogger';\nimport HMSNativeEventListener from '../classes/HMSNativeEventListener';\nimport type { HMSNativeEventSubscription } from '../classes/HMSNativeEventListener';\nimport type { HMSPeer } from '../classes/HMSPeer';\nimport { HMSPeerUpdate, HMSPeerUpdateOrdinals } from '../classes/HMSPeerUpdate';\nimport { getHmsPeersCache } from '../classes/HMSPeersCache';\nimport { HMSUpdateListenerActions } from '../classes/HMSUpdateListenerActions';\n\nconst eventType = HMSUpdateListenerActions.ON_PEER_UPDATE;\n\n// TODO: How to handle events which have already been received?\n// TODO(DOUBT): add HMSInstance as dependency because of actions enabling/disabling events on HMSInstance?\nexport const useHMSPeerUpdates = (\n effect: (data: { peer: HMSPeer; type: HMSPeerUpdate }) => void,\n deps: React.DependencyList | undefined = []\n) => {\n React.useEffect(() => {\n if (HMSEventEmitter.listenerCount(eventType) <= 0) {\n addPeerUpdateSubscription();\n }\n\n const subscription = HMSEventEmitter.addListener(eventType, effect, null);\n\n return () => {\n subscription.remove();\n\n if (HMSEventEmitter.listenerCount(eventType) <= 0) {\n removePeerUpdateSubscription();\n }\n };\n }, deps);\n};\n\nlet peerUpdateSubscription: HMSNativeEventSubscription | null = null;\n\nfunction addPeerUpdateSubscription() {\n if (peerUpdateSubscription !== null) {\n return;\n }\n\n peerUpdateSubscription = HMSNativeEventListener.addListener(\n HMSConstants.DEFAULT_SDK_ID,\n HMSUpdateListenerActions.ON_PEER_UPDATE,\n (peerData: any) => {\n const data: { peer: any; type: any } = {\n peer: peerData,\n type: null,\n };\n\n for (const ordinal of HMSPeerUpdateOrdinals.keys()) {\n if (ordinal in peerData) {\n data.peer.peerID = peerData[ordinal];\n data.type = ordinal;\n break;\n }\n }\n\n const peer: HMSPeer = HMSEncoder.encodeHmsPeer(data.peer);\n const type = HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;\n\n getHmsPeersCache()?.updatePeerCache(data.peer.peerID, data.peer, type);\n\n getLogger()?.verbose('#Listener ON_PEER_LISTENER_CALL', {\n peer,\n type,\n });\n\n HMSEventEmitter.emit(eventType, { peer, type });\n }\n );\n}\n\nfunction removePeerUpdateSubscription() {\n if (peerUpdateSubscription === null) {\n return;\n }\n\n peerUpdateSubscription.remove();\n peerUpdateSubscription = null;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -46,11 +46,9 @@ export class HMSNativeEventEmitter {
|
|
|
46
46
|
let subscription = this._nativeEventEmitter.addListener(eventType, listener);
|
|
47
47
|
return {
|
|
48
48
|
remove: () => {
|
|
49
|
-
if (subscription
|
|
49
|
+
if (subscription) {
|
|
50
50
|
subscription.remove();
|
|
51
51
|
subscription = null;
|
|
52
|
-
} else {
|
|
53
|
-
this._nativeEventEmitter.removeListener(eventType, listener);
|
|
54
52
|
}
|
|
55
53
|
|
|
56
54
|
// disable `eventType` on `HMSSDK`, if all listeners has been removed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","logger","HMSNativeEventEmitter","constructor","nativeModule","_defineProperty","_nativeModule","_nativeEventEmitter","listenerCount","eventType","listeners","count","length","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","logger","HMSNativeEventEmitter","constructor","nativeModule","_defineProperty","_nativeModule","_nativeEventEmitter","listenerCount","eventType","listeners","count","length","verbose","addListener","id","listener","enableHMSEventType","subscription","remove","disableHMSEventType","removeAllListeners","enableEvent","disableEvent"],"sources":["HMSNativeEventEmitter.ts"],"sourcesContent":["import { NativeEventEmitter } from 'react-native';\nimport type { EventSubscription } from 'react-native';\nimport { logger } from './HMSLogger';\n\nexport type HMSEventSubscription = {\n remove(): void;\n};\n\nexport class HMSNativeEventEmitter {\n private _nativeEventEmitter: NativeEventEmitter;\n private _nativeModule: any;\n\n constructor(nativeModule: any) {\n this._nativeModule = nativeModule;\n this._nativeEventEmitter = new NativeEventEmitter(nativeModule);\n }\n\n listenerCount(eventType: string): number {\n // For RN version < v0.64, listenerCount method is not available\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n if (typeof this._nativeEventEmitter.listeners === 'function') {\n // @ts-ignore - typescript is giving error because we are running it with RN types version >= 0.64\n const count = this._nativeEventEmitter.listeners(eventType).length;\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n // For RN version >= v0.64\n const count = this._nativeEventEmitter.listenerCount(eventType);\n\n logger?.verbose('#Function HMSNativeEventEmitter.listenerCount', {\n eventType,\n count,\n });\n return count;\n }\n\n addListener(\n id: string,\n eventType: string,\n listener: (...args: any[]) => any\n ): HMSEventSubscription {\n logger?.verbose('#Function HMSNativeEventEmitter.addListener', {\n id,\n eventType,\n listener,\n });\n\n // enable `eventType` on `HMSSDK`, if no listeners were added before\n // if some listeners were added before, then `eventType` on `HMSSDK` should already be enabled\n if (this.listenerCount(eventType) <= 0) {\n this.enableHMSEventType(id, eventType);\n }\n\n let subscription: EventSubscription | null =\n this._nativeEventEmitter.addListener(eventType, listener);\n\n return {\n remove: () => {\n if (subscription) {\n subscription.remove();\n subscription = null;\n }\n\n // disable `eventType` on `HMSSDK`, if all listeners has been removed\n if (this.listenerCount(eventType) <= 0) {\n this.disableHMSEventType(id, eventType);\n }\n },\n };\n }\n\n removeAllListeners(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.removeAllListeners', {\n id,\n eventType,\n });\n\n // disable `eventType` on `HMSSDK`\n this.disableHMSEventType(id, eventType);\n\n return this._nativeEventEmitter.removeAllListeners(eventType);\n }\n\n private enableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.enableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.enableEvent({ id, eventType });\n }\n\n private disableHMSEventType(id: string, eventType: string) {\n logger?.verbose('#Function HMSNativeEventEmitter.disableHMSEventType', {\n id,\n eventType,\n });\n this._nativeModule.disableEvent({ id, eventType });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,6 +13,6 @@ export let HMSPeerType = /*#__PURE__*/function (HMSPeerType) {
|
|
|
13
13
|
HMSPeerType["SIP"] = "SIP";
|
|
14
14
|
HMSPeerType["REGULAR"] = "REGULAR";
|
|
15
15
|
return HMSPeerType;
|
|
16
|
-
}({});
|
|
16
|
+
}({});
|
|
17
17
|
export const HMSPeerTypeOrdinals = new Map([['0', HMSPeerType.SIP], ['1', HMSPeerType.REGULAR]]);
|
|
18
18
|
//# sourceMappingURL=HMSPeerType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HMSPeerType","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA
|
|
1
|
+
{"version":3,"names":["HMSPeerType","HMSPeerTypeOrdinals","Map","SIP","REGULAR"],"sources":["HMSPeerType.ts"],"sourcesContent":["/**\n * Enum for HMSPeerType.\n *\n * Defines the types of peers within the HMS (100ms) system. This enumeration is used to distinguish between different\n * kinds of peers, such as SIP (Session Initiation Protocol) peers and regular peers. Each peer type has specific\n * characteristics and roles within the video conferencing or communication context.\n *\n * @enum {string}\n *\n * @see https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect\n */\nexport enum HMSPeerType {\n SIP = 'SIP', // Represents a SIP peer, typically used for integrating with traditional telephony systems.\n REGULAR = 'REGULAR', // Represents a regular peer, such as a standard user in a video call.\n}\n\nexport const HMSPeerTypeOrdinals = new Map([\n ['0', HMSPeerType.SIP],\n ['1', HMSPeerType.REGULAR],\n]);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAYA,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAKvB,OAAO,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAAC,CACzC,CAAC,GAAG,EAAEF,WAAW,CAACG,GAAG,CAAC,EACtB,CAAC,GAAG,EAAEH,WAAW,CAACI,OAAO,CAAC,CAC3B,CAAC","ignoreList":[]}
|
|
@@ -139,10 +139,8 @@ export class HMSSessionStore {
|
|
|
139
139
|
this._addedKeyChangeListenerCount -= 1;
|
|
140
140
|
if (this._addedKeyChangeListenerCount <= 0) {
|
|
141
141
|
this._addedKeyChangeListenerCount = 0;
|
|
142
|
-
if (this._deviceEventEmitterSubscription
|
|
142
|
+
if (this._deviceEventEmitterSubscription) {
|
|
143
143
|
this._deviceEventEmitterSubscription.remove();
|
|
144
|
-
} else {
|
|
145
|
-
DeviceEventEmitter.removeListener(HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED, this._deviceEventEmitterListener);
|
|
146
144
|
}
|
|
147
145
|
this._deviceEventEmitterSubscription = undefined;
|
|
148
146
|
this._eventEmitter = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DeviceEventEmitter","HMSManager","HMSConstants","getLogger","HMSUpdateListenerActions","EventEmitter","HMSSessionStore","constructor","_defineProperty","set","value","key","data","setSessionMetadataForKey","id","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","addListener","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","verbose","removeListener","undefined","_getLogger","_this$_eventEmitter","emit"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (\n this._deviceEventEmitterSubscription &&\n typeof this._deviceEventEmitterSubscription.remove === 'function'\n ) {\n this._deviceEventEmitterSubscription.remove();\n } else {\n DeviceEventEmitter.removeListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener\n );\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DeviceEventEmitter","HMSManager","HMSConstants","getLogger","HMSUpdateListenerActions","EventEmitter","HMSSessionStore","constructor","_defineProperty","set","value","key","data","setSessionMetadataForKey","id","DEFAULT_SDK_ID","get","getSessionMetadataForKey","addKeyChangeListener","forKeys","callback","_deviceEventEmitterSubscription","addListener","ON_SESSION_STORE_CHANGED","_deviceEventEmitterListener","bind","_eventEmitter","uniqueId","join","Date","now","toString","eventEmitter","subscriptions","map","cleanupHandler","_cleanup","keys","catch","err","_addedKeyChangeListenerCount","remove","subscriptionsToRemove","length","context","forEach","subscription","removeKeyChangeListener","error","logger","verbose","undefined","_getLogger","_this$_eventEmitter","emit"],"sources":["HMSSessionStore.ts"],"sourcesContent":["import { DeviceEventEmitter } from 'react-native';\nimport type { EmitterSubscription as RNEmitterSubscription } from 'react-native';\n\nimport HMSManager from '../modules/HMSManagerModule';\n\nimport { HMSConstants } from './HMSConstants';\nimport { getLogger } from './HMSLogger';\nimport { HMSUpdateListenerActions } from './HMSUpdateListenerActions';\nimport { EventEmitter } from '../utils';\nimport type { EmitterSubscription } from '../utils';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonMap = {\n [key: string]: JsonPrimitive | JsonMap | JsonArray;\n};\nexport type JsonArray = Array<JsonPrimitive | JsonMap | JsonArray>;\nexport type JsonValue = JsonPrimitive | JsonMap | JsonArray;\n\n/**\n * Session store is a shared realtime key-value store that is accessible by all Peers in a Room.\n * It can be utilized to implement features such as pinned text, spotlight (which brings a particular\n * peer to the center stage for everyone in the room) and more, enhancing interactive experiences.\n *\n * To get an instance of `HMSSessionStore` class, You can add an event listener for `ON_SESSION_STORE_AVAILABLE`\n * event on the `HMSSDK` instance\n *\n * For example:\n * ```\n * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_SESSION_STORE_AVAILABLE, <your callback function>);\n * ```\n *\n * Checkout Session Store docs fore more details ${@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store}\n */\nexport class HMSSessionStore {\n private _deviceEventEmitterSubscription?: RNEmitterSubscription;\n private _eventEmitter?: EventEmitter;\n private _addedKeyChangeListenerCount = 0;\n\n /**\n * This method sets a value for a specific key on session store.\n * Once a value is assigned, it will be available for other peers in the room\n * who are listening for changes in value for that specific key.\n *\n * @param {JsonValue} value - The value to set, which can be any JSON-compatible type.\n * @param {string} key - The key under which to store the value.\n * @returns {Promise} A promise that resolves when the operation is complete.\n */\n async set(value: JsonValue, key: string) {\n const data: { success: true } = await HMSManager.setSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n value,\n });\n return data;\n }\n\n /**\n * Retrieves the value for a given key from the session store. This method does not subscribe\n * to changes; it only returns the current value at the time of the call.\n *\n * To listen to value change updates use `addKeyChangeListener` method instead.\n *\n * @param {string} key - The key whose value is to be retrieved.\n * @returns {Promise} A promise that resolves with the value of the key.\n */\n async get(key: string) {\n const data: JsonValue = await HMSManager.getSessionMetadataForKey({\n id: HMSConstants.DEFAULT_SDK_ID,\n key,\n });\n return data;\n }\n\n /**\n * Registers a callback to listen for changes to specified keys in the session store.\n * The callback is called with the initial value and again whenever any value changes.\n *\n * @param {string[]} forKeys - An array of keys to listen for changes on.\n * @param {Function} callback - The function to call when a value changes.\n * @returns {Object} An object with a `remove` method to unregister the listener.\n */\n addKeyChangeListener<T extends string[]>(\n forKeys: T,\n callback: (\n error: string | null,\n data: { key: T[number]; value: JsonValue } | null\n ) => void\n ) {\n // Add Native Device Event Emitter if it is not already added\n if (!this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription = DeviceEventEmitter.addListener(\n HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,\n this._deviceEventEmitterListener.bind(this)\n );\n }\n\n // Create JS side EventEmitter\n if (!this._eventEmitter) {\n this._eventEmitter = new EventEmitter();\n }\n\n // Unique Identifier for adding native event listener\n const uniqueId = forKeys.join('') + '_' + Date.now().toString();\n\n const eventEmitter = this._eventEmitter;\n\n // Add listeners on eventEmitter for each key\n const subscriptions = forKeys.map((key) =>\n eventEmitter.addListener(key, callback, { uniqueId })\n );\n\n //\n let cleanupHandler: (() => void) | null = () => {\n this._cleanup(subscriptions);\n };\n\n // Adding 'KeyChangeListener' on native side\n HMSManager.addKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n keys: forKeys,\n uniqueId,\n })\n // Adding 'KeyChangeListener' fails on native side\n .catch((err: any) => {\n if (typeof cleanupHandler === 'function') {\n callback(err, null);\n cleanupHandler();\n cleanupHandler = null;\n }\n });\n\n this._addedKeyChangeListenerCount += 1;\n\n return {\n remove: () => {\n if (typeof cleanupHandler === 'function') {\n cleanupHandler();\n cleanupHandler = null;\n }\n },\n };\n }\n\n private _cleanup(subscriptionsToRemove: EmitterSubscription[]) {\n // Extracting `uniqueId` from first subscription (all subscriptions have same uniqueId)\n // this `uniqueId` will be used to remove 'KeyChangeListener' from native side\n const uniqueId =\n subscriptionsToRemove.length > 0\n ? (subscriptionsToRemove[0]!.context as { uniqueId: string }).uniqueId\n : null;\n\n // Removing required subscriptions from 'eventEmitter'\n subscriptionsToRemove.forEach((subscription) => subscription.remove());\n\n // Removing 'KeyChangeListener' from native side\n HMSManager.removeKeyChangeListener({\n id: HMSConstants.DEFAULT_SDK_ID,\n uniqueId,\n }).catch((error: any) => {\n const logger = getLogger();\n logger?.verbose(\n \"Error while removing key change listener, Listener didn't get registerred at first place or was already removed\",\n error\n );\n });\n\n this._addedKeyChangeListenerCount -= 1;\n\n if (this._addedKeyChangeListenerCount <= 0) {\n this._addedKeyChangeListenerCount = 0;\n if (this._deviceEventEmitterSubscription) {\n this._deviceEventEmitterSubscription.remove();\n }\n\n this._deviceEventEmitterSubscription = undefined;\n\n this._eventEmitter = undefined;\n }\n }\n\n private _deviceEventEmitterListener(data: {\n id: string;\n key: string;\n value: JsonValue;\n }) {\n // if id is different from default sdk_id, return early\n if (data.id !== HMSConstants.DEFAULT_SDK_ID) {\n return;\n }\n\n // emit event for the key\n getLogger()?.verbose('#Listener ON_SESSION_STORE_CHANGED event: ', data);\n\n this._eventEmitter?.emit(data.key, null, data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import type { StyleProp, NativeSyntheticEvent, ViewStyle, NativeMethods } from 'react-native';
|
|
2
3
|
import type { HMSHLSPlayerCuesEvent, HMSHLSPlayerPlaybackEvent, HMSHLSPlayerStatsEvent, RequestedDataEvent } from '../../types';
|
|
3
4
|
export type HmsHlsPlaybackEventHandler = (event: NativeSyntheticEvent<HMSHLSPlayerPlaybackEvent>) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@100mslive/react-native-hms",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.1",
|
|
4
4
|
"description": "Integrate Real Time Audio and Video conferencing, Interactive Live Streaming, and Chat in your apps with 100ms React Native SDK. With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture (PiP), one-to-one Video Call Modes, Audio Rooms, Video Player and much more, add immersive real-time communications to your apps.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -111,7 +111,10 @@
|
|
|
111
111
|
"teams",
|
|
112
112
|
"ai"
|
|
113
113
|
],
|
|
114
|
-
"repository":
|
|
114
|
+
"repository": {
|
|
115
|
+
"type": "git",
|
|
116
|
+
"url": "git+https://github.com/100mslive/100ms-react-native.git"
|
|
117
|
+
},
|
|
115
118
|
"author": "Yogesh <yogesh@100ms.live> (https://www.100ms.live/)",
|
|
116
119
|
"license": "MIT",
|
|
117
120
|
"bugs": {
|
|
@@ -125,7 +128,7 @@
|
|
|
125
128
|
"@commitlint/config-conventional": "^11.0.0",
|
|
126
129
|
"@react-native-community/eslint-config": "^2.0.0",
|
|
127
130
|
"@types/jest": "^26.0.0",
|
|
128
|
-
"@types/react": "^
|
|
131
|
+
"@types/react": "^18.3.1",
|
|
129
132
|
"@types/react-native": "^0.64.5",
|
|
130
133
|
"commitlint": "^11.0.0",
|
|
131
134
|
"eslint": "^7.2.0",
|
|
@@ -134,15 +137,15 @@
|
|
|
134
137
|
"husky": "^4.2.5",
|
|
135
138
|
"jest": "^26.0.1",
|
|
136
139
|
"prettier": "^2.0.5",
|
|
137
|
-
"react": "
|
|
138
|
-
"react-native": "0.
|
|
140
|
+
"react": "18.2.0",
|
|
141
|
+
"react-native": "0.73.11",
|
|
139
142
|
"react-native-builder-bob": "^0.18.0",
|
|
140
143
|
"typedoc": "^0.24.7",
|
|
141
144
|
"typescript": "^4.6.3"
|
|
142
145
|
},
|
|
143
146
|
"peerDependencies": {
|
|
144
147
|
"react": "*",
|
|
145
|
-
"react-native": "
|
|
148
|
+
"react-native": ">=0.77.3"
|
|
146
149
|
},
|
|
147
150
|
"jest": {
|
|
148
151
|
"preset": "react-native",
|
|
@@ -206,6 +209,9 @@
|
|
|
206
209
|
]
|
|
207
210
|
]
|
|
208
211
|
},
|
|
212
|
+
"overrides": {
|
|
213
|
+
"fast-xml-parser": "^5.3.4"
|
|
214
|
+
},
|
|
209
215
|
"dependencies": {
|
|
210
216
|
"zustand": "^4.3.8"
|
|
211
217
|
}
|
package/react-native-hms.podspec
CHANGED
|
@@ -7,16 +7,26 @@ Pod::Spec.new do |s|
|
|
|
7
7
|
s.name = "react-native-hms"
|
|
8
8
|
s.version = package["version"]
|
|
9
9
|
s.summary = package["description"]
|
|
10
|
+
s.description = package["description"]
|
|
10
11
|
s.homepage = package["homepage"]
|
|
11
12
|
s.license = package["license"]
|
|
12
13
|
s.authors = package["author"]
|
|
13
14
|
|
|
14
|
-
s.platforms = { :ios => "
|
|
15
|
+
s.platforms = { :ios => "16.0" }
|
|
15
16
|
s.source = { :git => "https://github.com/100mslive/100ms-react-native.git", :tag => "#{s.version}" }
|
|
16
17
|
|
|
17
18
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
19
|
+
s.requires_arc = true
|
|
20
|
+
s.swift_version = "5.0"
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
# Use modern dependency installation if available, otherwise fallback to React-Core
|
|
23
|
+
if defined?(install_modules_dependencies()) != nil
|
|
24
|
+
install_modules_dependencies(s)
|
|
25
|
+
else
|
|
26
|
+
s.dependency "React-Core"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# 100ms SDK dependencies
|
|
20
30
|
s.dependency "HMSSDK", sdkVersions["ios"]
|
|
21
31
|
s.dependency 'HMSBroadcastExtensionSDK', sdkVersions["iOSBroadcastExtension"]
|
|
22
32
|
s.dependency 'HMSHLSPlayerSDK', sdkVersions["iOSHMSHLSPlayer"]
|
package/sdk-versions.json
CHANGED
|
@@ -61,15 +61,9 @@ export class HMSNativeEventEmitter {
|
|
|
61
61
|
|
|
62
62
|
return {
|
|
63
63
|
remove: () => {
|
|
64
|
-
if (
|
|
65
|
-
subscription &&
|
|
66
|
-
Object.getOwnPropertyNames(subscription).includes('remove') &&
|
|
67
|
-
typeof subscription.remove === 'function'
|
|
68
|
-
) {
|
|
64
|
+
if (subscription) {
|
|
69
65
|
subscription.remove();
|
|
70
66
|
subscription = null;
|
|
71
|
-
} else {
|
|
72
|
-
this._nativeEventEmitter.removeListener(eventType, listener);
|
|
73
67
|
}
|
|
74
68
|
|
|
75
69
|
// disable `eventType` on `HMSSDK`, if all listeners has been removed
|
|
@@ -168,16 +168,8 @@ export class HMSSessionStore {
|
|
|
168
168
|
|
|
169
169
|
if (this._addedKeyChangeListenerCount <= 0) {
|
|
170
170
|
this._addedKeyChangeListenerCount = 0;
|
|
171
|
-
if (
|
|
172
|
-
this._deviceEventEmitterSubscription &&
|
|
173
|
-
typeof this._deviceEventEmitterSubscription.remove === 'function'
|
|
174
|
-
) {
|
|
171
|
+
if (this._deviceEventEmitterSubscription) {
|
|
175
172
|
this._deviceEventEmitterSubscription.remove();
|
|
176
|
-
} else {
|
|
177
|
-
DeviceEventEmitter.removeListener(
|
|
178
|
-
HMSUpdateListenerActions.ON_SESSION_STORE_CHANGED,
|
|
179
|
-
this._deviceEventEmitterListener
|
|
180
|
-
);
|
|
181
173
|
}
|
|
182
174
|
|
|
183
175
|
this._deviceEventEmitterSubscription = undefined;
|
package/android/local.properties
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
sdk.dir=/Users/yogesh/Library/Android/sdk
|
|
Binary file
|
package/ios/Hmssdk.xcodeproj/xcuserdata/yogesh.xcuserdatad/xcschemes/xcschememanagement.plist
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>SchemeUserState</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>Hmssdk.xcscheme_^#shared#^_</key>
|
|
8
|
-
<dict>
|
|
9
|
-
<key>orderHint</key>
|
|
10
|
-
<integer>0</integer>
|
|
11
|
-
</dict>
|
|
12
|
-
</dict>
|
|
13
|
-
</dict>
|
|
14
|
-
</plist>
|