@100mslive/react-native-hms 1.8.0 → 1.9.1-beta.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.
Files changed (214) hide show
  1. package/android/build.gradle +3 -3
  2. package/android/local.properties +8 -1
  3. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +1 -1
  4. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +15 -5
  5. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +4 -3
  6. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +43 -5
  7. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +147 -47
  8. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +419 -248
  9. package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +24 -4
  10. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +1 -1
  11. package/ios/HMSConstants.swift +1 -0
  12. package/ios/HMSDecoder.swift +16 -5
  13. package/ios/HMSHLSPlayerManager.swift +20 -11
  14. package/ios/HMSHelper.swift +33 -4
  15. package/ios/HMSManager.m +66 -10
  16. package/ios/HMSManager.swift +65 -21
  17. package/ios/HMSRNSDK.swift +244 -100
  18. package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  19. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  20. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  21. package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  22. package/lib/commonjs/classes/HMSAudioCodec.js +1 -2
  23. package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
  24. package/lib/commonjs/classes/HMSAudioDevice.js +1 -2
  25. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
  26. package/lib/commonjs/classes/HMSAudioMixingMode.js +1 -2
  27. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
  28. package/lib/commonjs/classes/HMSAudioMode.js +1 -2
  29. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
  30. package/lib/commonjs/classes/HMSCameraFacing.js +1 -2
  31. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
  32. package/lib/commonjs/classes/HMSConstants.js +1 -2
  33. package/lib/commonjs/classes/HMSConstants.js.map +1 -1
  34. package/lib/commonjs/classes/HMSEventEmitter.js +1 -2
  35. package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -1
  36. package/lib/commonjs/classes/HMSIOSAudioMode.js +1 -2
  37. package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
  38. package/lib/commonjs/classes/HMSLayer.js +1 -2
  39. package/lib/commonjs/classes/HMSLayer.js.map +1 -1
  40. package/lib/commonjs/classes/HMSLogAlarmManager.js +1 -2
  41. package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
  42. package/lib/commonjs/classes/HMSLogLevel.js +1 -2
  43. package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
  44. package/lib/commonjs/classes/HMSLogger.js +1 -2
  45. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  46. package/lib/commonjs/classes/HMSManagerModule.js +1 -2
  47. package/lib/commonjs/classes/HMSManagerModule.js.map +1 -1
  48. package/lib/commonjs/classes/HMSMessageRecipientType.js +1 -2
  49. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
  50. package/lib/commonjs/classes/HMSNativeEventListener.js +1 -2
  51. package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -1
  52. package/lib/commonjs/classes/HMSPIPConfig.js +4 -0
  53. package/lib/commonjs/classes/HMSPIPConfig.js.map +1 -0
  54. package/lib/commonjs/classes/HMSPIPListenerActions.js +2 -2
  55. package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
  56. package/lib/commonjs/classes/HMSPeer.js +15 -0
  57. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  58. package/lib/commonjs/classes/HMSPeerListIterator.js +64 -0
  59. package/lib/commonjs/classes/HMSPeerListIterator.js.map +1 -0
  60. package/lib/commonjs/classes/HMSPeerListIteratorOptions.js +2 -0
  61. package/lib/commonjs/classes/HMSPeerListIteratorOptions.js.map +1 -0
  62. package/lib/commonjs/classes/HMSPeerUpdate.js +3 -4
  63. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  64. package/lib/commonjs/classes/HMSPeersCache.js +8 -2
  65. package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
  66. package/lib/commonjs/classes/HMSQualityLimitationReason.js +1 -2
  67. package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -1
  68. package/lib/commonjs/classes/HMSRoomCache.js +1 -2
  69. package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
  70. package/lib/commonjs/classes/HMSRoomUpdate.js +1 -2
  71. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  72. package/lib/commonjs/classes/HMSSDK.js +152 -8
  73. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  74. package/lib/commonjs/classes/HMSTrackSettingsInitState.js +1 -2
  75. package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
  76. package/lib/commonjs/classes/HMSTrackSource.js +1 -2
  77. package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
  78. package/lib/commonjs/classes/HMSTrackType.js +1 -2
  79. package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
  80. package/lib/commonjs/classes/HMSTrackUpdate.js +1 -2
  81. package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
  82. package/lib/commonjs/classes/HMSUpdateListenerActions.js +2 -2
  83. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  84. package/lib/commonjs/classes/HMSVideoCodec.js +1 -2
  85. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  86. package/lib/commonjs/classes/HMSVideoViewMode.js +1 -2
  87. package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
  88. package/lib/commonjs/classes/HmsView.js +17 -5
  89. package/lib/commonjs/classes/HmsView.js.map +1 -1
  90. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +11 -9
  91. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  92. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +2 -4
  93. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
  94. package/lib/commonjs/components/HMSHLSPlayer/hooks.js +11 -11
  95. package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
  96. package/lib/commonjs/components/HMSHLSPlayer/index.js +8 -1
  97. package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -1
  98. package/lib/commonjs/hooks/hmsviews.js +17 -0
  99. package/lib/commonjs/hooks/hmsviews.js.map +1 -0
  100. package/lib/commonjs/hooks/useHMSPeerUpdates.js +2 -2
  101. package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
  102. package/lib/commonjs/index.js +10 -3
  103. package/lib/commonjs/index.js.map +1 -1
  104. package/lib/commonjs/stores/hls-player-playback-slice.js +4 -0
  105. package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -1
  106. package/lib/commonjs/stores/hls-player-stats-store.js +1 -2
  107. package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
  108. package/lib/commonjs/stores/hms-store.js +4 -3
  109. package/lib/commonjs/stores/hms-store.js.map +1 -1
  110. package/lib/commonjs/stores/hmsviews-slice.js +19 -0
  111. package/lib/commonjs/stores/hmsviews-slice.js.map +1 -0
  112. package/lib/commonjs/stores/types.js +9 -0
  113. package/lib/commonjs/stores/types.js.map +1 -1
  114. package/lib/commonjs/types.js +4 -7
  115. package/lib/commonjs/types.js.map +1 -1
  116. package/lib/module/classes/HMSPIPConfig.js +2 -0
  117. package/lib/module/classes/HMSPIPConfig.js.map +1 -0
  118. package/lib/module/classes/HMSPIPListenerActions.js +1 -0
  119. package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
  120. package/lib/module/classes/HMSPeer.js +15 -0
  121. package/lib/module/classes/HMSPeer.js.map +1 -1
  122. package/lib/module/classes/HMSPeerListIterator.js +58 -0
  123. package/lib/module/classes/HMSPeerListIterator.js.map +1 -0
  124. package/lib/module/classes/HMSPeerListIteratorOptions.js +2 -0
  125. package/lib/module/classes/HMSPeerListIteratorOptions.js.map +1 -0
  126. package/lib/module/classes/HMSPeerUpdate.js +2 -1
  127. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  128. package/lib/module/classes/HMSPeersCache.js +7 -0
  129. package/lib/module/classes/HMSPeersCache.js.map +1 -1
  130. package/lib/module/classes/HMSSDK.js +153 -10
  131. package/lib/module/classes/HMSSDK.js.map +1 -1
  132. package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
  133. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  134. package/lib/module/classes/HmsView.js +14 -1
  135. package/lib/module/classes/HmsView.js.map +1 -1
  136. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +9 -6
  137. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  138. package/lib/module/components/HMSHLSPlayer/hooks.js +4 -0
  139. package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -1
  140. package/lib/module/components/HMSHLSPlayer/index.js +1 -1
  141. package/lib/module/components/HMSHLSPlayer/index.js.map +1 -1
  142. package/lib/module/hooks/hmsviews.js +12 -0
  143. package/lib/module/hooks/hmsviews.js.map +1 -0
  144. package/lib/module/index.js +1 -0
  145. package/lib/module/index.js.map +1 -1
  146. package/lib/module/stores/hls-player-playback-slice.js +4 -0
  147. package/lib/module/stores/hls-player-playback-slice.js.map +1 -1
  148. package/lib/module/stores/hms-store.js +3 -1
  149. package/lib/module/stores/hms-store.js.map +1 -1
  150. package/lib/module/stores/hmsviews-slice.js +12 -0
  151. package/lib/module/stores/hmsviews-slice.js.map +1 -0
  152. package/lib/module/stores/types.js +9 -0
  153. package/lib/module/stores/types.js.map +1 -1
  154. package/lib/module/types.js +1 -1
  155. package/lib/module/types.js.map +1 -1
  156. package/lib/typescript/classes/HMSPIPConfig.d.ts +7 -0
  157. package/lib/typescript/classes/HMSPIPListenerActions.d.ts +1 -0
  158. package/lib/typescript/classes/HMSPeer.d.ts +3 -0
  159. package/lib/typescript/classes/HMSPeerListIterator.d.ts +9 -0
  160. package/lib/typescript/classes/HMSPeerListIteratorOptions.d.ts +24 -0
  161. package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -1
  162. package/lib/typescript/classes/HMSPeersCache.d.ts +1 -0
  163. package/lib/typescript/classes/HMSSDK.d.ts +47 -8
  164. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
  165. package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +2 -0
  166. package/lib/typescript/components/HMSHLSPlayer/index.d.ts +1 -1
  167. package/lib/typescript/hooks/hmsviews.d.ts +3 -0
  168. package/lib/typescript/index.d.ts +2 -0
  169. package/lib/typescript/stores/hms-store.d.ts +4 -3
  170. package/lib/typescript/stores/hmsviews-slice.d.ts +5 -0
  171. package/lib/typescript/stores/types.d.ts +14 -2
  172. package/lib/typescript/types.d.ts +9 -5
  173. package/package.json +3 -1
  174. package/sdk-versions.json +2 -2
  175. package/src/classes/HMSPIPConfig.ts +7 -0
  176. package/src/classes/HMSPIPListenerActions.ts +1 -0
  177. package/src/classes/HMSPeer.ts +25 -0
  178. package/src/classes/HMSPeerListIterator.ts +60 -0
  179. package/src/classes/HMSPeerListIteratorOptions.ts +26 -0
  180. package/src/classes/HMSPeerUpdate.ts +2 -0
  181. package/src/classes/HMSPeersCache.ts +7 -0
  182. package/src/classes/HMSSDK.tsx +188 -13
  183. package/src/classes/HMSUpdateListenerActions.ts +1 -0
  184. package/src/classes/HmsView.tsx +16 -2
  185. package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +11 -5
  186. package/src/components/HMSHLSPlayer/hooks.ts +7 -0
  187. package/src/components/HMSHLSPlayer/index.ts +1 -0
  188. package/src/hooks/hmsviews.ts +13 -0
  189. package/src/index.ts +2 -0
  190. package/src/stores/hls-player-playback-slice.ts +3 -0
  191. package/src/stores/hms-store.ts +2 -0
  192. package/src/stores/hmsviews-slice.ts +20 -0
  193. package/src/stores/types.ts +20 -1
  194. package/src/types.ts +13 -3
  195. package/android/.gradle/6.7.1/executionHistory/executionHistory.bin +0 -0
  196. package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
  197. package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
  198. package/android/.gradle/6.7.1/fileHashes/fileHashes.bin +0 -0
  199. package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
  200. package/android/.gradle/6.7.1/gc.properties +0 -0
  201. package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
  202. package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
  203. package/android/.gradle/6.9/fileChanges/last-build.bin +0 -0
  204. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  205. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  206. package/android/.gradle/6.9/gc.properties +0 -0
  207. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  208. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  209. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  210. package/android/.gradle/checksums/checksums.lock +0 -0
  211. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  212. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  213. package/android/.gradle/configuration-cache/gc.properties +0 -0
  214. 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)
