@100mslive/react-native-hms 0.9.7 → 0.9.91

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 (170) hide show
  1. package/README.md +63 -44
  2. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  3. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  4. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  6. package/android/.gradle/checksums/checksums.lock +0 -0
  7. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  8. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  9. package/android/.idea/compiler.xml +6 -0
  10. package/android/.idea/gradle.xml +6 -1
  11. package/android/.idea/jarRepositories.xml +40 -0
  12. package/android/.idea/libraries/Gradle__androidx_activity_activity_1_2_4_aar.xml +16 -0
  13. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_1_3_0.xml +11 -0
  14. package/android/.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_1_0_aar.xml +13 -0
  15. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_1_4_1_aar.xml +16 -0
  16. package/android/.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_4_1_aar.xml +13 -0
  17. package/android/.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml +11 -0
  18. package/android/.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_1_0_aar.xml +13 -0
  19. package/android/.idea/libraries/Gradle__androidx_autofill_autofill_1_1_0_aar.xml +16 -0
  20. package/android/.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml +11 -0
  21. package/android/.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_2_1_3_aar.xml +13 -0
  22. package/android/.idea/libraries/Gradle__androidx_core_core_1_7_0_aar.xml +16 -0
  23. package/android/.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml +13 -0
  24. package/android/.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml +13 -0
  25. package/android/.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml +16 -0
  26. package/android/.idea/libraries/Gradle__androidx_fragment_fragment_1_3_6_aar.xml +16 -0
  27. package/android/.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml +13 -0
  28. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_4_0.xml +11 -0
  29. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml +13 -0
  30. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_3_1_aar.xml +13 -0
  31. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_4_0_aar.xml +13 -0
  32. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_3_1_aar.xml +13 -0
  33. package/android/.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_savedstate_2_3_1_aar.xml +13 -0
  34. package/android/.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml +13 -0
  35. package/android/.idea/libraries/Gradle__androidx_savedstate_savedstate_1_1_0_aar.xml +13 -0
  36. package/android/.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml +16 -0
  37. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml +13 -0
  38. package/android/.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml +13 -0
  39. package/android/.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_1_aar.xml +13 -0
  40. package/android/.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml +13 -0
  41. package/android/.idea/libraries/Gradle__com_facebook_fbjni_fbjni_java_only_0_2_2.xml +13 -0
  42. package/android/.idea/libraries/Gradle__com_facebook_fresco_drawee_2_5_0_aar.xml +15 -0
  43. package/android/.idea/libraries/Gradle__com_facebook_fresco_fbcore_2_5_0_aar.xml +18 -0
  44. package/android/.idea/libraries/Gradle__com_facebook_fresco_fresco_2_5_0_aar.xml +18 -0
  45. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_2_5_0_aar.xml +18 -0
  46. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_base_2_5_0_aar.xml +18 -0
  47. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_native_2_5_0_aar.xml +15 -0
  48. package/android/.idea/libraries/Gradle__com_facebook_fresco_imagepipeline_okhttp3_2_5_0_aar.xml +15 -0
  49. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_ashmem_2_5_0_aar.xml +15 -0
  50. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_java_2_5_0_aar.xml +15 -0
  51. package/android/.idea/libraries/Gradle__com_facebook_fresco_memory_type_native_2_5_0_aar.xml +15 -0
  52. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagefilters_2_5_0_aar.xml +15 -0
  53. package/android/.idea/libraries/Gradle__com_facebook_fresco_nativeimagetranscoder_2_5_0_aar.xml +15 -0
  54. package/android/.idea/libraries/Gradle__com_facebook_fresco_ui_common_2_5_0_aar.xml +15 -0
  55. package/android/.idea/libraries/Gradle__com_facebook_infer_annotation_infer_annotation_0_18_0.xml +13 -0
  56. package/android/.idea/libraries/Gradle__com_facebook_react_react_native_0_69_1_debug_aar.xml +14 -0
  57. package/android/.idea/libraries/Gradle__com_facebook_soloader_annotation_0_10_3.xml +13 -0
  58. package/android/.idea/libraries/Gradle__com_facebook_soloader_nativeloader_0_10_3.xml +13 -0
  59. package/android/.idea/libraries/Gradle__com_facebook_soloader_soloader_0_10_3_aar.xml +15 -0
  60. package/android/.idea/libraries/Gradle__com_facebook_yoga_proguard_annotations_1_19_0.xml +13 -0
  61. package/android/.idea/libraries/Gradle__com_github_100mslive_android_sdk_lib_2_4_7_aar.xml +11 -0
  62. package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m97_hms_1_1_aar.xml +11 -0
  63. package/android/.idea/libraries/Gradle__com_google_code_findbugs_jsr305_3_0_2.xml +13 -0
  64. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_4_9_2.xml +13 -0
  65. package/android/.idea/libraries/Gradle__com_squareup_okhttp3_okhttp_urlconnection_4_9_2.xml +13 -0
  66. package/android/.idea/libraries/Gradle__com_squareup_okio_okio_2_9_0.xml +13 -0
  67. package/android/.idea/libraries/Gradle__javax_inject_javax_inject_1.xml +13 -0
  68. package/android/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml +13 -0
  69. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_annotations_jvm_1_3_72.xml +13 -0
  70. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_6_10.xml +13 -0
  71. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_6_10.xml +13 -0
  72. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_6_10.xml +13 -0
  73. package/android/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_6_10.xml +13 -0
  74. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_6_0.xml +13 -0
  75. package/android/.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_6_0.xml +13 -0
  76. package/android/.idea/misc.xml +1 -1
  77. package/android/.idea/modules/android.androidTest.iml +201 -0
  78. package/android/.idea/modules/android.iml +28 -6
  79. package/android/.idea/modules/android.main.iml +196 -0
  80. package/android/.idea/modules/android.unitTest.iml +195 -0
  81. package/android/.idea/modules.xml +3 -0
  82. package/android/build.gradle +2 -2
  83. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +84 -0
  84. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +79 -10
  85. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +130 -27
  86. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +88 -2
  87. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +307 -82
  88. package/ios/HMSDecoder.swift +9 -8
  89. package/ios/HMSHelper.swift +18 -8
  90. package/ios/HMSManager.m +1 -1
  91. package/ios/HMSManager.swift +7 -6
  92. package/ios/HMSRNSDK.swift +198 -173
  93. package/lib/commonjs/classes/HMSAudioDevice.js +17 -0
  94. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -0
  95. package/lib/commonjs/classes/HMSAudioMixingMode.js +15 -0
  96. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -0
  97. package/lib/commonjs/classes/HMSAudioMode.js +17 -0
  98. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -0
  99. package/lib/commonjs/classes/HMSEncoder.js +15 -0
  100. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  101. package/lib/commonjs/classes/HMSException.js +18 -13
  102. package/lib/commonjs/classes/HMSException.js.map +1 -1
  103. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  104. package/lib/commonjs/classes/HMSLogger.js +2 -2
  105. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  106. package/lib/commonjs/classes/HMSPermissions.js +7 -4
  107. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  108. package/lib/commonjs/classes/HMSRTMPConfig.js +3 -0
  109. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  110. package/lib/commonjs/classes/HMSRtmpVideoResolution.js +23 -0
  111. package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -0
  112. package/lib/commonjs/classes/HMSSDK.js +268 -48
  113. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  114. package/lib/commonjs/classes/HMSUpdateListenerActions.js +1 -0
  115. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  116. package/lib/commonjs/index.js +56 -0
  117. package/lib/commonjs/index.js.map +1 -1
  118. package/lib/module/classes/HMSAudioDevice.js +10 -0
  119. package/lib/module/classes/HMSAudioDevice.js.map +1 -0
  120. package/lib/module/classes/HMSAudioMixingMode.js +8 -0
  121. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -0
  122. package/lib/module/classes/HMSAudioMode.js +10 -0
  123. package/lib/module/classes/HMSAudioMode.js.map +1 -0
  124. package/lib/module/classes/HMSEncoder.js +14 -0
  125. package/lib/module/classes/HMSEncoder.js.map +1 -1
  126. package/lib/module/classes/HMSException.js +18 -13
  127. package/lib/module/classes/HMSException.js.map +1 -1
  128. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  129. package/lib/module/classes/HMSLogger.js +2 -2
  130. package/lib/module/classes/HMSLogger.js.map +1 -1
  131. package/lib/module/classes/HMSPermissions.js +7 -4
  132. package/lib/module/classes/HMSPermissions.js.map +1 -1
  133. package/lib/module/classes/HMSRTMPConfig.js +3 -0
  134. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  135. package/lib/module/classes/HMSRtmpVideoResolution.js +14 -0
  136. package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -0
  137. package/lib/module/classes/HMSSDK.js +267 -42
  138. package/lib/module/classes/HMSSDK.js.map +1 -1
  139. package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
  140. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  141. package/lib/module/index.js +4 -0
  142. package/lib/module/index.js.map +1 -1
  143. package/lib/typescript/classes/HMSAudioDevice.d.ts +7 -0
  144. package/lib/typescript/classes/HMSAudioMixingMode.d.ts +5 -0
  145. package/lib/typescript/classes/HMSAudioMode.d.ts +7 -0
  146. package/lib/typescript/classes/HMSEncoder.d.ts +2 -0
  147. package/lib/typescript/classes/HMSException.d.ts +8 -14
  148. package/lib/typescript/classes/HMSHLSConfig.d.ts +2 -2
  149. package/lib/typescript/classes/HMSLogger.d.ts +1 -1
  150. package/lib/typescript/classes/HMSPermissions.d.ts +6 -4
  151. package/lib/typescript/classes/HMSRTMPConfig.d.ts +3 -0
  152. package/lib/typescript/classes/HMSRtmpVideoResolution.d.ts +8 -0
  153. package/lib/typescript/classes/HMSSDK.d.ts +109 -11
  154. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
  155. package/lib/typescript/index.d.ts +4 -0
  156. package/package.json +1 -19
  157. package/react-native-hms.podspec +1 -1
  158. package/src/classes/HMSAudioDevice.ts +7 -0
  159. package/src/classes/HMSAudioMixingMode.ts +5 -0
  160. package/src/classes/HMSAudioMode.ts +7 -0
  161. package/src/classes/HMSEncoder.ts +12 -0
  162. package/src/classes/HMSException.ts +15 -24
  163. package/src/classes/HMSHLSConfig.ts +2 -2
  164. package/src/classes/HMSLogger.ts +2 -2
  165. package/src/classes/HMSPermissions.ts +9 -6
  166. package/src/classes/HMSRTMPConfig.ts +5 -0
  167. package/src/classes/HMSRtmpVideoResolution.ts +9 -0
  168. package/src/classes/HMSSDK.tsx +341 -49
  169. package/src/classes/HMSUpdateListenerActions.ts +1 -0
  170. package/src/index.ts +4 -0
