@100mslive/react-native-hms 1.4.0 → 1.6.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 (205) hide show
  1. package/android/build.gradle +3 -2
  2. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +189 -55
  3. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +1 -0
  4. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +94 -38
  5. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +446 -107
  6. package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +5 -0
  7. package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +42 -25
  8. package/android/src/main/res/layout/hms_view.xml +2 -2
  9. package/ios/HMSConstants.swift +33 -0
  10. package/ios/HMSDecoder.swift +372 -157
  11. package/ios/HMSHelper.swift +44 -7
  12. package/ios/HMSManager.m +17 -2
  13. package/ios/HMSManager.swift +177 -75
  14. package/ios/HMSRNSDK.swift +641 -199
  15. package/ios/HMSView.m +1 -0
  16. package/ios/HMSView.swift +21 -19
  17. package/lib/commonjs/classes/HMSAudioTrackSettings.js +14 -0
  18. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  19. package/lib/commonjs/classes/HMSCameraControl.js +28 -0
  20. package/lib/commonjs/classes/HMSCameraControl.js.map +1 -0
  21. package/lib/commonjs/classes/HMSEncoder.js +97 -14
  22. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  23. package/lib/commonjs/classes/HMSIOSAudioMode.js +13 -0
  24. package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -0
  25. package/lib/commonjs/classes/HMSLayer.js +14 -0
  26. package/lib/commonjs/classes/HMSLayer.js.map +1 -0
  27. package/lib/commonjs/classes/HMSLocalVideoStats.js +11 -0
  28. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -1
  29. package/lib/commonjs/classes/HMSPeer.js +1 -1
  30. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  31. package/lib/commonjs/classes/HMSPublishSettings.js +2 -0
  32. package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
  33. package/lib/commonjs/classes/HMSQualityLimitationReason.js +16 -0
  34. package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -0
  35. package/lib/commonjs/classes/HMSQualityLimitationReasons.js +27 -0
  36. package/lib/commonjs/classes/HMSQualityLimitationReasons.js.map +1 -0
  37. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  38. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +39 -3
  39. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  40. package/lib/commonjs/classes/HMSRoom.js +4 -0
  41. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  42. package/lib/commonjs/classes/HMSRoomUpdate.js +1 -0
  43. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  44. package/lib/commonjs/classes/HMSSDK.js +82 -45
  45. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  46. package/lib/commonjs/classes/HMSSessionStore.js +173 -0
  47. package/lib/commonjs/classes/HMSSessionStore.js.map +1 -0
  48. package/lib/commonjs/classes/HMSSimulcastLayerDefinition.js +19 -0
  49. package/lib/commonjs/classes/HMSSimulcastLayerDefinition.js.map +1 -0
  50. package/lib/commonjs/classes/HMSSimulcastLayerSettingsPolicy.js +23 -0
  51. package/lib/commonjs/classes/HMSSimulcastLayerSettingsPolicy.js.map +1 -0
  52. package/lib/commonjs/classes/HMSSimulcastSettings.js +5 -4
  53. package/lib/commonjs/classes/HMSSimulcastSettings.js.map +1 -1
  54. package/lib/commonjs/classes/HMSSimulcastSettingsPolicy.js +17 -0
  55. package/lib/commonjs/classes/HMSSimulcastSettingsPolicy.js.map +1 -0
  56. package/lib/commonjs/classes/HMSSubscribeDegradationPolicy.js +21 -0
  57. package/lib/commonjs/classes/HMSSubscribeDegradationPolicy.js.map +1 -0
  58. package/lib/commonjs/classes/HMSSubscribeSettings.js +2 -0
  59. package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
  60. package/lib/commonjs/classes/HMSUpdateListenerActions.js +8 -0
  61. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  62. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -1
  63. package/lib/commonjs/classes/HMSVideoTrackSettings.js +5 -0
  64. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  65. package/lib/commonjs/classes/HmsView.js +2 -0
  66. package/lib/commonjs/classes/HmsView.js.map +1 -1
  67. package/lib/commonjs/index.js +72 -0
  68. package/lib/commonjs/index.js.map +1 -1
  69. package/lib/commonjs/utils/emitter/EventEmitter.js +162 -0
  70. package/lib/commonjs/utils/emitter/EventEmitter.js.map +1 -0
  71. package/lib/commonjs/utils/emitter/_EmitterSubscription.js +46 -0
  72. package/lib/commonjs/utils/emitter/_EmitterSubscription.js.map +1 -0
  73. package/lib/commonjs/utils/emitter/_EventSubscription.js +36 -0
  74. package/lib/commonjs/utils/emitter/_EventSubscription.js.map +1 -0
  75. package/lib/commonjs/utils/emitter/_EventSubscriptionVendor.js +90 -0
  76. package/lib/commonjs/utils/emitter/_EventSubscriptionVendor.js.map +1 -0
  77. package/lib/commonjs/utils/index.js +17 -0
  78. package/lib/commonjs/utils/index.js.map +1 -0
  79. package/lib/module/classes/HMSAudioTrackSettings.js +14 -0
  80. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  81. package/lib/module/classes/HMSCameraControl.js +21 -0
  82. package/lib/module/classes/HMSCameraControl.js.map +1 -0
  83. package/lib/module/classes/HMSEncoder.js +97 -14
  84. package/lib/module/classes/HMSEncoder.js.map +1 -1
  85. package/lib/module/classes/HMSIOSAudioMode.js +6 -0
  86. package/lib/module/classes/HMSIOSAudioMode.js.map +1 -0
  87. package/lib/module/classes/HMSLayer.js +7 -0
  88. package/lib/module/classes/HMSLayer.js.map +1 -0
  89. package/lib/module/classes/HMSLocalVideoStats.js +11 -0
  90. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -1
  91. package/lib/module/classes/HMSPeer.js +1 -1
  92. package/lib/module/classes/HMSPeer.js.map +1 -1
  93. package/lib/module/classes/HMSPublishSettings.js +2 -0
  94. package/lib/module/classes/HMSPublishSettings.js.map +1 -1
  95. package/lib/module/classes/HMSQualityLimitationReason.js +9 -0
  96. package/lib/module/classes/HMSQualityLimitationReason.js.map +1 -0
  97. package/lib/module/classes/HMSQualityLimitationReasons.js +20 -0
  98. package/lib/module/classes/HMSQualityLimitationReasons.js.map +1 -0
  99. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  100. package/lib/module/classes/HMSRemoteVideoTrack.js +39 -3
  101. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  102. package/lib/module/classes/HMSRoom.js +4 -0
  103. package/lib/module/classes/HMSRoom.js.map +1 -1
  104. package/lib/module/classes/HMSRoomUpdate.js +1 -0
  105. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  106. package/lib/module/classes/HMSSDK.js +83 -45
  107. package/lib/module/classes/HMSSDK.js.map +1 -1
  108. package/lib/module/classes/HMSSessionStore.js +166 -0
  109. package/lib/module/classes/HMSSessionStore.js.map +1 -0
  110. package/lib/module/classes/HMSSimulcastLayerDefinition.js +12 -0
  111. package/lib/module/classes/HMSSimulcastLayerDefinition.js.map +1 -0
  112. package/lib/module/classes/HMSSimulcastLayerSettingsPolicy.js +16 -0
  113. package/lib/module/classes/HMSSimulcastLayerSettingsPolicy.js.map +1 -0
  114. package/lib/module/classes/HMSSimulcastSettings.js +5 -4
  115. package/lib/module/classes/HMSSimulcastSettings.js.map +1 -1
  116. package/lib/module/classes/HMSSimulcastSettingsPolicy.js +10 -0
  117. package/lib/module/classes/HMSSimulcastSettingsPolicy.js.map +1 -0
  118. package/lib/module/classes/HMSSubscribeDegradationPolicy.js +14 -0
  119. package/lib/module/classes/HMSSubscribeDegradationPolicy.js.map +1 -0
  120. package/lib/module/classes/HMSSubscribeSettings.js +2 -0
  121. package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
  122. package/lib/module/classes/HMSUpdateListenerActions.js +8 -0
  123. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  124. package/lib/module/classes/HMSVideoResolution.js.map +1 -1
  125. package/lib/module/classes/HMSVideoTrackSettings.js +5 -0
  126. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  127. package/lib/module/classes/HmsView.js +2 -0
  128. package/lib/module/classes/HmsView.js.map +1 -1
  129. package/lib/module/index.js +6 -0
  130. package/lib/module/index.js.map +1 -1
  131. package/lib/module/utils/emitter/EventEmitter.js +151 -0
  132. package/lib/module/utils/emitter/EventEmitter.js.map +1 -0
  133. package/lib/module/utils/emitter/_EmitterSubscription.js +39 -0
  134. package/lib/module/utils/emitter/_EmitterSubscription.js.map +1 -0
  135. package/lib/module/utils/emitter/_EventSubscription.js +29 -0
  136. package/lib/module/utils/emitter/_EventSubscription.js.map +1 -0
  137. package/lib/module/utils/emitter/_EventSubscriptionVendor.js +83 -0
  138. package/lib/module/utils/emitter/_EventSubscriptionVendor.js.map +1 -0
  139. package/lib/module/utils/index.js +2 -0
  140. package/lib/module/utils/index.js.map +1 -0
  141. package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +14 -0
  142. package/lib/typescript/classes/HMSCameraControl.d.ts +9 -0
  143. package/lib/typescript/classes/HMSEncoder.d.ts +13 -1
  144. package/lib/typescript/classes/HMSIOSAudioMode.d.ts +4 -0
  145. package/lib/typescript/classes/HMSLayer.d.ts +5 -0
  146. package/lib/typescript/classes/HMSLocalVideoStats.d.ts +6 -0
  147. package/lib/typescript/classes/HMSPeer.d.ts +1 -1
  148. package/lib/typescript/classes/HMSPublishSettings.d.ts +3 -0
  149. package/lib/typescript/classes/HMSQualityLimitationReason.d.ts +7 -0
  150. package/lib/typescript/classes/HMSQualityLimitationReasons.d.ts +17 -0
  151. package/lib/typescript/classes/HMSRemotePeer.d.ts +0 -1
  152. package/lib/typescript/classes/HMSRemoteVideoTrack.d.ts +6 -2
  153. package/lib/typescript/classes/HMSRoomUpdate.d.ts +2 -1
  154. package/lib/typescript/classes/HMSSDK.d.ts +21 -31
  155. package/lib/typescript/classes/HMSSessionStore.d.ts +63 -0
  156. package/lib/typescript/classes/HMSSimulcastLayerDefinition.d.ts +10 -0
  157. package/lib/typescript/classes/HMSSimulcastLayerSettingsPolicy.d.ts +12 -0
  158. package/lib/typescript/classes/HMSSimulcastSettings.d.ts +7 -3
  159. package/lib/typescript/classes/HMSSimulcastSettingsPolicy.d.ts +7 -0
  160. package/lib/typescript/classes/HMSSubscribeDegradationPolicy.d.ts +10 -0
  161. package/lib/typescript/classes/HMSSubscribeSettings.d.ts +5 -2
  162. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +9 -1
  163. package/lib/typescript/classes/HMSVideoResolution.d.ts +2 -2
  164. package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +5 -0
  165. package/lib/typescript/classes/HmsView.d.ts +2 -2
  166. package/lib/typescript/index.d.ts +7 -0
  167. package/lib/typescript/utils/emitter/EventEmitter.d.ts +91 -0
  168. package/lib/typescript/utils/emitter/_EmitterSubscription.d.ts +29 -0
  169. package/lib/typescript/utils/emitter/_EventSubscription.d.ts +19 -0
  170. package/lib/typescript/utils/emitter/_EventSubscriptionVendor.d.ts +44 -0
  171. package/lib/typescript/utils/index.d.ts +1 -0
  172. package/package.json +21 -2
  173. package/sdk-versions.json +3 -3
  174. package/src/classes/HMSAudioTrackSettings.ts +16 -0
  175. package/src/classes/HMSCameraControl.ts +21 -0
  176. package/src/classes/HMSEncoder.ts +126 -11
  177. package/src/classes/HMSIOSAudioMode.ts +4 -0
  178. package/src/classes/HMSLayer.ts +5 -0
  179. package/src/classes/HMSLocalVideoStats.ts +21 -0
  180. package/src/classes/HMSPeer.ts +1 -1
  181. package/src/classes/HMSPublishSettings.ts +4 -0
  182. package/src/classes/HMSQualityLimitationReason.ts +7 -0
  183. package/src/classes/HMSQualityLimitationReasons.ts +27 -0
  184. package/src/classes/HMSRemotePeer.ts +0 -1
  185. package/src/classes/HMSRemoteVideoTrack.ts +52 -4
  186. package/src/classes/HMSRoom.ts +2 -0
  187. package/src/classes/HMSRoomUpdate.ts +1 -0
  188. package/src/classes/HMSSDK.tsx +124 -52
  189. package/src/classes/HMSSessionStore.ts +209 -0
  190. package/src/classes/HMSSimulcastLayerDefinition.ts +12 -0
  191. package/src/classes/HMSSimulcastLayerSettingsPolicy.ts +18 -0
  192. package/src/classes/HMSSimulcastSettings.ts +12 -3
  193. package/src/classes/HMSSimulcastSettingsPolicy.ts +9 -0
  194. package/src/classes/HMSSubscribeDegradationPolicy.ts +15 -0
  195. package/src/classes/HMSSubscribeSettings.ts +10 -2
  196. package/src/classes/HMSUpdateListenerActions.ts +8 -0
  197. package/src/classes/HMSVideoResolution.ts +1 -1
  198. package/src/classes/HMSVideoTrackSettings.ts +5 -0
  199. package/src/classes/HmsView.tsx +5 -1
  200. package/src/index.ts +10 -0
  201. package/src/utils/emitter/EventEmitter.ts +160 -0
  202. package/src/utils/emitter/_EmitterSubscription.ts +44 -0
  203. package/src/utils/emitter/_EventSubscription.ts +28 -0
  204. package/src/utils/emitter/_EventSubscriptionVendor.ts +89 -0
  205. package/src/utils/index.ts +1 -0