@@ -65,10 +67,12 @@ class HMSRNSDK(
65
67
  if (frameworkInfo != null) {
66
68
  builder.setFrameworkInfo(frameworkInfo)
67
69
  } else {
68
- emitCustomError("Unable to decode framework info")
70
+ val errorMessage = "Unable to decode framework info"
71
+ throw HMSException(6002, errorMessage, errorMessage, errorMessage, errorMessage, null, false)
69
72
  }
70
73
  } else {
71
- emitCustomError("Framework info not sent in build function")
74
+ val errorMessage = "Framework info not sent in build function"
75
+ throw HMSException(6002, errorMessage, errorMessage, errorMessage, errorMessage, null, false)
72
76
  }
73
77
 
74
78
  if (HMSHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("logSettings", "Map")))) {
@@ -131,6 +135,7 @@ class HMSRNSDK(
131
135
  eventsEnableStatus.clear()
132
136
  sessionStore = null
133
137
  keyChangeObservers.clear()
138
+ peerListIterators.clear()
134
139
  HMSDecoder.clearRestrictDataStates()
135
140
  }
136
141
 
@@ -144,7 +149,7 @@ class HMSRNSDK(
144
149
  delegate.emitEvent("ON_ERROR", data)
145
150
  }
146
151
 
147
- fun emitHMSSuccess(message: HMSMessage? = null): ReadableMap {
152
+ fun getPromiseResolveData(message: HMSMessage? = null): ReadableMap {
148
153
  val hmsMessage =
149
154
  if (message !== null) message.message else "function call executed successfully"
150
155
  val data: WritableMap = Arguments.createMap()
@@ -153,7 +158,7 @@ class HMSRNSDK(
153
158
  return data
154
159
  }
155
160
 
156
- fun emitHMSMessageSuccess(hmsMessage: HMSMessage): ReadableMap {
161
+ fun getPromiseResolveMessageData(hmsMessage: HMSMessage): ReadableMap {
157
162
  val data: WritableMap = Arguments.createMap()
158
163
  data.putString("message", hmsMessage.message)
159
164
  data.putString("messageId", hmsMessage.messageId)
@@ -241,6 +246,34 @@ class HMSRNSDK(
241
246
  data.putString("id", id)
242
247
  delegate.emitEvent("ON_PREVIEW", data)
243
248
  }
249
+
250
+ /*
251
+ override fun peerListUpdated(addedPeers: ArrayList<HMSPeer>?, removedPeers: ArrayList<HMSPeer>?) {
252
+
253
+ if (eventsEnableStatus["ON_PEER_LIST_UPDATED"] != true) {
254
+ return
255
+ }
256
+ val data: WritableMap = Arguments.createMap()
257
+ val addedPeersArray: WritableArray = Arguments.createArray()
258
+ val removedPeersArray: WritableArray = Arguments.createArray()
259
+
260
+ if (addedPeers != null) {
261
+ for (peer in addedPeers) {
262
+ addedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
263
+ }
264
+ }
265
+
266
+ if (removedPeers != null) {
267
+ for (peer in removedPeers) {
268
+ removedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
269
+ }
270
+ }
271
+
272
+ data.putArray("addedPeers", addedPeersArray)
273
+ data.putArray("removedPeers", removedPeersArray)
274
+ delegate.emitEvent("ON_PEER_LIST_UPDATED", data)
275
+ }
276
+ */
244
277
  },
245
278
  )
246
279
  } else {
@@ -264,187 +297,212 @@ class HMSRNSDK(
264
297
  val config = HMSHelper.getHmsConfig(credentials)
265
298
 
266
299
  HMSCoroutineScope.launch {
267
- try {
268
- hmsSDK?.join(
269
- config,
270
- object : HMSUpdateListener {
271
- override fun onChangeTrackStateRequest(details: HMSChangeTrackStateRequest) {
272
- if (eventsEnableStatus["ON_CHANGE_TRACK_STATE_REQUEST"] != true) {
273
- return
274
- }
275
- val decodedChangeTrackStateRequest =
276
- HMSDecoder.getHmsChangeTrackStateRequest(details, id)
277
- delegate.emitEvent(
278
- "ON_CHANGE_TRACK_STATE_REQUEST",
279
- decodedChangeTrackStateRequest,
280
- )
300
+ hmsSDK?.join(
301
+ config,
302
+ object : HMSUpdateListener {
303
+ override fun onChangeTrackStateRequest(details: HMSChangeTrackStateRequest) {
304
+ if (eventsEnableStatus["ON_CHANGE_TRACK_STATE_REQUEST"] != true) {
305
+ return
281
306
  }
307
+ val decodedChangeTrackStateRequest =
308
+ HMSDecoder.getHmsChangeTrackStateRequest(details, id)
309
+ delegate.emitEvent(
310
+ "ON_CHANGE_TRACK_STATE_REQUEST",
311
+ decodedChangeTrackStateRequest,
312
+ )
313
+ }
282
314
 
283
- override fun onRemovedFromRoom(notification: HMSRemovedFromRoom) {
284
- super.onRemovedFromRoom(notification)
285
- if (eventsEnableStatus["ON_REMOVED_FROM_ROOM"] != true) {
286
- cleanup() // resetting states and doing data cleanup
287
- return
288
- }
289
- val data: WritableMap = Arguments.createMap()
290
- val requestedBy =
291
- HMSDecoder.getHmsRemotePeer(notification.peerWhoRemoved as HMSRemotePeer?)
292
- val roomEnded = notification.roomWasEnded
293
- val reason = notification.reason
294
-
295
- data.putMap("requestedBy", requestedBy)
296
- data.putBoolean("roomEnded", roomEnded)
297
- data.putString("reason", reason)
298
- data.putString("id", id)
299
-
300
- delegate.emitEvent("ON_REMOVED_FROM_ROOM", data)
315
+ override fun onRemovedFromRoom(notification: HMSRemovedFromRoom) {
316
+ super.onRemovedFromRoom(notification)
317
+ if (eventsEnableStatus["ON_REMOVED_FROM_ROOM"] != true) {
301
318
  cleanup() // resetting states and doing data cleanup
319
+ return
302
320
  }
321
+ val data: WritableMap = Arguments.createMap()
322
+ val requestedBy =
323
+ HMSDecoder.getHmsRemotePeer(notification.peerWhoRemoved as HMSRemotePeer?)
324
+ val roomEnded = notification.roomWasEnded
325
+ val reason = notification.reason
326
+
327
+ data.putMap("requestedBy", requestedBy)
328
+ data.putBoolean("roomEnded", roomEnded)
329
+ data.putString("reason", reason)
330
+ data.putString("id", id)
303
331
 
304
- override fun onError(error: HMSException) {
305
- if (eventsEnableStatus["ON_ERROR"] != true) {
306
- return
307
- }
308
- self.emitHMSError(error)
332
+ delegate.emitEvent("ON_REMOVED_FROM_ROOM", data)
333
+ cleanup() // resetting states and doing data cleanup
334
+ }
335
+
336
+ override fun onError(error: HMSException) {
337
+ if (eventsEnableStatus["ON_ERROR"] != true) {
338
+ return
339
+ }
340
+ self.emitHMSError(error)
341
+ }
342
+
343
+ override fun onJoin(room: HMSRoom) {
344
+ if (eventsEnableStatus["ON_JOIN"] != true) {
345
+ return
309
346
  }
347
+ val roomData = HMSDecoder.getHmsRoomSubset(room)
310
348
 
311
- override fun onJoin(room: HMSRoom) {
312
- if (eventsEnableStatus["ON_JOIN"] != true) {
313
- return
314
- }
315
- val roomData = HMSDecoder.getHmsRoomSubset(room)
349
+ val data: WritableMap = Arguments.createMap()
316
350
 
317
- val data: WritableMap = Arguments.createMap()
351
+ data.putMap("room", roomData)
352
+ data.putString("id", id)
353
+ delegate.emitEvent("ON_JOIN", data)
354
+ }
318
355
 
319
- data.putMap("room", roomData)
320
- data.putString("id", id)
321
- delegate.emitEvent("ON_JOIN", data)
356
+ override fun onPeerUpdate(
357
+ type: HMSPeerUpdate,
358
+ peer: HMSPeer,
359
+ ) {
360
+ if (eventsEnableStatus["3"] != true) {
361
+ return
322
362
  }
323
-
324
- override fun onPeerUpdate(
325
- type: HMSPeerUpdate,
326
- peer: HMSPeer,
363
+ if (type === HMSPeerUpdate.BECAME_DOMINANT_SPEAKER ||
364
+ type === HMSPeerUpdate.NO_DOMINANT_SPEAKER
327
365
  ) {
328
- if (eventsEnableStatus["3"] != true) {
329
- return
330
- }
331
- if (type === HMSPeerUpdate.BECAME_DOMINANT_SPEAKER ||
332
- type === HMSPeerUpdate.NO_DOMINANT_SPEAKER
333
- ) {
334
- return
335
- }
336
- if (!networkQualityUpdatesAttached &&
337
- type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
338
- ) {
339
- return
340
- }
341
- val hmsPeer = HMSDecoder.getHmsPeerSubsetForPeerUpdateEvent(peer, type)
342
- delegate.emitEvent("3", hmsPeer)
366
+ return
343
367
  }
344
-
345
- override fun onRoomUpdate(
346
- type: HMSRoomUpdate,
347
- hmsRoom: HMSRoom,
368
+ if (!networkQualityUpdatesAttached &&
369
+ type === HMSPeerUpdate.NETWORK_QUALITY_UPDATED
348
370
  ) {
349
- if (eventsEnableStatus["ON_ROOM_UPDATE"] != true) {
350
- return
351
- }
371
+ return
372
+ }
373
+ val hmsPeer = HMSDecoder.getHmsPeerSubsetForPeerUpdateEvent(peer, type)
374
+ delegate.emitEvent("3", hmsPeer)
375
+ }
376
+
377
+ override fun onRoomUpdate(
378
+ type: HMSRoomUpdate,
379
+ hmsRoom: HMSRoom,
380
+ ) {
381
+ if (eventsEnableStatus["ON_ROOM_UPDATE"] != true) {
382
+ return
383
+ }
384
+
385
+ val updateType = type.name
386
+ val roomData = HMSDecoder.getHmsRoomSubset(hmsRoom, type)
352
387
 
353
- val updateType = type.name
354
- val roomData = HMSDecoder.getHmsRoomSubset(hmsRoom, type)
388
+ val data: WritableMap = Arguments.createMap()
355
389
 
356
- val data: WritableMap = Arguments.createMap()
390
+ data.putString("type", updateType)
391
+ data.putMap("room", roomData)
392
+ data.putString("id", id)
393
+ delegate.emitEvent("ON_ROOM_UPDATE", data)
394
+ }
357
395
 
358
- data.putString("type", updateType)
359
- data.putMap("room", roomData)
360
- data.putString("id", id)
361
- delegate.emitEvent("ON_ROOM_UPDATE", data)
396
+ override fun onTrackUpdate(
397
+ type: HMSTrackUpdate,
398
+ track: HMSTrack,
399
+ peer: HMSPeer,
400
+ ) {
401
+ if (eventsEnableStatus["ON_TRACK_UPDATE"] != true) {
402
+ return
362
403
  }
404
+ val updateType = type.name
405
+ val hmsPeer = HMSDecoder.getHmsPeerSubset(peer)
406
+ val hmsTrack = HMSDecoder.getHmsTrack(track)
363
407
 
364
- override fun onTrackUpdate(
365
- type: HMSTrackUpdate,
366
- track: HMSTrack,
367
- peer: HMSPeer,
368
- ) {
369
- if (eventsEnableStatus["ON_TRACK_UPDATE"] != true) {
370
- return
371
- }
372
- val updateType = type.name
373
- val hmsPeer = HMSDecoder.getHmsPeerSubset(peer)
374
- val hmsTrack = HMSDecoder.getHmsTrack(track)
408
+ val data: WritableMap = Arguments.createMap()
375
409
 
376
- val data: WritableMap = Arguments.createMap()
410
+ data.putMap("peer", hmsPeer)
411
+ data.putMap("track", hmsTrack)
412
+ data.putString("type", updateType)
413
+ data.putString("id", id)
414
+ delegate.emitEvent("ON_TRACK_UPDATE", data)
415
+ }
377
416
 
378
- data.putMap("peer", hmsPeer)
379
- data.putMap("track", hmsTrack)
380
- data.putString("type", updateType)
381
- data.putString("id", id)
382
- delegate.emitEvent("ON_TRACK_UPDATE", data)
417
+ override fun onMessageReceived(message: HMSMessage) {
418
+ if (eventsEnableStatus["ON_MESSAGE"] != true) {
419
+ return
383
420
  }
421
+ val data: WritableMap = Arguments.createMap()
384
422
 
385
- override fun onMessageReceived(message: HMSMessage) {
386
- if (eventsEnableStatus["ON_MESSAGE"] != true) {
387
- return
388
- }
389
- val data: WritableMap = Arguments.createMap()
423
+ data.putMap("sender", HMSDecoder.getHmsPeerSubset(message.sender))
424
+ data.putString("message", message.message)
425
+ data.putString("messageId", message.messageId)
426
+ data.putString("type", message.type)
427
+ data.putString("time", message.serverReceiveTime.toString())
428
+ data.putString("id", id)
429
+ data.putMap("recipient", HMSDecoder.getHmsMessageRecipient(message.recipient))
390
430
 
391
- data.putMap("sender", HMSDecoder.getHmsPeerSubset(message.sender))
392
- data.putString("message", message.message)
393
- data.putString("messageId", message.messageId)
394
- data.putString("type", message.type)
395
- data.putString("time", message.serverReceiveTime.toString())
396
- data.putString("id", id)
397
- data.putMap("recipient", HMSDecoder.getHmsMessageRecipient(message.recipient))
431
+ delegate.emitEvent("ON_MESSAGE", data)
432
+ }
398
433
 
399
- delegate.emitEvent("ON_MESSAGE", data)
434
+ override fun onReconnected() {
435
+ reconnectingStage = false
436
+ if (eventsEnableStatus["RECONNECTED"] != true) {
437
+ return
400
438
  }
439
+ val data: WritableMap = Arguments.createMap()
440
+ data.putString("event", "RECONNECTED")
441
+ data.putString("id", id)
442
+ delegate.emitEvent("RECONNECTED", data)
443
+ }
401
444
 
402
- override fun onReconnected() {
403
- reconnectingStage = false
404
- if (eventsEnableStatus["RECONNECTED"] != true) {
405
- return
406
- }
407
- val data: WritableMap = Arguments.createMap()
408
- data.putString("event", "RECONNECTED")
409
- data.putString("id", id)
410
- delegate.emitEvent("RECONNECTED", data)
445
+ override fun onReconnecting(error: HMSException) {
446
+ reconnectingStage = true
447
+ if (eventsEnableStatus["RECONNECTING"] != true) {
448
+ return
411
449
  }
450
+ val data: WritableMap = Arguments.createMap()
451
+ data.putMap("error", HMSDecoder.getError(error))
452
+ data.putString("event", "RECONNECTING")
453
+ data.putString("id", id)
454
+ delegate.emitEvent("RECONNECTING", data)
455
+ }
412
456
 
413
- override fun onReconnecting(error: HMSException) {
414
- reconnectingStage = true
415
- if (eventsEnableStatus["RECONNECTING"] != true) {
416
- return
417
- }
418
- val data: WritableMap = Arguments.createMap()
419
- data.putMap("error", HMSDecoder.getError(error))
420
- data.putString("event", "RECONNECTING")
421
- data.putString("id", id)
422
- delegate.emitEvent("RECONNECTING", data)
457
+ override fun onRoleChangeRequest(request: HMSRoleChangeRequest) {
458
+ recentRoleChangeRequest = request
459
+ if (eventsEnableStatus["ON_ROLE_CHANGE_REQUEST"] != true) {
460
+ return
461
+ }
462
+ val decodedChangeRoleRequest = HMSDecoder.getHmsRoleChangeRequest(request, id)
463
+ delegate.emitEvent("ON_ROLE_CHANGE_REQUEST", decodedChangeRoleRequest)
464
+ }
465
+
466
+ override fun onSessionStoreAvailable(sessionStore: HmsSessionStore) {
467
+ self.sessionStore = sessionStore
468
+ if (eventsEnableStatus["ON_SESSION_STORE_AVAILABLE"] != true) {
469
+ return
470
+ }
471
+ val data: WritableMap = Arguments.createMap()
472
+ data.putString("id", id)
473
+ delegate.emitEvent("ON_SESSION_STORE_AVAILABLE", data)
474
+ }
475
+
476
+ override fun peerListUpdated(
477
+ addedPeers: ArrayList<HMSPeer>?,
478
+ removedPeers: ArrayList<HMSPeer>?,
479
+ ) {
480
+ if (eventsEnableStatus["ON_PEER_LIST_UPDATED"] != true) {
481
+ return
423
482
  }
483
+ val data: WritableMap = Arguments.createMap()
484
+ val addedPeersArray: WritableArray = Arguments.createArray()
485
+ val removedPeersArray: WritableArray = Arguments.createArray()
424
486
 
425
- override fun onRoleChangeRequest(request: HMSRoleChangeRequest) {
426
- recentRoleChangeRequest = request
427
- if (eventsEnableStatus["ON_ROLE_CHANGE_REQUEST"] != true) {
428
- return
487
+ if (addedPeers != null) {
488
+ for (peer in addedPeers) {
489
+ addedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
429
490
  }
430
- val decodedChangeRoleRequest = HMSDecoder.getHmsRoleChangeRequest(request, id)
431
- delegate.emitEvent("ON_ROLE_CHANGE_REQUEST", decodedChangeRoleRequest)
432
491
  }
433
492
 
434
- override fun onSessionStoreAvailable(sessionStore: HmsSessionStore) {
435
- self.sessionStore = sessionStore
436
- if (eventsEnableStatus["ON_SESSION_STORE_AVAILABLE"] != true) {
437
- return
493
+ if (removedPeers != null) {
494
+ for (peer in removedPeers) {
495
+ removedPeersArray.pushMap(HMSDecoder.getHmsPeerSubset(peer))
438
496
  }
439
- val data: WritableMap = Arguments.createMap()
440
- data.putString("id", id)
441
- delegate.emitEvent("ON_SESSION_STORE_AVAILABLE", data)
442
497
  }
443
- },
444
- )
445
- } catch (e: HMSException) {
446
- self.emitHMSError(e)
447
- }
498
+
499
+ data.putString("id", id)
500
+ data.putArray("addedPeers", addedPeersArray)
501
+ data.putArray("removedPeers", removedPeersArray)
502
+ delegate.emitEvent("ON_PEER_LIST_UPDATED", data)
503
+ }
504
+ },
505
+ )
448
506
 
449
507
  hmsSDK?.addAudioObserver(
450
508
  object : HMSAudioListener {
@@ -629,7 +687,6 @@ class HMSRNSDK(
629
687
  )
630
688
  } else {
631
689
  val errorMessage = "getAuthTokenByRoomCode: $requiredKeys"
632
- self.emitRequiredKeysError(errorMessage)
633
690
  rejectCallback(promise, errorMessage)
634
691
  }
635
692
  }
@@ -676,7 +733,7 @@ class HMSRNSDK(
676
733
  map.putString("id", id)
677
734
  delegate.emitEvent("ON_PIP_ROOM_LEAVE", map)
678
735
  } else {
679
- callback?.resolve(emitHMSSuccess())
736
+ callback?.resolve(getPromiseResolveData())
680
737
  }
681
738
  cleanup() // resetting states and doing data cleanup
682
739
  }
@@ -710,13 +767,12 @@ class HMSRNSDK(
710
767
  }
711
768
 
712
769
  override fun onSuccess(hmsMessage: HMSMessage) {
713
- callback?.resolve(emitHMSMessageSuccess(hmsMessage))
770
+ callback?.resolve(getPromiseResolveMessageData(hmsMessage))
714
771
  }
715
772
  },
716
773
  )
717
774
  } else {
718
775
  val errorMessage = "sendBroadcastMessage: $requiredKeys"
719
- self.emitRequiredKeysError(errorMessage)
720
776
  rejectCallback(callback, errorMessage)
721
777
  }
722
778
  }
@@ -745,13 +801,12 @@ class HMSRNSDK(
745
801
  }
746
802
 
747
803
  override fun onSuccess(hmsMessage: HMSMessage) {
748
- callback?.resolve(emitHMSMessageSuccess(hmsMessage))
804
+ callback?.resolve(getPromiseResolveMessageData(hmsMessage))
749
805
  }
750
806
  },
751
807
  )
752
808
  } else {
753
809
  val errorMessage = "sendGroupMessage: $requiredKeys"
754
- self.emitRequiredKeysError(errorMessage)
755
810
  rejectCallback(callback, errorMessage)
756
811
  }
757
812
  }
@@ -779,17 +834,15 @@ class HMSRNSDK(
779
834
  }
780
835
 
781
836
  override fun onSuccess(hmsMessage: HMSMessage) {
782
- callback?.resolve(emitHMSMessageSuccess(hmsMessage))
837
+ callback?.resolve(getPromiseResolveMessageData(hmsMessage))
783
838
  }
784
839
  },
785
840
  )
786
841
  } else {
787
- self.emitCustomError("PEER_NOT_FOUND")
788
842
  callback?.reject("101", "PEER_NOT_FOUND")
789
843
  }
790
844
  } else {
791
845
  val errorMessage = "sendDirectMessage: $requiredKeys"
792
- self.emitRequiredKeysError(errorMessage)
793
846
  rejectCallback(callback, errorMessage)
794
847
  }
795
848
  }
@@ -827,7 +880,7 @@ class HMSRNSDK(
827
880
  force,
828
881
  object : HMSActionResultListener {
829
882
  override fun onSuccess() {
830
- callback?.resolve(emitHMSSuccess())
883
+ callback?.resolve(getPromiseResolveData())
831
884
  }
832
885
 
833
886
  override fun onError(error: HMSException) {
@@ -838,7 +891,6 @@ class HMSRNSDK(
838
891
  }
839
892
  } else {
840
893
  val errorMessage = "changeRole: $requiredKeys"
841
- self.emitRequiredKeysError(errorMessage)
842
894
  rejectCallback(callback, errorMessage)
843
895
  }
844
896
  }
@@ -875,7 +927,7 @@ class HMSRNSDK(
875
927
  force,
876
928
  object : HMSActionResultListener {
877
929
  override fun onSuccess() {
878
- promise?.resolve(emitHMSSuccess())
930
+ promise?.resolve(getPromiseResolveData())
879
931
  }
880
932
 
881
933
  override fun onError(error: HMSException) {
@@ -886,7 +938,6 @@ class HMSRNSDK(
886
938
  }
887
939
  } else {
888
940
  val errorMessage = "changeRoleOfPeer: $requiredKeys"
889
- self.emitRequiredKeysError(errorMessage)
890
941
  rejectCallback(promise, errorMessage)
891
942
  }
892
943
  }
@@ -918,7 +969,7 @@ class HMSRNSDK(
918
969
  toHMSRole,
919
970
  object : HMSActionResultListener {
920
971
  override fun onSuccess() {
921
- promise?.resolve(emitHMSSuccess())
972
+ promise?.resolve(getPromiseResolveData())
922
973
  }
923
974
 
924
975
  override fun onError(error: HMSException) {
@@ -930,7 +981,6 @@ class HMSRNSDK(
930
981
  }
931
982
  } else {
932
983
  val errorMessage = "changeRoleOfPeersWithRoles: $requiredKeys"
933
- self.emitRequiredKeysError(errorMessage)
934
984
  rejectCallback(promise, errorMessage)
935
985
  }
936
986
  }
@@ -954,7 +1004,7 @@ class HMSRNSDK(
954
1004
  mute,
955
1005
  object : HMSActionResultListener {
956
1006
  override fun onSuccess() {
957
- callback?.resolve(emitHMSSuccess())
1007
+ callback?.resolve(getPromiseResolveData())
958
1008
  }
959
1009
 
960
1010
  override fun onError(error: HMSException) {
@@ -965,7 +1015,6 @@ class HMSRNSDK(
965
1015
  }
966
1016
  } else {
967
1017
  val errorMessage = "changeTrackState: $requiredKeys"
968
- self.emitRequiredKeysError(errorMessage)
969
1018
  rejectCallback(callback, errorMessage)
970
1019
  }
971
1020
  }
@@ -1008,7 +1057,7 @@ class HMSRNSDK(
1008
1057
  encodedTargetedRoles,
1009
1058
  object : HMSActionResultListener {
1010
1059
  override fun onSuccess() {
1011
- callback?.resolve(emitHMSSuccess())
1060
+ callback?.resolve(getPromiseResolveData())
1012
1061
  }
1013
1062
 
1014
1063
  override fun onError(error: HMSException) {
@@ -1018,7 +1067,6 @@ class HMSRNSDK(
1018
1067
  )
1019
1068
  } else {
1020
1069
  val errorMessage = "changeTrackStateForRoles: $requiredKeys"
1021
- self.emitRequiredKeysError(errorMessage)
1022
1070
  rejectCallback(callback, errorMessage)
1023
1071
  }
1024
1072
  }
@@ -1039,7 +1087,6 @@ class HMSRNSDK(
1039
1087
  }
1040
1088
  } else {
1041
1089
  val errorMessage = "isMute: $requiredKeys"
1042
- self.emitRequiredKeysError(errorMessage)
1043
1090
  rejectCallback(callback, errorMessage)
1044
1091
  }
1045
1092
  }
@@ -1054,30 +1101,31 @@ class HMSRNSDK(
1054
1101
  arrayOf(Pair("peerId", "String"), Pair("reason", "String")),
1055
1102
  )
1056
1103
  if (requiredKeys === null) {
1057
- val peerId = data.getString("peerId")
1058
- val peer = HMSHelper.getRemotePeerFromPeerId(peerId, hmsSDK?.getRoom())
1104
+ HMSCoroutineScope.launch {
1105
+ val peerId = data.getString("peerId")
1059
1106
 
1060
- if (peer != null) {
1061
- hmsSDK?.removePeerRequest(
1062
- peer,
1063
- data.getString("reason") as String,
1064
- object : HMSActionResultListener {
1065
- override fun onSuccess() {
1066
- callback?.resolve(emitHMSSuccess())
1067
- }
1107
+ val peer = HMSHelper.getRemotePeerFromPeerId(peerId, hmsSDK)
1068
1108
 
1069
- override fun onError(error: HMSException) {
1070
- callback?.reject(error.code.toString(), error.message)
1071
- }
1072
- },
1073
- )
1074
- } else {
1075
- self.emitCustomError("PEER_NOT_FOUND")
1076
- callback?.reject("101", "PEER_NOT_FOUND")
1109
+ if (peer != null) {
1110
+ hmsSDK?.removePeerRequest(
1111
+ peer,
1112
+ data.getString("reason") as String,
1113
+ object : HMSActionResultListener {
1114
+ override fun onSuccess() {
1115
+ callback?.resolve(getPromiseResolveData())
1116
+ }
1117
+
1118
+ override fun onError(error: HMSException) {
1119
+ callback?.reject(error.code.toString(), error.message)
1120
+ }
1121
+ },
1122
+ )
1123
+ } else {
1124
+ callback?.reject("101", "PEER_NOT_FOUND")
1125
+ }
1077
1126
  }
1078
1127
  } else {
1079
1128
  val errorMessage = "removePeer: $requiredKeys"
1080
- self.emitRequiredKeysError(errorMessage)
1081
1129
  rejectCallback(callback, errorMessage)
1082
1130
  }
1083
1131
  }
@@ -1097,7 +1145,7 @@ class HMSRNSDK(
1097
1145
  data.getBoolean("lock"),
1098
1146
  object : HMSActionResultListener {
1099
1147
  override fun onSuccess() {
1100
- callback?.resolve(emitHMSSuccess())
1148
+ callback?.resolve(getPromiseResolveData())
1101
1149
  cleanup() // resetting states and doing data cleanup
1102
1150
  }
1103
1151
 
@@ -1108,7 +1156,6 @@ class HMSRNSDK(
1108
1156
  )
1109
1157
  } else {
1110
1158
  val errorMessage = "endRoom: $requiredKeys"
1111
- self.emitRequiredKeysError(errorMessage)
1112
1159
  rejectCallback(callback, errorMessage)
1113
1160
  }
1114
1161
  }
@@ -1155,7 +1202,6 @@ class HMSRNSDK(
1155
1202
  )
1156
1203
  } else {
1157
1204
  val errorMessage = "Missing required keys for previewForRole: $requiredKeys"
1158
- self.emitRequiredKeysError(errorMessage)
1159
1205
  rejectCallback(callback, errorMessage)
1160
1206
  }
1161
1207
  }
@@ -1164,7 +1210,7 @@ class HMSRNSDK(
1164
1210
  hmsSDK?.cancelPreview()
1165
1211
  previewForRoleAudioTrack = null
1166
1212
  previewForRoleVideoTrack = null
1167
- callback?.resolve(emitHMSSuccess())
1213
+ callback?.resolve(getPromiseResolveData())
1168
1214
  }
1169
1215
 
1170
1216
  fun acceptRoleChange(callback: Promise?) {
@@ -1173,7 +1219,7 @@ class HMSRNSDK(
1173
1219
  recentRoleChangeRequest!!,
1174
1220
  object : HMSActionResultListener {
1175
1221
  override fun onSuccess() {
1176
- callback?.resolve(emitHMSSuccess())
1222
+ callback?.resolve(getPromiseResolveData())
1177
1223
  }
1178
1224
 
1179
1225
  override fun onError(error: HMSException) {
@@ -1186,7 +1232,6 @@ class HMSRNSDK(
1186
1232
  previewForRoleVideoTrack = null
1187
1233
  } else {
1188
1234
  val errorMessage = "acceptRoleChange: recentRoleChangeRequest not found"
1189
- self.emitRequiredKeysError(errorMessage)
1190
1235
  rejectCallback(callback, errorMessage)
1191
1236
  }
1192
1237
  }
@@ -1209,7 +1254,7 @@ class HMSRNSDK(
1209
1254
  )
1210
1255
  }
1211
1256
  if (customError === null) {
1212
- callback?.resolve(emitHMSSuccess())
1257
+ callback?.resolve(getPromiseResolveData())
1213
1258
  } else {
1214
1259
  rejectCallback(callback, customError!!.message)
1215
1260
  }
@@ -1217,25 +1262,23 @@ class HMSRNSDK(
1217
1262
  rejectCallback(callback, "Audio tracks not found")
1218
1263
  }
1219
1264
 
1220
- fun setPlaybackForAllAudio(data: ReadableMap) {
1265
+ fun setPlaybackForAllAudio(data: ReadableMap, callback: Promise?) {
1221
1266
  val requiredKeys = HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("mute", "Boolean")))
1222
1267
  if (requiredKeys === null) {
1223
1268
  val mute = data.getBoolean("mute")
1224
- val peers = hmsSDK?.getRemotePeers()
1225
- if (peers != null) {
1226
- for (remotePeer in peers) {
1227
- val peerId = remotePeer.peerID
1228
- val peer = HMSHelper.getRemotePeerFromPeerId(peerId, hmsSDK?.getRoom())
1229
- peer?.audioTrack?.isPlaybackAllowed = !mute
1230
- }
1269
+ val remotePeers = hmsSDK?.getRemotePeers()
1270
+
1271
+ remotePeers?.forEach() {
1272
+ it.audioTrack?.isPlaybackAllowed = !mute
1231
1273
  }
1274
+ callback?.resolve(true)
1232
1275
  } else {
1233
1276
  val errorMessage = "setPlaybackForAllAudio: $requiredKeys"
1234
- self.emitRequiredKeysError(errorMessage)
1277
+ rejectCallback(callback, errorMessage)
1235
1278
  }
1236
1279
  }
1237
1280
 
1238
- fun setPlaybackAllowed(data: ReadableMap) {
1281
+ fun setPlaybackAllowed(data: ReadableMap, callback: Promise?) {
1239
1282
  val requiredKeys =
1240
1283
  HMSHelper.getUnavailableRequiredKey(
1241
1284
  data,
@@ -1248,12 +1291,16 @@ class HMSRNSDK(
1248
1291
  val remoteVideoTrack = HMSHelper.getRemoteVideoTrackFromTrackId(trackId, hmsSDK?.getRoom())
1249
1292
  if (remoteAudioTrack != null) {
1250
1293
  remoteAudioTrack.isPlaybackAllowed = playbackAllowed
1294
+ callback?.resolve(true)
1251
1295
  } else if (remoteVideoTrack != null) {
1252
1296
  remoteVideoTrack.isPlaybackAllowed = playbackAllowed
1297
+ callback?.resolve(true)
1298
+ } else {
1299
+ callback?.reject("101", "setPlaybackAllowed: No remote audio and video track found!")
1253
1300
  }
1254
1301
  } else {
1255
1302
  val errorMessage = "setPlaybackAllowed: $requiredKeys"
1256
- self.emitRequiredKeysError(errorMessage)
1303
+ rejectCallback(callback, errorMessage)
1257
1304
  }
1258
1305
  }
1259
1306
 
@@ -1281,7 +1328,6 @@ class HMSRNSDK(
1281
1328
  }
1282
1329
  } else {
1283
1330
  val errorMessage = "isPlaybackAllowed: $requiredKeys"
1284
- self.emitRequiredKeysError(errorMessage)
1285
1331
  rejectCallback(callback, errorMessage)
1286
1332
  }
1287
1333
  }
@@ -1306,7 +1352,7 @@ class HMSRNSDK(
1306
1352
  callback?.resolve(roles)
1307
1353
  }
1308
1354
 
1309
- fun setVolume(data: ReadableMap) {
1355
+ fun setVolume(data: ReadableMap, callback: Promise?) {
1310
1356
  val requiredKeys =
1311
1357
  HMSHelper.getUnavailableRequiredKey(
1312
1358
  data,
@@ -1339,13 +1385,13 @@ class HMSRNSDK(
1339
1385
  }
1340
1386
  }
1341
1387
  }
1342
- this.emitCustomError("TRACK_NOT_FOUND")
1388
+ callback?.reject("101", "TRACK_NOT_FOUND")
1343
1389
  } else {
1344
- this.emitCustomError("REMOTE_PEERS_NOT_FOUND")
1390
+ callback?.reject("101", "REMOTE_PEERS_NOT_FOUND")
1345
1391
  }
1346
1392
  } else {
1347
1393
  val errorMessage = "setVolume: $requiredKeys"
1348
- self.emitRequiredKeysError(errorMessage)
1394
+ rejectCallback(callback, errorMessage)
1349
1395
  }
1350
1396
  }
1351
1397
 
@@ -1367,7 +1413,6 @@ class HMSRNSDK(
1367
1413
  callback?.reject("101", "TRACK_IDS_DO_NOT_MATCH")
1368
1414
  } else {
1369
1415
  val errorMessage = "getVolume: $requiredKeys"
1370
- self.emitRequiredKeysError(errorMessage)
1371
1416
  rejectCallback(callback, errorMessage)
1372
1417
  }
1373
1418
  }
@@ -1386,7 +1431,7 @@ class HMSRNSDK(
1386
1431
  metadata,
1387
1432
  object : HMSActionResultListener {
1388
1433
  override fun onSuccess() {
1389
- callback?.resolve(emitHMSSuccess())
1434
+ callback?.resolve(getPromiseResolveData())
1390
1435
  }
1391
1436
 
1392
1437
  override fun onError(error: HMSException) {
@@ -1397,7 +1442,6 @@ class HMSRNSDK(
1397
1442
  }
1398
1443
  } else {
1399
1444
  val errorMessage = "changeMetadata: $requiredKeys"
1400
- self.emitRequiredKeysError(errorMessage)
1401
1445
  rejectCallback(callback, errorMessage)
1402
1446
  }
1403
1447
  }
@@ -1415,14 +1459,13 @@ class HMSRNSDK(
1415
1459
  val config = HMSHelper.getRtmpConfig(data)
1416
1460
  if (config === null) {
1417
1461
  val errorMessage = "startRTMPOrRecording: INVALID_MEETING_URL_PASSED"
1418
- self.emitRequiredKeysError(errorMessage)
1419
1462
  rejectCallback(callback, errorMessage)
1420
1463
  } else {
1421
1464
  hmsSDK?.startRtmpOrRecording(
1422
1465
  config,
1423
1466
  object : HMSActionResultListener {
1424
1467
  override fun onSuccess() {
1425
- callback?.resolve(emitHMSSuccess())
1468
+ callback?.resolve(getPromiseResolveData())
1426
1469
  }
1427
1470
 
1428
1471
  override fun onError(error: HMSException) {
@@ -1433,7 +1476,6 @@ class HMSRNSDK(
1433
1476
  }
1434
1477
  } else {
1435
1478
  val errorMessage = "startRTMPOrRecording: $requiredKeys"
1436
- self.emitRequiredKeysError(errorMessage)
1437
1479
  rejectCallback(callback, errorMessage)
1438
1480
  }
1439
1481
  }
@@ -1442,7 +1484,7 @@ class HMSRNSDK(
1442
1484
  hmsSDK?.stopRtmpAndRecording(
1443
1485
  object : HMSActionResultListener {
1444
1486
  override fun onSuccess() {
1445
- callback?.resolve(emitHMSSuccess())
1487
+ callback?.resolve(getPromiseResolveData())
1446
1488
  }
1447
1489
 
1448
1490
  override fun onError(error: HMSException) {
@@ -1476,7 +1518,7 @@ class HMSRNSDK(
1476
1518
 
1477
1519
  override fun onSuccess() {
1478
1520
  screenshareCallback = null
1479
- callback?.resolve(emitHMSSuccess())
1521
+ callback?.resolve(getPromiseResolveData())
1480
1522
  }
1481
1523
  },
1482
1524
  )
@@ -1491,7 +1533,7 @@ class HMSRNSDK(
1491
1533
  hlsConfig,
1492
1534
  object : HMSActionResultListener {
1493
1535
  override fun onSuccess() {
1494
- callback?.resolve(emitHMSSuccess())
1536
+ callback?.resolve(getPromiseResolveData())
1495
1537
  }
1496
1538
 
1497
1539
  override fun onError(error: HMSException) {
@@ -1506,7 +1548,7 @@ class HMSRNSDK(
1506
1548
  null,
1507
1549
  object : HMSActionResultListener {
1508
1550
  override fun onSuccess() {
1509
- callback?.resolve(emitHMSSuccess())
1551
+ callback?.resolve(getPromiseResolveData())
1510
1552
  }
1511
1553
 
1512
1554
  override fun onError(error: HMSException) {
@@ -1548,7 +1590,7 @@ class HMSRNSDK(
1548
1590
  name,
1549
1591
  object : HMSActionResultListener {
1550
1592
  override fun onSuccess() {
1551
- callback?.resolve(emitHMSSuccess())
1593
+ callback?.resolve(getPromiseResolveData())
1552
1594
  }
1553
1595
 
1554
1596
  override fun onError(error: HMSException) {
@@ -1557,12 +1599,10 @@ class HMSRNSDK(
1557
1599
  },
1558
1600
  )
1559
1601
  } else {
1560
- self.emitCustomError("NAME_UNDEFINED")
1561
1602
  callback?.reject("101", "NAME_UNDEFINED")
1562
1603
  }
1563
1604
  } else {
1564
1605
  val errorMessage = "changeName: $requiredKeys"
1565
- self.emitRequiredKeysError(errorMessage)
1566
1606
  rejectCallback(callback, errorMessage)
1567
1607
  }
1568
1608
  }
@@ -1583,26 +1623,32 @@ class HMSRNSDK(
1583
1623
  callback?.resolve(hmsSDK?.getAudioOutputRouteType()?.name)
1584
1624
  }
1585
1625
 
1586
- fun switchAudioOutput(data: ReadableMap) {
1626
+ fun switchAudioOutput(data: ReadableMap, callback: Promise?) {
1587
1627
  val requiredKeys =
1588
1628
  HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("audioDevice", "String")))
1589
1629
  if (requiredKeys === null) {
1590
1630
  val audioDevice = data.getString("audioDevice")
1591
- hmsSDK?.switchAudioOutput(HMSHelper.getAudioDevice(audioDevice))
1631
+ hmsSDK?.let {
1632
+ it.switchAudioOutput(HMSHelper.getAudioDevice(audioDevice))
1633
+ callback?.resolve(true)
1634
+ }
1592
1635
  } else {
1593
1636
  val errorMessage = "switchAudioOutput: $requiredKeys"
1594
- self.emitRequiredKeysError(errorMessage)
1637
+ rejectCallback(callback, errorMessage)
1595
1638
  }
1596
1639
  }
1597
1640
 
1598
- fun setAudioMode(data: ReadableMap) {
1641
+ fun setAudioMode(data: ReadableMap, callback: Promise?) {
1599
1642
  val requiredKeys = HMSHelper.getUnavailableRequiredKey(data, arrayOf(Pair("audioMode", "Int")))
1600
1643
  if (requiredKeys === null) {
1601
1644
  val audioMode = data.getInt("audioMode")
1602
- hmsSDK?.setAudioMode(audioMode)
1645
+ hmsSDK?.let {
1646
+ it.setAudioMode(audioMode)
1647
+ callback?.resolve(true)
1648
+ }
1603
1649
  } else {
1604
1650
  val errorMessage = "setAudioMode: $requiredKeys"
1605
- self.emitRequiredKeysError(errorMessage)
1651
+ rejectCallback(callback, errorMessage)
1606
1652
  }
1607
1653
  }
1608
1654
 
@@ -1647,7 +1693,6 @@ class HMSRNSDK(
1647
1693
  }
1648
1694
  } else {
1649
1695
  val errorMessage = "startAudioshare: $requiredKeys"
1650
- self.emitRequiredKeysError(errorMessage)
1651
1696
  rejectCallback(callback, errorMessage)
1652
1697
  }
1653
1698
  }
@@ -1667,7 +1712,7 @@ class HMSRNSDK(
1667
1712
  override fun onSuccess() {
1668
1713
  isAudioSharing = false
1669
1714
  audioshareCallback = null
1670
- callback?.resolve(emitHMSSuccess())
1715
+ callback?.resolve(getPromiseResolveData())
1671
1716
  }
1672
1717
  },
1673
1718
  )
@@ -1687,10 +1732,9 @@ class HMSRNSDK(
1687
1732
  val mode = HMSHelper.getAudioMixingMode(data.getString("audioMixingMode"))
1688
1733
  audioMixingMode = mode
1689
1734
  hmsSDK?.setAudioMixingMode(mode)
1690
- callback?.resolve(emitHMSSuccess())
1735
+ callback?.resolve(getPromiseResolveData())
1691
1736
  } else {
1692
1737
  val errorMessage = "setAudioMixingMode: $requiredKeys"
1693
- self.emitRequiredKeysError(errorMessage)
1694
1738
  rejectCallback(callback, errorMessage)
1695
1739
  }
1696
1740
  }
@@ -1733,6 +1777,9 @@ class HMSRNSDK(
1733
1777
  "role" -> {
1734
1778
  result.putMap("role", HMSDecoder.getHmsRole(peer.hmsRole))
1735
1779
  }
1780
+ "isHandRaised" -> {
1781
+ result.putBoolean("isHandRaised", peer.isHandRaised)
1782
+ }
1736
1783
  "customerUserID" -> {
1737
1784
  if (peer.customerUserID !== null) {
1738
1785
  result.putString("customerUserID", peer.customerUserID)
@@ -1836,11 +1883,10 @@ class HMSRNSDK(
1836
1883
 
1837
1884
  if (eventType != null) {
1838
1885
  eventsEnableStatus[eventType] = true
1839
- promise?.resolve(emitHMSSuccess())
1886
+ promise?.resolve(getPromiseResolveData())
1840
1887
  }
1841
1888
  } else {
1842
1889
  val errorMessage = "enableEvent: $requiredKeys"
1843
- self.emitRequiredKeysError(errorMessage)
1844
1890
  rejectCallback(promise, errorMessage)
1845
1891
  }
1846
1892
  }
@@ -1856,11 +1902,10 @@ class HMSRNSDK(
1856
1902
 
1857
1903
  if (eventType != null) {
1858
1904
  eventsEnableStatus[eventType] = false
1859
- promise?.resolve(emitHMSSuccess())
1905
+ promise?.resolve(getPromiseResolveData())
1860
1906
  }
1861
1907
  } else {
1862
1908
  val errorMessage = "disableEvent: $requiredKeys"
1863
- self.emitRequiredKeysError(errorMessage)
1864
1909
  rejectCallback(promise, errorMessage)
1865
1910
  }
1866
1911
  }
@@ -1875,11 +1920,10 @@ class HMSRNSDK(
1875
1920
  val roleName = data.getString("roleName")
1876
1921
  if (roleName != null) {
1877
1922
  HMSDecoder.setRestrictRoleData(roleName, true)
1878
- promise?.resolve(emitHMSSuccess())
1923
+ promise?.resolve(getPromiseResolveData())
1879
1924
  }
1880
1925
  } else {
1881
1926
  val errorMessage = "restrictData: $requiredKeys"
1882
- self.emitRequiredKeysError(errorMessage)
1883
1927
  rejectCallback(promise, errorMessage)
1884
1928
  }
1885
1929
  }
@@ -1899,7 +1943,6 @@ class HMSRNSDK(
1899
1943
  }
1900
1944
  } else {
1901
1945
  val errorMessage = "getRemoteVideoTrackFromTrackId: $requiredKeys"
1902
- self.emitRequiredKeysError(errorMessage)
1903
1946
  rejectCallback(promise, errorMessage)
1904
1947
  }
1905
1948
  }
@@ -1919,7 +1962,6 @@ class HMSRNSDK(
1919
1962
  }
1920
1963
  } else {
1921
1964
  val errorMessage = "getRemoteAudioTrackFromTrackId: $requiredKeys"
1922
- self.emitRequiredKeysError(errorMessage)
1923
1965
  rejectCallback(promise, errorMessage)
1924
1966
  }
1925
1967
  }
@@ -1940,7 +1982,6 @@ class HMSRNSDK(
1940
1982
  }
1941
1983
  } else {
1942
1984
  val errorMessage = "getVideoTrackLayer: $requiredKeys"
1943
- self.emitRequiredKeysError(errorMessage)
1944
1985
  rejectCallback(promise, errorMessage)
1945
1986
  }
1946
1987
  }
@@ -1962,7 +2003,6 @@ class HMSRNSDK(
1962
2003
  }
1963
2004
  } else {
1964
2005
  val errorMessage = "getVideoTrackLayerDefinition: $requiredKeys"
1965
- self.emitRequiredKeysError(errorMessage)
1966
2006
  rejectCallback(promise, errorMessage)
1967
2007
  }
1968
2008
  }
@@ -1994,7 +2034,6 @@ class HMSRNSDK(
1994
2034
  }
1995
2035
  } else {
1996
2036
  val errorMessage = "setVideoTrackLayer: $requiredKeys"
1997
- self.emitRequiredKeysError(errorMessage)
1998
2037
  rejectCallback(promise, errorMessage)
1999
2038
  }
2000
2039
  }
@@ -2072,7 +2111,7 @@ class HMSRNSDK(
2072
2111
  savePath,
2073
2112
  ) { success ->
2074
2113
  if (flashActionOnSuccess > 0) {
2075
- cameraControl.setFlash(flashActionOnSuccess === 1)
2114
+ cameraControl.setFlash(flashActionOnSuccess == 1)
2076
2115
  }
2077
2116
  if (success) {
2078
2117
  promise?.resolve(imagePath)
@@ -2082,7 +2121,6 @@ class HMSRNSDK(
2082
2121
  }
2083
2122
  } else {
2084
2123
  val errorMessage = "captureImageAtMaxSupportedResolution: $requiredKeys"
2085
- self.emitRequiredKeysError(errorMessage)
2086
2124
  rejectCallback(promise, errorMessage)
2087
2125
  }
2088
2126
  }
@@ -2308,4 +2346,137 @@ class HMSRNSDK(
2308
2346
  },
2309
2347
  )
2310
2348
  }
2349
+
2350
+ fun raiseLocalPeerHand(
2351
+ data: ReadableMap,
2352
+ promise: Promise?,
2353
+ ) {
2354
+ hmsSDK?.raiseLocalPeerHand(
2355
+ object : HMSActionResultListener {
2356
+ override fun onError(error: HMSException) {
2357
+ promise?.reject(error.code.toString(), error.message)
2358
+ }
2359
+
2360
+ override fun onSuccess() {
2361
+ promise?.resolve(true)
2362
+ }
2363
+ },
2364
+ )
2365
+ }
2366
+
2367
+ fun lowerLocalPeerHand(
2368
+ data: ReadableMap,
2369
+ promise: Promise?,
2370
+ ) {
2371
+ hmsSDK?.lowerLocalPeerHand(
2372
+ object : HMSActionResultListener {
2373
+ override fun onError(error: HMSException) {
2374
+ promise?.reject(error.code.toString(), error.message)
2375
+ }
2376
+
2377
+ override fun onSuccess() {
2378
+ promise?.resolve(true)
2379
+ }
2380
+ },
2381
+ )
2382
+ }
2383
+
2384
+ fun lowerRemotePeerHand(
2385
+ data: ReadableMap,
2386
+ promise: Promise?,
2387
+ ) {
2388
+ val peerId = data.getString("peerId")
2389
+ peerId?.let { peerID ->
2390
+ hmsSDK?.getRoom()?.let { room ->
2391
+ val peer = HMSHelper.getPeerFromPeerId(peerID, room)
2392
+ peer?.let { peer ->
2393
+ hmsSDK?.lowerRemotePeerHand(
2394
+ forPeer = peer,
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
+ }
2408
+ }
2409
+
2410
+ fun getPeerListIterator(data: ReadableMap): WritableMap? {
2411
+ val uniqueId = data.getString("uniqueId")
2412
+ if (uniqueId == null) {
2413
+ print("Error in getPeerListIterator: uniqueId is not available")
2414
+ return null
2415
+ }
2416
+
2417
+ val options = HMSHelper.getPeerListIteratorOptions(data)
2418
+
2419
+ hmsSDK?.let {
2420
+ val iterator = it.getPeerListIterator(options)
2421
+
2422
+ peerListIterators[uniqueId] = iterator
2423
+ val map = Arguments.createMap()
2424
+ map.putBoolean("success", true)
2425
+ map.putString("uniqueId", uniqueId)
2426
+ return map
2427
+ }
2428
+ print("Error in getPeerListIterator: HMS SDK is not available")
2429
+ return null
2430
+ }
2431
+
2432
+ fun peerListIteratorHasNext(
2433
+ data: ReadableMap,
2434
+ promise: Promise?,
2435
+ ) {
2436
+ val uniqueId = data.getString("uniqueId")
2437
+
2438
+ peerListIterators[uniqueId]?.let {
2439
+ promise?.resolve(it.hasNext())
2440
+ return
2441
+ }
2442
+ promise?.reject("101", "PeerListIterator is not available")
2443
+ }
2444
+
2445
+ fun peerListIteratorNext(
2446
+ data: ReadableMap,
2447
+ promise: Promise?,
2448
+ ) {
2449
+ val uniqueId = data.getString("uniqueId")
2450
+
2451
+ val peerListIterator = peerListIterators[uniqueId]
2452
+
2453
+ if (peerListIterator == null) {
2454
+ promise?.reject("101", "PeerListIterator is not available")
2455
+ return
2456
+ }
2457
+
2458
+ peerListIterator.next(
2459
+ object : PeerListResultListener {
2460
+ override fun onError(error: HMSException) {
2461
+ promise?.reject(error.code.toString(), error.message)
2462
+ }
2463
+
2464
+ override fun onSuccess(result: ArrayList<HMSPeer>) {
2465
+ val resultData: WritableMap = Arguments.createMap()
2466
+
2467
+ resultData.putInt("totalCount", peerListIterator.totalCount)
2468
+
2469
+ val array: WritableArray = Arguments.createArray()
2470
+ for (peer in result) {
2471
+ val hmsPeer = HMSDecoder.getHmsPeer(peer)
2472
+ array.pushMap(hmsPeer)
2473
+ }
2474
+
2475
+ resultData.putArray("peers", array)
2476
+
2477
+ promise?.resolve(resultData)
2478
+ }
2479
+ },
2480
+ )
2481
+ }
2311
2482
  }