@100mslive/react-native-hms 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +3 -3
- package/android/local.properties +8 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +15 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +43 -5
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +120 -25
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +220 -26
- package/ios/HMSConstants.swift +1 -0
- package/ios/HMSDecoder.swift +16 -5
- package/ios/HMSHelper.swift +33 -4
- package/ios/HMSManager.m +26 -0
- package/ios/HMSManager.swift +45 -1
- package/ios/HMSRNSDK.swift +158 -15
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/commonjs/classes/HMSAudioCodec.js +1 -2
- package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioDevice.js +1 -2
- package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMixingMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
- package/lib/commonjs/classes/HMSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSCameraFacing.js +1 -2
- package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
- package/lib/commonjs/classes/HMSConstants.js +1 -2
- package/lib/commonjs/classes/HMSConstants.js.map +1 -1
- package/lib/commonjs/classes/HMSEventEmitter.js +1 -2
- package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -1
- package/lib/commonjs/classes/HMSIOSAudioMode.js +1 -2
- package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
- package/lib/commonjs/classes/HMSLayer.js +1 -2
- package/lib/commonjs/classes/HMSLayer.js.map +1 -1
- package/lib/commonjs/classes/HMSLogAlarmManager.js +1 -2
- package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
- package/lib/commonjs/classes/HMSLogLevel.js +1 -2
- package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
- package/lib/commonjs/classes/HMSLogger.js +1 -2
- package/lib/commonjs/classes/HMSLogger.js.map +1 -1
- package/lib/commonjs/classes/HMSManagerModule.js +1 -2
- package/lib/commonjs/classes/HMSManagerModule.js.map +1 -1
- package/lib/commonjs/classes/HMSMessageRecipientType.js +1 -2
- package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
- package/lib/commonjs/classes/HMSNativeEventListener.js +1 -2
- package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -1
- package/lib/commonjs/classes/HMSPIPListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSPeer.js +15 -0
- package/lib/commonjs/classes/HMSPeer.js.map +1 -1
- package/lib/commonjs/classes/HMSPeerListIterator.js +64 -0
- package/lib/commonjs/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/commonjs/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/commonjs/classes/HMSPeerUpdate.js +3 -4
- package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSPeersCache.js +8 -2
- package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
- package/lib/commonjs/classes/HMSQualityLimitationReason.js +1 -2
- package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomCache.js +1 -2
- package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
- package/lib/commonjs/classes/HMSRoomUpdate.js +1 -2
- package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSSDK.js +152 -6
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js +1 -2
- package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackSource.js +1 -2
- package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackType.js +1 -2
- package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
- package/lib/commonjs/classes/HMSTrackUpdate.js +1 -2
- package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
- package/lib/commonjs/classes/HMSUpdateListenerActions.js +2 -2
- package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoCodec.js +1 -2
- package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
- package/lib/commonjs/classes/HMSVideoViewMode.js +1 -2
- package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +3 -4
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +3 -4
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +2 -4
- package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js +5 -10
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/commonjs/hooks/useHMSPeerUpdates.js +2 -2
- package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
- package/lib/commonjs/index.js +1 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hls-player-stats-store.js +1 -2
- package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
- package/lib/commonjs/stores/hms-store.js +1 -2
- package/lib/commonjs/stores/hms-store.js.map +1 -1
- package/lib/commonjs/types.js +3 -6
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/classes/HMSPIPListenerActions.js +1 -0
- package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
- package/lib/module/classes/HMSPeer.js +15 -0
- package/lib/module/classes/HMSPeer.js.map +1 -1
- package/lib/module/classes/HMSPeerListIterator.js +58 -0
- package/lib/module/classes/HMSPeerListIterator.js.map +1 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js +2 -0
- package/lib/module/classes/HMSPeerListIteratorOptions.js.map +1 -0
- package/lib/module/classes/HMSPeerUpdate.js +2 -1
- package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
- package/lib/module/classes/HMSPeersCache.js +7 -0
- package/lib/module/classes/HMSPeersCache.js.map +1 -1
- package/lib/module/classes/HMSSDK.js +153 -7
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
- package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
- package/lib/typescript/classes/HMSPIPListenerActions.d.ts +1 -0
- package/lib/typescript/classes/HMSPeer.d.ts +3 -0
- package/lib/typescript/classes/HMSPeerListIterator.d.ts +9 -0
- package/lib/typescript/classes/HMSPeerListIteratorOptions.d.ts +24 -0
- package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -1
- package/lib/typescript/classes/HMSPeersCache.d.ts +1 -0
- package/lib/typescript/classes/HMSSDK.d.ts +46 -1
- package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
- package/package.json +1 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSPIPListenerActions.ts +1 -0
- package/src/classes/HMSPeer.ts +25 -0
- package/src/classes/HMSPeerListIterator.ts +60 -0
- package/src/classes/HMSPeerListIteratorOptions.ts +26 -0
- package/src/classes/HMSPeerUpdate.ts +2 -0
- package/src/classes/HMSPeersCache.ts +7 -0
- package/src/classes/HMSSDK.tsx +187 -4
- package/src/classes/HMSUpdateListenerActions.ts +1 -0
- package/android/.gradle/6.7.1/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.7.1/gc.properties +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/6.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/6.9/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/configuration-cache/gc.properties +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
|
@@ -12,6 +12,7 @@ import live.hms.video.error.HMSException
|
|
|
12
12
|
import live.hms.video.media.settings.HMSLayer
|
|
13
13
|
import live.hms.video.media.tracks.*
|
|
14
14
|
import live.hms.video.sdk.*
|
|
15
|
+
import live.hms.video.sdk.listeners.PeerListResultListener
|
|
15
16
|
import live.hms.video.sdk.models.*
|
|
16
17
|
import live.hms.video.sdk.models.enums.AudioMixingMode
|
|
17
18
|
import live.hms.video.sdk.models.enums.HMSPeerUpdate
|
|
@@ -50,6 +51,7 @@ class HMSRNSDK(
|
|
|
50
51
|
private var eventsEnableStatus = mutableMapOf<String, Boolean>()
|
|
51
52
|
private var sessionStore: HmsSessionStore? = null
|
|
52
53
|
private val keyChangeObservers = mutableMapOf<String, HMSKeyChangeListener?>()
|
|
54
|
+
private val peerListIterators = mutableMapOf<String, PeerListIterator>()
|
|
53
55
|
|
|
54
56
|
init {
|
|
55
57
|
val builder = HMSSDK.Builder(reactApplicationContext)
|
|
@@ -131,6 +133,7 @@ class HMSRNSDK(
|
|
|
131
133
|
eventsEnableStatus.clear()
|
|
132
134
|
sessionStore = null
|
|
133
135
|
keyChangeObservers.clear()
|
|
136
|
+
peerListIterators.clear()
|
|
134
137
|
HMSDecoder.clearRestrictDataStates()
|
|
135
138
|
}
|
|
136
139
|
|
|
@@ -241,6 +244,34 @@ class HMSRNSDK(
|
|
|
241
244
|
data.putString("id", id)
|
|
242
245
|
delegate.emitEvent("ON_PREVIEW", data)
|
|
243
246
|
}
|
|
247
|
+
|
|
248
|
+
/*
|
|
249
|
+
override fun peerListUpdated(addedPeers: ArrayList<HMSPeer>?, removedPeers: ArrayList<HMSPeer>?) {
|
|
250
|
+
|
|
251
|
+
if (eventsEnableStatus["ON_PEER_LIST_UPDATED"] != true) {
|
|
252
|
+
return
|
|
253
|
+
}
|
|
254
|
+
val data: WritableMap = Arguments.createMap()
|
|
255
|
+
val addedPeersArray: WritableArray = Arguments.createArray()
|
|
256
|
+
val removedPeersArray: WritableArray = Arguments.createArray()
|
|
257
|
+
|
|
258
|
+
if (addedPeers != null) {
|
|
259
|
+
for (peer in addedPeers) {
|
|
260
|
+
addedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (removedPeers != null) {
|
|
265
|
+
for (peer in removedPeers) {
|
|
266
|
+
removedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
data.putArray("addedPeers", addedPeersArray)
|
|
271
|
+
data.putArray("removedPeers", removedPeersArray)
|
|
272
|
+
delegate.emitEvent("ON_PEER_LIST_UPDATED", data)
|
|
273
|
+
}
|
|
274
|
+
*/
|
|
244
275
|
},
|
|
245
276
|
)
|
|
246
277
|
} else {
|
|
@@ -440,6 +471,35 @@ class HMSRNSDK(
|
|
|
440
471
|
data.putString("id", id)
|
|
441
472
|
delegate.emitEvent("ON_SESSION_STORE_AVAILABLE", data)
|
|
442
473
|
}
|
|
474
|
+
|
|
475
|
+
override fun peerListUpdated(
|
|
476
|
+
addedPeers: ArrayList<HMSPeer>?,
|
|
477
|
+
removedPeers: ArrayList<HMSPeer>?,
|
|
478
|
+
) {
|
|
479
|
+
if (eventsEnableStatus["ON_PEER_LIST_UPDATED"] != true) {
|
|
480
|
+
return
|
|
481
|
+
}
|
|
482
|
+
val data: WritableMap = Arguments.createMap()
|
|
483
|
+
val addedPeersArray: WritableArray = Arguments.createArray()
|
|
484
|
+
val removedPeersArray: WritableArray = Arguments.createArray()
|
|
485
|
+
|
|
486
|
+
if (addedPeers != null) {
|
|
487
|
+
for (peer in addedPeers) {
|
|
488
|
+
addedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
if (removedPeers != null) {
|
|
493
|
+
for (peer in removedPeers) {
|
|
494
|
+
removedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
data.putString("id", id)
|
|
499
|
+
data.putArray("addedPeers", addedPeersArray)
|
|
500
|
+
data.putArray("removedPeers", removedPeersArray)
|
|
501
|
+
delegate.emitEvent("ON_PEER_LIST_UPDATED", data)
|
|
502
|
+
}
|
|
443
503
|
},
|
|
444
504
|
)
|
|
445
505
|
} catch (e: HMSException) {
|
|
@@ -1054,30 +1114,31 @@ class HMSRNSDK(
|
|
|
1054
1114
|
arrayOf(Pair("peerId", "String"), Pair("reason", "String")),
|
|
1055
1115
|
)
|
|
1056
1116
|
if (requiredKeys === null) {
|
|
1057
|
-
|
|
1058
|
-
|
|
1117
|
+
HMSCoroutineScope.launch {
|
|
1118
|
+
val peerId = data.getString("peerId")
|
|
1059
1119
|
|
|
1060
|
-
|
|
1061
|
-
hmsSDK?.removePeerRequest(
|
|
1062
|
-
peer,
|
|
1063
|
-
data.getString("reason") as String,
|
|
1064
|
-
object : HMSActionResultListener {
|
|
1065
|
-
override fun onSuccess() {
|
|
1066
|
-
callback?.resolve(emitHMSSuccess())
|
|
1067
|
-
}
|
|
1120
|
+
val peer = HMSHelper.getRemotePeerFromPeerId(peerId, hmsSDK)
|
|
1068
1121
|
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1122
|
+
if (peer != null) {
|
|
1123
|
+
hmsSDK?.removePeerRequest(
|
|
1124
|
+
peer,
|
|
1125
|
+
data.getString("reason") as String,
|
|
1126
|
+
object : HMSActionResultListener {
|
|
1127
|
+
override fun onSuccess() {
|
|
1128
|
+
callback?.resolve(emitHMSSuccess())
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
override fun onError(error: HMSException) {
|
|
1132
|
+
callback?.reject(error.code.toString(), error.message)
|
|
1133
|
+
}
|
|
1134
|
+
},
|
|
1135
|
+
)
|
|
1136
|
+
} else {
|
|
1137
|
+
callback?.reject("101", "PEER_NOT_FOUND")
|
|
1138
|
+
}
|
|
1077
1139
|
}
|
|
1078
1140
|
} else {
|
|
1079
1141
|
val errorMessage = "removePeer: $requiredKeys"
|
|
1080
|
-
self.emitRequiredKeysError(errorMessage)
|
|
1081
1142
|
rejectCallback(callback, errorMessage)
|
|
1082
1143
|
}
|
|
1083
1144
|
}
|
|
@@ -1221,13 +1282,10 @@ class HMSRNSDK(
|
|
|
1221
1282
|
val requiredKeys = HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("mute", "Boolean")))
|
|
1222
1283
|
if (requiredKeys === null) {
|
|
1223
1284
|
val mute = data.getBoolean("mute")
|
|
1224
|
-
val
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
val peer = HMSHelper.getRemotePeerFromPeerId(peerId, hmsSDK?.getRoom())
|
|
1229
|
-
peer?.audioTrack?.isPlaybackAllowed = !mute
|
|
1230
|
-
}
|
|
1285
|
+
val remotePeers = hmsSDK?.getRemotePeers()
|
|
1286
|
+
|
|
1287
|
+
remotePeers?.forEach() {
|
|
1288
|
+
it.audioTrack?.isPlaybackAllowed = !mute
|
|
1231
1289
|
}
|
|
1232
1290
|
} else {
|
|
1233
1291
|
val errorMessage = "setPlaybackForAllAudio: $requiredKeys"
|
|
@@ -1733,6 +1791,9 @@ class HMSRNSDK(
|
|
|
1733
1791
|
"role" -> {
|
|
1734
1792
|
result.putMap("role", HMSDecoder.getHmsRole(peer.hmsRole))
|
|
1735
1793
|
}
|
|
1794
|
+
"isHandRaised" -> {
|
|
1795
|
+
result.putBoolean("isHandRaised", peer.isHandRaised)
|
|
1796
|
+
}
|
|
1736
1797
|
"customerUserID" -> {
|
|
1737
1798
|
if (peer.customerUserID !== null) {
|
|
1738
1799
|
result.putString("customerUserID", peer.customerUserID)
|
|
@@ -2308,4 +2369,137 @@ class HMSRNSDK(
|
|
|
2308
2369
|
},
|
|
2309
2370
|
)
|
|
2310
2371
|
}
|
|
2372
|
+
|
|
2373
|
+
fun raiseLocalPeerHand(
|
|
2374
|
+
data: ReadableMap,
|
|
2375
|
+
promise: Promise?,
|
|
2376
|
+
) {
|
|
2377
|
+
hmsSDK?.raiseLocalPeerHand(
|
|
2378
|
+
object : HMSActionResultListener {
|
|
2379
|
+
override fun onError(error: HMSException) {
|
|
2380
|
+
promise?.reject(error.code.toString(), error.message)
|
|
2381
|
+
}
|
|
2382
|
+
|
|
2383
|
+
override fun onSuccess() {
|
|
2384
|
+
promise?.resolve(true)
|
|
2385
|
+
}
|
|
2386
|
+
},
|
|
2387
|
+
)
|
|
2388
|
+
}
|
|
2389
|
+
|
|
2390
|
+
fun lowerLocalPeerHand(
|
|
2391
|
+
data: ReadableMap,
|
|
2392
|
+
promise: Promise?,
|
|
2393
|
+
) {
|
|
2394
|
+
hmsSDK?.lowerLocalPeerHand(
|
|
2395
|
+
object : HMSActionResultListener {
|
|
2396
|
+
override fun onError(error: HMSException) {
|
|
2397
|
+
promise?.reject(error.code.toString(), error.message)
|
|
2398
|
+
}
|
|
2399
|
+
|
|
2400
|
+
override fun onSuccess() {
|
|
2401
|
+
promise?.resolve(true)
|
|
2402
|
+
}
|
|
2403
|
+
},
|
|
2404
|
+
)
|
|
2405
|
+
}
|
|
2406
|
+
|
|
2407
|
+
fun lowerRemotePeerHand(
|
|
2408
|
+
data: ReadableMap,
|
|
2409
|
+
promise: Promise?,
|
|
2410
|
+
) {
|
|
2411
|
+
val peerId = data.getString("peerId")
|
|
2412
|
+
peerId?.let { peerID ->
|
|
2413
|
+
hmsSDK?.getRoom()?.let { room ->
|
|
2414
|
+
val peer = HMSHelper.getPeerFromPeerId(peerID, room)
|
|
2415
|
+
peer?.let { peer ->
|
|
2416
|
+
hmsSDK?.lowerRemotePeerHand(
|
|
2417
|
+
forPeer = peer,
|
|
2418
|
+
object : HMSActionResultListener {
|
|
2419
|
+
override fun onError(error: HMSException) {
|
|
2420
|
+
promise?.reject(error.code.toString(), error.message)
|
|
2421
|
+
}
|
|
2422
|
+
|
|
2423
|
+
override fun onSuccess() {
|
|
2424
|
+
promise?.resolve(true)
|
|
2425
|
+
}
|
|
2426
|
+
},
|
|
2427
|
+
)
|
|
2428
|
+
}
|
|
2429
|
+
}
|
|
2430
|
+
}
|
|
2431
|
+
}
|
|
2432
|
+
|
|
2433
|
+
fun getPeerListIterator(data: ReadableMap): WritableMap? {
|
|
2434
|
+
val uniqueId = data.getString("uniqueId")
|
|
2435
|
+
if (uniqueId == null) {
|
|
2436
|
+
print("Error in getPeerListIterator: uniqueId is not available")
|
|
2437
|
+
return null
|
|
2438
|
+
}
|
|
2439
|
+
|
|
2440
|
+
val options = HMSHelper.getPeerListIteratorOptions(data)
|
|
2441
|
+
|
|
2442
|
+
hmsSDK?.let {
|
|
2443
|
+
val iterator = it.getPeerListIterator(options)
|
|
2444
|
+
|
|
2445
|
+
peerListIterators[uniqueId] = iterator
|
|
2446
|
+
val map = Arguments.createMap()
|
|
2447
|
+
map.putBoolean("success", true)
|
|
2448
|
+
map.putString("uniqueId", uniqueId)
|
|
2449
|
+
return map
|
|
2450
|
+
}
|
|
2451
|
+
print("Error in getPeerListIterator: HMS SDK is not available")
|
|
2452
|
+
return null
|
|
2453
|
+
}
|
|
2454
|
+
|
|
2455
|
+
fun peerListIteratorHasNext(
|
|
2456
|
+
data: ReadableMap,
|
|
2457
|
+
promise: Promise?,
|
|
2458
|
+
) {
|
|
2459
|
+
val uniqueId = data.getString("uniqueId")
|
|
2460
|
+
|
|
2461
|
+
peerListIterators[uniqueId]?.let {
|
|
2462
|
+
promise?.resolve(it.hasNext())
|
|
2463
|
+
return
|
|
2464
|
+
}
|
|
2465
|
+
promise?.reject("101", "PeerListIterator is not available")
|
|
2466
|
+
}
|
|
2467
|
+
|
|
2468
|
+
fun peerListIteratorNext(
|
|
2469
|
+
data: ReadableMap,
|
|
2470
|
+
promise: Promise?,
|
|
2471
|
+
) {
|
|
2472
|
+
val uniqueId = data.getString("uniqueId")
|
|
2473
|
+
|
|
2474
|
+
val peerListIterator = peerListIterators[uniqueId]
|
|
2475
|
+
|
|
2476
|
+
if (peerListIterator == null) {
|
|
2477
|
+
promise?.reject("101", "PeerListIterator is not available")
|
|
2478
|
+
return
|
|
2479
|
+
}
|
|
2480
|
+
|
|
2481
|
+
peerListIterator.next(
|
|
2482
|
+
object : PeerListResultListener {
|
|
2483
|
+
override fun onError(error: HMSException) {
|
|
2484
|
+
promise?.reject(error.code.toString(), error.message)
|
|
2485
|
+
}
|
|
2486
|
+
|
|
2487
|
+
override fun onSuccess(result: ArrayList<HMSPeer>) {
|
|
2488
|
+
val resultData: WritableMap = Arguments.createMap()
|
|
2489
|
+
|
|
2490
|
+
resultData.putInt("totalCount", peerListIterator.totalCount)
|
|
2491
|
+
|
|
2492
|
+
val array: WritableArray = Arguments.createArray()
|
|
2493
|
+
for (peer in result) {
|
|
2494
|
+
val hmsPeer = HMSDecoder.getHmsPeer(peer)
|
|
2495
|
+
array.pushMap(hmsPeer)
|
|
2496
|
+
}
|
|
2497
|
+
|
|
2498
|
+
resultData.putArray("peers", array)
|
|
2499
|
+
|
|
2500
|
+
promise?.resolve(resultData)
|
|
2501
|
+
}
|
|
2502
|
+
},
|
|
2503
|
+
)
|
|
2504
|
+
}
|
|
2311
2505
|
}
|
package/ios/HMSConstants.swift
CHANGED
|
@@ -14,6 +14,7 @@ struct HMSConstants {
|
|
|
14
14
|
static let ON_JOIN = "ON_JOIN"
|
|
15
15
|
static let ON_ROOM_UPDATE = "ON_ROOM_UPDATE"
|
|
16
16
|
static let ON_PEER_UPDATE = "3"
|
|
17
|
+
static let ON_PEER_LIST_UPDATED = "ON_PEER_LIST_UPDATED"
|
|
17
18
|
static let ON_TRACK_UPDATE = "ON_TRACK_UPDATE"
|
|
18
19
|
static let ON_ROLE_CHANGE_REQUEST = "ON_ROLE_CHANGE_REQUEST"
|
|
19
20
|
static let ON_CHANGE_TRACK_STATE_REQUEST = "ON_CHANGE_TRACK_STATE_REQUEST"
|
package/ios/HMSDecoder.swift
CHANGED
|
@@ -93,6 +93,7 @@ class HMSDecoder: NSObject {
|
|
|
93
93
|
case .nameUpdated: return "5"
|
|
94
94
|
case .metadataUpdated: return "6"
|
|
95
95
|
case .networkQualityUpdated: return "7"
|
|
96
|
+
case .handRaiseUpdated: return "8"
|
|
96
97
|
default: return nil
|
|
97
98
|
}
|
|
98
99
|
}
|
|
@@ -112,6 +113,9 @@ class HMSDecoder: NSObject {
|
|
|
112
113
|
case .metadataUpdated:
|
|
113
114
|
peerDict["metadata"] = peer.metadata ?? ""
|
|
114
115
|
return peerDict
|
|
116
|
+
case .handRaiseUpdated:
|
|
117
|
+
peerDict["isHandRaised"] = peer.isHandRaised
|
|
118
|
+
return peerDict
|
|
115
119
|
case .roleUpdated:
|
|
116
120
|
peerDict["role"] = getHmsRole(peer.role)
|
|
117
121
|
return peerDict
|
|
@@ -138,6 +142,9 @@ class HMSDecoder: NSObject {
|
|
|
138
142
|
case .metadataUpdated:
|
|
139
143
|
peerDict["metadata"] = peer.metadata ?? ""
|
|
140
144
|
return peerDict
|
|
145
|
+
case .handRaiseUpdated:
|
|
146
|
+
peerDict["isHandRaised"] = peer.isHandRaised
|
|
147
|
+
return peerDict
|
|
141
148
|
case .roleUpdated:
|
|
142
149
|
peerDict["role"] = getHmsRole(peer.role)
|
|
143
150
|
return peerDict
|
|
@@ -167,6 +174,7 @@ class HMSDecoder: NSObject {
|
|
|
167
174
|
if let metadata = peer.metadata {
|
|
168
175
|
data["metadata"] = metadata
|
|
169
176
|
}
|
|
177
|
+
data["isHandRaised"] = peer.isHandRaised
|
|
170
178
|
|
|
171
179
|
// joinedAt
|
|
172
180
|
|
|
@@ -883,16 +891,19 @@ class HMSDecoder: NSObject {
|
|
|
883
891
|
}
|
|
884
892
|
|
|
885
893
|
static func getRemoteVideoStats(_ data: HMSRemoteVideoStats) -> [Any] {
|
|
886
|
-
|
|
887
|
-
|
|
894
|
+
|
|
895
|
+
var stats = [Any]()
|
|
896
|
+
|
|
897
|
+
stats = [
|
|
888
898
|
data.bitrate,
|
|
889
|
-
data.bytesReceived,
|
|
899
|
+
Double(data.bytesReceived),
|
|
890
900
|
data.frameRate,
|
|
891
901
|
data.jitter,
|
|
892
|
-
data.packetsLost,
|
|
893
|
-
data.packetsReceived,
|
|
902
|
+
Double(data.packetsLost),
|
|
903
|
+
Double(data.packetsReceived),
|
|
894
904
|
HMSDecoder.getHmsVideoResolution(data.resolution)
|
|
895
905
|
]
|
|
906
|
+
return stats
|
|
896
907
|
}
|
|
897
908
|
|
|
898
909
|
static func getHmsMessageRecipient(_ recipient: HMSMessageRecipient) -> [String: Any] {
|
package/ios/HMSHelper.swift
CHANGED
|
@@ -17,7 +17,7 @@ class HMSHelper: NSObject {
|
|
|
17
17
|
return "SEND_ALL_REQUIRED_KEYS"
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer?) -> HMSPeer? {
|
|
20
|
+
static func getPeerFromPeerId(_ peerID: String?, remotePeers: [HMSRemotePeer]?, localPeer: HMSLocalPeer? = nil) -> HMSPeer? {
|
|
21
21
|
|
|
22
22
|
guard let peerID = peerID, let peers = remotePeers else { return nil }
|
|
23
23
|
if peerID == localPeer?.peerID {
|
|
@@ -26,11 +26,25 @@ class HMSHelper: NSObject {
|
|
|
26
26
|
return peers.first { $0.peerID == peerID }
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
static func getRemotePeerFromPeerId(_ peerID: String?,
|
|
29
|
+
static func getRemotePeerFromPeerId(_ peerID: String?, hmsSDK: HMSSDK?, completion: @escaping (_ peer: HMSPeer?) -> Void) {
|
|
30
|
+
guard let peerID = peerID, let hms = hmsSDK, let peers = hms.remotePeers else {
|
|
31
|
+
completion(nil)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
if let peerFromList = peers.first(where: { $0.peerID == peerID }) {
|
|
36
|
+
completion(peerFromList)
|
|
37
|
+
return
|
|
38
|
+
}
|
|
32
39
|
|
|
33
|
-
|
|
40
|
+
let peerListIterator = hms.getPeerListIterator(options: HMSPeerListIteratorOptions(filterByPeerIds: [peerID], limit: 1))
|
|
41
|
+
peerListIterator.next() { peers, error in
|
|
42
|
+
guard let nonnilPeers = peers, let firstPeer = nonnilPeers.first else {
|
|
43
|
+
completion(nil)
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
completion(firstPeer)
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
49
|
|
|
36
50
|
static func getRolesFromRoleNames(_ targetedRoles: [String]?, roles: [HMSRole]?) -> [HMSRole] {
|
|
@@ -347,6 +361,21 @@ class HMSHelper: NSObject {
|
|
|
347
361
|
return nil
|
|
348
362
|
}
|
|
349
363
|
|
|
364
|
+
static func getPeerListIteratorOptions(_ data: NSDictionary?) -> HMSPeerListIteratorOptions? {
|
|
365
|
+
guard let config = data else {
|
|
366
|
+
return nil
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
let role = config["byRoleName"] as? String
|
|
370
|
+
let peerIds = config["peerIds"] as? [String]
|
|
371
|
+
|
|
372
|
+
if let limit = config["limit"] as? Int {
|
|
373
|
+
return HMSPeerListIteratorOptions(filterByRoleName: role, filterByPeerIds: peerIds, limit: limit)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
return HMSPeerListIteratorOptions(filterByRoleName: role, filterByPeerIds: peerIds)
|
|
377
|
+
}
|
|
378
|
+
|
|
350
379
|
private static func getAudioMode(from mode: String?) -> HMSAudioMode? {
|
|
351
380
|
switch mode {
|
|
352
381
|
case "voice":
|
package/ios/HMSManager.m
CHANGED
|
@@ -96,6 +96,18 @@ RCT_EXTERN_METHOD(changeName
|
|
|
96
96
|
: (NSDictionary)data
|
|
97
97
|
: (RCTPromiseResolveBlock)resolve
|
|
98
98
|
: (RCTPromiseRejectBlock)reject)
|
|
99
|
+
RCT_EXTERN_METHOD(raiseLocalPeerHand
|
|
100
|
+
: (NSDictionary)data
|
|
101
|
+
: (RCTPromiseResolveBlock)resolve
|
|
102
|
+
: (RCTPromiseRejectBlock)reject)
|
|
103
|
+
RCT_EXTERN_METHOD(lowerLocalPeerHand
|
|
104
|
+
: (NSDictionary)data
|
|
105
|
+
: (RCTPromiseResolveBlock)resolve
|
|
106
|
+
: (RCTPromiseRejectBlock)reject)
|
|
107
|
+
RCT_EXTERN_METHOD(lowerRemotePeerHand
|
|
108
|
+
: (NSDictionary)data
|
|
109
|
+
: (RCTPromiseResolveBlock)resolve
|
|
110
|
+
: (RCTPromiseRejectBlock)reject)
|
|
99
111
|
RCT_EXTERN_METHOD(destroy
|
|
100
112
|
: (NSDictionary)data
|
|
101
113
|
: (RCTPromiseResolveBlock)resolve
|
|
@@ -240,4 +252,18 @@ RCT_EXTERN_METHOD(acceptRoleChange
|
|
|
240
252
|
: (RCTPromiseResolveBlock)resolve
|
|
241
253
|
: (RCTPromiseRejectBlock)reject)
|
|
242
254
|
|
|
255
|
+
#pragma mark - Peer List Iterator
|
|
256
|
+
|
|
257
|
+
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(getPeerListIterator : (NSDictionary)data)
|
|
258
|
+
|
|
259
|
+
RCT_EXTERN_METHOD(peerListIteratorHasNext
|
|
260
|
+
: (NSDictionary)data
|
|
261
|
+
: (RCTPromiseResolveBlock)resolve
|
|
262
|
+
: (RCTPromiseRejectBlock)reject)
|
|
263
|
+
|
|
264
|
+
RCT_EXTERN_METHOD(peerListIteratorNext
|
|
265
|
+
: (NSDictionary)data
|
|
266
|
+
: (RCTPromiseResolveBlock)resolve
|
|
267
|
+
: (RCTPromiseRejectBlock)reject)
|
|
268
|
+
|
|
243
269
|
@end
|
package/ios/HMSManager.swift
CHANGED
|
@@ -37,7 +37,7 @@ class HMSManager: RCTEventEmitter {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
override func supportedEvents() -> [String]! {
|
|
40
|
-
return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED, HMSConstants.ON_SESSION_STORE_AVAILABLE, HMSConstants.ON_SESSION_STORE_CHANGED]
|
|
40
|
+
return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED, HMSConstants.ON_SESSION_STORE_AVAILABLE, HMSConstants.ON_SESSION_STORE_CHANGED, HMSConstants.ON_PEER_LIST_UPDATED]
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
// MARK: - HMS SDK Delegate Callbacks
|
|
@@ -312,6 +312,27 @@ class HMSManager: RCTEventEmitter {
|
|
|
312
312
|
hms?.changeName(data, resolve, reject)
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
+
@objc
|
|
316
|
+
func raiseLocalPeerHand(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
317
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
318
|
+
|
|
319
|
+
hms?.raiseLocalPeerHand(resolve, reject)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
@objc
|
|
323
|
+
func lowerLocalPeerHand(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
324
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
325
|
+
|
|
326
|
+
hms?.lowerLocalPeerHand(resolve, reject)
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
@objc
|
|
330
|
+
func lowerRemotePeerHand(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
331
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
332
|
+
|
|
333
|
+
hms?.lowerRemotePeerHand(data, resolve, reject)
|
|
334
|
+
}
|
|
335
|
+
|
|
315
336
|
// MARK: - RTMP Streaming & Recording
|
|
316
337
|
|
|
317
338
|
@objc
|
|
@@ -599,4 +620,27 @@ class HMSManager: RCTEventEmitter {
|
|
|
599
620
|
|
|
600
621
|
hms?.removeKeyChangeListener(data, resolve, reject)
|
|
601
622
|
}
|
|
623
|
+
|
|
624
|
+
// MARK: - Peer List Iterator
|
|
625
|
+
|
|
626
|
+
@objc
|
|
627
|
+
func getPeerListIterator(_ data: NSDictionary) -> [AnyHashable: Any]? {
|
|
628
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
629
|
+
|
|
630
|
+
return hms?.getPeerListIterator(data)
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
@objc
|
|
634
|
+
func peerListIteratorHasNext(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
635
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
636
|
+
|
|
637
|
+
hms?.peerListIteratorHasNext(data, resolve, reject)
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
@objc
|
|
641
|
+
func peerListIteratorNext(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
642
|
+
let hms = HMSHelper.getHms(data, hmsCollection)
|
|
643
|
+
|
|
644
|
+
hms?.peerListIteratorNext(data, resolve, reject)
|
|
645
|
+
}
|
|
602
646
|
}
|