@100mslive/react-native-hms 0.8.0 → 0.8.4

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 (202) hide show
  1. package/README.md +37 -39
  2. package/android/.gradle/6.9/executionHistory/executionHistory.lock +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/cache.properties +1 -1
  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/build.gradle +1 -2
  10. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +249 -230
  11. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +145 -13
  12. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +56 -21
  13. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +463 -247
  14. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +15 -18
  15. package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +1 -2
  16. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +4 -10
  17. package/ios/HmsDecoder.swift +135 -35
  18. package/ios/HmsHelper.swift +103 -1
  19. package/ios/HmsManager.m +13 -9
  20. package/ios/HmsManager.swift +59 -24
  21. package/ios/HmsSDK.swift +322 -85
  22. package/ios/HmsView.swift +1 -1
  23. package/lib/commonjs/classes/HMSAudioTrackSettings.js +3 -0
  24. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  25. package/lib/commonjs/classes/HMSBrowserRecordingState.js +23 -0
  26. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -0
  27. package/lib/commonjs/classes/HMSCameraFacing.js +14 -0
  28. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -0
  29. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js +3 -0
  30. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  31. package/lib/commonjs/classes/HMSConfig.js +3 -1
  32. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  33. package/lib/commonjs/classes/HMSEncoder.js +27 -7
  34. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  35. package/lib/commonjs/classes/HMSException.js +30 -0
  36. package/lib/commonjs/classes/HMSException.js.map +1 -0
  37. package/lib/commonjs/classes/HMSHelper.js +2 -2
  38. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  39. package/lib/commonjs/classes/HMSLocalAudioTrack.js +32 -0
  40. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  41. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  42. package/lib/commonjs/classes/HMSLocalVideoTrack.js +18 -0
  43. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  44. package/lib/commonjs/classes/HMSLogger.js +28 -1
  45. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  46. package/lib/commonjs/classes/HMSPeer.js +3 -0
  47. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  48. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -0
  49. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  50. package/lib/commonjs/classes/HMSPermissions.js +6 -0
  51. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  52. package/lib/commonjs/classes/HMSRTMPConfig.js +26 -0
  53. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -0
  54. package/lib/commonjs/classes/HMSRemoteAudioTrack.js +19 -0
  55. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  56. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  57. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +19 -0
  58. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  59. package/lib/commonjs/classes/HMSRoom.js +9 -0
  60. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  61. package/lib/commonjs/classes/HMSRtmpStreamingState.js +23 -0
  62. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -0
  63. package/lib/commonjs/classes/HMSSDK.js +229 -125
  64. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  65. package/lib/commonjs/classes/HMSServerRecordingState.js +23 -0
  66. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -0
  67. package/lib/commonjs/classes/HMSTrack.js +2 -19
  68. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  69. package/lib/commonjs/classes/HMSTrackSettings.js +3 -0
  70. package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
  71. package/lib/commonjs/classes/HMSVideoCodec.js +4 -4
  72. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  73. package/lib/commonjs/classes/HMSVideoResolution.js +23 -0
  74. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -0
  75. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  76. package/lib/commonjs/classes/HMSVideoTrackSettings.js +0 -3
  77. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  78. package/lib/commonjs/index.js +98 -0
  79. package/lib/commonjs/index.js.map +1 -1
  80. package/lib/module/classes/HMSAudioTrackSettings.js +3 -0
  81. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  82. package/lib/module/classes/HMSBrowserRecordingState.js +14 -0
  83. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -0
  84. package/lib/module/classes/HMSCameraFacing.js +7 -0
  85. package/lib/module/classes/HMSCameraFacing.js.map +1 -0
  86. package/lib/module/classes/HMSChangeTrackStateRequest.js +3 -0
  87. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  88. package/lib/module/classes/HMSConfig.js +3 -1
  89. package/lib/module/classes/HMSConfig.js.map +1 -1
  90. package/lib/module/classes/HMSEncoder.js +26 -7
  91. package/lib/module/classes/HMSEncoder.js.map +1 -1
  92. package/lib/module/classes/HMSException.js +21 -0
  93. package/lib/module/classes/HMSException.js.map +1 -0
  94. package/lib/module/classes/HMSHelper.js +2 -2
  95. package/lib/module/classes/HMSHelper.js.map +1 -1
  96. package/lib/module/classes/HMSLocalAudioTrack.js +30 -1
  97. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  98. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  99. package/lib/module/classes/HMSLocalVideoTrack.js +15 -0
  100. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  101. package/lib/module/classes/HMSLogger.js +28 -1
  102. package/lib/module/classes/HMSLogger.js.map +1 -1
  103. package/lib/module/classes/HMSPeer.js +3 -0
  104. package/lib/module/classes/HMSPeer.js.map +1 -1
  105. package/lib/module/classes/HMSPeerUpdate.js +1 -0
  106. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  107. package/lib/module/classes/HMSPermissions.js +6 -0
  108. package/lib/module/classes/HMSPermissions.js.map +1 -1
  109. package/lib/module/classes/HMSRTMPConfig.js +17 -0
  110. package/lib/module/classes/HMSRTMPConfig.js.map +1 -0
  111. package/lib/module/classes/HMSRemoteAudioTrack.js +16 -0
  112. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  113. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  114. package/lib/module/classes/HMSRemoteVideoTrack.js +16 -0
  115. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  116. package/lib/module/classes/HMSRoom.js +9 -0
  117. package/lib/module/classes/HMSRoom.js.map +1 -1
  118. package/lib/module/classes/HMSRtmpStreamingState.js +14 -0
  119. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -0
  120. package/lib/module/classes/HMSSDK.js +227 -125
  121. package/lib/module/classes/HMSSDK.js.map +1 -1
  122. package/lib/module/classes/HMSServerRecordingState.js +14 -0
  123. package/lib/module/classes/HMSServerRecordingState.js.map +1 -0
  124. package/lib/module/classes/HMSTrack.js +2 -17
  125. package/lib/module/classes/HMSTrack.js.map +1 -1
  126. package/lib/module/classes/HMSTrackSettings.js +3 -0
  127. package/lib/module/classes/HMSTrackSettings.js.map +1 -1
  128. package/lib/module/classes/HMSVideoCodec.js +4 -4
  129. package/lib/module/classes/HMSVideoCodec.js.map +1 -1
  130. package/lib/module/classes/HMSVideoResolution.js +14 -0
  131. package/lib/module/classes/HMSVideoResolution.js.map +1 -0
  132. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  133. package/lib/module/classes/HMSVideoTrackSettings.js +0 -3
  134. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  135. package/lib/module/index.js +7 -0
  136. package/lib/module/index.js.map +1 -1
  137. package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +3 -0
  138. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +9 -0
  139. package/lib/typescript/classes/HMSCameraFacing.d.ts +4 -0
  140. package/lib/typescript/classes/HMSChangeTrackStateRequest.d.ts +2 -0
  141. package/lib/typescript/classes/HMSConfig.d.ts +2 -0
  142. package/lib/typescript/classes/HMSEncoder.d.ts +3 -1
  143. package/lib/typescript/classes/HMSException.d.ts +22 -0
  144. package/lib/typescript/classes/HMSLocalAudioTrack.d.ts +1 -0
  145. package/lib/typescript/classes/HMSLocalPeer.d.ts +4 -0
  146. package/lib/typescript/classes/HMSLogger.d.ts +7 -0
  147. package/lib/typescript/classes/HMSPeer.d.ts +2 -0
  148. package/lib/typescript/classes/HMSPeerUpdate.d.ts +1 -0
  149. package/lib/typescript/classes/HMSPermissions.d.ts +4 -0
  150. package/lib/typescript/classes/HMSRTMPConfig.d.ts +10 -0
  151. package/lib/typescript/classes/HMSRemotePeer.d.ts +1 -0
  152. package/lib/typescript/classes/HMSRoom.d.ts +9 -0
  153. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +9 -0
  154. package/lib/typescript/classes/HMSSDK.d.ts +22 -13
  155. package/lib/typescript/classes/HMSServerRecordingState.d.ts +9 -0
  156. package/lib/typescript/classes/HMSTrack.d.ts +1 -1
  157. package/lib/typescript/classes/HMSTrackSettings.d.ts +2 -0
  158. package/lib/typescript/classes/HMSVideoCodec.d.ts +4 -4
  159. package/lib/typescript/classes/HMSVideoResolution.d.ts +8 -0
  160. package/lib/typescript/classes/HMSVideoSettings.d.ts +3 -3
  161. package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +13 -10
  162. package/lib/typescript/index.d.ts +7 -0
  163. package/package.json +2 -1
  164. package/src/classes/HMSAudioTrackSettings.ts +9 -1
  165. package/src/classes/HMSBrowserRecordingState.ts +11 -0
  166. package/src/classes/HMSCameraFacing.ts +4 -0
  167. package/src/classes/HMSChangeTrackStateRequest.ts +7 -1
  168. package/src/classes/HMSConfig.ts +3 -1
  169. package/src/classes/HMSEncoder.ts +22 -2
  170. package/src/classes/HMSException.ts +33 -0
  171. package/src/classes/HMSHelper.ts +2 -2
  172. package/src/classes/HMSLocalAudioTrack.ts +29 -1
  173. package/src/classes/HMSLocalPeer.ts +4 -0
  174. package/src/classes/HMSLocalVideoTrack.ts +15 -0
  175. package/src/classes/HMSLogger.ts +14 -1
  176. package/src/classes/HMSPeer.ts +3 -0
  177. package/src/classes/HMSPeerUpdate.ts +1 -0
  178. package/src/classes/HMSPermissions.ts +6 -0
  179. package/src/classes/HMSRTMPConfig.ts +15 -0
  180. package/src/classes/HMSRemoteAudioTrack.ts +16 -0
  181. package/src/classes/HMSRemotePeer.ts +1 -0
  182. package/src/classes/HMSRemoteVideoTrack.ts +16 -0
  183. package/src/classes/HMSRoom.ts +12 -0
  184. package/src/classes/HMSRtmpStreamingState.ts +11 -0
  185. package/src/classes/HMSSDK.tsx +170 -71
  186. package/src/classes/HMSServerRecordingState.ts +11 -0
  187. package/src/classes/HMSTrack.ts +2 -15
  188. package/src/classes/HMSTrackSettings.ts +3 -0
  189. package/src/classes/HMSVideoCodec.ts +4 -4
  190. package/src/classes/HMSVideoResolution.ts +9 -0
  191. package/src/classes/HMSVideoSettings.ts +3 -3
  192. package/src/classes/HMSVideoTrackSettings.ts +13 -10
  193. package/src/index.ts +7 -0
  194. package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
  195. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  196. package/android/.gradle/6.9/fileHashes/resourceHashesCache.bin +0 -0
  197. package/android/.gradle/6.9/javaCompile/classAnalysis.bin +0 -0
  198. package/android/.gradle/6.9/javaCompile/jarAnalysis.bin +0 -0
  199. package/android/.gradle/6.9/javaCompile/javaCompile.lock +0 -0
  200. package/android/.gradle/6.9/javaCompile/taskHistory.bin +0 -0
  201. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  202. package/android/.project +0 -34