@@ -172,15 +172,21 @@ class HMSHelper: NSObject {
172
172
  }
173
173
 
174
174
  static func getLocalAudioSettings(_ settings: NSDictionary?, _ hms: HMSSDK?, _ delegate: HMSManager?, _ id: String) -> HMSAudioTrackSettings? {
175
- if settings === nil {
175
+
176
+ guard let settings = settings
177
+ else {
178
+ print(#function, "No Local Audio Settings passed.")
176
179
  return nil
177
180
  }
178
- let initialState = settings?.value(forKey: "initialState") as? String
181
+
182
+ let initialState = settings.value(forKey: "initialState") as? String
179
183
  let initialStateEncoded = HMSHelper.getHMSTrackSettingsInitState(initialState)
180
184
 
185
+ let audioMode = getAudioMode(from: settings["audioMode"] as? String)
186
+
181
187
  if #available(iOS 13.0, *) {
182
188
  var audioMixerSourceMap: [String: HMSAudioNode]?
183
- if let playerNode = settings?.value(forKey: "audioSource") as? [String] {
189
+ if let playerNode = settings.value(forKey: "audioSource") as? [String] {
184
190
  audioMixerSourceMap = [String: HMSAudioNode]()
185
191
  for node in playerNode {
186
192
  if audioMixerSourceMap?[node] == nil {
@@ -190,7 +196,7 @@ class HMSHelper: NSObject {
190
196
  do {
191
197
  audioMixerSourceMap?["screen_broadcast_audio_receiver_node"] = try hms?.screenBroadcastAudioReceiverNode()
192
198
  } catch {
193
- delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
199
+ delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
194
200
  }
195
201
  } else {
196
202
  audioMixerSourceMap?[node] = HMSAudioFilePlayerNode()
@@ -203,15 +209,33 @@ class HMSHelper: NSObject {
203
209
  do {
204
210
  self.audioMixerSourceHashMap = audioMixerSourceMap
205
211
  let audioMixerSource = try HMSAudioMixerSource(nodes: audioMixerSourceMap.values.map {$0})
206
- return HMSAudioTrackSettings(maxBitrate: 32, trackDescription: "", initialMuteState: initialStateEncoded, audioSource: audioMixerSource)
212
+
213
+ return HMSAudioTrackSettings.build { builder in
214
+
215
+ builder.initialMuteState = initialStateEncoded
216
+
217
+ builder.audioSource = audioMixerSource
218
+
219
+ if let audioMode = audioMode {
220
+ builder.audioMode = audioMode
221
+ }
222
+ }
223
+
207
224
  } catch {
208
- delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
225
+ delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
209
226
  return nil
210
227
  }
211
228
  }
212
229
  }
213
230
 
214
- return HMSAudioTrackSettings(maxBitrate: 32, trackDescription: "", initialMuteState: initialStateEncoded, audioSource: nil)
231
+ return HMSAudioTrackSettings.build { builder in
232
+
233
+ builder.initialMuteState = initialStateEncoded
234
+
235
+ if let audioMode = audioMode {
236
+ builder.audioMode = audioMode
237
+ }
238
+ }
215
239
  }
216
240
 
217
241
  static func getAudioMixerSourceMap() -> [String: HMSAudioNode]? {
@@ -318,4 +342,17 @@ class HMSHelper: NSObject {
318
342
  }
319
343
  return nil
320
344
  }
345
+
346
+ private static func getAudioMode(from mode: String?) -> HMSAudioMode? {
347
+ switch mode {
348
+ case "voice":
349
+ return .voice
350
+
351
+ case "music":
352
+ return .music
353
+
354
+ default:
355
+ return nil
356
+ }
357
+ }
321
358
  }
package/ios/HMSManager.m CHANGED
@@ -34,8 +34,6 @@ RCT_EXTERN_METHOD(stopRtmpAndRecording: (NSDictionary) data :(RCTPromiseResolveB
34
34
  RCT_EXTERN_METHOD(startHLSStreaming: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
35
35
  RCT_EXTERN_METHOD(stopHLSStreaming: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
36
36
  RCT_EXTERN_METHOD(changeName: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
37
- RCT_EXTERN_METHOD(enableRTCStats: (NSDictionary) data)
38
- RCT_EXTERN_METHOD(disableRTCStats: (NSDictionary) data)
39
37
  RCT_EXTERN_METHOD(destroy: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
40
38
  RCT_EXTERN_METHOD(startScreenshare: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
41
39
  RCT_EXTERN_METHOD(stopScreenshare: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
@@ -65,4 +63,21 @@ RCT_EXTERN_METHOD(enableEvent: (NSDictionary) data :(RCTPromiseResolveBlock) res
65
63
  RCT_EXTERN_METHOD(disableEvent: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
66
64
  RCT_EXTERN_METHOD(restrictData: (NSDictionary) data)
67
65
  RCT_EXTERN_METHOD(getAuthTokenByRoomCode: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
66
+ RCT_EXTERN_METHOD(getRemoteVideoTrackFromTrackId: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
67
+ RCT_EXTERN_METHOD(getRemoteAudioTrackFromTrackId: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
68
+ RCT_EXTERN_METHOD(getVideoTrackLayerDefinition: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
69
+ RCT_EXTERN_METHOD(getVideoTrackLayer: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
70
+ RCT_EXTERN_METHOD(setVideoTrackLayer: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
71
+
72
+ #pragma mark - Advanced Camera Controls
73
+
74
+ RCT_EXTERN_METHOD(captureImageAtMaxSupportedResolution: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
75
+
76
+ #pragma mark - Session Store
77
+
78
+ RCT_EXTERN_METHOD(getSessionMetadataForKey: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
79
+ RCT_EXTERN_METHOD(setSessionMetadataForKey: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
80
+ RCT_EXTERN_METHOD(addKeyChangeListener: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
81
+ RCT_EXTERN_METHOD(removeKeyChangeListener: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
82
+
68
83
  @end
@@ -36,10 +36,15 @@ class HMSManager: RCTEventEmitter {
36
36
  }
37
37
 
38
38
  override func supportedEvents() -> [String]! {
39
- 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]
39
+ 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
40
  }
41
41
 
42
- // MARK: - HMS SDK Actions
42
+ // MARK: - HMS SDK Delegate Callbacks
43
+ func emitEvent(_ name: String, _ data: [String: Any]) {
44
+ self.sendEvent(withName: name, body: data)
45
+ }
46
+
47
+ // MARK: - Setup HMSSDK
43
48
 
44
49
  @objc
45
50
  func build(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
@@ -62,6 +67,15 @@ class HMSManager: RCTEventEmitter {
62
67
  }
63
68
  }
64
69
 
70
+ @objc
71
+ func destroy(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
72
+ let id = data.value(forKey: "id") as? String ?? "12345"
73
+ hmsCollection.removeValue(forKey: id)
74
+ resolve?(["success": id + " removed"])
75
+ }
76
+
77
+ // MARK: - Preview
78
+
65
79
  @objc
66
80
  func preview(_ credentials: NSDictionary) {
67
81
  let hms = HMSHelper.getHms(credentials, hmsCollection)
@@ -82,12 +96,25 @@ class HMSManager: RCTEventEmitter {
82
96
  hms?.cancelPreview()
83
97
  }
84
98
 
99
+ // MARK: - Join Room
100
+
85
101
  @objc
86
102
  func join(_ credentials: NSDictionary) {
87
103
  let hms = HMSHelper.getHms(credentials, hmsCollection)
88
104
  hms?.join(credentials)
89
105
  }
90
106
 
107
+ // MARK: - Leave Room Actions
108
+
109
+ @objc
110
+ func leave(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
111
+ let hms = HMSHelper.getHms(data, hmsCollection)
112
+
113
+ hms?.leave(resolve, reject)
114
+ }
115
+
116
+ // MARK: - Audio & Video Actions
117
+
91
118
  @objc
92
119
  func setLocalMute(_ data: NSDictionary) {
93
120
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -110,129 +137,137 @@ class HMSManager: RCTEventEmitter {
110
137
  }
111
138
 
112
139
  @objc
113
- func leave(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
140
+ func isMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
114
141
  let hms = HMSHelper.getHms(data, hmsCollection)
115
-
116
- hms?.leave(resolve, reject)
142
+ if let hmsInstance = hms {
143
+ hmsInstance.isMute(data, resolve, reject)
144
+ } else {
145
+ reject?(nil, "NO_INSTANCE", nil)
146
+ return
147
+ }
117
148
  }
118
149
 
119
150
  @objc
120
- func sendBroadcastMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
151
+ func setPlaybackAllowed(_ data: NSDictionary) {
121
152
  let hms = HMSHelper.getHms(data, hmsCollection)
122
153
 
123
- hms?.sendBroadcastMessage(data, resolve, reject)
154
+ hms?.setPlaybackAllowed(data)
124
155
  }
125
156
 
126
157
  @objc
127
- func sendGroupMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
158
+ func isPlaybackAllowed(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
128
159
  let hms = HMSHelper.getHms(data, hmsCollection)
129
160
 
130
- hms?.sendGroupMessage(data, resolve, reject)
161
+ hms?.isPlaybackAllowed(data, resolve, reject)
131
162
  }
132
163
 
133
164
  @objc
134
- func sendDirectMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
165
+ func setPlaybackForAllAudio(_ data: NSDictionary) {
135
166
  let hms = HMSHelper.getHms(data, hmsCollection)
136
167
 
137
- hms?.sendDirectMessage(data, resolve, reject)
168
+ hms?.setPlaybackForAllAudio(data)
138
169
  }
139
170
 
140
171
  @objc
141
- func acceptRoleChange(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
172
+ func remoteMuteAllAudio(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
142
173
  let hms = HMSHelper.getHms(data, hmsCollection)
143
174
 
144
- hms?.acceptRoleChange(resolve, reject)
175
+ hms?.remoteMuteAllAudio(resolve, reject)
145
176
  }
146
177
 
147
- @available(*, deprecated, message: "Use changeRoleOfPeer function")
148
178
  @objc
149
- func changeRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
179
+ func setVolume(_ data: NSDictionary) {
150
180
  let hms = HMSHelper.getHms(data, hmsCollection)
151
181
 
152
- hms?.changeRole(data, resolve, reject)
182
+ hms?.setVolume(data)
153
183
  }
154
184
 
185
+ // MARK: - Messaging
186
+
155
187
  @objc
156
- func changeRoleOfPeer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
188
+ func sendBroadcastMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
157
189
  let hms = HMSHelper.getHms(data, hmsCollection)
158
190
 
159
- hms?.changeRole(data, resolve, reject)
191
+ hms?.sendBroadcastMessage(data, resolve, reject)
160
192
  }
161
193
 
162
194
  @objc
163
- func changeRoleOfPeersWithRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
195
+ func sendGroupMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
164
196
  let hms = HMSHelper.getHms(data, hmsCollection)
165
197
 
166
- hms?.changeRolesOfAllPeers(data, resolve, reject)
198
+ hms?.sendGroupMessage(data, resolve, reject)
167
199
  }
168
200
 
169
201
  @objc
170
- func changeTrackState(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
202
+ func sendDirectMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
171
203
  let hms = HMSHelper.getHms(data, hmsCollection)
172
204
 
173
- hms?.changeTrackState(data, resolve, reject)
205
+ hms?.sendDirectMessage(data, resolve, reject)
174
206
  }
175
207
 
208
+ // MARK: - Change Role
209
+
210
+ @available(*, deprecated, message: "Use changeRoleOfPeer function")
176
211
  @objc
177
- func changeTrackStateForRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
212
+ func changeRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
178
213
  let hms = HMSHelper.getHms(data, hmsCollection)
179
214
 
180
- hms?.changeTrackStateForRoles(data, resolve, reject)
215
+ hms?.changeRole(data, resolve, reject)
181
216
  }
182
217
 
183
218
  @objc
184
- func isMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
219
+ func changeRoleOfPeer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
185
220
  let hms = HMSHelper.getHms(data, hmsCollection)
186
- if let hmsInstance = hms {
187
- hmsInstance.isMute(data, resolve, reject)
188
- } else {
189
- reject?(nil, "NO_INSTANCE", nil)
190
- return
191
- }
221
+
222
+ hms?.changeRole(data, resolve, reject)
192
223
  }
193
224
 
194
225
  @objc
195
- func removePeer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
226
+ func changeRoleOfPeersWithRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
196
227
  let hms = HMSHelper.getHms(data, hmsCollection)
197
228
 
198
- hms?.removePeer(data, resolve, reject)
229
+ hms?.changeRolesOfAllPeers(data, resolve, reject)
199
230
  }
200
231
 
201
232
  @objc
202
- func endRoom(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
233
+ func acceptRoleChange(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
203
234
  let hms = HMSHelper.getHms(data, hmsCollection)
204
235
 
205
- hms?.endRoom(data, resolve, reject)
236
+ hms?.acceptRoleChange(resolve, reject)
206
237
  }
207
238
 
239
+ // MARK: - Role Based Actions
240
+
208
241
  @objc
209
- func setPlaybackAllowed(_ data: NSDictionary) {
242
+ func changeTrackState(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
210
243
  let hms = HMSHelper.getHms(data, hmsCollection)
211
244
 
212
- hms?.setPlaybackAllowed(data)
245
+ hms?.changeTrackState(data, resolve, reject)
213
246
  }
214
247
 
215
248
  @objc
216
- func isPlaybackAllowed(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
249
+ func changeTrackStateForRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
217
250
  let hms = HMSHelper.getHms(data, hmsCollection)
218
251
 
219
- hms?.isPlaybackAllowed(data, resolve, reject)
252
+ hms?.changeTrackStateForRoles(data, resolve, reject)
220
253
  }
221
254
 
222
255
  @objc
223
- func setPlaybackForAllAudio(_ data: NSDictionary) {
256
+ func removePeer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
224
257
  let hms = HMSHelper.getHms(data, hmsCollection)
225
258
 
226
- hms?.setPlaybackForAllAudio(data)
259
+ hms?.removePeer(data, resolve, reject)
227
260
  }
228
261
 
229
262
  @objc
230
- func remoteMuteAllAudio(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
263
+ func endRoom(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
231
264
  let hms = HMSHelper.getHms(data, hmsCollection)
232
265
 
233
- hms?.remoteMuteAllAudio(resolve, reject)
266
+ hms?.endRoom(data, resolve, reject)
234
267
  }
235
268
 
269
+ // MARK: - Peer Actions
270
+
236
271
  @objc
237
272
  func changeMetadata(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
238
273
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -241,12 +276,14 @@ class HMSManager: RCTEventEmitter {
241
276
  }
242
277
 
243
278
  @objc
244
- func setVolume(_ data: NSDictionary) {
279
+ func changeName(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
245
280
  let hms = HMSHelper.getHms(data, hmsCollection)
246
281
 
247
- hms?.setVolume(data)
282
+ hms?.changeName(data, resolve, reject)
248
283
  }
249
284
 
285
+ // MARK: - RTMP Streaming & Recording
286
+
250
287
  @objc
251
288
  func startRTMPOrRecording(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
252
289
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -261,6 +298,8 @@ class HMSManager: RCTEventEmitter {
261
298
  hms?.stopRtmpAndRecording(resolve, reject)
262
299
  }
263
300
 
301
+ // MARK: - HLS Streaming & Recording
302
+
264
303
  @objc
265
304
  func startHLSStreaming(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
266
305
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -275,33 +314,7 @@ class HMSManager: RCTEventEmitter {
275
314
  hms?.stopHLSStreaming(resolve, reject)
276
315
  }
277
316
 
278
- @objc
279
- func changeName(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
280
- let hms = HMSHelper.getHms(data, hmsCollection)
281
-
282
- hms?.changeName(data, resolve, reject)
283
- }
284
-
285
- @objc
286
- func enableRTCStats(_ data: NSDictionary) {
287
- let hms = HMSHelper.getHms(data, hmsCollection)
288
-
289
- hms?.enableRTCStats()
290
- }
291
-
292
- @objc
293
- func disableRTCStats(_ data: NSDictionary) {
294
- let hms = HMSHelper.getHms(data, hmsCollection)
295
-
296
- hms?.disableRTCStats()
297
- }
298
-
299
- @objc
300
- func destroy(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
301
- let id = data.value(forKey: "id") as? String ?? "12345"
302
- hmsCollection.removeValue(forKey: id)
303
- resolve?(["success": id + " removed"])
304
- }
317
+ // MARK: - Screen Share
305
318
 
306
319
  @objc
307
320
  func startScreenshare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
@@ -324,6 +337,8 @@ class HMSManager: RCTEventEmitter {
324
337
  hms?.isScreenShared(resolve, reject)
325
338
  }
326
339
 
340
+ // MARK: - Audio Playback
341
+
327
342
  @objc
328
343
  func playAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
329
344
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -380,6 +395,8 @@ class HMSManager: RCTEventEmitter {
380
395
  hms?.audioShareDuration(data, resolve, reject)
381
396
  }
382
397
 
398
+ // MARK: - Network Quality Updates
399
+
383
400
  @objc
384
401
  func enableNetworkQualityUpdates(_ data: NSDictionary) {
385
402
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -394,6 +411,8 @@ class HMSManager: RCTEventEmitter {
394
411
  hms?.disableNetworkQualityUpdates()
395
412
  }
396
413
 
414
+ // MARK: - Session Metadata
415
+
397
416
  @objc
398
417
  func setSessionMetaData(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
399
418
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -401,6 +420,8 @@ class HMSManager: RCTEventEmitter {
401
420
  hms?.setSessionMetaData(data, resolve, reject)
402
421
  }
403
422
 
423
+ // MARK: - Peer & Room Property Getter Functions
424
+
404
425
  @objc
405
426
  func getPeerProperty(_ data: NSDictionary) -> [AnyHashable: Any]? {
406
427
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -415,6 +436,8 @@ class HMSManager: RCTEventEmitter {
415
436
  return hms?.getRoomProperty(data)
416
437
  }
417
438
 
439
+ // MARK: - Enable/Disable HMS Events Emitting to JS
440
+
418
441
  @objc
419
442
  func enableEvent(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
420
443
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -429,6 +452,8 @@ class HMSManager: RCTEventEmitter {
429
452
  hms?.disableEvent(data, resolve, reject)
430
453
  }
431
454
 
455
+ // MARK: - Restrict sending whole HMSRole object
456
+
432
457
  @objc
433
458
  func restrictData(_ data: NSDictionary) {
434
459
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -436,6 +461,8 @@ class HMSManager: RCTEventEmitter {
436
461
  hms?.restrictData(data)
437
462
  }
438
463
 
464
+ // MARK: - Room Code Auth Token API
465
+
439
466
  @objc
440
467
  func getAuthTokenByRoomCode(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
441
468
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -479,8 +506,83 @@ class HMSManager: RCTEventEmitter {
479
506
  hms?.getSessionMetaData(resolve, reject)
480
507
  }
481
508
 
482
- // MARK: - HMS SDK Delegate Callbacks
483
- func emitEvent(_ name: String, _ data: [String: Any]) {
484
- self.sendEvent(withName: name, body: data)
509
+ @objc
510
+ func getRemoteVideoTrackFromTrackId(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
511
+ let hms = HMSHelper.getHms(data, hmsCollection)
512
+
513
+ hms?.getRemoteVideoTrackFromTrackId(data, resolve, reject)
514
+ }
515
+
516
+ @objc
517
+ func getRemoteAudioTrackFromTrackId(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
518
+ let hms = HMSHelper.getHms(data, hmsCollection)
519
+
520
+ hms?.getRemoteAudioTrackFromTrackId(data, resolve, reject)
521
+ }
522
+
523
+ // MARK: - Simulcast
524
+
525
+ @objc
526
+ func getVideoTrackLayerDefinition(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
527
+ let hms = HMSHelper.getHms(data, hmsCollection)
528
+
529
+ hms?.getVideoTrackLayerDefinition(data, resolve, reject)
530
+ }
531
+
532
+ @objc
533
+ func getVideoTrackLayer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
534
+ let hms = HMSHelper.getHms(data, hmsCollection)
535
+
536
+ hms?.getVideoTrackLayer(data, resolve, reject)
537
+ }
538
+
539
+ @objc
540
+ func setVideoTrackLayer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
541
+ let hms = HMSHelper.getHms(data, hmsCollection)
542
+
543
+ hms?.setVideoTrackLayer(data, resolve, reject)
544
+ }
545
+
546
+ // MARK: - Advanced Camera Controls
547
+
548
+ @objc
549
+ func captureImageAtMaxSupportedResolution(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
550
+ let hms = HMSHelper.getHms(data, hmsCollection)
551
+
552
+ hms?.captureImageAtMaxSupportedResolution(data, resolve, reject)
553
+ }
554
+
555
+ // MARK: - Session Store
556
+
557
+ @objc
558
+ func getSessionMetadataForKey(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
559
+
560
+ let hms = HMSHelper.getHms(data, hmsCollection)
561
+
562
+ hms?.getSessionMetadataForKey(data, resolve, reject)
563
+ }
564
+
565
+ @objc
566
+ func setSessionMetadataForKey(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
567
+
568
+ let hms = HMSHelper.getHms(data, hmsCollection)
569
+
570
+ hms?.setSessionMetadataForKey(data, resolve, reject)
571
+ }
572
+
573
+ @objc
574
+ func addKeyChangeListener(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
575
+
576
+ let hms = HMSHelper.getHms(data, hmsCollection)
577
+
578
+ hms?.addKeyChangeListener(data, resolve, reject)
579
+ }
580
+
581
+ @objc
582
+ func removeKeyChangeListener(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
583
+
584
+ let hms = HMSHelper.getHms(data, hmsCollection)
585
+
586
+ hms?.removeKeyChangeListener(data, resolve, reject)
485
587
  }
486
588
  }