@100mslive/react-native-hms 0.9.0 → 0.9.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 +10 -2
- package/android/.idea/gradle.xml +13 -0
- package/android/.idea/misc.xml +9 -0
- package/android/.idea/modules/android.iml +18 -0
- package/android/.idea/modules.xml +8 -0
- package/android/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 +0 -0
- package/android/.idea/sonarlint/issuestore/index.pb +3 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/build.gradle +2 -2
- package/android/local.properties +8 -0
- package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +31 -4
- package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +16 -64
- package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +17 -3
- package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +97 -32
- package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +1 -1
- package/ios/HmsDecoder.swift +173 -135
- package/ios/HmsHelper.swift +38 -41
- package/ios/HmsManager.m +7 -1
- package/ios/HmsManager.swift +111 -68
- package/ios/HmsSDK.swift +335 -199
- package/ios/HmsView.swift +45 -31
- package/ios/VideoCollectionViewCell.swift +4 -4
- package/lib/commonjs/classes/HMSBrowserRecordingState.js +6 -0
- package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/commonjs/classes/HMSEncoder.js +164 -4
- package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
- package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
- package/lib/commonjs/classes/HMSLocalAudioStats.js +26 -0
- package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -0
- package/lib/commonjs/classes/HMSLocalVideoStats.js +32 -0
- package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js +2 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPermissions.js +2 -2
- package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
- package/lib/commonjs/classes/HMSRTCStats.js +38 -0
- package/lib/commonjs/classes/HMSRTCStats.js.map +1 -0
- package/lib/commonjs/classes/HMSRTCStatsReport.js +26 -0
- package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -0
- package/lib/commonjs/classes/HMSRemoteAudioStats.js +32 -0
- package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -0
- package/lib/commonjs/classes/HMSRemoteVideoStats.js +38 -0
- package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -0
- package/lib/commonjs/classes/HMSRoom.js +3 -0
- package/lib/commonjs/classes/HMSRoom.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomUpdate.js +1 -0
- package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSRtmpStreamingState.js +6 -0
- package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +365 -111
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSServerRecordingState.js +3 -0
- package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -0
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/index.js +84 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/classes/HMSBrowserRecordingState.js +6 -0
- package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
- package/lib/module/classes/HMSEncoder.js +157 -4
- package/lib/module/classes/HMSEncoder.js.map +1 -1
- package/lib/module/classes/HMSHLSVariant.js.map +1 -1
- package/lib/module/classes/HMSLocalAudioStats.js +17 -0
- package/lib/module/classes/HMSLocalAudioStats.js.map +1 -0
- package/lib/module/classes/HMSLocalVideoStats.js +23 -0
- package/lib/module/classes/HMSLocalVideoStats.js.map +1 -0
- package/lib/module/classes/HMSPeerUpdate.js +2 -0
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPermissions.js +2 -2
- package/lib/module/classes/HMSPermissions.js.map +1 -1
- package/lib/module/classes/HMSRTCStats.js +29 -0
- package/lib/module/classes/HMSRTCStats.js.map +1 -0
- package/lib/module/classes/HMSRTCStatsReport.js +17 -0
- package/lib/module/classes/HMSRTCStatsReport.js.map +1 -0
- package/lib/module/classes/HMSRemoteAudioStats.js +23 -0
- package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -0
- package/lib/module/classes/HMSRemoteVideoStats.js +29 -0
- package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -0
- package/lib/module/classes/HMSRoom.js +3 -0
- package/lib/module/classes/HMSRoom.js.map +1 -1
- package/lib/module/classes/HMSRoomUpdate.js +1 -0
- package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/module/classes/HMSRtmpStreamingState.js +6 -0
- package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +352 -111
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSServerRecordingState.js +3 -0
- package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
- package/lib/module/classes/HMSUpdateListenerActions.js +5 -0
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -0
- package/lib/typescript/classes/HMSEncoder.d.ts +21 -0
- package/lib/typescript/classes/HMSHLSVariant.d.ts +8 -8
- package/lib/typescript/classes/HMSLocalAudioStats.d.ts +10 -0
- package/lib/typescript/classes/HMSLocalVideoStats.d.ts +15 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +3 -1
- package/lib/typescript/classes/HMSPermissions.d.ts +2 -2
- package/lib/typescript/classes/HMSRTCStats.d.ts +18 -0
- package/lib/typescript/classes/HMSRTCStatsReport.d.ts +11 -0
- package/lib/typescript/classes/HMSRemoteAudioStats.d.ts +14 -0
- package/lib/typescript/classes/HMSRemoteVideoStats.d.ts +19 -0
- package/lib/typescript/classes/HMSRoom.d.ts +2 -0
- package/lib/typescript/classes/HMSRoomUpdate.d.ts +2 -1
- package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -0
- package/lib/typescript/classes/HMSSDK.d.ts +16 -1
- package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -0
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +6 -1
- package/lib/typescript/index.d.ts +6 -0
- package/package.json +1 -1
- package/react-native-hms.podspec +1 -1
- package/src/classes/HMSBrowserRecordingState.ts +10 -1
- package/src/classes/HMSEncoder.ts +162 -4
- package/src/classes/HMSHLSVariant.ts +8 -8
- package/src/classes/HMSLocalAudioStats.ts +15 -0
- package/src/classes/HMSLocalVideoStats.ts +23 -0
- package/src/classes/HMSPeerUpdate.ts +2 -0
- package/src/classes/HMSPermissions.ts +3 -3
- package/src/classes/HMSRTCStats.ts +27 -0
- package/src/classes/HMSRTCStatsReport.ts +17 -0
- package/src/classes/HMSRemoteAudioStats.ts +21 -0
- package/src/classes/HMSRemoteVideoStats.ts +29 -0
- package/src/classes/HMSRoom.ts +3 -0
- package/src/classes/HMSRoomUpdate.ts +1 -0
- package/src/classes/HMSRtmpStreamingState.ts +10 -1
- package/src/classes/HMSSDK.tsx +233 -10
- package/src/classes/HMSServerRecordingState.ts +7 -1
- package/src/classes/HMSUpdateListenerActions.ts +5 -0
- package/src/index.ts +6 -0
package/README.md
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
[](https://100ms.live/discord)
|
|
15
15
|
[](https://appdistribution.firebase.dev/i/7b7ab3b30e627c35)
|
|
16
16
|
[](https://testflight.apple.com/join/v4bSIPad)
|
|
17
|
+
[](https://github.com/100mslive/react-native-hms/projects/1)
|
|
17
18
|
[](https://dashboard.100ms.live/register)
|
|
18
19
|
|
|
19
20
|
React native wrapper for 100ms SDK
|
|
@@ -22,8 +23,6 @@ React native wrapper for 100ms SDK
|
|
|
22
23
|
|
|
23
24
|
```bash
|
|
24
25
|
npm install @100mslive/react-native-hms --save
|
|
25
|
-
|
|
26
|
-
cd ios/ && pod install
|
|
27
26
|
```
|
|
28
27
|
|
|
29
28
|
📲 Download the Sample iOS App here: https://testflight.apple.com/join/v4bSIPad
|
|
@@ -206,3 +205,12 @@ import { HMSUpdateListenerActions } from '@100mslive/react-native-hms';
|
|
|
206
205
|
// add an error event listener
|
|
207
206
|
hmsInstance.addEventListener(HMSUpdateListenerActions.ON_ERROR, onError);
|
|
208
207
|
```
|
|
208
|
+
|
|
209
|
+
# Run Example App
|
|
210
|
+
To run the example app on your system, follow these steps -
|
|
211
|
+
1. In the project root, run `npm install`
|
|
212
|
+
2. Go to the example folder, `cd example`
|
|
213
|
+
3. In the example folder, run `npm install`
|
|
214
|
+
4. To run on Android, run `npx react-native run-android`
|
|
215
|
+
5. To run on iOS, first install the pods in iOS folder, `cd ios; pod install`. Then, in example folder, run `npx react-native run-ios`
|
|
216
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="GradleSettings">
|
|
4
|
+
<option name="linkedExternalProjectsSettings">
|
|
5
|
+
<GradleProjectSettings>
|
|
6
|
+
<option name="testRunner" value="GRADLE" />
|
|
7
|
+
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
|
8
|
+
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
|
9
|
+
<option name="resolveModulePerSourceSet" value="false" />
|
|
10
|
+
</GradleProjectSettings>
|
|
11
|
+
</option>
|
|
12
|
+
</component>
|
|
13
|
+
</project>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="11" project-jdk-type="JavaSDK">
|
|
4
|
+
<output url="file://$PROJECT_DIR$/build/classes" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ProjectType">
|
|
7
|
+
<option name="id" value="Android" />
|
|
8
|
+
</component>
|
|
9
|
+
</project>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module external.linked.project.id=":" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
|
|
3
|
+
<component name="FacetManager">
|
|
4
|
+
<facet type="android-gradle" name="Android-Gradle">
|
|
5
|
+
<configuration>
|
|
6
|
+
<option name="GRADLE_PROJECT_PATH" value=":" />
|
|
7
|
+
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
|
|
8
|
+
<option name="LAST_KNOWN_AGP_VERSION" />
|
|
9
|
+
</configuration>
|
|
10
|
+
</facet>
|
|
11
|
+
</component>
|
|
12
|
+
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
13
|
+
<exclude-output />
|
|
14
|
+
<content url="file://$MODULE_DIR$/../.." />
|
|
15
|
+
<orderEntry type="inheritedJdk" />
|
|
16
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
17
|
+
</component>
|
|
18
|
+
</module>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/modules/android.iml" filepath="$PROJECT_DIR$/.idea/modules/android.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
File without changes
|
package/android/build.gradle
CHANGED
|
@@ -26,7 +26,7 @@ def safeExtGet(prop, fallback) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
android {
|
|
29
|
-
compileSdkVersion safeExtGet('Hmssdk_compileSdkVersion',
|
|
29
|
+
compileSdkVersion safeExtGet('Hmssdk_compileSdkVersion', 30)
|
|
30
30
|
defaultConfig {
|
|
31
31
|
minSdkVersion safeExtGet('Hmssdk_minSdkVersion', 21)
|
|
32
32
|
targetSdkVersion safeExtGet('Hmssdk_targetSdkVersion', 29)
|
|
@@ -63,7 +63,7 @@ dependencies {
|
|
|
63
63
|
//noinspection GradleDynamicVersion
|
|
64
64
|
implementation "com.facebook.react:react-native:+"
|
|
65
65
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // From node_modules
|
|
66
|
-
implementation 'com.github.100mslive.android-sdk:lib:2.
|
|
66
|
+
implementation 'com.github.100mslive.android-sdk:lib:2.3.1'
|
|
67
67
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
|
|
68
68
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
|
|
69
69
|
implementation 'androidx.appcompat:appcompat:1.3.1'
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
## This file must *NOT* be checked into Version Control Systems,
|
|
2
|
+
# as it contains information specific to your local configuration.
|
|
3
|
+
#
|
|
4
|
+
# Location of the SDK. This is only used by Gradle.
|
|
5
|
+
# For customization when using a Version Control System, please read the
|
|
6
|
+
# header note.
|
|
7
|
+
#Tue Mar 01 18:12:03 IST 2022
|
|
8
|
+
sdk.dir=/Users/yogesh/Library/Android/sdk
|
|
@@ -34,6 +34,7 @@ object HmsDecoder {
|
|
|
34
34
|
room.putMap("hlsStreamingState", this.getHMSHlsStreamingState(hmsRoom.hlsStreamingState))
|
|
35
35
|
room.putMap("localPeer", this.getHmsLocalPeer(hmsRoom.localPeer))
|
|
36
36
|
room.putArray("peers", this.getAllPeers(hmsRoom.peerList))
|
|
37
|
+
room.putInt("peerCount", hmsRoom.peerCount)
|
|
37
38
|
}
|
|
38
39
|
return room
|
|
39
40
|
}
|
|
@@ -123,7 +124,7 @@ object HmsDecoder {
|
|
|
123
124
|
permissions.putBoolean("changeRoleForce", hmsPermissions.changeRoleForce)
|
|
124
125
|
permissions.putBoolean("unmute", hmsPermissions.unmute)
|
|
125
126
|
permissions.putBoolean("recording", hmsPermissions.recording)
|
|
126
|
-
permissions.putBoolean("
|
|
127
|
+
permissions.putBoolean("streaming", hmsPermissions.streaming)
|
|
127
128
|
permissions.putBoolean("changeRole", hmsPermissions.changeRole)
|
|
128
129
|
}
|
|
129
130
|
return permissions
|
|
@@ -362,11 +363,34 @@ object HmsDecoder {
|
|
|
362
363
|
return decodedError
|
|
363
364
|
}
|
|
364
365
|
|
|
366
|
+
private fun getCustomError(message: String?, code: Int?): WritableMap {
|
|
367
|
+
val decodedError: WritableMap = Arguments.createMap()
|
|
368
|
+
var customCode = 101
|
|
369
|
+
var customMessage = "SOMETHING WENT WRONG"
|
|
370
|
+
if (code !== null) {
|
|
371
|
+
customCode = code.toInt()
|
|
372
|
+
}
|
|
373
|
+
if (message !== null) {
|
|
374
|
+
customMessage = message
|
|
375
|
+
}
|
|
376
|
+
decodedError.putInt("code", customCode)
|
|
377
|
+
decodedError.putString("localizedDescription", customMessage)
|
|
378
|
+
decodedError.putString("description", customMessage)
|
|
379
|
+
decodedError.putString("message", customMessage)
|
|
380
|
+
decodedError.putInt("name", customCode)
|
|
381
|
+
decodedError.putInt("action", customCode)
|
|
382
|
+
|
|
383
|
+
return decodedError
|
|
384
|
+
}
|
|
385
|
+
|
|
365
386
|
private fun getHMSBrowserRecordingState(data: HMSBrowserRecordingState?): ReadableMap {
|
|
366
387
|
val input = Arguments.createMap()
|
|
367
388
|
if (data !== null) {
|
|
368
389
|
input.putBoolean("running", data.running)
|
|
369
|
-
input.
|
|
390
|
+
input.putString("startedAt", data.startedAt.toString())
|
|
391
|
+
input.putString("stoppedAt", data.stoppedAt.toString())
|
|
392
|
+
input.putBoolean("running", data.running)
|
|
393
|
+
input.putMap("error", this.getCustomError(data.error?.message, data.error?.code))
|
|
370
394
|
}
|
|
371
395
|
return input
|
|
372
396
|
}
|
|
@@ -375,7 +399,9 @@ object HmsDecoder {
|
|
|
375
399
|
val input = Arguments.createMap()
|
|
376
400
|
if (data !== null) {
|
|
377
401
|
input.putBoolean("running", data.running)
|
|
378
|
-
input.
|
|
402
|
+
input.putString("startedAt", data.startedAt.toString())
|
|
403
|
+
input.putString("stoppedAt", data.stoppedAt.toString())
|
|
404
|
+
input.putMap("error", this.getCustomError(data.error?.message, data.error?.code))
|
|
379
405
|
}
|
|
380
406
|
return input
|
|
381
407
|
}
|
|
@@ -384,6 +410,7 @@ object HmsDecoder {
|
|
|
384
410
|
val input = Arguments.createMap()
|
|
385
411
|
if (data !== null) {
|
|
386
412
|
input.putBoolean("running", data.running)
|
|
413
|
+
input.putString("startedAt", data.startedAt.toString())
|
|
387
414
|
input.putMap("error", data.error?.let { this.getError(it) })
|
|
388
415
|
}
|
|
389
416
|
return input
|
|
@@ -406,7 +433,7 @@ object HmsDecoder {
|
|
|
406
433
|
input.putString("hlsStreamUrl", variant.hlsStreamUrl)
|
|
407
434
|
input.putString("meetingUrl", variant.meetingUrl)
|
|
408
435
|
input.putString("metadata", variant.metadata)
|
|
409
|
-
|
|
436
|
+
input.putString("startedAt", variant.startedAt.toString())
|
|
410
437
|
variants.pushMap(input)
|
|
411
438
|
}
|
|
412
439
|
}
|
|
@@ -11,6 +11,7 @@ import live.hms.video.media.settings.HMSVideoTrackSettings
|
|
|
11
11
|
import live.hms.video.media.tracks.*
|
|
12
12
|
import live.hms.video.sdk.models.*
|
|
13
13
|
import live.hms.video.sdk.models.role.*
|
|
14
|
+
import live.hms.video.utils.HmsUtilities
|
|
14
15
|
|
|
15
16
|
object HmsHelper {
|
|
16
17
|
|
|
@@ -47,24 +48,16 @@ object HmsHelper {
|
|
|
47
48
|
return true
|
|
48
49
|
}
|
|
49
50
|
|
|
50
|
-
fun getPeerFromPeerId(peerId: String?,
|
|
51
|
-
if (peerId != null &&
|
|
52
|
-
|
|
53
|
-
if (peerId == peer.peerID) {
|
|
54
|
-
return peer
|
|
55
|
-
}
|
|
56
|
-
}
|
|
51
|
+
fun getPeerFromPeerId(peerId: String?, room: HMSRoom?): HMSPeer? {
|
|
52
|
+
if (peerId != null && room != null) {
|
|
53
|
+
return HmsUtilities.getPeer(peerId, room)
|
|
57
54
|
}
|
|
58
55
|
return null
|
|
59
56
|
}
|
|
60
57
|
|
|
61
|
-
fun getRemotePeerFromPeerId(peerId: String?,
|
|
62
|
-
if (peerId != null &&
|
|
63
|
-
|
|
64
|
-
if (peerId == peer.peerID) {
|
|
65
|
-
return peer
|
|
66
|
-
}
|
|
67
|
-
}
|
|
58
|
+
fun getRemotePeerFromPeerId(peerId: String?, room: HMSRoom?): HMSRemotePeer? {
|
|
59
|
+
if (peerId != null && room != null) {
|
|
60
|
+
return HmsUtilities.getPeer(peerId, room) as? HMSRemotePeer
|
|
68
61
|
}
|
|
69
62
|
return null
|
|
70
63
|
}
|
|
@@ -98,64 +91,23 @@ object HmsHelper {
|
|
|
98
91
|
return null
|
|
99
92
|
}
|
|
100
93
|
|
|
101
|
-
fun getRemoteAudioTrackFromTrackId(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
): HMSRemoteAudioTrack? {
|
|
105
|
-
if (trackId != null && remotePeers != null) {
|
|
106
|
-
for (remotePeer in remotePeers) {
|
|
107
|
-
if (remotePeer.audioTrack?.trackId == trackId) {
|
|
108
|
-
return remotePeer.audioTrack as HMSRemoteAudioTrack
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return null
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
fun getRemoteVideoTrackFromTrackId(
|
|
116
|
-
trackId: String?,
|
|
117
|
-
remotePeers: Array<HMSRemotePeer>?
|
|
118
|
-
): HMSRemoteVideoTrack? {
|
|
119
|
-
if (trackId != null && remotePeers != null) {
|
|
120
|
-
for (remotePeer in remotePeers) {
|
|
121
|
-
if (remotePeer.videoTrack?.trackId == trackId) {
|
|
122
|
-
return remotePeer.videoTrack as HMSRemoteVideoTrack
|
|
123
|
-
}
|
|
124
|
-
}
|
|
94
|
+
fun getRemoteAudioTrackFromTrackId(trackId: String?, room: HMSRoom?): HMSRemoteAudioTrack? {
|
|
95
|
+
if (trackId != null && room != null) {
|
|
96
|
+
return HmsUtilities.getAudioTrack(trackId, room) as? HMSRemoteAudioTrack
|
|
125
97
|
}
|
|
126
98
|
return null
|
|
127
99
|
}
|
|
128
100
|
|
|
129
|
-
fun
|
|
130
|
-
if (trackId != null &&
|
|
131
|
-
|
|
132
|
-
if (remotePeer.audioTrack?.trackId == trackId) {
|
|
133
|
-
return remotePeer.audioTrack as HMSTrack
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
if (remotePeer.videoTrack?.trackId == trackId) {
|
|
137
|
-
return remotePeer.videoTrack as HMSTrack
|
|
138
|
-
}
|
|
139
|
-
}
|
|
101
|
+
fun getRemoteVideoTrackFromTrackId(trackId: String?, room: HMSRoom?): HMSRemoteVideoTrack? {
|
|
102
|
+
if (trackId != null && room != null) {
|
|
103
|
+
return HmsUtilities.getVideoTrack(trackId, room) as? HMSRemoteVideoTrack
|
|
140
104
|
}
|
|
141
105
|
return null
|
|
142
106
|
}
|
|
143
107
|
|
|
144
|
-
fun
|
|
145
|
-
if (trackId != null &&
|
|
146
|
-
|
|
147
|
-
return localPeer.audioTrack as HMSTrack
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (localPeer.videoTrack?.trackId == trackId) {
|
|
151
|
-
return localPeer.videoTrack as HMSTrack
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
for (auxTrack in localPeer.auxiliaryTracks) {
|
|
155
|
-
if (auxTrack.trackId == trackId) {
|
|
156
|
-
return auxTrack
|
|
157
|
-
}
|
|
158
|
-
}
|
|
108
|
+
fun getTrackFromTrackId(trackId: String?, room: HMSRoom?): HMSTrack? {
|
|
109
|
+
if (trackId != null && room != null) {
|
|
110
|
+
HmsUtilities.getTrack(trackId, room)
|
|
159
111
|
}
|
|
160
112
|
return null
|
|
161
113
|
}
|
|
@@ -195,10 +195,17 @@ class HmsModule(reactContext: ReactApplicationContext) :
|
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
@ReactMethod
|
|
198
|
-
fun
|
|
198
|
+
fun setPlaybackForAllAudio(data: ReadableMap) {
|
|
199
199
|
val hms = HmsHelper.getHms(data, hmsCollection)
|
|
200
200
|
|
|
201
|
-
hms?.
|
|
201
|
+
hms?.setPlaybackForAllAudio(data)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@ReactMethod
|
|
205
|
+
fun remoteMuteAllAudio(data: ReadableMap) {
|
|
206
|
+
val hms = HmsHelper.getHms(data, hmsCollection)
|
|
207
|
+
|
|
208
|
+
hms?.remoteMuteAllAudio()
|
|
202
209
|
}
|
|
203
210
|
|
|
204
211
|
@ReactMethod
|
|
@@ -266,6 +273,13 @@ class HmsModule(reactContext: ReactApplicationContext) :
|
|
|
266
273
|
hms?.resetVolume()
|
|
267
274
|
}
|
|
268
275
|
|
|
276
|
+
@ReactMethod
|
|
277
|
+
fun changeName(data: ReadableMap, callback: Promise?) {
|
|
278
|
+
val hms = HmsHelper.getHms(data, hmsCollection)
|
|
279
|
+
|
|
280
|
+
hms?.changeName(data, callback)
|
|
281
|
+
}
|
|
282
|
+
|
|
269
283
|
fun emitEvent(event: String, data: WritableMap) {
|
|
270
284
|
reactApplicationContext
|
|
271
285
|
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
@@ -294,7 +308,7 @@ class HmsModule(reactContext: ReactApplicationContext) :
|
|
|
294
308
|
}
|
|
295
309
|
}
|
|
296
310
|
currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
|
|
297
|
-
hmsCollection = mutableMapOf
|
|
311
|
+
hmsCollection = mutableMapOf()
|
|
298
312
|
}
|
|
299
313
|
} catch (e: Exception) {
|
|
300
314
|
// Log.d("error", e.message)
|
|
@@ -17,6 +17,7 @@ import live.hms.video.sdk.models.enums.HMSRoomUpdate
|
|
|
17
17
|
import live.hms.video.sdk.models.enums.HMSTrackUpdate
|
|
18
18
|
import live.hms.video.sdk.models.trackchangerequest.HMSChangeTrackStateRequest
|
|
19
19
|
import live.hms.video.utils.HMSCoroutineScope
|
|
20
|
+
import live.hms.video.utils.HmsUtilities
|
|
20
21
|
|
|
21
22
|
class HmsSDK(
|
|
22
23
|
data: ReadableMap?,
|
|
@@ -140,6 +141,40 @@ class HmsSDK(
|
|
|
140
141
|
previewInProgress = false
|
|
141
142
|
}
|
|
142
143
|
|
|
144
|
+
override fun onPeerUpdate(type: HMSPeerUpdate, peer: HMSPeer) {
|
|
145
|
+
val updateType = type.name
|
|
146
|
+
val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
|
|
147
|
+
val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
|
|
148
|
+
val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
|
|
149
|
+
val hmsPeer = HmsDecoder.getHmsPeer(peer)
|
|
150
|
+
|
|
151
|
+
val data: WritableMap = Arguments.createMap()
|
|
152
|
+
|
|
153
|
+
data.putMap("peer", hmsPeer)
|
|
154
|
+
data.putMap("room", roomData)
|
|
155
|
+
data.putString("type", updateType)
|
|
156
|
+
data.putMap("localPeer", localPeerData)
|
|
157
|
+
data.putArray("remotePeers", remotePeerData)
|
|
158
|
+
data.putString("id", id)
|
|
159
|
+
delegate.emitEvent("ON_PEER_UPDATE", data)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
override fun onRoomUpdate(type: HMSRoomUpdate, hmsRoom: HMSRoom) {
|
|
163
|
+
val updateType = type.name
|
|
164
|
+
val roomData = HmsDecoder.getHmsRoom(hmsRoom)
|
|
165
|
+
val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
|
|
166
|
+
val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
|
|
167
|
+
|
|
168
|
+
val data: WritableMap = Arguments.createMap()
|
|
169
|
+
|
|
170
|
+
data.putString("type", updateType)
|
|
171
|
+
data.putMap("room", roomData)
|
|
172
|
+
data.putMap("localPeer", localPeerData)
|
|
173
|
+
data.putArray("remotePeers", remotePeerData)
|
|
174
|
+
data.putString("id", id)
|
|
175
|
+
delegate.emitEvent("ON_ROOM_UPDATE", data)
|
|
176
|
+
}
|
|
177
|
+
|
|
143
178
|
override fun onPreview(room: HMSRoom, localTracks: Array<HMSTrack>) {
|
|
144
179
|
val previewTracks = HmsDecoder.getPreviewTracks(localTracks)
|
|
145
180
|
val hmsRoom = HmsDecoder.getHmsRoom(room)
|
|
@@ -381,19 +416,6 @@ class HmsSDK(
|
|
|
381
416
|
fun setLocalMute(data: ReadableMap) {
|
|
382
417
|
val isMute = data.getBoolean("isMute")
|
|
383
418
|
hmsSDK?.getLocalPeer()?.audioTrack?.setMute(isMute)
|
|
384
|
-
val type = if (isMute) "TRACK_MUTED" else "TRACK_UNMUTED"
|
|
385
|
-
val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
|
|
386
|
-
val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
|
|
387
|
-
val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
|
|
388
|
-
|
|
389
|
-
val map: WritableMap = Arguments.createMap()
|
|
390
|
-
|
|
391
|
-
map.putMap("room", roomData)
|
|
392
|
-
map.putString("type", type)
|
|
393
|
-
map.putMap("localPeer", localPeerData)
|
|
394
|
-
map.putArray("remotePeers", remotePeerData)
|
|
395
|
-
map.putString("id", id)
|
|
396
|
-
delegate.emitEvent("ON_TRACK_UPDATE", map)
|
|
397
419
|
}
|
|
398
420
|
|
|
399
421
|
fun setLocalVideoMute(data: ReadableMap) {
|
|
@@ -487,8 +509,7 @@ class HmsSDK(
|
|
|
487
509
|
)
|
|
488
510
|
if (requiredKeys) {
|
|
489
511
|
val peerId = data.getString("peerId")
|
|
490
|
-
val
|
|
491
|
-
val peer = HmsHelper.getPeerFromPeerId(peerId, peers)
|
|
512
|
+
val peer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.getRoom())
|
|
492
513
|
if (peer != null) {
|
|
493
514
|
hmsSDK?.sendDirectMessage(
|
|
494
515
|
data.getString("message") as String,
|
|
@@ -526,7 +547,7 @@ class HmsSDK(
|
|
|
526
547
|
val force = data.getBoolean("force")
|
|
527
548
|
|
|
528
549
|
if (peerId !== null && role !== null) {
|
|
529
|
-
val hmsPeer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.
|
|
550
|
+
val hmsPeer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.getRoom())
|
|
530
551
|
val hmsRole = HmsHelper.getRoleFromRoleName(role, hmsSDK?.getRoles())
|
|
531
552
|
|
|
532
553
|
if (hmsRole != null && hmsPeer != null) {
|
|
@@ -561,8 +582,7 @@ class HmsSDK(
|
|
|
561
582
|
if (requiredKeys) {
|
|
562
583
|
val trackId = data.getString("trackId")
|
|
563
584
|
val mute = data.getBoolean("mute")
|
|
564
|
-
val
|
|
565
|
-
val track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
|
|
585
|
+
val track = HmsHelper.getTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
566
586
|
if (track != null) {
|
|
567
587
|
hmsSDK?.changeTrackState(
|
|
568
588
|
track,
|
|
@@ -641,11 +661,9 @@ class HmsSDK(
|
|
|
641
661
|
HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
|
|
642
662
|
if (requiredKeys) {
|
|
643
663
|
val trackId = data.getString("trackId")
|
|
644
|
-
val
|
|
645
|
-
val localPeer = hmsSDK?.getLocalPeer()
|
|
646
|
-
val localTrack = HmsHelper.getLocalTrackFromTrackId(trackId, localPeer)
|
|
664
|
+
val localTrack = HmsHelper.getTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
647
665
|
if (localTrack == null) {
|
|
648
|
-
val track = HmsHelper.getTrackFromTrackId(trackId,
|
|
666
|
+
val track = HmsHelper.getTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
649
667
|
if (track != null) {
|
|
650
668
|
val mute = track.isMute
|
|
651
669
|
callback?.resolve(mute)
|
|
@@ -669,8 +687,7 @@ class HmsSDK(
|
|
|
669
687
|
)
|
|
670
688
|
if (requiredKeys) {
|
|
671
689
|
val peerId = data.getString("peerId")
|
|
672
|
-
val
|
|
673
|
-
val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
|
|
690
|
+
val peer = HmsHelper.getRemotePeerFromPeerId(peerId, hmsSDK?.getRoom())
|
|
674
691
|
|
|
675
692
|
if (peer != null) {
|
|
676
693
|
hmsSDK?.removePeerRequest(
|
|
@@ -742,7 +759,29 @@ class HmsSDK(
|
|
|
742
759
|
}
|
|
743
760
|
}
|
|
744
761
|
|
|
745
|
-
fun
|
|
762
|
+
fun remoteMuteAllAudio() {
|
|
763
|
+
val allAudioTracks = hmsSDK?.getRoom()?.let { HmsUtilities.getAllAudioTracks(it) }
|
|
764
|
+
if (allAudioTracks != null) {
|
|
765
|
+
var customError: HMSException? = null
|
|
766
|
+
for (audioTrack in allAudioTracks) {
|
|
767
|
+
hmsSDK?.changeTrackState(
|
|
768
|
+
audioTrack,
|
|
769
|
+
true,
|
|
770
|
+
object : HMSActionResultListener {
|
|
771
|
+
override fun onSuccess() {}
|
|
772
|
+
override fun onError(error: HMSException) {
|
|
773
|
+
customError = error
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
)
|
|
777
|
+
}
|
|
778
|
+
if (customError != null) {
|
|
779
|
+
self.emitHMSError(customError!!)
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
fun setPlaybackForAllAudio(data: ReadableMap) {
|
|
746
785
|
val requiredKeys = HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("mute", "Boolean")))
|
|
747
786
|
if (requiredKeys) {
|
|
748
787
|
val mute = data.getBoolean("mute")
|
|
@@ -750,7 +789,7 @@ class HmsSDK(
|
|
|
750
789
|
if (peers != null) {
|
|
751
790
|
for (remotePeer in peers) {
|
|
752
791
|
val peerId = remotePeer.peerID
|
|
753
|
-
val peer = HmsHelper.getRemotePeerFromPeerId(peerId,
|
|
792
|
+
val peer = HmsHelper.getRemotePeerFromPeerId(peerId, hmsSDK?.getRoom())
|
|
754
793
|
peer?.audioTrack?.isPlaybackAllowed = !mute
|
|
755
794
|
}
|
|
756
795
|
val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
|
|
@@ -777,9 +816,8 @@ class HmsSDK(
|
|
|
777
816
|
if (requiredKeys) {
|
|
778
817
|
val trackId = data.getString("trackId")
|
|
779
818
|
val playbackAllowed = data.getBoolean("playbackAllowed")
|
|
780
|
-
val
|
|
781
|
-
val
|
|
782
|
-
val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
|
|
819
|
+
val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
820
|
+
val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
783
821
|
if (remoteAudioTrack != null) {
|
|
784
822
|
remoteAudioTrack.isPlaybackAllowed = playbackAllowed
|
|
785
823
|
} else if (remoteVideoTrack != null) {
|
|
@@ -795,9 +833,8 @@ class HmsSDK(
|
|
|
795
833
|
HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
|
|
796
834
|
if (requiredKeys) {
|
|
797
835
|
val trackId = data.getString("trackId")
|
|
798
|
-
val
|
|
799
|
-
val
|
|
800
|
-
val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
|
|
836
|
+
val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
837
|
+
val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, hmsSDK?.getRoom())
|
|
801
838
|
when {
|
|
802
839
|
remoteAudioTrack != null -> {
|
|
803
840
|
val isPlaybackAllowed = remoteAudioTrack.isPlaybackAllowed
|
|
@@ -1043,4 +1080,32 @@ class HmsSDK(
|
|
|
1043
1080
|
}
|
|
1044
1081
|
}
|
|
1045
1082
|
}
|
|
1083
|
+
|
|
1084
|
+
fun changeName(data: ReadableMap, callback: Promise?) {
|
|
1085
|
+
val requiredKeys = HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("name", "String")))
|
|
1086
|
+
if (requiredKeys) {
|
|
1087
|
+
val name = data.getString("name")
|
|
1088
|
+
if (name != null && name != "") {
|
|
1089
|
+
hmsSDK?.changeName(
|
|
1090
|
+
name,
|
|
1091
|
+
object : HMSActionResultListener {
|
|
1092
|
+
override fun onSuccess() {
|
|
1093
|
+
callback?.resolve(emitHMSSuccess())
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
override fun onError(error: HMSException) {
|
|
1097
|
+
callback?.reject(error.code.toString(), error.message)
|
|
1098
|
+
self.emitHMSError(error)
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
)
|
|
1102
|
+
} else {
|
|
1103
|
+
self.emitCustomError("NAME_UNDEFINED")
|
|
1104
|
+
callback?.reject("101", "NAME_UNDEFINED")
|
|
1105
|
+
}
|
|
1106
|
+
} else {
|
|
1107
|
+
callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
|
|
1108
|
+
self.emitRequiredKeysError()
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1046
1111
|
}
|
|
@@ -31,7 +31,7 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
|
|
|
31
31
|
surfaceView.setEnableHardwareScaler(true)
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
fun onReceiveNativeEvent() {
|
|
34
|
+
private fun onReceiveNativeEvent() {
|
|
35
35
|
val event: WritableMap = Arguments.createMap()
|
|
36
36
|
event.putString("message", "MyMessage")
|
|
37
37
|
val reactContext = context as ReactContext
|