@@ -11,52 +11,135 @@ import live.hms.video.sdk.models.HMSConfig
11
11
  import live.hms.video.sdk.models.enums.HMSPeerUpdate
12
12
  import live.hms.video.sdk.models.enums.HMSRoomUpdate
13
13
  import live.hms.video.sdk.models.enums.HMSTrackUpdate
14
- import live.hms.video.sdk.models.role.HMSRole
15
14
  import live.hms.video.sdk.models.trackchangerequest.HMSChangeTrackStateRequest
16
15
  import live.hms.video.utils.HMSCoroutineScope
17
16
 
18
17
  class HmsSDK(
18
+ data: ReadableMap?,
19
19
  HmsDelegate: HmsModule,
20
20
  sdkId: String,
21
21
  reactApplicationContext: ReactApplicationContext
22
22
  ) {
23
23
  var hmsSDK: HMSSDK? = null
24
24
  private var recentRoleChangeRequest: HMSRoleChangeRequest? = null
25
- private var changeTrackStateRequest: HMSChangeTrackStateRequest? = null
26
- val delegate: HmsModule = HmsDelegate
27
- val id: String = sdkId
25
+ private var previewInProgress: Boolean = false
26
+ private var delegate: HmsModule = HmsDelegate
27
+ private var id: String = sdkId
28
+ private var self = this
28
29
 
29
30
  init {
30
- this.hmsSDK = HMSSDK.Builder(reactApplicationContext).build()
31
+ val trackSettings = HmsHelper.getTrackSettings(data)
32
+ if (trackSettings == null) {
33
+ this.hmsSDK = HMSSDK.Builder(reactApplicationContext).build()
34
+ } else {
35
+ this.hmsSDK = HMSSDK.Builder(reactApplicationContext).setTrackSettings(trackSettings).build()
36
+ }
37
+ }
38
+
39
+ private fun emitCustomError(message: String) {
40
+ val data: WritableMap = Arguments.createMap()
41
+ val hmsError =
42
+ HMSException(
43
+ 102,
44
+ message,
45
+ message,
46
+ message,
47
+ message
48
+ )
49
+ data.putString("event", "ON_ERROR")
50
+ data.putString("id", id)
51
+ data.putMap("error", HmsDecoder.getError(hmsError))
52
+ delegate.emitEvent("ON_ERROR", data)
53
+ }
54
+
55
+ private fun emitRequiredKeysError() {
56
+ val data: WritableMap = Arguments.createMap()
57
+ val hmsError =
58
+ HMSException(
59
+ 102,
60
+ "NOT_FOUND",
61
+ "SEND_ALL_REQUIRED_KEYS",
62
+ "REQUIRED_KEYS_NOT_FOUND",
63
+ "REQUIRED_KEYS_NOT_FOUND"
64
+ )
65
+ data.putString("event", "ON_ERROR")
66
+ data.putString("id", id)
67
+ data.putMap("error", HmsDecoder.getError(hmsError))
68
+ delegate.emitEvent("ON_ERROR", data)
69
+ }
70
+
71
+ fun emitHMSError(error: HMSException) {
72
+ val data: WritableMap = Arguments.createMap()
73
+ data.putString("event", "ON_ERROR")
74
+ data.putString("id", id)
75
+ data.putMap("error", HmsDecoder.getError(error))
76
+ delegate.emitEvent("ON_ERROR", data)
77
+ }
78
+
79
+ fun emitHMSSuccess(message: HMSMessage? = null): ReadableMap {
80
+ val hmsMessage =
81
+ if (message !== null) message.message else "function call executed successfully"
82
+ val data: WritableMap = Arguments.createMap()
83
+ data.putBoolean("success", true)
84
+ data.putString("message", hmsMessage)
85
+ return data
31
86
  }
32
87
 
33
88
  fun preview(credentials: ReadableMap) {
89
+ if(previewInProgress){
90
+ self.emitCustomError("PREVIEW_ALREADY_IN_PROGRESS")
91
+ return
92
+ }
34
93
  val requiredKeys =
35
94
  HmsHelper.areAllRequiredKeysAvailable(
36
95
  credentials,
37
96
  arrayOf(Pair("username", "String"), Pair("authToken", "String"))
38
97
  )
39
98
  if (requiredKeys) {
99
+ previewInProgress = true
40
100
  var config =
41
101
  HMSConfig(
42
102
  credentials.getString("username") as String,
43
- credentials.getString("authToken") as String
103
+ credentials.getString("authToken") as String,
44
104
  )
45
105
 
46
- if (HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String")))) {
47
- config =
48
- HMSConfig(
49
- credentials.getString("username") as String,
50
- credentials.getString("authToken") as String,
51
- initEndpoint = credentials.getString("endpoint") as String
52
- )
106
+ when {
107
+ HmsHelper.areAllRequiredKeysAvailable(
108
+ credentials,
109
+ arrayOf(Pair("endpoint", "String"), Pair("metadata", "String"))
110
+ ) -> {
111
+ config =
112
+ HMSConfig(
113
+ credentials.getString("username") as String,
114
+ credentials.getString("authToken") as String,
115
+ initEndpoint = credentials.getString("endpoint") as String,
116
+ metadata = credentials.getString("metadata") as String,
117
+ )
118
+ }
119
+ HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String"))) -> {
120
+ config =
121
+ HMSConfig(
122
+ credentials.getString("username") as String,
123
+ credentials.getString("authToken") as String,
124
+ initEndpoint = credentials.getString("endpoint") as String,
125
+ )
126
+ }
127
+ HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("metadata", "String"))) -> {
128
+ config =
129
+ HMSConfig(
130
+ credentials.getString("username") as String,
131
+ credentials.getString("authToken") as String,
132
+ metadata = credentials.getString("metadata") as String,
133
+ )
134
+ }
53
135
  }
54
136
 
55
137
  hmsSDK?.preview(
56
138
  config,
57
139
  object : HMSPreviewListener {
58
140
  override fun onError(error: HMSException) {
59
- delegate.emitEvent("ON_ERROR", HmsDecoder.getError(error))
141
+ self.emitHMSError(error)
142
+ previewInProgress = false
60
143
  }
61
144
 
62
145
  override fun onPreview(room: HMSRoom, localTracks: Array<HMSTrack>) {
@@ -70,26 +153,20 @@ class HmsSDK(
70
153
  data.putMap("localPeer", localPeerData)
71
154
  data.putString("id", id)
72
155
  delegate.emitEvent("ON_PREVIEW", data)
156
+ previewInProgress = false
73
157
  }
74
158
  }
75
159
  )
76
160
  } else {
77
- delegate.emitEvent(
78
- "ON_ERROR",
79
- HmsDecoder.getError(
80
- HMSException(
81
- 102,
82
- "NOT_FOUND",
83
- "SEND_ALL_REQUIRED_KEYS",
84
- "REQUIRED_KEYS_NOT_FOUND",
85
- "REQUIRED_KEYS_NOT_FOUND"
86
- )
87
- )
88
- )
161
+ self.emitRequiredKeysError()
89
162
  }
90
163
  }
91
164
 
92
165
  fun join(credentials: ReadableMap) {
166
+ if(previewInProgress){
167
+ self.emitCustomError("PREVIEW_IS_IN_PROGRESS")
168
+ return
169
+ }
93
170
  val requiredKeys =
94
171
  HmsHelper.areAllRequiredKeysAvailable(
95
172
  credentials,
@@ -102,13 +179,35 @@ class HmsSDK(
102
179
  credentials.getString("authToken") as String
103
180
  )
104
181
 
105
- if (HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String")))) {
106
- config =
107
- HMSConfig(
108
- credentials.getString("username") as String,
109
- credentials.getString("authToken") as String,
110
- initEndpoint = credentials.getString("endpoint") as String
111
- )
182
+ when {
183
+ HmsHelper.areAllRequiredKeysAvailable(
184
+ credentials,
185
+ arrayOf(Pair("endpoint", "String"), Pair("metadata", "String"))
186
+ ) -> {
187
+ config =
188
+ HMSConfig(
189
+ credentials.getString("username") as String,
190
+ credentials.getString("authToken") as String,
191
+ initEndpoint = credentials.getString("endpoint") as String,
192
+ metadata = credentials.getString("metadata") as String,
193
+ )
194
+ }
195
+ HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String"))) -> {
196
+ config =
197
+ HMSConfig(
198
+ credentials.getString("username") as String,
199
+ credentials.getString("authToken") as String,
200
+ initEndpoint = credentials.getString("endpoint") as String,
201
+ )
202
+ }
203
+ HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("metadata", "String"))) -> {
204
+ config =
205
+ HMSConfig(
206
+ credentials.getString("username") as String,
207
+ credentials.getString("authToken") as String,
208
+ metadata = credentials.getString("metadata") as String,
209
+ )
210
+ }
112
211
  }