@@ -17,6 +17,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
17
17
  var id: String = "12345"
18
18
  var rtcStatsAttached = false
19
19
  var recentPreviewTracks: [HMSTrack]? = []
20
+ private var reconnectingStage: Bool = false
20
21
 
21
22
  let ON_PREVIEW = "ON_PREVIEW"
22
23
  let ON_JOIN = "ON_JOIN"
@@ -55,6 +56,10 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
55
56
 
56
57
  private var previewInProgress = false
57
58
 
59
+ func emitRequiredKeysError(_ error: String) {
60
+ delegate?.emitEvent(ON_ERROR, ["error": ["code": HMSErrorCode.genericErrorUnknown.rawValue, "description": error, "message": error, "name": "REQUIRED_KEYS_NOT_FOUND", "action": "SEND_ALL_REQUIRED_KEYS", "id": 102, "isTerminal": false], "id": id])
61
+ }
62
+
58
63
  func preview(_ credentials: NSDictionary) {
59
64
 
60
65
  guard !previewInProgress else {
@@ -66,8 +71,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
66
71
  guard let authToken = credentials.value(forKey: "authToken") as? String,
67
72
  let user = credentials.value(forKey: "username") as? String
68
73
  else {
69
- let error = HMSError(id: "101", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
70
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
74
+ let errorMessage = "preview: " + HMSHelper.getUnavailableRequiredKey(credentials, ["authToken", "username"])
75
+ emitRequiredKeysError(errorMessage)
71
76
  return
72
77
  }
73
78
 
@@ -90,9 +95,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
90
95
  func previewForRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
91
96
  guard let role = data.value(forKey: "role") as? String
92
97
  else {
93
- let error = HMSError(id: "111", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
94
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
95
- reject?(error.message, "FAILED_TO_INITIATE_PREVIEW_FOR_ROLE",nil)
98
+ let errorMessage = "previewForRole: " + HMSHelper.getUnavailableRequiredKey(data, ["role"])
99
+ emitRequiredKeysError(errorMessage)
100
+ reject?(errorMessage, errorMessage, nil)
96
101
  return
97
102
  }
98
103
 
@@ -101,7 +106,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
101
106
  if let extractedRole = roleObj {
102
107
  hms?.preview(role: extractedRole, completion: { tracks, error in
103
108
  if (error != nil) {
104
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
109
+ delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
105
110
  reject?(error?.message, error?.localizedDescription, nil)
106
111
  return
107
112
  }
@@ -131,11 +136,11 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
131
136
  guard let authToken = credentials.value(forKey: "authToken") as? String,
132
137
  let user = credentials.value(forKey: "username") as? String
133
138
  else {
134
- let error = HMSError(id: "102", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
135
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
139
+ let errorMessage = "join: " + HMSHelper.getUnavailableRequiredKey(credentials, ["authToken", "username"])
140
+ emitRequiredKeysError(errorMessage)
136
141
  return
137
142
  }
138
-
143
+ reconnectingStage = false
139
144
  let metadata = credentials.value(forKey: "metadata") as? String
140
145
  let captureNetworkQualityInPreview = credentials.value(forKey: "captureNetworkQualityInPreview") as? Bool ?? false
141
146
 
@@ -158,8 +163,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
158
163
  func setLocalMute(_ data: NSDictionary) {
159
164
  guard let isMute = data.value(forKey: "isMute") as? Bool
160
165
  else {
161
- let error = HMSError(id: "106", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
162
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
166
+ let errorMessage = "setLocalMute: " + HMSHelper.getUnavailableRequiredKey(data, ["isMute"])
167
+ emitRequiredKeysError(errorMessage)
163
168
  return
164
169
  }
165
170
 
@@ -171,8 +176,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
171
176
  func setLocalVideoMute(_ data: NSDictionary) {
172
177
  guard let isMute = data.value(forKey: "isMute") as? Bool
173
178
  else {
174
- let error = HMSError(id: "107", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
175
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
179
+ let errorMessage = "setLocalVideoMute: " + HMSHelper.getUnavailableRequiredKey(data, ["isMute"])
180
+ emitRequiredKeysError(errorMessage)
176
181
  return
177
182
  }
178
183
 
@@ -188,26 +193,31 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
188
193
  }
189
194
 
190
195
  func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
191
- DispatchQueue.main.async { [weak self] in
192
- guard let strongSelf = self else { return }
193
- self?.config = nil
194
- self?.recentRoleChangeRequest = nil
195
- self?.hms?.leave({ success, error in
196
- if success {
197
- resolve?("")
198
- } else {
199
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
200
- reject?(nil, "error in leave", nil)
201
- }
202
- })
196
+ if(reconnectingStage) {
197
+ reject?("101", "Still in reconnecting stage", nil)
198
+ } else {
199
+ DispatchQueue.main.async { [weak self] in
200
+ guard let strongSelf = self else { return }
201
+ self?.config = nil
202
+ self?.recentRoleChangeRequest = nil
203
+ self?.hms?.leave({ success, error in
204
+ if success {
205
+ resolve?(["success": success])
206
+ } else {
207
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
208
+ reject?(nil, "error in leave", nil)
209
+ }
210
+ })
211
+ }
203
212
  }
204
213
  }
205
214
 
206
215
  func sendBroadcastMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
207
216
  guard let message = data.value(forKey: "message") as? String
208
217
  else {
209
- let error = HMSError(id: "108", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
210
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
218
+ let errorMessage = "sendBroadcastMessage: " + HMSHelper.getUnavailableRequiredKey(data, ["message"])
219
+ emitRequiredKeysError(errorMessage)
220
+ reject?(errorMessage, errorMessage, nil)
211
221
  return
212
222
  }
213
223
 
@@ -219,7 +229,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
219
229
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
220
230
  return
221
231
  } else {
222
- self?.delegate?.emitEvent("ON_ERROR", ["event": "ON_ERROR", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
232
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
223
233
  reject?(error?.message, error?.localizedDescription, nil)
224
234
  return
225
235
  }
@@ -231,8 +241,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
231
241
  guard let message = data.value(forKey: "message") as? String,
232
242
  let targetedRoles = data.value(forKey: "roles") as? [String]
233
243
  else {
234
- let error = HMSError(id: "109", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
235
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
244
+ let errorMessage = "sendGroupMessage: " + HMSHelper.getUnavailableRequiredKey(data, ["message", "roles"])
245
+ emitRequiredKeysError(errorMessage)
246
+ reject?(errorMessage, errorMessage, nil)
236
247
  return
237
248
  }
238
249
 
@@ -244,7 +255,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
244
255
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
245
256
  return
246
257
  } else {
247
- self?.delegate?.emitEvent("ON_ERROR", ["event": "ON_ERROR", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
258
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
248
259
  reject?(error?.message, error?.localizedDescription, nil)
249
260
  return
250
261
  }
@@ -256,8 +267,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
256
267
  guard let message = data.value(forKey: "message") as? String,
257
268
  let peerId = data.value(forKey: "peerId") as? String
258
269
  else {
259
- let error = HMSError(id: "110", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
260
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
270
+ let errorMessage = "sendDirectMessage: " + HMSHelper.getUnavailableRequiredKey(data, ["message", "peerId"])
271
+ emitRequiredKeysError(errorMessage)
272
+ reject?(errorMessage, errorMessage, nil)
261
273
  return
262
274
  }
263
275
 
@@ -269,7 +281,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
269
281
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
270
282
  return
271
283
  } else {
272
- self?.delegate?.emitEvent("ON_ERROR", ["event": "ON_ERROR", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
284
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
273
285
  reject?(error?.message, error?.localizedDescription, nil)
274
286
  return
275
287
  }
@@ -281,13 +293,19 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
281
293
 
282
294
  DispatchQueue.main.async { [weak self] in
283
295
 
284
- guard let request = self?.recentRoleChangeRequest else { return }
296
+ guard let request = self?.recentRoleChangeRequest
297
+ else {
298
+ let errorMessage = "acceptRoleChange: recentRoleChangeRequest not found"
299
+ self?.emitRequiredKeysError(errorMessage)
300
+ reject?(errorMessage, errorMessage, nil)
301
+ return
302
+ }
285
303
 
286
304
  self?.hms?.accept(changeRole: request, completion: { success, error in
287
305
  if success {
288
- resolve?(["success": true])
306
+ resolve?(["success": success])
289
307
  } else {
290
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
308
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
291
309
  reject?(error?.message, error?.localizedDescription, nil)
292
310
  }
293
311
  })
@@ -301,8 +319,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
301
319
  guard let peerId = data.value(forKey: "peerId") as? String,
302
320
  let role = data.value(forKey: "role") as? String
303
321
  else {
304
- let error = HMSError(id: "111", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
305
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
322
+ let errorMessage = "changeRole: " + HMSHelper.getUnavailableRequiredKey(data, ["peerId", "role"])
323
+ emitRequiredKeysError(errorMessage)
324
+ reject?(errorMessage, errorMessage, nil)
306
325
  return
307
326
  }
308
327
 
@@ -315,9 +334,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
315
334
 
316
335
  self?.hms?.changeRole(for: peer, to: role, force: force, completion: { success, error in
317
336
  if success {
318
- resolve?(["success": true])
337
+ resolve?(["success": success])
319
338
  } else {
320
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
339
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
321
340
  reject?(error?.message, error?.localizedDescription, nil)
322
341
  }
323
342
  })
@@ -328,8 +347,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
328
347
 
329
348
  guard let trackId = data.value(forKey: "trackId") as? String
330
349
  else {
331
- let error = HMSError(id: "112", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
332
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
350
+ let errorMessage = "changeTrackState: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
351
+ emitRequiredKeysError(errorMessage)
352
+ reject?(errorMessage, errorMessage, nil)
333
353
  return
334
354
  }
335
355
 
@@ -338,13 +358,16 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
338
358
  DispatchQueue.main.async { [weak self] in
339
359
  guard let remotePeers = self?.hms?.remotePeers,
340
360
  let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
341
- else { return }
361
+ else {
362
+ reject?(nil, "TRACK_NOT_FOUND", nil)
363
+ return
364
+ }
342
365
 
343
366
  self?.hms?.changeTrackState(for: track, mute: mute, completion: { success, error in
344
367
  if success {
345
- resolve?(["success": true])
368
+ resolve?(["success": success])
346
369
  } else {
347
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
370
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
348
371
  reject?(error?.message, error?.localizedDescription, nil)
349
372
  }
350
373
  })
@@ -355,8 +378,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
355
378
 
356
379
  guard let mute = data.value(forKey: "mute") as? Bool
357
380
  else {
358
- let error = HMSError(id: "113", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
359
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
381
+ let errorMessage = "changeTrackStateForRoles: " + HMSHelper.getUnavailableRequiredKey(data, ["mute"])
382
+ emitRequiredKeysError(errorMessage)
383
+ reject?(errorMessage, errorMessage, nil)
360
384
  return
361
385
  }
362
386
  let source = data.value(forKey: "source") as? String
@@ -376,9 +400,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
376
400
  let encodedTargetedRoles = HMSHelper.getRolesFromRoleNames(targetedRoles, roles: self?.hms?.roles)
377
401
  self?.hms?.changeTrackState(mute: mute, for: decodeType, source: source, roles: encodedTargetedRoles, completion: { success, error in
378
402
  if success {
379
- resolve?(["success": true])
403
+ resolve?(["success": success])
380
404
  } else {
381
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
405
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
382
406
  reject?(error?.message, error?.localizedDescription, nil)
383
407
  }
384
408
  })
@@ -388,9 +412,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
388
412
  func isMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
389
413
  guard let trackId = data.value(forKey: "trackId") as? String
390
414
  else {
391
- reject?(nil, "NO_SDK_ID", nil)
392
- let error = HMSError(id: "114", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
393
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
415
+ let errorMessage = "isMute: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
416
+ emitRequiredKeysError(errorMessage)
417
+ reject?(errorMessage, errorMessage, nil)
394
418
  return
395
419
  }
396
420
 
@@ -402,9 +426,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
402
426
  guard let remotePeers = self?.hms?.remotePeers,
403
427
  let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
404
428
  else {
405
- let error = HMSError(id: "120", code: HMSErrorCode.genericErrorUnknown, message: "NOT_FOUND")
406
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
407
- reject?(nil, "NOT_FOUND", nil)
429
+ let error = HMSError(id: "120", code: HMSErrorCode.genericErrorUnknown, message: "TRACK_NOT_FOUND")
430
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
431
+ reject?(nil, "TRACK_NOT_FOUND", nil)
408
432
  return
409
433
  }
410
434
  let mute = track.isMute()
@@ -420,8 +444,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
420
444
 
421
445
  guard let peerId = data.value(forKey: "peerId") as? String
422
446
  else {
423
- let error = HMSError(id: "115", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
424
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
447
+ let errorMessage = "removePeer: " + HMSHelper.getUnavailableRequiredKey(data, ["peerId"])
448
+ emitRequiredKeysError(errorMessage)
449
+ reject?(errorMessage, errorMessage, nil)
425
450
  return
426
451
  }
427
452
 
@@ -431,13 +456,16 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
431
456
 
432
457
  guard let remotePeers = self?.hms?.remotePeers,
433
458
  let peer = HMSHelper.getRemotePeerFromPeerId(peerId, remotePeers: remotePeers)
434
- else { return }
459
+ else {
460
+ reject?(nil, "PEER_NOT_FOUND", nil)
461
+ return
462
+ }
435
463
 
436
464
  self?.hms?.removePeer(peer, reason: reason ?? "Removed from room", completion: { success, error in
437
465
  if success {
438
- resolve?(["success": true])
466
+ resolve?(["success": success])
439
467
  } else {
440
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
468
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
441
469
  reject?(error?.message, error?.localizedDescription, nil)
442
470
  }
443
471
  })
@@ -449,17 +477,18 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
449
477
  guard let lock = data.value(forKey: "lock") as? Bool,
450
478
  let reason = data.value(forKey: "reason") as? String
451
479
  else {
452
- let error = HMSError(id: "116", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
453
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
480
+ let errorMessage = "endRoom: " + HMSHelper.getUnavailableRequiredKey(data, ["lock", "reason"])
481
+ emitRequiredKeysError(errorMessage)
482
+ reject?(errorMessage, errorMessage, nil)
454
483
  return
455
484
  }
456
485
 
457
486
  DispatchQueue.main.async { [weak self] in
458
487
  self?.hms?.endRoom(lock: lock, reason: reason, completion: { success, error in
459
488
  if success {
460
- resolve?(["success": true])
489
+ resolve?(["success": success])
461
490
  } else {
462
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
491
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
463
492
  reject?(error?.message, error?.localizedDescription, nil)
464
493
  }
465
494
  })
@@ -469,18 +498,15 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
469
498
  func isPlaybackAllowed(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
470
499
  guard let trackId = data.value(forKey: "trackId") as? String
471
500
  else {
472
- reject?(nil, "NOT_FOUND", nil)
473
- let error = HMSError(id: "117", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
474
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
501
+ let errorMessage = "isPlaybackAllowed: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
502
+ emitRequiredKeysError(errorMessage)
503
+ reject?(errorMessage, errorMessage, nil)
475
504
  return
476
505
  }
477
506
  DispatchQueue.main.async { [weak self] in
478
- guard let strongSelf = self else { return }
479
507
  guard let remotePeers = self?.hms?.remotePeers
480
508
  else {
481
- let error = HMSError(id: "121", code: HMSErrorCode.genericErrorUnknown, message: "NOT_FOUND")
482
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
483
- reject?(nil, "NOT_FOUND", nil)
509
+ reject?(nil, "REMOTE_PEERS_NOT_FOUND", nil)
484
510
  return
485
511
  }
486
512
  let remoteAudioTrack = HMSHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
@@ -494,9 +520,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
494
520
  resolve?(isPlaybackAllowed)
495
521
  return
496
522
  } else {
497
- let error = HMSError(id: "122", code: HMSErrorCode.genericErrorUnknown, message: "NOT_FOUND")
498
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
499
- reject?(nil, "NOT_FOUND", nil)
523
+ reject?(nil, "TRACK_NOT_FOUND", nil)
500
524
  return
501
525
  }
502
526
  }
@@ -512,8 +536,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
512
536
  guard let trackId = data.value(forKey: "trackId") as? String,
513
537
  let playbackAllowed = data.value(forKey: "playbackAllowed") as? Bool
514
538
  else {
515
- let error = HMSError(id: "118", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
516
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
539
+ let errorMessage = "setPlaybackAllowed: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId", "playbackAllowed"])
540
+ emitRequiredKeysError(errorMessage)
517
541
  return
518
542
  }
519
543
  DispatchQueue.main.async { [weak self] in
@@ -538,9 +562,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
538
562
  func changeMetadata(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
539
563
  guard let metadata = data.value(forKey: "metadata") as? String
540
564
  else {
541
- let error = HMSError(id: "123", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
542
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
543
- reject?(nil, "REQUIRED_KEYS_NOT_FOUND", nil)
565
+ let errorMessage = "changeMetadata: " + HMSHelper.getUnavailableRequiredKey(data, ["metadata"])
566
+ emitRequiredKeysError(errorMessage)
567
+ reject?(errorMessage, errorMessage, nil)
544
568
  return
545
569
  }
546
570
 
@@ -549,7 +573,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
549
573
  resolve?(["success": success])
550
574
  return
551
575
  } else {
552
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
576
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
553
577
  reject?(error?.message, error?.localizedDescription, nil)
554
578
  return
555
579
  }
@@ -560,8 +584,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
560
584
  guard let trackId = data.value(forKey: "trackId") as? String,
561
585
  let volume = data.value(forKey: "volume") as? Double
562
586
  else {
563
- let error = HMSError(id: "124", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
564
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
587
+ let errorMessage = "setVolume: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId", "volume"])
588
+ emitRequiredKeysError(errorMessage)
565
589
  return
566
590
  }
567
591
 
@@ -574,29 +598,31 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
574
598
  if remoteAudioTrack != nil {
575
599
  remoteAudioTrack?.setVolume(volume)
576
600
  } else {
577
- let error = HMSError(id: "125", code: HMSErrorCode.genericErrorUnknown, message: "TRACK_ID_NOT_FOUND_IN_REMOTE_TRACKS")
578
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
601
+ let error = HMSError(id: "125", code: HMSErrorCode.genericErrorUnknown, message: "TRACK_NOT_FOUND")
602
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
579
603
  }
580
604
  }
581
605
  }
582
606
 
583
607
  func startRTMPOrRecording(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
584
- guard let record = data.value(forKey: "record") as? Bool
608
+ guard let record = data.value(forKey: "record") as? Bool,
609
+ let meetingString = data.value(forKey: "meetingURL") as? String
585
610
  else {
586
- let error = HMSError(id: "126", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
587
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
611
+ let errorMessage = "startRTMPOrRecording: " + HMSHelper.getUnavailableRequiredKey(data, ["record", "meetingURL"])
612
+ emitRequiredKeysError(errorMessage)
613
+ reject?(errorMessage, errorMessage, nil)
588
614
  return
589
615
  }
590
616
 
591
- let meetingString = data.value(forKey: "meetingURL") as? String
592
617
  let rtmpStrings = data.value(forKey: "rtmpURLs") as? [String]
593
618
 
594
619
  var meetingUrl: URL?
595
- if let meetLink = meetingString {
596
- meetingUrl = URL(string: meetLink)
620
+ if let meetLink = URL(string: meetingString) {
621
+ meetingUrl = meetLink
597
622
  } else {
598
623
  let error = HMSError(id: "127", code: HMSErrorCode.genericErrorUnknown, message: "INVALID_MEETING_URL_PASSED")
599
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
624
+ delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
625
+ reject?("INVALID_MEETING_URL_PASSED", "INVALID_MEETING_URL_PASSED", nil)
600
626
  }
601
627
 
602
628
  let URLs = HMSHelper.getRtmpUrls(rtmpStrings)
@@ -613,7 +639,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
613
639
  resolve?(["success": success])
614
640
  return
615
641
  } else {
616
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
642
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
617
643
  reject?(error?.message, error?.localizedDescription, nil)
618
644
  return
619
645
  }
@@ -632,7 +658,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
632
658
  resolve?(["success": success])
633
659
  return
634
660
  } else {
635
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
661
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
636
662
  reject?(error?.message, error?.localizedDescription, nil)
637
663
  return
638
664
  }
@@ -640,16 +666,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
640
666
  }
641
667
 
642
668
  func startHLSStreaming(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
643
- guard let meetingURLVariants = data.value(forKey: "meetingURLVariants") as? [[String: Any]]?
644
- else {
645
- let error = HMSError(id: "126", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
646
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
647
- return
669
+ let recordConfig = HMSHelper.getHlsRecordingConfig(data.value(forKey: "hlsRecordingConfig") as? NSDictionary)
670
+ let hlsMeetingUrlVariant = HMSHelper.getHMSHLSMeetingURLVariants(data.value(forKey: "meetingURLVariants") as? [[String : Any]])
671
+ var config: HMSHLSConfig? = nil
672
+ if(!hlsMeetingUrlVariant.isEmpty || recordConfig !== nil){
673
+ config = HMSHLSConfig(variants: hlsMeetingUrlVariant, recording: recordConfig)
648
674
  }
649
-
650
- let recordConfig = HMSHelper.getHlsRecordingConfig(data)
651
- let hlsMeetingUrlVariant = HMSHelper.getHMSHLSMeetingURLVariants(meetingURLVariants)
652
- let config = HMSHLSConfig(variants: hlsMeetingUrlVariant, recording: recordConfig)
653
675
 
654
676
  hms?.startHLSStreaming(config: config, completion: { success, error in
655
677
  if success {
@@ -662,7 +684,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
662
684
  resolve?(["success": success])
663
685
  return
664
686
  } else {
665
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
687
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
666
688
  reject?(error?.message, error?.localizedDescription, nil)
667
689
  return
668
690
  }
@@ -681,7 +703,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
681
703
  resolve?(["success": success])
682
704
  return
683
705
  } else {
684
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
706
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
685
707
  reject?(error?.message, error?.localizedDescription, nil)
686
708
  return
687
709
  }
@@ -691,9 +713,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
691
713
  func changeName(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
692
714
  guard let name = data.value(forKey: "name") as? String
693
715
  else {
694
- let error = HMSError(id: "123", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
695
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
696
- reject?(nil, "REQUIRED_KEYS_NOT_FOUND", nil)
716
+ let errorMessage = "changeName: " + HMSHelper.getUnavailableRequiredKey(data, ["name"])
717
+ emitRequiredKeysError(errorMessage)
718
+ reject?(errorMessage, errorMessage, nil)
697
719
  return
698
720
  }
699
721
 
@@ -701,12 +723,51 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
701
723
  if success {
702
724
  resolve?(["success": success])
703
725
  } else {
704
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
726
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
705
727
  reject?(error?.message, error?.localizedDescription, nil)
706
728
  }
707
729
  }
708
730
  }
709
731
 
732
+ func remoteMuteAllAudio(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
733
+ let allAudioTracks = HMSUtilities.getAllAudioTracks(in: (self.hms?.room)!!)
734
+ var customError: HMSError? = nil
735
+ for audioTrack in allAudioTracks {
736
+ self.hms?.changeTrackState(for: audioTrack, mute: true, completion: { success, error in
737
+ if success {
738
+ } else {
739
+ customError = error
740
+ }
741
+ })
742
+ }
743
+ if (customError === nil) {
744
+ resolve?(["success": true])
745
+ } else {
746
+ reject?(customError?.message, customError?.localizedDescription, nil)
747
+ }
748
+ }
749
+
750
+ func setPlaybackForAllAudio(_ data: NSDictionary) {
751
+ guard let mute = data.value(forKey: "mute") as? Bool
752
+ else {
753
+ let errorMessage = "setPlaybackForAllAudio: " + HMSHelper.getUnavailableRequiredKey(data, ["setPlaybackForAllAudio"])
754
+ emitRequiredKeysError(errorMessage)
755
+ return
756
+ }
757
+
758
+ DispatchQueue.main.async { [weak self] in
759
+ let remotePeers = self?.hms?.remotePeers
760
+ for peer in remotePeers ?? [] {
761
+ peer.remoteAudioTrack()?.setPlaybackAllowed(!mute)
762
+ }
763
+ }
764
+ let roomData = HMSDecoder.getHmsRoom(hms?.room)
765
+ let localPeerData = HMSDecoder.getHmsLocalPeer(hms?.localPeer)
766
+ let remotePeerData = HMSDecoder.getHmsRemotePeers(hms?.remotePeers)
767
+
768
+ self.delegate?.emitEvent(ON_PEER_UPDATE, ["event": ON_PEER_UPDATE, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
769
+ }
770
+
710
771
  func enableRTCStats() {
711
772
  rtcStatsAttached = true
712
773
  }
@@ -715,36 +776,35 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
715
776
  rtcStatsAttached = false
716
777
  }
717
778
 
718
- // TODO: to be implemented after volume is exposed for iOS
719
- // func getVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
720
- // guard let trackId = data.value(forKey: "trackId") as? String
721
- // else {
722
- // delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": "REQUIRED_KEYS_NOT_FOUND"])
723
- // reject?(nil, "REQUIRED_KEYS_NOT_FOUND", nil)
724
- // return
725
- // }
779
+ // TODO: to be implemented after volume is exposed for iOS
780
+ // func getVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
781
+ // guard let trackId = data.value(forKey: "trackId") as? String
782
+ // else {
783
+ // let errorMessage = "getVolume: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
784
+ // emitRequiredKeysError(errorMessage)
785
+ // reject?(errorMessage, errorMessage, nil)
786
+ // return
787
+ // }
726
788
  //
789
+ // if (localPeer?.localAudioTrack()?.trackId == trackId) {
727
790
  //
728
- // if (localPeer?.localAudioTrack()?.trackId == trackId) {
729
- //
730
- // }
731
- // }
791
+ // }
792
+ // }
732
793
 
733
- // func setLocalVideoSettings(_ data: NSDictionary) {
734
- // let localVideoTrack = self.hms?.localPeer?.localVideoTrack()
794
+ // func setLocalVideoSettings(_ data: NSDictionary) {
795
+ // let localVideoTrack = self.hms?.localPeer?.localVideoTrack()
735
796
  //
736
- // guard let settings = HMSHelper.getLocalVideoSettings(data)
737
- // else {
738
- // //TODO: throw an error for invalid arguements
739
- // return
740
- // }
741
- // localVideoTrack?.settings = settings
742
- // }
743
-
744
- // MARK: - HMS SDK Delegate Callbacks
745
-
797
+ // guard let settings = HMSHelper.getLocalVideoSettings(data)
798
+ // else {
799
+ // let errorMessage = "setLocalVideoSettings: " + HMSHelper.getUnavailableRequiredKey(data)
800
+ // emitRequiredKeysError(errorMessage)
801
+ // return
802
+ // }
803
+ // localVideoTrack?.settings = settings
804
+ // }
805
+
806
+ // MARK: - HMS SDK Delegate Callbacks
746
807
  func on(join room: HMSRoom) {
747
- // Callback from join action
748
808
  let roomData = HMSDecoder.getHmsRoom(room)
749
809
  let localPeerData = HMSDecoder.getHmsLocalPeer(hms?.localPeer)
750
810
  let remotePeerData = HMSDecoder.getHmsRemotePeers(hms?.remotePeers)
@@ -801,7 +861,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
801
861
 
802
862
  func on(error: HMSError) {
803
863
  if previewInProgress { previewInProgress = false }
804
- self.delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
864
+ self.delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
805
865
  }
806
866
 
807
867
  func on(message: HMSMessage) {
@@ -817,10 +877,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
817
877
  }
818
878
 
819
879
  func onReconnecting() {
820
- self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "id": self.id ])
880
+ reconnectingStage = true
881
+ self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "error": ["code": HMSErrorCode.websocketConnectionLost, "description": "Software caused connection abort", "localizedDescription": "Network connection lost ", "debugDescription": "Network connection lost ", "message": "Network connection lost ", "name": "WebSocketConnectionLost", "action": "NONE", "id": 101], "id": self.id ])
821
882
  }
822
883
 
823
884
  func onReconnected() {
885
+ reconnectingStage = false
824
886
  self.delegate?.emitEvent(RECONNECTED, ["event": RECONNECTED, "id": self.id ])
825
887
  }
826
888
 
@@ -902,43 +964,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
902
964
  }
903
965
 
904
966
  // MARK: Helper Functions
905
- func remoteMuteAllAudio() {
906
- let allAudioTracks = HMSUtilities.getAllAudioTracks(in: (self.hms?.room)!!)
907
- var customError: HMSError? = nil
908
- for audioTrack in allAudioTracks {
909
- self.hms?.changeTrackState(for: audioTrack, mute: true, completion: { success, error in
910
- if success {
911
- } else {
912
- customError = error
913
- }
914
- })
915
- }
916
- if (customError != nil) {
917
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(customError), "id": id])
918
- }
919
- }
920
-
921
- func setPlaybackForAllAudio(_ data: NSDictionary) {
922
- guard let mute = data.value(forKey: "mute") as? Bool
923
- else {
924
- let error = HMSError(id: "119", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
925
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
926
- return
927
- }
928
-
929
- DispatchQueue.main.async { [weak self] in
930
- let remotePeers = self?.hms?.remotePeers
931
- for peer in remotePeers ?? [] {
932
- peer.remoteAudioTrack()?.setPlaybackAllowed(!mute)
933
- }
934
- }
935
- let roomData = HMSDecoder.getHmsRoom(hms?.room)
936
- let localPeerData = HMSDecoder.getHmsLocalPeer(hms?.localPeer)
937
- let remotePeerData = HMSDecoder.getHmsRemotePeers(hms?.remotePeers)
938
-
939
- self.delegate?.emitEvent(ON_PEER_UPDATE, ["event": ON_PEER_UPDATE, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
940
- }
941
-
942
967
  private func getString(from update: HMSPeerUpdate) -> String {
943
968
  switch update {
944
969
  case .peerJoined: