@100mslive/react-native-hms 0.9.0 → 0.9.3

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 (206) hide show
  1. package/README.md +242 -21
  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/gradle.xml +13 -0
  10. package/android/.idea/misc.xml +9 -0
  11. package/android/.idea/modules/android.iml +18 -0
  12. package/android/.idea/modules.xml +8 -0
  13. package/android/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 +0 -0
  14. package/android/.idea/sonarlint/issuestore/index.pb +3 -0
  15. package/android/.idea/vcs.xml +6 -0
  16. package/android/build.gradle +2 -2
  17. package/android/local.properties +8 -0
  18. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +53 -4
  19. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +138 -64
  20. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +19 -5
  21. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +133 -109
  22. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +11 -0
  23. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +3 -27
  24. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +0 -2
  25. package/ios/HmsDecoder.swift +218 -137
  26. package/ios/HmsHelper.swift +51 -40
  27. package/ios/HmsManager.m +7 -1
  28. package/ios/HmsManager.swift +111 -68
  29. package/ios/HmsSDK.swift +345 -203
  30. package/ios/HmsView.swift +45 -31
  31. package/ios/VideoCollectionViewCell.swift +4 -4
  32. package/lib/commonjs/classes/HMSBrowserRecordingState.js +6 -0
  33. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  34. package/lib/commonjs/classes/HMSConfig.js +3 -0
  35. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  36. package/lib/commonjs/classes/HMSEncoder.js +196 -5
  37. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  38. package/lib/commonjs/classes/HMSHLSConfig.js +3 -0
  39. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  40. package/lib/commonjs/classes/HMSHLSRecordingConfig.js +23 -0
  41. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -0
  42. package/lib/commonjs/classes/HMSHLSRecordingState.js +29 -0
  43. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -0
  44. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
  45. package/lib/commonjs/classes/HMSLocalAudioStats.js +26 -0
  46. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -0
  47. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  48. package/lib/commonjs/classes/HMSLocalVideoStats.js +32 -0
  49. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -0
  50. package/lib/commonjs/classes/HMSLogger.js +21 -21
  51. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  52. package/lib/commonjs/classes/HMSMessage.js +4 -1
  53. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  54. package/lib/commonjs/classes/HMSMessageRecipient.js +26 -0
  55. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -0
  56. package/lib/commonjs/classes/HMSMessageRecipientType.js +15 -0
  57. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -0
  58. package/lib/commonjs/classes/HMSNetworkQuality.js +20 -0
  59. package/lib/commonjs/classes/HMSNetworkQuality.js.map +1 -0
  60. package/lib/commonjs/classes/HMSPeer.js +3 -0
  61. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  62. package/lib/commonjs/classes/HMSPeerUpdate.js +2 -7
  63. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  64. package/lib/commonjs/classes/HMSPermissions.js +2 -2
  65. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  66. package/lib/commonjs/classes/HMSRTCStats.js +38 -0
  67. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -0
  68. package/lib/commonjs/classes/HMSRTCStatsReport.js +26 -0
  69. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -0
  70. package/lib/commonjs/classes/HMSRemoteAudioStats.js +32 -0
  71. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -0
  72. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  73. package/lib/commonjs/classes/HMSRemoteVideoStats.js +38 -0
  74. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -0
  75. package/lib/commonjs/classes/HMSRoom.js +6 -0
  76. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  77. package/lib/commonjs/classes/HMSRoomUpdate.js +1 -0
  78. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  79. package/lib/commonjs/classes/HMSRtmpStreamingState.js +6 -0
  80. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  81. package/lib/commonjs/classes/HMSSDK.js +381 -114
  82. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  83. package/lib/commonjs/classes/HMSServerRecordingState.js +3 -0
  84. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  85. package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -0
  86. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  87. package/lib/commonjs/index.js +154 -0
  88. package/lib/commonjs/index.js.map +1 -1
  89. package/lib/module/classes/HMSBrowserRecordingState.js +6 -0
  90. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  91. package/lib/module/classes/HMSConfig.js +3 -0
  92. package/lib/module/classes/HMSConfig.js.map +1 -1
  93. package/lib/module/classes/HMSEncoder.js +187 -5
  94. package/lib/module/classes/HMSEncoder.js.map +1 -1
  95. package/lib/module/classes/HMSHLSConfig.js +3 -0
  96. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  97. package/lib/module/classes/HMSHLSRecordingConfig.js +14 -0
  98. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -0
  99. package/lib/module/classes/HMSHLSRecordingState.js +20 -0
  100. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -0
  101. package/lib/module/classes/HMSHLSVariant.js.map +1 -1
  102. package/lib/module/classes/HMSLocalAudioStats.js +17 -0
  103. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -0
  104. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  105. package/lib/module/classes/HMSLocalVideoStats.js +23 -0
  106. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -0
  107. package/lib/module/classes/HMSLogger.js +21 -21
  108. package/lib/module/classes/HMSLogger.js.map +1 -1
  109. package/lib/module/classes/HMSMessage.js +4 -1
  110. package/lib/module/classes/HMSMessage.js.map +1 -1
  111. package/lib/module/classes/HMSMessageRecipient.js +17 -0
  112. package/lib/module/classes/HMSMessageRecipient.js.map +1 -0
  113. package/lib/module/classes/HMSMessageRecipientType.js +8 -0
  114. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -0
  115. package/lib/module/classes/HMSNetworkQuality.js +11 -0
  116. package/lib/module/classes/HMSNetworkQuality.js.map +1 -0
  117. package/lib/module/classes/HMSPeer.js +3 -0
  118. package/lib/module/classes/HMSPeer.js.map +1 -1
  119. package/lib/module/classes/HMSPeerUpdate.js +2 -7
  120. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  121. package/lib/module/classes/HMSPermissions.js +2 -2
  122. package/lib/module/classes/HMSPermissions.js.map +1 -1
  123. package/lib/module/classes/HMSRTCStats.js +29 -0
  124. package/lib/module/classes/HMSRTCStats.js.map +1 -0
  125. package/lib/module/classes/HMSRTCStatsReport.js +17 -0
  126. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -0
  127. package/lib/module/classes/HMSRemoteAudioStats.js +23 -0
  128. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -0
  129. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  130. package/lib/module/classes/HMSRemoteVideoStats.js +29 -0
  131. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -0
  132. package/lib/module/classes/HMSRoom.js +6 -0
  133. package/lib/module/classes/HMSRoom.js.map +1 -1
  134. package/lib/module/classes/HMSRoomUpdate.js +1 -0
  135. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  136. package/lib/module/classes/HMSRtmpStreamingState.js +6 -0
  137. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  138. package/lib/module/classes/HMSSDK.js +368 -114
  139. package/lib/module/classes/HMSSDK.js.map +1 -1
  140. package/lib/module/classes/HMSServerRecordingState.js +3 -0
  141. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  142. package/lib/module/classes/HMSUpdateListenerActions.js +5 -0
  143. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  144. package/lib/module/index.js +11 -0
  145. package/lib/module/index.js.map +1 -1
  146. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -0
  147. package/lib/typescript/classes/HMSConfig.d.ts +2 -0
  148. package/lib/typescript/classes/HMSEncoder.d.ts +25 -0
  149. package/lib/typescript/classes/HMSHLSConfig.d.ts +5 -2
  150. package/lib/typescript/classes/HMSHLSRecordingConfig.d.ts +8 -0
  151. package/lib/typescript/classes/HMSHLSRecordingState.d.ts +12 -0
  152. package/lib/typescript/classes/HMSHLSVariant.d.ts +8 -8
  153. package/lib/typescript/classes/HMSLocalAudioStats.d.ts +10 -0
  154. package/lib/typescript/classes/HMSLocalPeer.d.ts +2 -0
  155. package/lib/typescript/classes/HMSLocalVideoStats.d.ts +15 -0
  156. package/lib/typescript/classes/HMSMessage.d.ts +8 -4
  157. package/lib/typescript/classes/HMSMessageRecipient.d.ts +13 -0
  158. package/lib/typescript/classes/HMSMessageRecipientType.d.ts +5 -0
  159. package/lib/typescript/classes/HMSNetworkQuality.d.ts +6 -0
  160. package/lib/typescript/classes/HMSPeer.d.ts +3 -0
  161. package/lib/typescript/classes/HMSPeerUpdate.d.ts +3 -8
  162. package/lib/typescript/classes/HMSPermissions.d.ts +2 -2
  163. package/lib/typescript/classes/HMSRTCStats.d.ts +18 -0
  164. package/lib/typescript/classes/HMSRTCStatsReport.d.ts +11 -0
  165. package/lib/typescript/classes/HMSRemoteAudioStats.d.ts +14 -0
  166. package/lib/typescript/classes/HMSRemotePeer.d.ts +2 -0
  167. package/lib/typescript/classes/HMSRemoteVideoStats.d.ts +19 -0
  168. package/lib/typescript/classes/HMSRoom.d.ts +5 -0
  169. package/lib/typescript/classes/HMSRoomUpdate.d.ts +2 -1
  170. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -0
  171. package/lib/typescript/classes/HMSSDK.d.ts +310 -8
  172. package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -0
  173. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +6 -1
  174. package/lib/typescript/index.d.ts +11 -0
  175. package/package.json +1 -1
  176. package/react-native-hms.podspec +1 -1
  177. package/src/classes/HMSBrowserRecordingState.ts +10 -1
  178. package/src/classes/HMSConfig.ts +3 -0
  179. package/src/classes/HMSEncoder.ts +208 -5
  180. package/src/classes/HMSHLSConfig.ts +8 -2
  181. package/src/classes/HMSHLSRecordingConfig.ts +9 -0
  182. package/src/classes/HMSHLSRecordingState.ts +18 -0
  183. package/src/classes/HMSHLSVariant.ts +8 -8
  184. package/src/classes/HMSLocalAudioStats.ts +15 -0
  185. package/src/classes/HMSLocalPeer.ts +2 -0
  186. package/src/classes/HMSLocalVideoStats.ts +23 -0
  187. package/src/classes/HMSLogger.ts +3 -3
  188. package/src/classes/HMSMessage.ts +11 -5
  189. package/src/classes/HMSMessageRecipient.ts +19 -0
  190. package/src/classes/HMSMessageRecipientType.ts +5 -0
  191. package/src/classes/HMSNetworkQuality.ts +7 -0
  192. package/src/classes/HMSPeer.ts +4 -2
  193. package/src/classes/HMSPeerUpdate.ts +2 -7
  194. package/src/classes/HMSPermissions.ts +3 -3
  195. package/src/classes/HMSRTCStats.ts +27 -0
  196. package/src/classes/HMSRTCStatsReport.ts +17 -0
  197. package/src/classes/HMSRemoteAudioStats.ts +21 -0
  198. package/src/classes/HMSRemotePeer.ts +2 -0
  199. package/src/classes/HMSRemoteVideoStats.ts +29 -0
  200. package/src/classes/HMSRoom.ts +7 -0
  201. package/src/classes/HMSRoomUpdate.ts +1 -0
  202. package/src/classes/HMSRtmpStreamingState.ts +10 -1
  203. package/src/classes/HMSSDK.tsx +530 -18
  204. package/src/classes/HMSServerRecordingState.ts +7 -1
  205. package/src/classes/HMSUpdateListenerActions.ts +5 -0
  206. package/src/index.ts +11 -0
@@ -17,6 +17,7 @@ import live.hms.video.sdk.models.enums.HMSRoomUpdate
17
17
  import live.hms.video.sdk.models.enums.HMSTrackUpdate
18
18
  import live.hms.video.sdk.models.trackchangerequest.HMSChangeTrackStateRequest
19
19
  import live.hms.video.utils.HMSCoroutineScope
20
+ import live.hms.video.utils.HmsUtilities
20
21
 
21
22
  class HmsSDK(
22
23
  data: ReadableMap?,
@@ -25,8 +26,9 @@ class HmsSDK(
25
26
  reactApplicationContext: ReactApplicationContext
26
27
  ) {
27
28
  var hmsSDK: HMSSDK? = null
28
- private var recentRoleChangeRequest: HMSRoleChangeRequest? = null
29
+ var screenshareCallback: Promise? = null
29
30
  var delegate: HmsModule = HmsDelegate
31
+ private var recentRoleChangeRequest: HMSRoleChangeRequest? = null
30
32
  private var context: ReactApplicationContext = reactApplicationContext
31
33
  private var previewInProgress: Boolean = false
32
34
  private var id: String = sdkId
@@ -95,42 +97,7 @@ class HmsSDK(
95
97
  )
96
98
  if (requiredKeys) {
97
99
  previewInProgress = true
98
- var config =
99
- HMSConfig(
100
- credentials.getString("username") as String,
101
- credentials.getString("authToken") as String,
102
- )
103
-
104
- when {
105
- HmsHelper.areAllRequiredKeysAvailable(
106
- credentials,
107
- arrayOf(Pair("endpoint", "String"), Pair("metadata", "String"))
108
- ) -> {
109
- config =
110
- HMSConfig(
111
- credentials.getString("username") as String,
112
- credentials.getString("authToken") as String,
113
- initEndpoint = credentials.getString("endpoint") as String,
114
- metadata = credentials.getString("metadata") as String,
115
- )
116
- }
117
- HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String"))) -> {
118
- config =
119
- HMSConfig(
120
- credentials.getString("username") as String,
121
- credentials.getString("authToken") as String,
122
- initEndpoint = credentials.getString("endpoint") as String,
123
- )
124
- }
125
- HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("metadata", "String"))) -> {
126
- config =
127
- HMSConfig(
128
- credentials.getString("username") as String,
129
- credentials.getString("authToken") as String,
130
- metadata = credentials.getString("metadata") as String,
131
- )
132
- }
133
- }
100
+ val config = HmsHelper.getHmsConfig(credentials)
134
101
 
135
102
  hmsSDK?.preview(
136
103
  config,
@@ -140,6 +107,50 @@ class HmsSDK(
140
107
  previewInProgress = false
141
108
  }
142
109
 
110
+ override fun onPeerUpdate(type: HMSPeerUpdate, peer: HMSPeer) {
111
+ if (type === HMSPeerUpdate.AUDIO_TOGGLED ||
112
+ type === HMSPeerUpdate.VIDEO_TOGGLED ||
113
+ type === HMSPeerUpdate.BECAME_DOMINANT_SPEAKER ||
114
+ type === HMSPeerUpdate.NO_DOMINANT_SPEAKER ||
115
+ type === HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER ||
116
+ type === HMSPeerUpdate.STARTED_SPEAKING ||
117
+ type === HMSPeerUpdate.STOPPED_SPEAKING
118
+ ) {
119
+ return
120
+ }
121
+ val updateType = type.name
122
+ val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
123
+ val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
124
+ val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
125
+ val hmsPeer = HmsDecoder.getHmsPeer(peer)
126
+
127
+ val data: WritableMap = Arguments.createMap()
128
+
129
+ data.putMap("peer", hmsPeer)
130
+ data.putMap("room", roomData)
131
+ data.putString("type", updateType)
132
+ data.putMap("localPeer", localPeerData)
133
+ data.putArray("remotePeers", remotePeerData)
134
+ data.putString("id", id)
135
+ delegate.emitEvent("ON_PEER_UPDATE", data)
136
+ }
137
+
138
+ override fun onRoomUpdate(type: HMSRoomUpdate, hmsRoom: HMSRoom) {
139
+ val updateType = type.name
140
+ val roomData = HmsDecoder.getHmsRoom(hmsRoom)
141
+ val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
142
+ val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
143
+
144
+ val data: WritableMap = Arguments.createMap()
145
+
146
+ data.putString("type", updateType)
147
+ data.putMap("room", roomData)
148
+ data.putMap("localPeer", localPeerData)
149
+ data.putArray("remotePeers", remotePeerData)
150
+ data.putString("id", id)
151
+ delegate.emitEvent("ON_ROOM_UPDATE", data)
152
+ }
153
+
143
154
  override fun onPreview(room: HMSRoom, localTracks: Array<HMSTrack>) {
144
155
  val previewTracks = HmsDecoder.getPreviewTracks(localTracks)
145
156
  val hmsRoom = HmsDecoder.getHmsRoom(room)
@@ -171,42 +182,7 @@ class HmsSDK(
171
182
  arrayOf(Pair("username", "String"), Pair("authToken", "String"))
172
183
  )
173
184
  if (requiredKeys) {
174
- var config =
175
- HMSConfig(
176
- credentials.getString("username") as String,
177
- credentials.getString("authToken") as String
178
- )
179
-
180
- when {
181
- HmsHelper.areAllRequiredKeysAvailable(
182
- credentials,
183
- arrayOf(Pair("endpoint", "String"), Pair("metadata", "String"))
184
- ) -> {
185
- config =
186
- HMSConfig(
187
- credentials.getString("username") as String,
188
- credentials.getString("authToken") as String,
189
- initEndpoint = credentials.getString("endpoint") as String,
190
- metadata = credentials.getString("metadata") as String,
191
- )
192
- }
193
- HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("endpoint", "String"))) -> {
194
- config =
195
- HMSConfig(
196
- credentials.getString("username") as String,
197
- credentials.getString("authToken") as String,
198
- initEndpoint = credentials.getString("endpoint") as String,
199
- )
200
- }
201
- HmsHelper.areAllRequiredKeysAvailable(credentials, arrayOf(Pair("metadata", "String"))) -> {
202
- config =
203
- HMSConfig(
204
- credentials.getString("username") as String,
205
- credentials.getString("authToken") as String,
206
- metadata = credentials.getString("metadata") as String,
207
- )
208
- }
209
- }
185
+ val config = HmsHelper.getHmsConfig(credentials)
210
186
 
211
187
  HMSCoroutineScope.launch {
212
188
  try {
@@ -260,6 +236,16 @@ class HmsSDK(
260
236
  }
261
237
 
262
238
  override fun onPeerUpdate(type: HMSPeerUpdate, peer: HMSPeer) {
239
+ if (type === HMSPeerUpdate.AUDIO_TOGGLED ||
240
+ type === HMSPeerUpdate.VIDEO_TOGGLED ||
241
+ type === HMSPeerUpdate.BECAME_DOMINANT_SPEAKER ||
242
+ type === HMSPeerUpdate.NO_DOMINANT_SPEAKER ||
243
+ type === HMSPeerUpdate.RESIGNED_DOMINANT_SPEAKER ||
244
+ type === HMSPeerUpdate.STARTED_SPEAKING ||
245
+ type === HMSPeerUpdate.STOPPED_SPEAKING
246
+ ) {
247
+ return
248
+ }
263
249
  val updateType = type.name
264
250
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
265
251
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
@@ -316,12 +302,12 @@ class HmsSDK(
316
302
  override fun onMessageReceived(message: HMSMessage) {
317
303
  val data: WritableMap = Arguments.createMap()
318
304
 
319
- data.putString("sender", message.sender.name)
305
+ data.putMap("sender", HmsDecoder.getHmsPeer(message.sender))
320
306
  data.putString("message", message.message)
321
307
  data.putString("type", message.type)
322
308
  data.putString("time", message.serverReceiveTime.toString())
323
309
  data.putString("id", id)
324
- data.putString("event", "ON_MESSAGE")
310
+ data.putMap("recipient", HmsDecoder.getHmsMessageRecipient(message.recipient))
325
311
 
326
312
  delegate.emitEvent("ON_MESSAGE", data)
327
313
  }
@@ -381,19 +367,6 @@ class HmsSDK(
381
367
  fun setLocalMute(data: ReadableMap) {
382
368
  val isMute = data.getBoolean("isMute")
383
369
  hmsSDK?.getLocalPeer()?.audioTrack?.setMute(isMute)
384
- val type = if (isMute) "TRACK_MUTED" else "TRACK_UNMUTED"
385
- val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
386
- val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
387
- val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
388
-
389
- val map: WritableMap = Arguments.createMap()
390
-
391
- map.putMap("room", roomData)
392
- map.putString("type", type)
393
- map.putMap("localPeer", localPeerData)
394
- map.putArray("remotePeers", remotePeerData)
395
- map.putString("id", id)
396
- delegate.emitEvent("ON_TRACK_UPDATE", map)
397
370
  }
398
371
 
399
372
  fun setLocalVideoMute(data: ReadableMap) {
@@ -411,6 +384,7 @@ class HmsSDK(
411
384
  hmsSDK?.leave(
412
385
  object : HMSActionResultListener {
413
386
  override fun onSuccess() {
387
+ screenshareCallback = null
414
388
  callback?.resolve(emitHMSSuccess())
415
389
  }
416
390
 
@@ -487,8 +461,7 @@ class HmsSDK(
487
461
  )
488
462
  if (requiredKeys) {
489
463
  val peerId = data.getString("peerId")
490
- val peers = hmsSDK?.getPeers()
491
- val peer = HmsHelper.getPeerFromPeerId(peerId, peers)
464
+ val peer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.getRoom())
492
465
  if (peer != null) {
493
466
  hmsSDK?.sendDirectMessage(
494
467
  data.getString("message") as String,
@@ -526,7 +499,7 @@ class HmsSDK(
526
499
  val force = data.getBoolean("force")
527
500
 
528
501
  if (peerId !== null && role !== null) {
529
- val hmsPeer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.getPeers())
502
+ val hmsPeer = HmsHelper.getPeerFromPeerId(peerId, hmsSDK?.getRoom())
530
503
  val hmsRole = HmsHelper.getRoleFromRoleName(role, hmsSDK?.getRoles())
531
504
 
532
505
  if (hmsRole != null && hmsPeer != null) {
@@ -561,8 +534,7 @@ class HmsSDK(
561
534
  if (requiredKeys) {
562
535
  val trackId = data.getString("trackId")
563
536
  val mute = data.getBoolean("mute")
564
- val remotePeers = hmsSDK?.getRemotePeers()
565
- val track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
537
+ val track = HmsHelper.getTrackFromTrackId(trackId, hmsSDK?.getRoom())
566
538
  if (track != null) {
567
539
  hmsSDK?.changeTrackState(
568
540
  track,
@@ -641,11 +613,9 @@ class HmsSDK(
641
613
  HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
642
614
  if (requiredKeys) {
643
615
  val trackId = data.getString("trackId")
644
- val remotePeers = hmsSDK?.getRemotePeers()
645
- val localPeer = hmsSDK?.getLocalPeer()
646
- val localTrack = HmsHelper.getLocalTrackFromTrackId(trackId, localPeer)
616
+ val localTrack = HmsHelper.getTrackFromTrackId(trackId, hmsSDK?.getRoom())
647
617
  if (localTrack == null) {
648
- val track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
618
+ val track = HmsHelper.getTrackFromTrackId(trackId, hmsSDK?.getRoom())
649
619
  if (track != null) {
650
620
  val mute = track.isMute
651
621
  callback?.resolve(mute)
@@ -669,8 +639,7 @@ class HmsSDK(
669
639
  )
670
640
  if (requiredKeys) {
671
641
  val peerId = data.getString("peerId")
672
- val peers = hmsSDK?.getRemotePeers()
673
- val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
642
+ val peer = HmsHelper.getRemotePeerFromPeerId(peerId, hmsSDK?.getRoom())
674
643
 
675
644
  if (peer != null) {
676
645
  hmsSDK?.removePeerRequest(
@@ -742,7 +711,29 @@ class HmsSDK(
742
711
  }
743
712
  }
744
713
 
745
- fun muteAllPeersAudio(data: ReadableMap) {
714
+ fun remoteMuteAllAudio() {
715
+ val allAudioTracks = hmsSDK?.getRoom()?.let { HmsUtilities.getAllAudioTracks(it) }
716
+ if (allAudioTracks != null) {
717
+ var customError: HMSException? = null
718
+ for (audioTrack in allAudioTracks) {
719
+ hmsSDK?.changeTrackState(
720
+ audioTrack,
721
+ true,
722
+ object : HMSActionResultListener {
723
+ override fun onSuccess() {}
724
+ override fun onError(error: HMSException) {
725
+ customError = error
726
+ }
727
+ }
728
+ )
729
+ }
730
+ if (customError != null) {
731
+ self.emitHMSError(customError!!)
732
+ }
733
+ }
734
+ }
735
+
736
+ fun setPlaybackForAllAudio(data: ReadableMap) {
746
737
  val requiredKeys = HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("mute", "Boolean")))
747
738
  if (requiredKeys) {
748
739
  val mute = data.getBoolean("mute")
@@ -750,7 +741,7 @@ class HmsSDK(
750
741
  if (peers != null) {
751
742
  for (remotePeer in peers) {
752
743
  val peerId = remotePeer.peerID
753
- val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
744
+ val peer = HmsHelper.getRemotePeerFromPeerId(peerId, hmsSDK?.getRoom())
754
745
  peer?.audioTrack?.isPlaybackAllowed = !mute
755
746
  }
756
747
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
@@ -777,9 +768,8 @@ class HmsSDK(
777
768
  if (requiredKeys) {
778
769
  val trackId = data.getString("trackId")
779
770
  val playbackAllowed = data.getBoolean("playbackAllowed")
780
- val remotePeers = hmsSDK?.getRemotePeers()
781
- val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
782
- val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
771
+ val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, hmsSDK?.getRoom())
772
+ val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, hmsSDK?.getRoom())
783
773
  if (remoteAudioTrack != null) {
784
774
  remoteAudioTrack.isPlaybackAllowed = playbackAllowed
785
775
  } else if (remoteVideoTrack != null) {
@@ -795,9 +785,8 @@ class HmsSDK(
795
785
  HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackId", "String")))
796
786
  if (requiredKeys) {
797
787
  val trackId = data.getString("trackId")
798
- val remotePeers = hmsSDK?.getRemotePeers()
799
- val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
800
- val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
788
+ val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, hmsSDK?.getRoom())
789
+ val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, hmsSDK?.getRoom())
801
790
  when {
802
791
  remoteAudioTrack != null -> {
803
792
  val isPlaybackAllowed = remoteAudioTrack.isPlaybackAllowed
@@ -854,6 +843,9 @@ class HmsSDK(
854
843
  }
855
844
  }
856
845
  }
846
+ this.emitCustomError("TRACKID_NOT_MATCHED")
847
+ } else {
848
+ this.emitCustomError("REMOTE_PEERS_NOT_FOUND")
857
849
  }
858
850
  } else {
859
851
  this.emitRequiredKeysError()
@@ -954,7 +946,8 @@ class HmsSDK(
954
946
  )
955
947
  }
956
948
 
957
- fun startScreenshare() {
949
+ fun startScreenshare(callback: Promise?) {
950
+ screenshareCallback = callback
958
951
  runOnUiThread {
959
952
  val intent = Intent(context, HmsScreenshareActivity::class.java)
960
953
  intent.flags = FLAG_ACTIVITY_NEW_TASK
@@ -971,10 +964,12 @@ class HmsSDK(
971
964
  hmsSDK?.stopScreenshare(
972
965
  object : HMSActionResultListener {
973
966
  override fun onError(error: HMSException) {
967
+ screenshareCallback = null
974
968
  callback?.reject(error.code.toString(), error.message)
975
969
  self.emitHMSError(error)
976
970
  }
977
971
  override fun onSuccess() {
972
+ screenshareCallback = null
978
973
  callback?.resolve(emitHMSSuccess())
979
974
  }
980
975
  }
@@ -988,7 +983,8 @@ class HmsSDK(
988
983
  val meetingURLVariants =
989
984
  data.getArray("meetingURLVariants")?.toArrayList() as? ArrayList<HashMap<String, String>>
990
985
  val hlsMeetingUrlVariant = HmsHelper.getHMSHLSMeetingURLVariants(meetingURLVariants)
991
- val config = HMSHLSConfig(hlsMeetingUrlVariant)
986
+ val hlsRecordingConfig = HmsHelper.getHlsRecordingConfig(data)
987
+ val config = HMSHLSConfig(hlsMeetingUrlVariant, hlsRecordingConfig)
992
988
 
993
989
  hmsSDK?.startHLSStreaming(
994
990
  config,
@@ -1043,4 +1039,32 @@ class HmsSDK(
1043
1039
  }
1044
1040
  }
1045
1041
  }
1042
+
1043
+ fun changeName(data: ReadableMap, callback: Promise?) {
1044
+ val requiredKeys = HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("name", "String")))
1045
+ if (requiredKeys) {
1046
+ val name = data.getString("name")
1047
+ if (name != null && name != "") {
1048
+ hmsSDK?.changeName(
1049
+ name,
1050
+ object : HMSActionResultListener {
1051
+ override fun onSuccess() {
1052
+ callback?.resolve(emitHMSSuccess())
1053
+ }
1054
+
1055
+ override fun onError(error: HMSException) {
1056
+ callback?.reject(error.code.toString(), error.message)
1057
+ self.emitHMSError(error)
1058
+ }
1059
+ }
1060
+ )
1061
+ } else {
1062
+ self.emitCustomError("NAME_UNDEFINED")
1063
+ callback?.reject("101", "NAME_UNDEFINED")
1064
+ }
1065
+ } else {
1066
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
1067
+ self.emitRequiredKeysError()
1068
+ }
1069
+ }
1046
1070
  }
@@ -8,6 +8,8 @@ import android.os.Bundle
8
8
  import androidx.activity.ComponentActivity
9
9
  import androidx.activity.result.ActivityResultLauncher
10
10
  import androidx.activity.result.contract.ActivityResultContracts
11
+ import com.facebook.react.bridge.Arguments
12
+ import com.facebook.react.bridge.WritableMap
11
13
  import live.hms.video.error.HMSException
12
14
  import live.hms.video.sdk.HMSActionResultListener
13
15
 
@@ -21,15 +23,24 @@ class HmsScreenshareActivity : ComponentActivity() {
21
23
  object : HMSActionResultListener {
22
24
  override fun onError(error: HMSException) {
23
25
  finish()
26
+ HmsModule.hmsCollection[id]?.screenshareCallback?.reject(error)
24
27
  HmsModule.hmsCollection[id]?.emitHMSError(error)
25
28
  }
26
29
  override fun onSuccess() {
30
+ HmsModule.hmsCollection[id]?.screenshareCallback?.resolve(
31
+ HmsModule.hmsCollection[id]?.emitHMSSuccess()
32
+ )
27
33
  finish()
28
34
  }
29
35
  },
30
36
  mediaProjectionPermissionResultData
31
37
  )
32
38
  } else {
39
+ val id = intent.getStringExtra("id")
40
+ val data: WritableMap = Arguments.createMap()
41
+ data.putBoolean("success", true)
42
+ data.putString("message", "RESULT_CANCELED")
43
+ HmsModule.hmsCollection[id]?.screenshareCallback?.resolve(data)
33
44
  finish()
34
45
  }
35
46
  }
@@ -8,8 +8,8 @@ import com.facebook.react.bridge.Arguments
8
8
  import com.facebook.react.bridge.ReactContext
9
9
  import com.facebook.react.bridge.WritableMap
10
10
  import com.facebook.react.uimanager.events.RCTEventEmitter
11
- import live.hms.video.media.tracks.HMSTrackType
12
11
  import live.hms.video.media.tracks.HMSVideoTrack
12
+ import live.hms.video.utils.HmsUtilities
13
13
  import live.hms.video.utils.SharedEglContext
14
14
  import org.webrtc.RendererCommon
15
15
  import org.webrtc.SurfaceViewRenderer
@@ -18,7 +18,6 @@ import org.webrtc.SurfaceViewRenderer
18
18
  class HmsView(context: ReactContext) : FrameLayout(context) {
19
19
  private var surfaceView: SurfaceViewRenderer = SurfaceViewRenderer(context)
20
20
  private var videoTrack: HMSVideoTrack? = null
21
- private var localTrack: String? = null
22
21
  private var scaleTypeApplied: Boolean = false
23
22
  private var currentScaleType: RendererCommon.ScalingType =
24
23
  RendererCommon.ScalingType.SCALE_ASPECT_FILL
@@ -31,7 +30,7 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
31
30
  surfaceView.setEnableHardwareScaler(true)
32
31
  }
33
32
 
34
- fun onReceiveNativeEvent() {
33
+ private fun onReceiveNativeEvent() {
35
34
  val event: WritableMap = Arguments.createMap()
36
35
  event.putString("message", "MyMessage")
37
36
  val reactContext = context as ReactContext
@@ -91,36 +90,13 @@ class HmsView(context: ReactContext) : FrameLayout(context) {
91
90
  if (id != null) {
92
91
  sdkId = id
93
92
  }
94
-
95
93
  val hms = hmsCollection[sdkId]?.hmsSDK
96
94
 
97
95
  if (trackId != null && hms != null) {
98
96
  if (mirror != null) {
99
97
  surfaceView.setMirror(mirror)
100
98
  }
101
- localTrack = trackId
102
- val localTrackId = hms.getLocalPeer()?.videoTrack?.trackId
103
- if (localTrackId == localTrack) {
104
- videoTrack = hms.getLocalPeer()?.videoTrack
105
- }
106
-
107
- val remotePeers = hms.getRemotePeers()
108
- for (peer in remotePeers) {
109
- val videoTrackId = peer.videoTrack?.trackId
110
-
111
- val auxiliaryTracks = peer.auxiliaryTracks
112
- for (track in auxiliaryTracks) {
113
- val auxTrackId = track.trackId
114
- if (trackId == auxTrackId && track.type == HMSTrackType.VIDEO && !track.isMute) {
115
- videoTrack = track as HMSVideoTrack
116
- return
117
- }
118
- }
119
- if (videoTrackId == localTrack) {
120
- videoTrack = peer.videoTrack
121
- return
122
- }
123
- }
99
+ videoTrack = hms.getRoom()?.let { HmsUtilities.getVideoTrack(trackId, it) }
124
100
  }
125
101
  }
126
102
  }
@@ -31,14 +31,12 @@ class HmssdkViewManager : SimpleViewManager<HmsView>() {
31
31
  @ReactProp(name = "data")
32
32
  fun setData(view: HmsView, data: ReadableMap) {
33
33
  val trackId = data.getString("trackId")
34
- // val sink = data.getBoolean("sink")
35
34
  val id = data.getString("id")
36
35
  val mirror = data.getBoolean("mirror")
37
36
  val hmsCollection = getHms()
38
37
  if (hmsCollection != null) {
39
38
  view.setData(id, trackId, hmsCollection, mirror)
40
39
  }
41
- // do the processing here
42
40
  }
43
41
 
44
42
  @ReactProp(name = "scaleType")