113
212
 
114
213
  HMSCoroutineScope.launch {
@@ -116,21 +215,21 @@ class HmsSDK(
116
215
  hmsSDK?.join(
117
216
  config,
118
217
  object : HMSUpdateListener {
119
- override fun onChangeTrackStateRequest(request: HMSChangeTrackStateRequest) {
218
+ override fun onChangeTrackStateRequest(details: HMSChangeTrackStateRequest) {
120
219
  val decodedChangeTrackStateRequest =
121
- HmsDecoder.getHmsChangeTrackStateRequest(request)
220
+ HmsDecoder.getHmsChangeTrackStateRequest(details, id)
122
221
  delegate.emitEvent(
123
222
  "ON_CHANGE_TRACK_STATE_REQUEST",
124
223
  decodedChangeTrackStateRequest
125
224
  )
126
- changeTrackStateRequest = request
127
225
  }
128
226
 
129
227
  override fun onRemovedFromRoom(notification: HMSRemovedFromRoom) {
130
228
  super.onRemovedFromRoom(notification)
131
229
 
132
230
  val data: WritableMap = Arguments.createMap()
133
- val requestedBy = HmsDecoder.getHmsRemotePeer(notification.peerWhoRemoved as HMSRemotePeer?)
231
+ val requestedBy =
232
+ HmsDecoder.getHmsRemotePeer(notification.peerWhoRemoved as HMSRemotePeer?)
134
233
  val roomEnded = notification.roomWasEnded
135
234
  val reason = notification.reason
136
235
 
@@ -143,7 +242,7 @@ class HmsSDK(
143
242
  }
144
243
 
145
244
  override fun onError(error: HMSException) {
146
- delegate.emitEvent("ON_ERROR", HmsDecoder.getError(error))
245
+ self.emitHMSError(error)
147
246
  }
148
247
 
149
248
  override fun onJoin(room: HMSRoom) {
@@ -162,17 +261,18 @@ class HmsSDK(
162
261
  delegate.emitEvent("ON_JOIN", data)
163
262
  }
164
263
 
165
- override fun onPeerUpdate(type: HMSPeerUpdate, hmsPeer: HMSPeer) {
166
-
167
- val type = type.name
264
+ override fun onPeerUpdate(type: HMSPeerUpdate, peer: HMSPeer) {
265
+ val updateType = type.name
168
266
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
169
267
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
170
268
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
269
+ val hmsPeer = HmsDecoder.getHmsPeer(peer)
171
270
 
172
271
  val data: WritableMap = Arguments.createMap()
173
272
 
273
+ data.putMap("peer", hmsPeer)
174
274
  data.putMap("room", roomData)
175
- data.putString("type", type)
275
+ data.putString("type", updateType)
176
276
  data.putMap("localPeer", localPeerData)
177
277
  data.putArray("remotePeers", remotePeerData)
178
278
  data.putString("id", id)
@@ -180,14 +280,14 @@ class HmsSDK(
180
280
  }
181
281
 
182
282
  override fun onRoomUpdate(type: HMSRoomUpdate, hmsRoom: HMSRoom) {
183
- val type = type.name
283
+ val updateType = type.name
184
284
  val roomData = HmsDecoder.getHmsRoom(hmsRoom)
185
285
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
186
286
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
187
287
 
188
288
  val data: WritableMap = Arguments.createMap()
189
289
 
190
- data.putString("type", type)
290
+ data.putString("type", updateType)
191
291
  data.putMap("room", roomData)
192
292
  data.putMap("localPeer", localPeerData)
193
293
  data.putArray("remotePeers", remotePeerData)
@@ -196,15 +296,19 @@ class HmsSDK(
196
296
  }
197
297
 
198
298
  override fun onTrackUpdate(type: HMSTrackUpdate, track: HMSTrack, peer: HMSPeer) {
199
- val type = type.name
299
+ val updateType = type.name
200
300
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
201
301
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
202
302
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
303
+ val hmsPeer = HmsDecoder.getHmsPeer(peer)
304
+ val hmsTrack = HmsDecoder.getHmsTrack(track)
203
305
 
204
306
  val data: WritableMap = Arguments.createMap()
205
307
 
308
+ data.putMap("peer", hmsPeer)
309
+ data.putMap("track", hmsTrack)
206
310
  data.putMap("room", roomData)
207
- data.putString("type", type)
311
+ data.putString("type", updateType)
208
312
  data.putMap("localPeer", localPeerData)
209
313
  data.putArray("remotePeers", remotePeerData)
210
314
  data.putString("id", id)
@@ -246,11 +350,7 @@ class HmsSDK(
246
350
  }
247
351
  )
248
352
  } catch (e: HMSException) {
249
- val error: WritableMap = Arguments.createMap()
250
- error.putString("message", e.localizedMessage)
251
- error.putInt("code", e.code)
252
- error.putString("id", id)
253
- delegate.emitEvent("ON_ERROR", error)
353
+ self.emitHMSError(e)
254
354
  }
255
355
 
256
356
  hmsSDK?.addAudioObserver(
@@ -263,9 +363,9 @@ class HmsSDK(
263
363
  val peers: WritableArray = Arguments.createArray()
264
364
  for (speaker in speakers) {
265
365
  val speakerArray: WritableMap = Arguments.createMap()
266
- speakerArray.putMap("peer", HmsDecoder.getHmsPeer(speaker?.peer))
267
- speakerArray.putInt("level", speaker?.level)
268
- speakerArray.putMap("track", HmsDecoder.getHmsTrack(speaker?.hmsTrack))
366
+ speakerArray.putMap("peer", HmsDecoder.getHmsPeer(speaker.peer))
367
+ speakerArray.putInt("level", speaker.level)
368
+ speakerArray.putMap("track", HmsDecoder.getHmsTrack(speaker.hmsTrack))
269
369
  peers.pushMap(speakerArray)
270
370
  }
271
371
  data.putArray("peers", peers)
@@ -276,24 +376,26 @@ class HmsSDK(
276
376
  )
277
377
  }
278
378
  } else {
279
- delegate.emitEvent(
280
- "ON_ERROR",
281
- HmsDecoder.getError(
282
- HMSException(
283
- 102,
284
- "NOT_FOUND",
285
- "SEND_ALL_REQUIRED_KEYS",
286
- "REQUIRED_KEYS_NOT_FOUND",
287
- "REQUIRED_KEYS_NOT_FOUND"
288
- )
289
- )
290
- )
379
+ self.emitRequiredKeysError()
291
380
  }
292
381
  }
293
382
 
294
383
  fun setLocalMute(data: ReadableMap) {
295
384
  val isMute = data.getBoolean("isMute")
296
385
  hmsSDK?.getLocalPeer()?.audioTrack?.setMute(isMute)
386
+ val type = if (isMute) "TRACK_MUTED" else "TRACK_UNMUTED"
387
+ val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
388
+ val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
389
+ val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
390
+
391
+ val map: WritableMap = Arguments.createMap()
392
+
393
+ map.putMap("room", roomData)
394
+ map.putString("type", type)
395
+ map.putMap("localPeer", localPeerData)
396
+ map.putArray("remotePeers", remotePeerData)
397
+ map.putString("id", id)
398
+ delegate.emitEvent("ON_TRACK_UPDATE", map)
297
399
  }
298
400
 
299
401
  fun setLocalVideoMute(data: ReadableMap) {
@@ -302,24 +404,27 @@ class HmsSDK(
302
404
  }
303
405
 
304
406
  fun switchCamera() {
305
- if (hmsSDK?.getLocalPeer()?.videoTrack?.isMute ?: true) {} else {
407
+ if (hmsSDK?.getLocalPeer()?.videoTrack?.isMute == false) {
306
408
  HMSCoroutineScope.launch { hmsSDK?.getLocalPeer()?.videoTrack?.switchCamera() }
307
409
  }
308
410
  }
309
411
 
310
412
  fun leave(callback: Promise?) {
311
- hmsSDK?.leave(object : HMSActionResultListener {
312
- override fun onSuccess() {
313
- callback?.resolve("")
314
- }
413
+ hmsSDK?.leave(
414
+ object : HMSActionResultListener {
415
+ override fun onSuccess() {
416
+ callback?.resolve(emitHMSSuccess())
417
+ }
315
418
 
316
- override fun onError(error: HMSException) {
317
- callback?.reject("101", "NOT_FOUND")
318
- }
319
- })
419
+ override fun onError(error: HMSException) {
420
+ callback?.reject(error.code.toString(), error.message)
421
+ self.emitHMSError(error)
422
+ }
423
+ }
424
+ )
320
425
  }
321
426
 
322
- fun sendBroadcastMessage(data: ReadableMap) {
427
+ fun sendBroadcastMessage(data: ReadableMap, callback: Promise?) {
323
428
  val requiredKeys =
324
429
  HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("message", "String")))
325
430
  if (requiredKeys) {
@@ -331,27 +436,22 @@ class HmsSDK(
331
436
  data.getString("message") as String,
332
437
  type as String,
333
438
  object : HMSMessageResultListener {
334
- override fun onError(error: HMSException) {}
335
- override fun onSuccess(hmsMessage: HMSMessage) {}
439
+ override fun onError(error: HMSException) {
440
+ self.emitHMSError(error)
441
+ callback?.reject(error.code.toString(), error.message)
442
+ }
443
+ override fun onSuccess(hmsMessage: HMSMessage) {
444
+ callback?.resolve(emitHMSSuccess(hmsMessage))
445
+ }
336
446
  }
337
447
  )
338
448
  } else {
339
- delegate.emitEvent(
340
- "ON_ERROR",
341
- HmsDecoder.getError(
342
- HMSException(
343
- 102,
344
- "NOT_FOUND",
345
- "SEND_ALL_REQUIRED_KEYS",
346
- "REQUIRED_KEYS_NOT_FOUND",
347
- "REQUIRED_KEYS_NOT_FOUND"
348
- )
349
- )
350
- )
449
+ self.emitRequiredKeysError()
450
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
351
451
  }
352
452
  }
353
453
 
354
- fun sendGroupMessage(data: ReadableMap) {
454
+ fun sendGroupMessage(data: ReadableMap, callback: Promise?) {
355
455
  val requiredKeys =
356
456
  HmsHelper.areAllRequiredKeysAvailable(
357
457
  data,
@@ -373,28 +473,23 @@ class HmsSDK(
373
473
  type as String,
374
474
  encodedTargetedRoles,
375
475
  object : HMSMessageResultListener {
376
- override fun onError(error: HMSException) {}
377
- override fun onSuccess(hmsMessage: HMSMessage) {}
476
+ override fun onError(error: HMSException) {
477
+ self.emitHMSError(error)
478
+ callback?.reject(error.code.toString(), error.message)
479
+ }
480
+ override fun onSuccess(hmsMessage: HMSMessage) {
481
+ callback?.resolve(emitHMSSuccess(hmsMessage))
482
+ }
378
483
  }
379
484
  )
380
485
  }
381
486
  } else {
382
- delegate.emitEvent(
383
- "ON_ERROR",
384
- HmsDecoder.getError(
385
- HMSException(
386
- 102,
387
- "NOT_FOUND",
388
- "SEND_ALL_REQUIRED_KEYS",
389
- "REQUIRED_KEYS_NOT_FOUND",
390
- "REQUIRED_KEYS_NOT_FOUND"
391
- )
392
- )
393
- )
487
+ self.emitRequiredKeysError()
488
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
394
489
  }
395
490
  }
396
491
 
397
- fun sendDirectMessage(data: ReadableMap) {
492
+ fun sendDirectMessage(data: ReadableMap, callback: Promise?) {
398
493
  val requiredKeys =
399
494
  HmsHelper.areAllRequiredKeysAvailable(
400
495
  data,
@@ -415,28 +510,23 @@ class HmsSDK(
415
510
  type as String,
416
511
  peer,
417
512
  object : HMSMessageResultListener {
418
- override fun onError(error: HMSException) {}
419
- override fun onSuccess(hmsMessage: HMSMessage) {}
513
+ override fun onError(error: HMSException) {
514
+ self.emitHMSError(error)
515
+ callback?.reject(error.code.toString(), error.message)
516
+ }
517
+ override fun onSuccess(hmsMessage: HMSMessage) {
518
+ callback?.resolve(emitHMSSuccess(hmsMessage))
519
+ }
420
520
  }
421
521
  )
422
522
  }
423
523
  } else {
424
- delegate.emitEvent(
425
- "ON_ERROR",
426
- HmsDecoder.getError(
427
- HMSException(
428
- 102,
429
- "NOT_FOUND",
430
- "SEND_ALL_REQUIRED_KEYS",
431
- "REQUIRED_KEYS_NOT_FOUND",
432
- "REQUIRED_KEYS_NOT_FOUND"
433
- )
434
- )
435
- )
524
+ self.emitRequiredKeysError()
525
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
436
526
  }
437
527
  }
438
528
 
439
- fun changeRole(data: ReadableMap) {
529
+ fun changeRole(data: ReadableMap, callback: Promise?) {
440
530
  val requiredKeys =
441
531
  HmsHelper.areAllRequiredKeysAvailable(
442
532
  data,
@@ -453,33 +543,28 @@ class HmsSDK(
453
543
 
454
544
  if (hmsRole != null && hmsPeer != null) {
455
545
  hmsSDK?.changeRole(
456
- hmsPeer as HMSRemotePeer,
546
+ hmsPeer,
457
547
  hmsRole,
458
548
  force,
459
549
  object : HMSActionResultListener {
460
- override fun onSuccess() {}
461
- override fun onError(error: HMSException) {}
550
+ override fun onSuccess() {
551
+ callback?.resolve(emitHMSSuccess())
552
+ }
553
+ override fun onError(error: HMSException) {
554
+ self.emitHMSError(error)
555
+ callback?.reject(error.code.toString(), error.message)
556
+ }
462
557
  }
463
558
  )
464
559
  }
465
560
  }
466
561
  } else {
467
- delegate.emitEvent(
468
- "ON_ERROR",
469
- HmsDecoder.getError(
470
- HMSException(
471
- 102,
472
- "NOT_FOUND",
473
- "SEND_ALL_REQUIRED_KEYS",
474
- "REQUIRED_KEYS_NOT_FOUND",
475
- "REQUIRED_KEYS_NOT_FOUND"
476
- )
477
- )
478
- )
562
+ self.emitRequiredKeysError()
563
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
479
564
  }
480
565
  }
481
566
 
482
- fun changeTrackState(data: ReadableMap) {
567
+ fun changeTrackState(data: ReadableMap, callback: Promise?) {
483
568
  val requiredKeys =
484
569
  HmsHelper.areAllRequiredKeysAvailable(
485
570
  data,
@@ -495,57 +580,60 @@ class HmsSDK(
495
580
  track,
496
581
  mute,
497
582
  object : HMSActionResultListener {
498
- override fun onSuccess() {}
499
- override fun onError(error: HMSException) {}
583
+ override fun onSuccess() {
584
+ callback?.resolve(emitHMSSuccess())
585
+ }
586
+ override fun onError(error: HMSException) {
587
+ self.emitHMSError(error)
588
+ callback?.reject(error.code.toString(), error.message)
589
+ }
500
590
  }
501
591
  )
502
592
  }
503
593
  } else {
504
- delegate.emitEvent(
505
- "ON_ERROR",
506
- HmsDecoder.getError(
507
- HMSException(
508
- 102,
509
- "NOT_FOUND",
510
- "SEND_ALL_REQUIRED_KEYS",
511
- "REQUIRED_KEYS_NOT_FOUND",
512
- "REQUIRED_KEYS_NOT_FOUND"
513
- )
514
- )
515
- )
594
+ self.emitRequiredKeysError()
595
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
516
596
  }
517
597
  }
518
598
 
519
- fun changeTrackStateRoles(data: ReadableMap) {
599
+ fun changeTrackStateRoles(data: ReadableMap, callback: Promise?) {
520
600
  val requiredKeys =
521
- HmsHelper.areAllRequiredKeysAvailable(
522
- data,
523
- arrayOf(Pair("source", "String"), Pair("mute", "Boolean"), Pair("type", "String"), Pair("roles", "Array"))
524
- )
601
+ HmsHelper.areAllRequiredKeysAvailable(
602
+ data,
603
+ arrayOf(
604
+ Pair("source", "String"),
605
+ Pair("mute", "Boolean"),
606
+ Pair("type", "String"),
607
+ Pair("roles", "Array")
608
+ )
609
+ )
525
610
  if (requiredKeys) {
526
611
  val mute: Boolean = data.getBoolean("mute")
527
- val type = if(data.getString("type") == HMSTrackType.AUDIO.toString()) HMSTrackType.AUDIO else HMSTrackType.VIDEO
612
+ val type =
613
+ if (data.getString("type") == HMSTrackType.AUDIO.toString()) HMSTrackType.AUDIO
614
+ else HMSTrackType.VIDEO
528
615
  val source = data.getString("source")
529
616
  val targetedRoles = data.getArray("roles")?.toArrayList() as? ArrayList<String>
530
617
  val roles = hmsSDK?.getRoles()
531
618
  val encodedTargetedRoles = HmsHelper.getRolesFromRoleNames(targetedRoles, roles)
532
- hmsSDK?.changeTrackState(mute, type, source, encodedTargetedRoles, object : HMSActionResultListener {
533
- override fun onSuccess() {}
534
- override fun onError(error: HMSException) {}
535
- })
536
- }else {
537
- delegate.emitEvent(
538
- "ON_ERROR",
539
- HmsDecoder.getError(
540
- HMSException(
541
- 102,
542
- "NOT_FOUND",
543
- "SEND_ALL_REQUIRED_KEYS",
544
- "REQUIRED_KEYS_NOT_FOUND",
545
- "REQUIRED_KEYS_NOT_FOUND"
546
- )
547
- )
619
+ hmsSDK?.changeTrackState(
620
+ mute,
621
+ type,
622
+ source,
623
+ encodedTargetedRoles,
624
+ object : HMSActionResultListener {
625
+ override fun onSuccess() {
626
+ callback?.resolve(emitHMSSuccess())
627
+ }
628
+ override fun onError(error: HMSException) {
629
+ self.emitHMSError(error)
630
+ callback?.reject(error.code.toString(), error.message)
631
+ }
632
+ }
548
633
  )
634
+ } else {
635
+ self.emitRequiredKeysError()
636
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
549
637
  }
550
638
  }
551
639
 
@@ -570,36 +658,49 @@ class HmsSDK(
570
658
  callback?.resolve(mute)
571
659
  }
572
660
  } else {
573
- callback?.reject("102", "REQUIRED_KEYS_NOT_AVAILABLE")
661
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
574
662
  }
575
663
  }
576
664
 
577
- fun removePeer(data: ReadableMap) {
578
- val peerId = data.getString("peerId")
579
- var reason = data.getString("reason")
580
-
581
- if (reason == null) {
582
- reason = ""
583
- }
665
+ fun removePeer(data: ReadableMap, callback: Promise?) {
666
+ val requiredKeys =
667
+ HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("peerId", "String")))
668
+ if (requiredKeys) {
669
+ val peerId = data.getString("peerId")
670
+ var reason = data.getString("reason")
584
671
 
585
- val peers = hmsSDK?.getRemotePeers()
672
+ if (reason == null) {
673
+ reason = ""
674
+ }
586
675
 
587
- val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
676
+ val peers = hmsSDK?.getRemotePeers()
588
677
 
589
- if (peer != null) {
590
- hmsSDK?.removePeerRequest(
591
- peer,
592
- reason,
593
- object : HMSActionResultListener {
594
- override fun onSuccess() {}
678
+ val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
595
679
 
596
- override fun onError(error: HMSException) {}
597
- }
598
- )
680
+ if (peer != null) {
681
+ hmsSDK?.removePeerRequest(
682
+ peer,
683
+ reason,
684
+ object : HMSActionResultListener {
685
+ override fun onSuccess() {
686
+ callback?.resolve(emitHMSSuccess())
687
+ }
688
+ override fun onError(error: HMSException) {
689
+ self.emitHMSError(error)
690
+ callback?.reject(error.code.toString(), error.message)
691
+ }
692
+ }
693
+ )
694
+ } else {
695
+ callback?.reject("101", "PEER_NOT_FOUND")
696
+ }
697
+ } else {
698
+ self.emitRequiredKeysError()
699
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
599
700
  }
600
701
  }
601
702
 
602
- fun endRoom(data: ReadableMap) {
703
+ fun endRoom(data: ReadableMap, callback: Promise?) {
603
704
  val lock = data.getBoolean("lock")
604
705
  var reason = data.getString("reason")
605
706
  if (reason == null) {
@@ -610,36 +711,39 @@ class HmsSDK(
610
711
  reason,
611
712
  lock,
612
713
  object : HMSActionResultListener {
613
- override fun onSuccess() {}
614
-
615
- override fun onError(error: HMSException) {}
714
+ override fun onSuccess() {
715
+ callback?.resolve(emitHMSSuccess())
716
+ }
717
+ override fun onError(error: HMSException) {
718
+ self.emitHMSError(error)
719
+ callback?.reject(error.code.toString(), error.message)
720
+ }
616
721
  }
617
722
  )
618
723
  }
619
724
 
620
- fun acceptRoleChange() {
725
+ fun acceptRoleChange(callback: Promise?) {
621
726
  if (recentRoleChangeRequest !== null) {
727
+
622
728
  hmsSDK?.acceptChangeRole(
623
729
  recentRoleChangeRequest!!,
624
730
  object : HMSActionResultListener {
625
731
  override fun onSuccess() {
626
- recentRoleChangeRequest = null
732
+ callback?.resolve(emitHMSSuccess())
627
733
  }
628
-
629
734
  override fun onError(error: HMSException) {
630
- recentRoleChangeRequest = null
735
+ self.emitHMSError(error)
736
+ callback?.reject(error.code.toString(), error.message)
631
737
  }
632
738
  }
633
739
  )
740
+
741
+ recentRoleChangeRequest = null
634
742
  }
635
743
  }
636
744
 
637
745
  fun muteAllPeersAudio(data: ReadableMap) {
638
- val requiredKeys =
639
- HmsHelper.areAllRequiredKeysAvailable(
640
- data,
641
- arrayOf(Pair("mute", "Boolean"))
642
- )
746
+ val requiredKeys = HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("mute", "Boolean")))
643
747
  if (requiredKeys) {
644
748
  val mute = data.getBoolean("mute")
645
749
  val peers = hmsSDK?.getRemotePeers()
@@ -647,33 +751,20 @@ class HmsSDK(
647
751
  for (remotePeer in peers) {
648
752
  val peerId = remotePeer.peerID
649
753
  val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
650
- if (peerId != null) {
651
- peer?.audioTrack?.isPlaybackAllowed = !mute
652
- }
754
+ peer?.audioTrack?.isPlaybackAllowed = !mute
653
755
  }
654
756
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
655
757
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
656
758
 
657
- val data: WritableMap = Arguments.createMap()
759
+ val map: WritableMap = Arguments.createMap()
658
760
 
659
- data.putMap("localPeer", localPeerData)
660
- data.putArray("remotePeers", remotePeerData)
661
- data.putString("id", id)
662
- delegate.emitEvent("ON_PEER_UPDATE", data)
761
+ map.putMap("localPeer", localPeerData)
762
+ map.putArray("remotePeers", remotePeerData)
763
+ map.putString("id", id)
764
+ delegate.emitEvent("ON_PEER_UPDATE", map)
663
765
  }
664
- }else {
665
- delegate.emitEvent(
666
- "ON_ERROR",
667
- HmsDecoder.getError(
668
- HMSException(
669
- 102,
670
- "NOT_FOUND",
671
- "SEND_ALL_REQUIRED_KEYS",
672
- "REQUIRED_KEYS_NOT_FOUND",
673
- "REQUIRED_KEYS_NOT_FOUND"
674
- )
675
- )
676
- )
766
+ } else {
767
+ this.emitRequiredKeysError()
677
768
  }
678
769
  }
679
770
 
@@ -695,18 +786,7 @@ class HmsSDK(
695
786
  remoteVideoTrack.isPlaybackAllowed = playbackAllowed
696
787
  }
697
788
  } else {
698
- delegate.emitEvent(
699
- "ON_ERROR",
700
- HmsDecoder.getError(
701
- HMSException(
702
- 102,
703
- "NOT_FOUND",
704
- "SEND_ALL_REQUIRED_KEYS",
705
- "REQUIRED_KEYS_NOT_FOUND",
706
- "REQUIRED_KEYS_NOT_FOUND"
707
- )
708
- )
709
- )
789
+ this.emitRequiredKeysError()
710
790
  }
711
791
  }
712
792
 
@@ -718,14 +798,18 @@ class HmsSDK(
718
798
  val remotePeers = hmsSDK?.getRemotePeers()
719
799
  val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
720
800
  val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
721
- if (remoteAudioTrack != null) {
722
- val isPlaybackAllowed = remoteAudioTrack.isPlaybackAllowed
723
- callback?.resolve(isPlaybackAllowed)
724
- } else if (remoteVideoTrack != null) {
725
- val isPlaybackAllowed = remoteVideoTrack.isPlaybackAllowed
726
- callback?.resolve(isPlaybackAllowed)
727
- } else {
728
- callback?.reject("101", "NOT_FOUND")
801
+ when {
802
+ remoteAudioTrack != null -> {
803
+ val isPlaybackAllowed = remoteAudioTrack.isPlaybackAllowed
804
+ callback?.resolve(isPlaybackAllowed)
805
+ }
806
+ remoteVideoTrack != null -> {
807
+ val isPlaybackAllowed = remoteVideoTrack.isPlaybackAllowed
808
+ callback?.resolve(isPlaybackAllowed)
809
+ }
810
+ else -> {
811
+ callback?.reject("101", "NOT_FOUND")
812
+ }
729
813
  }
730
814
  } else {
731
815
  callback?.reject("101", "TRACK_ID_NOT_FOUND")
@@ -734,7 +818,139 @@ class HmsSDK(
734
818
 
735
819
  fun getRoom(callback: Promise?) {
736
820
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
737
-
738
821
  callback?.resolve(roomData)
739
822
  }
823
+
824
+ fun setVolume(data: ReadableMap) {
825
+ val requiredKeys =
826
+ HmsHelper.areAllRequiredKeysAvailable(
827
+ data,
828
+ arrayOf(Pair("trackId", "String"), Pair("volume", "Float"))
829
+ )
830
+
831
+ if (requiredKeys) {
832
+ val trackId = data.getString("trackId")
833
+ val volume = data.getDouble("volume")
834
+
835
+ val remotePeers = hmsSDK?.getRemotePeers()
836
+
837
+ if (remotePeers != null) {
838
+ for (peer in remotePeers) {
839
+ val audioTrackId = peer.audioTrack?.trackId
840
+
841
+ if (audioTrackId == trackId) {
842
+ peer.audioTrack?.setVolume(volume)
843
+ return
844
+ }
845
+
846
+ for (auxTrack in peer.auxiliaryTracks) {
847
+ if (auxTrack.trackId == trackId && auxTrack.type == HMSTrackType.AUDIO) {
848
+ val trackExtracted = auxTrack as? HMSRemoteAudioTrack
849
+
850
+ if (trackExtracted != null) {
851
+ trackExtracted.setVolume(volume)
852
+ return
853
+ }
854
+ }
855
+ }
856
+ }
857
+ }
858
+ } else {
859
+ this.emitRequiredKeysError()
860
+ }
861
+ }
862
+
863
+ fun getVolume(data: ReadableMap, callback: Promise?) {
864
+ val requiredKeys =
865
+ HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
866
+
867
+ if (requiredKeys) {
868
+ val trackId = data.getString("trackId")
869
+
870
+ val localPeer = hmsSDK?.getLocalPeer()
871
+
872
+ if (localPeer?.audioTrack?.trackId == trackId) {
873
+ val volume = localPeer?.audioTrack?.volume
874
+ callback?.resolve(volume)
875
+ return
876
+ }
877
+ callback?.reject("101", "TRACK_IDS_DO_NOT_MATCH")
878
+ } else {
879
+ callback?.reject("101", "TRACK_NOT_FOUND")
880
+ }
881
+ }
882
+
883
+ fun changeMetadata(data: ReadableMap, callback: Promise?) {
884
+ val requiredKeys =
885
+ HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("metadata", "String")))
886
+
887
+ if (requiredKeys) {
888
+ val metadata = data.getString("metadata")
889
+
890
+ if (metadata != null) {
891
+ hmsSDK?.changeMetadata(
892
+ metadata,
893
+ object : HMSActionResultListener {
894
+ override fun onSuccess() {
895
+ callback?.resolve(emitHMSSuccess())
896
+ }
897
+ override fun onError(error: HMSException) {
898
+ callback?.reject(error.code.toString(), error.message)
899
+ self.emitHMSError(error)
900
+ }
901
+ }
902
+ )
903
+ }
904
+ } else {
905
+ self.emitRequiredKeysError()
906
+ }
907
+ }
908
+
909
+ fun startRTMPOrRecording(data: ReadableMap, callback: Promise?) {
910
+ val requiredKeys =
911
+ HmsHelper.areAllRequiredKeysAvailable(
912
+ data,
913
+ arrayOf(Pair("record", "Boolean"), Pair("meetingURL", "String"))
914
+ )
915
+ if (requiredKeys) {
916
+ val record = data.getBoolean("record")
917
+ val meetingURL = data.getString("meetingURL") as String
918
+ var rtmpURLs = data.getArray("rtmpURLs")
919
+ if (rtmpURLs == null) {
920
+ rtmpURLs = Arguments.createArray()
921
+ }
922
+ val rtmpURLsList = HmsHelper.getRtmpUrls(rtmpURLs)
923
+ val config = HMSRecordingConfig(meetingURL, rtmpURLsList, record)
924
+
925
+ hmsSDK?.startRtmpOrRecording(
926
+ config,
927
+ object : HMSActionResultListener {
928
+ override fun onSuccess() {
929
+ callback?.resolve(emitHMSSuccess())
930
+ }
931
+ override fun onError(error: HMSException) {
932
+ callback?.reject(error.code.toString(), error.message)
933
+ self.emitHMSError(error)
934
+ }
935
+ }
936
+ )
937
+ } else {
938
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
939
+ self.emitRequiredKeysError()
940
+ }
941
+ }
942
+
943
+ fun stopRtmpAndRecording(callback: Promise?) {
944
+ hmsSDK?.stopRtmpAndRecording(
945
+ object : HMSActionResultListener {
946
+ override fun onSuccess() {
947
+ callback?.resolve(emitHMSSuccess())
948
+ }
949
+ override fun onError(error: HMSException) {
950
+ callback?.reject(error.code.toString(), error.message)
951
+ self.emitHMSError(error)
952
+ }
953
+ }
954
+ )
955
+ }
740
956
  }