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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +6 -6
  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 +3 -2
  10. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +226 -256
  11. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +82 -31
  12. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +99 -22
  13. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +368 -221
  14. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +66 -0
  15. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +43 -24
  16. package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +1 -2
  17. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +14 -11
  18. package/android/src/main/res/layout/hms_view.xml +19 -0
  19. package/ios/HmsDecoder.swift +91 -22
  20. package/ios/HmsHelper.swift +34 -3
  21. package/ios/HmsManager.m +11 -9
  22. package/ios/HmsManager.swift +32 -18
  23. package/ios/HmsSDK.swift +193 -43
  24. package/ios/HmsView.swift +22 -54
  25. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js +3 -0
  26. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  27. package/lib/commonjs/classes/HMSEncoder.js +10 -6
  28. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  29. package/lib/commonjs/classes/HMSHLSConfig.js +20 -0
  30. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -0
  31. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js +23 -0
  32. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -0
  33. package/lib/commonjs/classes/HMSHLSStreamingState.js +23 -0
  34. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -0
  35. package/lib/commonjs/classes/HMSHLSVariant.js +29 -0
  36. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -0
  37. package/lib/commonjs/classes/HMSLocalAudioTrack.js +20 -0
  38. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  39. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  40. package/lib/commonjs/classes/HMSLocalVideoTrack.js +18 -0
  41. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  42. package/lib/commonjs/classes/HMSLogger.js +55 -1
  43. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  44. package/lib/commonjs/classes/HMSRemoteAudioTrack.js +19 -0
  45. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  46. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +19 -0
  47. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  48. package/lib/commonjs/classes/HMSRoom.js +3 -0
  49. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  50. package/lib/commonjs/classes/HMSRoomUpdate.js +6 -0
  51. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  52. package/lib/commonjs/classes/HMSSDK.js +297 -145
  53. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  54. package/lib/commonjs/classes/HMSTrackSettings.js +3 -0
  55. package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
  56. package/lib/commonjs/classes/HMSVideoCodec.js +4 -4
  57. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  58. package/lib/commonjs/classes/HmsView.js +26 -4
  59. package/lib/commonjs/classes/HmsView.js.map +1 -1
  60. package/lib/commonjs/index.js +70 -0
  61. package/lib/commonjs/index.js.map +1 -1
  62. package/lib/module/classes/HMSChangeTrackStateRequest.js +3 -0
  63. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  64. package/lib/module/classes/HMSEncoder.js +10 -6
  65. package/lib/module/classes/HMSEncoder.js.map +1 -1
  66. package/lib/module/classes/HMSHLSConfig.js +11 -0
  67. package/lib/module/classes/HMSHLSConfig.js.map +1 -0
  68. package/lib/module/classes/HMSHLSMeetingURLVariant.js +14 -0
  69. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -0
  70. package/lib/module/classes/HMSHLSStreamingState.js +14 -0
  71. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -0
  72. package/lib/module/classes/HMSHLSVariant.js +20 -0
  73. package/lib/module/classes/HMSHLSVariant.js.map +1 -0
  74. package/lib/module/classes/HMSLocalAudioTrack.js +17 -0
  75. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  76. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  77. package/lib/module/classes/HMSLocalVideoTrack.js +15 -0
  78. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  79. package/lib/module/classes/HMSLogger.js +55 -1
  80. package/lib/module/classes/HMSLogger.js.map +1 -1
  81. package/lib/module/classes/HMSRemoteAudioTrack.js +16 -0
  82. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  83. package/lib/module/classes/HMSRemoteVideoTrack.js +16 -0
  84. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  85. package/lib/module/classes/HMSRoom.js +3 -0
  86. package/lib/module/classes/HMSRoom.js.map +1 -1
  87. package/lib/module/classes/HMSRoomUpdate.js +6 -0
  88. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  89. package/lib/module/classes/HMSSDK.js +295 -146
  90. package/lib/module/classes/HMSSDK.js.map +1 -1
  91. package/lib/module/classes/HMSTrackSettings.js +3 -0
  92. package/lib/module/classes/HMSTrackSettings.js.map +1 -1
  93. package/lib/module/classes/HMSVideoCodec.js +4 -4
  94. package/lib/module/classes/HMSVideoCodec.js.map +1 -1
  95. package/lib/module/classes/HmsView.js +23 -4
  96. package/lib/module/classes/HmsView.js.map +1 -1
  97. package/lib/module/index.js +5 -0
  98. package/lib/module/index.js.map +1 -1
  99. package/lib/typescript/classes/HMSChangeTrackStateRequest.d.ts +2 -0
  100. package/lib/typescript/classes/HMSHLSConfig.d.ts +7 -0
  101. package/lib/typescript/classes/HMSHLSMeetingURLVariant.d.ts +8 -0
  102. package/lib/typescript/classes/HMSHLSStreamingState.d.ts +9 -0
  103. package/lib/typescript/classes/HMSHLSVariant.d.ts +12 -0
  104. package/lib/typescript/classes/HMSLocalPeer.d.ts +3 -0
  105. package/lib/typescript/classes/HMSLogger.d.ts +9 -0
  106. package/lib/typescript/classes/HMSRoom.d.ts +3 -0
  107. package/lib/typescript/classes/HMSRoomUpdate.d.ts +7 -1
  108. package/lib/typescript/classes/HMSSDK.d.ts +22 -13
  109. package/lib/typescript/classes/HMSTrackSettings.d.ts +2 -0
  110. package/lib/typescript/classes/HMSVideoCodec.d.ts +4 -4
  111. package/lib/typescript/index.d.ts +5 -0
  112. package/package.json +1 -1
  113. package/react-native-hms.podspec +1 -1
  114. package/src/classes/HMSChangeTrackStateRequest.ts +7 -1
  115. package/src/classes/HMSEncoder.ts +5 -1
  116. package/src/classes/HMSHLSConfig.ts +9 -0
  117. package/src/classes/HMSHLSMeetingURLVariant.ts +9 -0
  118. package/src/classes/HMSHLSStreamingState.ts +11 -0
  119. package/src/classes/HMSHLSVariant.ts +18 -0
  120. package/src/classes/HMSLocalAudioTrack.ts +16 -0
  121. package/src/classes/HMSLocalPeer.ts +3 -0
  122. package/src/classes/HMSLocalVideoTrack.ts +15 -0
  123. package/src/classes/HMSLogger.ts +28 -1
  124. package/src/classes/HMSRemoteAudioTrack.ts +16 -0
  125. package/src/classes/HMSRemoteVideoTrack.ts +16 -0
  126. package/src/classes/HMSRoom.ts +4 -0
  127. package/src/classes/HMSRoomUpdate.ts +6 -0
  128. package/src/classes/HMSSDK.tsx +221 -84
  129. package/src/classes/HMSTrackSettings.ts +3 -0
  130. package/src/classes/HMSVideoCodec.ts +4 -4
  131. package/src/classes/HmsView.tsx +32 -4
  132. package/src/index.ts +5 -0
  133. package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
  134. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  135. package/android/.gradle/6.9/fileHashes/resourceHashesCache.bin +0 -0
  136. package/android/.gradle/6.9/javaCompile/classAnalysis.bin +0 -0
  137. package/android/.gradle/6.9/javaCompile/jarAnalysis.bin +0 -0
  138. package/android/.gradle/6.9/javaCompile/javaCompile.lock +0 -0
  139. package/android/.gradle/6.9/javaCompile/taskHistory.bin +0 -0
  140. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  141. package/android/.project +0 -34
@@ -1,14 +1,17 @@
1
1
  package com.reactnativehmssdk
2
2
 
3
+ import android.content.Intent
4
+ import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
3
5
  import com.facebook.react.bridge.*
6
+ import com.facebook.react.bridge.UiThreadUtil.runOnUiThread
4
7
  import java.util.*
5
8
  import kotlinx.coroutines.launch
6
9
  import live.hms.video.error.HMSException
7
- import live.hms.video.media.settings.HMSTrackSettings
8
- import live.hms.video.media.tracks.*
10
+ import live.hms.video.media.tracks.HMSRemoteAudioTrack
11
+ import live.hms.video.media.tracks.HMSTrack
12
+ import live.hms.video.media.tracks.HMSTrackType
9
13
  import live.hms.video.sdk.*
10
14
  import live.hms.video.sdk.models.*
11
- import live.hms.video.sdk.models.HMSConfig
12
15
  import live.hms.video.sdk.models.enums.HMSPeerUpdate
13
16
  import live.hms.video.sdk.models.enums.HMSRoomUpdate
14
17
  import live.hms.video.sdk.models.enums.HMSTrackUpdate
@@ -23,22 +26,31 @@ class HmsSDK(
23
26
  ) {
24
27
  var hmsSDK: HMSSDK? = null
25
28
  private var recentRoleChangeRequest: HMSRoleChangeRequest? = null
26
- private var changeTrackStateRequest: HMSChangeTrackStateRequest? = null
27
- val delegate: HmsModule = HmsDelegate
28
- val id: String = sdkId
29
- val self = this
29
+ var delegate: HmsModule = HmsDelegate
30
+ private var context: ReactApplicationContext = reactApplicationContext
31
+ private var previewInProgress: Boolean = false
32
+ private var id: String = sdkId
33
+ private var self = this
30
34
 
31
35
  init {
32
- val videoSettings = HmsHelper.getVideoTrackSettings(data?.getMap("video"))
33
- val audioSettings = HmsHelper.getAudioTrackSettings(data?.getMap("audio"))
34
-
35
- val trackSettingsBuilder = HMSTrackSettings.Builder()
36
- val trackSettings = trackSettingsBuilder.audio(audioSettings).video(videoSettings).build()
36
+ val trackSettings = HmsHelper.getTrackSettings(data)
37
+ if (trackSettings == null) {
38
+ this.hmsSDK = HMSSDK.Builder(reactApplicationContext).build()
39
+ } else {
40
+ this.hmsSDK = HMSSDK.Builder(reactApplicationContext).setTrackSettings(trackSettings).build()
41
+ }
42
+ }
37
43
 
38
- this.hmsSDK = HMSSDK.Builder(reactApplicationContext).setTrackSettings(trackSettings).build()
44
+ private fun emitCustomError(message: String) {
45
+ val data: WritableMap = Arguments.createMap()
46
+ val hmsError = HMSException(102, message, message, message, message)
47
+ data.putString("event", "ON_ERROR")
48
+ data.putString("id", id)
49
+ data.putMap("error", HmsDecoder.getError(hmsError))
50
+ delegate.emitEvent("ON_ERROR", data)
39
51
  }
40
52
 
41
- fun emitRequiredKeysError() {
53
+ private fun emitRequiredKeysError() {
42
54
  val data: WritableMap = Arguments.createMap()
43
55
  val hmsError =
44
56
  HMSException(
@@ -62,53 +74,62 @@ class HmsSDK(
62
74
  delegate.emitEvent("ON_ERROR", data)
63
75
  }
64
76
 
77
+ fun emitHMSSuccess(message: HMSMessage? = null): ReadableMap {
78
+ val hmsMessage =
79
+ if (message !== null) message.message else "function call executed successfully"
80
+ val data: WritableMap = Arguments.createMap()
81
+ data.putBoolean("success", true)
82
+ data.putString("message", hmsMessage)
83
+ return data
84
+ }
85
+
65
86
  fun preview(credentials: ReadableMap) {
87
+ if (previewInProgress) {
88
+ self.emitCustomError("PREVIEW_ALREADY_IN_PROGRESS")
89
+ return
90
+ }
66
91
  val requiredKeys =
67
92
  HmsHelper.areAllRequiredKeysAvailable(
68
93
  credentials,
69
94
  arrayOf(Pair("username", "String"), Pair("authToken", "String"))
70
95
  )
71
96
  if (requiredKeys) {
97
+ previewInProgress = true
72
98
  var config =
73
99
  HMSConfig(
74
100
  credentials.getString("username") as String,
75
101
  credentials.getString("authToken") as String,
76
102
  )
77
103
 
78
- if (HmsHelper.areAllRequiredKeysAvailable(
79
- credentials,
80
- arrayOf(Pair("endpoint", "String"), Pair("metadata", "String"))
81
- )
82
- ) {
83
- config =
84
- HMSConfig(
85
- credentials.getString("username") as String,
86
- credentials.getString("authToken") as String,
87
- initEndpoint = credentials.getString("endpoint") as String,
88
- metadata = credentials.getString("metadata") as String,
89
- )
90
- } else if (HmsHelper.areAllRequiredKeysAvailable(
91
- credentials,
92
- arrayOf(Pair("endpoint", "String"))
93
- )
94
- ) {
95
- config =
96
- HMSConfig(
97
- credentials.getString("username") as String,
98
- credentials.getString("authToken") as String,
99
- initEndpoint = credentials.getString("endpoint") as String,
100
- )
101
- } else if (HmsHelper.areAllRequiredKeysAvailable(
102
- credentials,
103
- arrayOf(Pair("metadata", "String"))
104
- )
105
- ) {
106
- config =
107
- HMSConfig(
108
- credentials.getString("username") as String,
109
- credentials.getString("authToken") as String,
110
- metadata = credentials.getString("metadata") as String,
111
- )
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
+ }
112
133
  }
113
134
 
114
135
  hmsSDK?.preview(
@@ -116,6 +137,7 @@ class HmsSDK(
116
137
  object : HMSPreviewListener {
117
138
  override fun onError(error: HMSException) {
118
139
  self.emitHMSError(error)
140
+ previewInProgress = false
119
141
  }
120
142
 
121
143
  override fun onPreview(room: HMSRoom, localTracks: Array<HMSTrack>) {
@@ -129,6 +151,7 @@ class HmsSDK(
129
151
  data.putMap("localPeer", localPeerData)
130
152
  data.putString("id", id)
131
153
  delegate.emitEvent("ON_PREVIEW", data)
154
+ previewInProgress = false
132
155
  }
133
156
  }
134
157
  )
@@ -138,6 +161,10 @@ class HmsSDK(
138
161
  }
139
162
 
140
163
  fun join(credentials: ReadableMap) {
164
+ if (previewInProgress) {
165
+ self.emitCustomError("PREVIEW_IS_IN_PROGRESS")
166
+ return
167
+ }
141
168
  val requiredKeys =
142
169
  HmsHelper.areAllRequiredKeysAvailable(
143
170
  credentials,
@@ -150,40 +177,35 @@ class HmsSDK(
150
177
  credentials.getString("authToken") as String
151
178
  )
152
179
 
153
- if (HmsHelper.areAllRequiredKeysAvailable(
154
- credentials,
155
- arrayOf(Pair("endpoint", "String"), Pair("metadata", "String"))
156
- )
157
- ) {
158
- config =
159
- HMSConfig(
160
- credentials.getString("username") as String,
161
- credentials.getString("authToken") as String,
162
- initEndpoint = credentials.getString("endpoint") as String,
163
- metadata = credentials.getString("metadata") as String,
164
- )
165
- } else if (HmsHelper.areAllRequiredKeysAvailable(
166
- credentials,
167
- arrayOf(Pair("endpoint", "String"))
168
- )
169
- ) {
170
- config =
171
- HMSConfig(
172
- credentials.getString("username") as String,
173
- credentials.getString("authToken") as String,
174
- initEndpoint = credentials.getString("endpoint") as String,
175
- )
176
- } else if (HmsHelper.areAllRequiredKeysAvailable(
177
- credentials,
178
- arrayOf(Pair("metadata", "String"))
179
- )
180
- ) {
181
- config =
182
- HMSConfig(
183
- credentials.getString("username") as String,
184
- credentials.getString("authToken") as String,
185
- metadata = credentials.getString("metadata") as String,
186
- )
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
+ }
187
209
  }
188
210
 
189
211
  HMSCoroutineScope.launch {
@@ -191,14 +213,13 @@ class HmsSDK(
191
213
  hmsSDK?.join(
192
214
  config,
193
215
  object : HMSUpdateListener {
194
- override fun onChangeTrackStateRequest(request: HMSChangeTrackStateRequest) {
216
+ override fun onChangeTrackStateRequest(details: HMSChangeTrackStateRequest) {
195
217
  val decodedChangeTrackStateRequest =
196
- HmsDecoder.getHmsChangeTrackStateRequest(request)
218
+ HmsDecoder.getHmsChangeTrackStateRequest(details, id)
197
219
  delegate.emitEvent(
198
220
  "ON_CHANGE_TRACK_STATE_REQUEST",
199
221
  decodedChangeTrackStateRequest
200
222
  )
201
- changeTrackStateRequest = request
202
223
  }
203
224
 
204
225
  override fun onRemovedFromRoom(notification: HMSRemovedFromRoom) {
@@ -238,16 +259,18 @@ class HmsSDK(
238
259
  delegate.emitEvent("ON_JOIN", data)
239
260
  }
240
261
 
241
- override fun onPeerUpdate(type: HMSPeerUpdate, hmsPeer: HMSPeer) {
242
- val type = type.name
262
+ override fun onPeerUpdate(type: HMSPeerUpdate, peer: HMSPeer) {
263
+ val updateType = type.name
243
264
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
244
265
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
245
266
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
267
+ val hmsPeer = HmsDecoder.getHmsPeer(peer)
246
268
 
247
269
  val data: WritableMap = Arguments.createMap()
248
270
 
271
+ data.putMap("peer", hmsPeer)
249
272
  data.putMap("room", roomData)
250
- data.putString("type", type)
273
+ data.putString("type", updateType)
251
274
  data.putMap("localPeer", localPeerData)
252
275
  data.putArray("remotePeers", remotePeerData)
253
276
  data.putString("id", id)
@@ -255,14 +278,14 @@ class HmsSDK(
255
278
  }
256
279
 
257
280
  override fun onRoomUpdate(type: HMSRoomUpdate, hmsRoom: HMSRoom) {
258
- val type = type.name
281
+ val updateType = type.name
259
282
  val roomData = HmsDecoder.getHmsRoom(hmsRoom)
260
283
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
261
284
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
262
285
 
263
286
  val data: WritableMap = Arguments.createMap()
264
287
 
265
- data.putString("type", type)
288
+ data.putString("type", updateType)
266
289
  data.putMap("room", roomData)
267
290
  data.putMap("localPeer", localPeerData)
268
291
  data.putArray("remotePeers", remotePeerData)
@@ -271,15 +294,19 @@ class HmsSDK(
271
294
  }
272
295
 
273
296
  override fun onTrackUpdate(type: HMSTrackUpdate, track: HMSTrack, peer: HMSPeer) {
274
- val type = type.name
297
+ val updateType = type.name
275
298
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
276
299
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
277
300
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
301
+ val hmsPeer = HmsDecoder.getHmsPeer(peer)
302
+ val hmsTrack = HmsDecoder.getHmsTrack(track)
278
303
 
279
304
  val data: WritableMap = Arguments.createMap()
280
305
 
306
+ data.putMap("peer", hmsPeer)
307
+ data.putMap("track", hmsTrack)
281
308
  data.putMap("room", roomData)
282
- data.putString("type", type)
309
+ data.putString("type", updateType)
283
310
  data.putMap("localPeer", localPeerData)
284
311
  data.putArray("remotePeers", remotePeerData)
285
312
  data.putString("id", id)
@@ -334,9 +361,9 @@ class HmsSDK(
334
361
  val peers: WritableArray = Arguments.createArray()
335
362
  for (speaker in speakers) {
336
363
  val speakerArray: WritableMap = Arguments.createMap()
337
- speakerArray.putMap("peer", HmsDecoder.getHmsPeer(speaker?.peer))
338
- speakerArray.putInt("level", speaker?.level)
339
- speakerArray.putMap("track", HmsDecoder.getHmsTrack(speaker?.hmsTrack))
364
+ speakerArray.putMap("peer", HmsDecoder.getHmsPeer(speaker.peer))
365
+ speakerArray.putInt("level", speaker.level)
366
+ speakerArray.putMap("track", HmsDecoder.getHmsTrack(speaker.hmsTrack))
340
367
  peers.pushMap(speakerArray)
341
368
  }
342
369
  data.putArray("peers", peers)
@@ -359,14 +386,14 @@ class HmsSDK(
359
386
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
360
387
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
361
388
 
362
- val data: WritableMap = Arguments.createMap()
389
+ val map: WritableMap = Arguments.createMap()
363
390
 
364
- data.putMap("room", roomData)
365
- data.putString("type", type)
366
- data.putMap("localPeer", localPeerData)
367
- data.putArray("remotePeers", remotePeerData)
368
- data.putString("id", id)
369
- delegate.emitEvent("ON_TRACK_UPDATE", data)
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)
370
397
  }
371
398
 
372
399
  fun setLocalVideoMute(data: ReadableMap) {
@@ -375,7 +402,7 @@ class HmsSDK(
375
402
  }
376
403
 
377
404
  fun switchCamera() {
378
- if (hmsSDK?.getLocalPeer()?.videoTrack?.isMute ?: true) {} else {
405
+ if (hmsSDK?.getLocalPeer()?.videoTrack?.isMute == false) {
379
406
  HMSCoroutineScope.launch { hmsSDK?.getLocalPeer()?.videoTrack?.switchCamera() }
380
407
  }
381
408
  }
@@ -384,108 +411,110 @@ class HmsSDK(
384
411
  hmsSDK?.leave(
385
412
  object : HMSActionResultListener {
386
413
  override fun onSuccess() {
387
- callback?.resolve("")
414
+ callback?.resolve(emitHMSSuccess())
388
415
  }
389
416
 
390
417
  override fun onError(error: HMSException) {
391
- callback?.reject("101", "NOT_FOUND")
418
+ callback?.reject(error.code.toString(), error.message)
392
419
  self.emitHMSError(error)
393
420
  }
394
421
  }
395
422
  )
396
423
  }
397
424
 
398
- fun sendBroadcastMessage(data: ReadableMap) {
425
+ fun sendBroadcastMessage(data: ReadableMap, callback: Promise?) {
399
426
  val requiredKeys =
400
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("message", "String")))
427
+ HmsHelper.areAllRequiredKeysAvailable(
428
+ data,
429
+ arrayOf(Pair("message", "String"), Pair("type", "String"))
430
+ )
401
431
  if (requiredKeys) {
402
- val type =
403
- if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String"))))
404
- data.getString("type")
405
- else "chat"
406
432
  hmsSDK?.sendBroadcastMessage(
407
433
  data.getString("message") as String,
408
- type as String,
434
+ data.getString("type") as String,
409
435
  object : HMSMessageResultListener {
410
436
  override fun onError(error: HMSException) {
411
437
  self.emitHMSError(error)
438
+ callback?.reject(error.code.toString(), error.message)
439
+ }
440
+ override fun onSuccess(hmsMessage: HMSMessage) {
441
+ callback?.resolve(emitHMSSuccess(hmsMessage))
412
442
  }
413
- override fun onSuccess(hmsMessage: HMSMessage) {}
414
443
  }
415
444
  )
416
445
  } else {
417
446
  self.emitRequiredKeysError()
447
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
418
448
  }
419
449
  }
420
450
 
421
- fun sendGroupMessage(data: ReadableMap) {
451
+ fun sendGroupMessage(data: ReadableMap, callback: Promise?) {
422
452
  val requiredKeys =
423
453
  HmsHelper.areAllRequiredKeysAvailable(
424
454
  data,
425
- arrayOf(Pair("message", "String"), Pair("roles", "Array"))
455
+ arrayOf(Pair("message", "String"), Pair("roles", "Array"), Pair("type", "String"))
426
456
  )
427
457
  if (requiredKeys) {
428
- val type =
429
- if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String"))))
430
- data.getString("type")
431
- else "chat"
432
- val message = data.getString("message")
433
458
  val targetedRoles = data.getArray("roles")?.toArrayList() as? ArrayList<String>
434
459
  val roles = hmsSDK?.getRoles()
435
460
  val encodedTargetedRoles = HmsHelper.getRolesFromRoleNames(targetedRoles, roles)
436
461
 
437
- if (message != null) {
438
- hmsSDK?.sendGroupMessage(
439
- message,
440
- type as String,
441
- encodedTargetedRoles,
442
- object : HMSMessageResultListener {
443
- override fun onError(error: HMSException) {
444
- self.emitHMSError(error)
445
- }
446
- override fun onSuccess(hmsMessage: HMSMessage) {}
462
+ hmsSDK?.sendGroupMessage(
463
+ data.getString("message") as String,
464
+ data.getString("type") as String,
465
+ encodedTargetedRoles,
466
+ object : HMSMessageResultListener {
467
+ override fun onError(error: HMSException) {
468
+ self.emitHMSError(error)
469
+ callback?.reject(error.code.toString(), error.message)
447
470
  }
448
- )
449
- }
471
+ override fun onSuccess(hmsMessage: HMSMessage) {
472
+ callback?.resolve(emitHMSSuccess(hmsMessage))
473
+ }
474
+ }
475
+ )
450
476
  } else {
451
477
  self.emitRequiredKeysError()
478
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
452
479
  }
453
480
  }
454
481
 
455
- fun sendDirectMessage(data: ReadableMap) {
482
+ fun sendDirectMessage(data: ReadableMap, callback: Promise?) {
456
483
  val requiredKeys =
457
484
  HmsHelper.areAllRequiredKeysAvailable(
458
485
  data,
459
- arrayOf(Pair("message", "String"), Pair("peerId", "String"))
486
+ arrayOf(Pair("message", "String"), Pair("peerId", "String"), Pair("type", "String"))
460
487
  )
461
488
  if (requiredKeys) {
462
- val type =
463
- if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String"))))
464
- data.getString("type")
465
- else "chat"
466
- val message = data.getString("message")
467
489
  val peerId = data.getString("peerId")
468
490
  val peers = hmsSDK?.getPeers()
469
491
  val peer = HmsHelper.getPeerFromPeerId(peerId, peers)
470
- if (message != null && peer != null) {
492
+ if (peer != null) {
471
493
  hmsSDK?.sendDirectMessage(
472
- message,
473
- type as String,
494
+ data.getString("message") as String,
495
+ data.getString("type") as String,
474
496
  peer,
475
497
  object : HMSMessageResultListener {
476
498
  override fun onError(error: HMSException) {
477
499
  self.emitHMSError(error)
500
+ callback?.reject(error.code.toString(), error.message)
501
+ }
502
+ override fun onSuccess(hmsMessage: HMSMessage) {
503
+ callback?.resolve(emitHMSSuccess(hmsMessage))
478
504
  }
479
- override fun onSuccess(hmsMessage: HMSMessage) {}
480
505
  }
481
506
  )
507
+ } else {
508
+ self.emitCustomError("PEER_NOT_FOUND")
509
+ callback?.reject("101", "PEER_NOT_FOUND")
482
510
  }
483
511
  } else {
484
512
  self.emitRequiredKeysError()
513
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
485
514
  }
486
515
  }
487
516
 
488
- fun changeRole(data: ReadableMap) {
517
+ fun changeRole(data: ReadableMap, callback: Promise?) {
489
518
  val requiredKeys =
490
519
  HmsHelper.areAllRequiredKeysAvailable(
491
520
  data,
@@ -502,13 +531,16 @@ class HmsSDK(
502
531
 
503
532
  if (hmsRole != null && hmsPeer != null) {
504
533
  hmsSDK?.changeRole(
505
- hmsPeer as HMSRemotePeer,
534
+ hmsPeer,
506
535
  hmsRole,
507
536
  force,
508
537
  object : HMSActionResultListener {
509
- override fun onSuccess() {}
538
+ override fun onSuccess() {
539
+ callback?.resolve(emitHMSSuccess())
540
+ }
510
541
  override fun onError(error: HMSException) {
511
542
  self.emitHMSError(error)
543
+ callback?.reject(error.code.toString(), error.message)
512
544
  }
513
545
  }
514
546
  )
@@ -516,10 +548,11 @@ class HmsSDK(
516
548
  }
517
549
  } else {
518
550
  self.emitRequiredKeysError()
551
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
519
552
  }
520
553
  }
521
554
 
522
- fun changeTrackState(data: ReadableMap) {
555
+ fun changeTrackState(data: ReadableMap, callback: Promise?) {
523
556
  val requiredKeys =
524
557
  HmsHelper.areAllRequiredKeysAvailable(
525
558
  data,
@@ -535,36 +568,51 @@ class HmsSDK(
535
568
  track,
536
569
  mute,
537
570
  object : HMSActionResultListener {
538
- override fun onSuccess() {}
571
+ override fun onSuccess() {
572
+ callback?.resolve(emitHMSSuccess())
573
+ }
539
574
  override fun onError(error: HMSException) {
540
575
  self.emitHMSError(error)
576
+ callback?.reject(error.code.toString(), error.message)
541
577
  }
542
578
  }
543
579
  )
544
580
  }
545
581
  } else {
546
582
  self.emitRequiredKeysError()
583
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
547
584
  }
548
585
  }
549
586
 
550
- fun changeTrackStateRoles(data: ReadableMap) {
587
+ fun changeTrackStateForRoles(data: ReadableMap, callback: Promise?) {
551
588
  val requiredKeys =
552
589
  HmsHelper.areAllRequiredKeysAvailable(
553
590
  data,
554
591
  arrayOf(
555
- Pair("source", "String"),
556
592
  Pair("mute", "Boolean"),
557
- Pair("type", "String"),
558
- Pair("roles", "Array")
559
593
  )
560
594
  )
561
595
  if (requiredKeys) {
562
596
  val mute: Boolean = data.getBoolean("mute")
563
597
  val type =
564
- if (data.getString("type") == HMSTrackType.AUDIO.toString()) HMSTrackType.AUDIO
565
- else HMSTrackType.VIDEO
566
- val source = data.getString("source")
567
- val targetedRoles = data.getArray("roles")?.toArrayList() as? ArrayList<String>
598
+ if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("type", "String")))) {
599
+ if (data.getString("type") == HMSTrackType.AUDIO.toString()) HMSTrackType.AUDIO
600
+ else HMSTrackType.VIDEO
601
+ } else {
602
+ null
603
+ }
604
+ val source =
605
+ if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("source", "String")))) {
606
+ data.getString("source")
607
+ } else {
608
+ null
609
+ }
610
+ val targetedRoles =
611
+ if (HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("roles", "Array")))) {
612
+ data.getArray("roles")?.toArrayList() as? ArrayList<String>
613
+ } else {
614
+ null
615
+ }
568
616
  val roles = hmsSDK?.getRoles()
569
617
  val encodedTargetedRoles = HmsHelper.getRolesFromRoleNames(targetedRoles, roles)
570
618
  hmsSDK?.changeTrackState(
@@ -573,14 +621,18 @@ class HmsSDK(
573
621
  source,
574
622
  encodedTargetedRoles,
575
623
  object : HMSActionResultListener {
576
- override fun onSuccess() {}
624
+ override fun onSuccess() {
625
+ callback?.resolve(emitHMSSuccess())
626
+ }
577
627
  override fun onError(error: HMSException) {
578
628
  self.emitHMSError(error)
629
+ callback?.reject(error.code.toString(), error.message)
579
630
  }
580
631
  }
581
632
  )
582
633
  } else {
583
634
  self.emitRequiredKeysError()
635
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
584
636
  }
585
637
  }
586
638
 
@@ -605,76 +657,88 @@ class HmsSDK(
605
657
  callback?.resolve(mute)
606
658
  }
607
659
  } else {
608
- callback?.reject("102", "REQUIRED_KEYS_NOT_AVAILABLE")
660
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
609
661
  }
610
662
  }
611
663
 
612
- fun removePeer(data: ReadableMap) {
664
+ fun removePeer(data: ReadableMap, callback: Promise?) {
613
665
  val requiredKeys =
614
- HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("peerId", "String")))
666
+ HmsHelper.areAllRequiredKeysAvailable(
667
+ data,
668
+ arrayOf(Pair("peerId", "String"), Pair("reason", "String"))
669
+ )
615
670
  if (requiredKeys) {
616
671
  val peerId = data.getString("peerId")
617
- var reason = data.getString("reason")
618
-
619
- if (reason == null) {
620
- reason = ""
621
- }
622
-
623
672
  val peers = hmsSDK?.getRemotePeers()
624
-
625
673
  val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
626
674
 
627
675
  if (peer != null) {
628
676
  hmsSDK?.removePeerRequest(
629
677
  peer,
630
- reason,
678
+ data.getString("reason") as String,
631
679
  object : HMSActionResultListener {
632
- override fun onSuccess() {}
680
+ override fun onSuccess() {
681
+ callback?.resolve(emitHMSSuccess())
682
+ }
633
683
  override fun onError(error: HMSException) {
634
684
  self.emitHMSError(error)
685
+ callback?.reject(error.code.toString(), error.message)
635
686
  }
636
687
  }
637
688
  )
689
+ } else {
690
+ self.emitCustomError("PEER_NOT_FOUND")
691
+ callback?.reject("101", "PEER_NOT_FOUND")
638
692
  }
639
693
  } else {
640
694
  self.emitRequiredKeysError()
695
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
641
696
  }
642
697
  }
643
698
 
644
- fun endRoom(data: ReadableMap) {
645
- val lock = data.getBoolean("lock")
646
- var reason = data.getString("reason")
647
- if (reason == null) {
648
- reason = ""
649
- }
650
-
651
- hmsSDK?.endRoom(
652
- reason,
653
- lock,
654
- object : HMSActionResultListener {
655
- override fun onSuccess() {}
656
- override fun onError(error: HMSException) {
657
- self.emitHMSError(error)
699
+ fun endRoom(data: ReadableMap, callback: Promise?) {
700
+ val requiredKeys =
701
+ HmsHelper.areAllRequiredKeysAvailable(
702
+ data,
703
+ arrayOf(Pair("lock", "Boolean"), Pair("reason", "String"))
704
+ )
705
+ if (requiredKeys) {
706
+ hmsSDK?.endRoom(
707
+ data.getString("reason") as String,
708
+ data.getBoolean("lock"),
709
+ object : HMSActionResultListener {
710
+ override fun onSuccess() {
711
+ callback?.resolve(emitHMSSuccess())
712
+ }
713
+ override fun onError(error: HMSException) {
714
+ self.emitHMSError(error)
715
+ callback?.reject(error.code.toString(), error.message)
716
+ }
658
717
  }
659
- }
660
- )
718
+ )
719
+ } else {
720
+ self.emitRequiredKeysError()
721
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
722
+ }
661
723
  }
662
724
 
663
- fun acceptRoleChange() {
725
+ fun acceptRoleChange(callback: Promise?) {
664
726
  if (recentRoleChangeRequest !== null) {
727
+
665
728
  hmsSDK?.acceptChangeRole(
666
729
  recentRoleChangeRequest!!,
667
730
  object : HMSActionResultListener {
668
731
  override fun onSuccess() {
669
- recentRoleChangeRequest = null
732
+ callback?.resolve(emitHMSSuccess())
670
733
  }
671
-
672
734
  override fun onError(error: HMSException) {
673
- recentRoleChangeRequest = null
674
735
  self.emitHMSError(error)
736
+ callback?.reject(error.code.toString(), error.message)
675
737
  }
676
738
  }
677
739
  )
740
+
741
+ recentRoleChangeRequest = null
678
742
  }
679
743
  }
680
744
 
@@ -687,19 +751,17 @@ class HmsSDK(
687
751
  for (remotePeer in peers) {
688
752
  val peerId = remotePeer.peerID
689
753
  val peer = HmsHelper.getRemotePeerFromPeerId(peerId, peers)
690
- if (peerId != null) {
691
- peer?.audioTrack?.isPlaybackAllowed = !mute
692
- }
754
+ peer?.audioTrack?.isPlaybackAllowed = !mute
693
755
  }
694
756
  val localPeerData = HmsDecoder.getHmsLocalPeer(hmsSDK?.getLocalPeer())
695
757
  val remotePeerData = HmsDecoder.getHmsRemotePeers(hmsSDK?.getRemotePeers())
696
758
 
697
- val data: WritableMap = Arguments.createMap()
759
+ val map: WritableMap = Arguments.createMap()
698
760
 
699
- data.putMap("localPeer", localPeerData)
700
- data.putArray("remotePeers", remotePeerData)
701
- data.putString("id", id)
702
- 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)
703
765
  }
704
766
  } else {
705
767
  this.emitRequiredKeysError()
@@ -736,14 +798,18 @@ class HmsSDK(
736
798
  val remotePeers = hmsSDK?.getRemotePeers()
737
799
  val remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
738
800
  val remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
739
- if (remoteAudioTrack != null) {
740
- val isPlaybackAllowed = remoteAudioTrack.isPlaybackAllowed
741
- callback?.resolve(isPlaybackAllowed)
742
- } else if (remoteVideoTrack != null) {
743
- val isPlaybackAllowed = remoteVideoTrack.isPlaybackAllowed
744
- callback?.resolve(isPlaybackAllowed)
745
- } else {
746
- 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
+ }
747
813
  }
748
814
  } else {
749
815
  callback?.reject("101", "TRACK_ID_NOT_FOUND")
@@ -752,7 +818,6 @@ class HmsSDK(
752
818
 
753
819
  fun getRoom(callback: Promise?) {
754
820
  val roomData = HmsDecoder.getHmsRoom(hmsSDK?.getRoom())
755
-
756
821
  callback?.resolve(roomData)
757
822
  }
758
823
 
@@ -827,14 +892,10 @@ class HmsSDK(
827
892
  metadata,
828
893
  object : HMSActionResultListener {
829
894
  override fun onSuccess() {
830
- val result: WritableMap = Arguments.createMap()
831
-
832
- result.putBoolean("success", true)
833
-
834
- callback?.resolve(result)
895
+ callback?.resolve(emitHMSSuccess())
835
896
  }
836
897
  override fun onError(error: HMSException) {
837
- callback?.reject(error.message, error.description)
898
+ callback?.reject(error.code.toString(), error.message)
838
899
  self.emitHMSError(error)
839
900
  }
840
901
  }
@@ -853,7 +914,7 @@ class HmsSDK(
853
914
  )
854
915
  if (requiredKeys) {
855
916
  val record = data.getBoolean("record")
856
- var meetingURL = data.getString("meetingURL") as String
917
+ val meetingURL = data.getString("meetingURL") as String
857
918
  var rtmpURLs = data.getArray("rtmpURLs")
858
919
  if (rtmpURLs == null) {
859
920
  rtmpURLs = Arguments.createArray()
@@ -865,12 +926,10 @@ class HmsSDK(
865
926
  config,
866
927
  object : HMSActionResultListener {
867
928
  override fun onSuccess() {
868
- val result: WritableMap = Arguments.createMap()
869
- result.putBoolean("success", true)
870
- callback?.resolve(result)
929
+ callback?.resolve(emitHMSSuccess())
871
930
  }
872
931
  override fun onError(error: HMSException) {
873
- callback?.reject(error.message, error.description)
932
+ callback?.reject(error.code.toString(), error.message)
874
933
  self.emitHMSError(error)
875
934
  }
876
935
  }
@@ -885,15 +944,103 @@ class HmsSDK(
885
944
  hmsSDK?.stopRtmpAndRecording(
886
945
  object : HMSActionResultListener {
887
946
  override fun onSuccess() {
888
- val result: WritableMap = Arguments.createMap()
889
- result.putBoolean("success", true)
890
- callback?.resolve(result)
947
+ callback?.resolve(emitHMSSuccess())
891
948
  }
892
949
  override fun onError(error: HMSException) {
893
- callback?.reject(error.message, error.description)
950
+ callback?.reject(error.code.toString(), error.message)
894
951
  self.emitHMSError(error)
895
952
  }
896
953
  }
897
954
  )
898
955
  }
956
+
957
+ fun startScreenshare() {
958
+ runOnUiThread {
959
+ val intent = Intent(context, HmsScreenshareActivity::class.java)
960
+ intent.flags = FLAG_ACTIVITY_NEW_TASK
961
+ intent.putExtra("id", id)
962
+ context.startActivity(intent)
963
+ }
964
+ }
965
+
966
+ fun isScreenShared(callback: Promise?) {
967
+ callback?.resolve(hmsSDK?.isScreenShared())
968
+ }
969
+
970
+ fun stopScreenshare(callback: Promise?) {
971
+ hmsSDK?.stopScreenshare(
972
+ object : HMSActionResultListener {
973
+ override fun onError(error: HMSException) {
974
+ callback?.reject(error.code.toString(), error.message)
975
+ self.emitHMSError(error)
976
+ }
977
+ override fun onSuccess() {
978
+ callback?.resolve(emitHMSSuccess())
979
+ }
980
+ }
981
+ )
982
+ }
983
+
984
+ fun startHLSStreaming(data: ReadableMap, callback: Promise?) {
985
+ val requiredKeys =
986
+ HmsHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("meetingURLVariants", "Array")))
987
+ if (requiredKeys) {
988
+ val meetingURLVariants =
989
+ data.getArray("meetingURLVariants")?.toArrayList() as? ArrayList<HashMap<String, String>>
990
+ val hlsMeetingUrlVariant = HmsHelper.getHMSHLSMeetingURLVariants(meetingURLVariants)
991
+ val config = HMSHLSConfig(hlsMeetingUrlVariant)
992
+
993
+ hmsSDK?.startHLSStreaming(
994
+ config,
995
+ object : HMSActionResultListener {
996
+ override fun onSuccess() {
997
+ callback?.resolve(emitHMSSuccess())
998
+ }
999
+ override fun onError(error: HMSException) {
1000
+ callback?.reject(error.code.toString(), error.message)
1001
+ self.emitHMSError(error)
1002
+ }
1003
+ }
1004
+ )
1005
+ } else {
1006
+ callback?.reject("101", "REQUIRED_KEYS_NOT_FOUND")
1007
+ self.emitRequiredKeysError()
1008
+ }
1009
+ }
1010
+
1011
+ fun stopHLSStreaming(callback: Promise?) {
1012
+ hmsSDK?.stopHLSStreaming(
1013
+ null,
1014
+ object : HMSActionResultListener {
1015
+ override fun onSuccess() {
1016
+ callback?.resolve(emitHMSSuccess())
1017
+ }
1018
+ override fun onError(error: HMSException) {
1019
+ callback?.reject(error.code.toString(), error.message)
1020
+ self.emitHMSError(error)
1021
+ }
1022
+ }
1023
+ )
1024
+ }
1025
+
1026
+ fun resetVolume() {
1027
+ val remotePeers = hmsSDK?.getRemotePeers()
1028
+
1029
+ if (remotePeers != null) {
1030
+ for (peer in remotePeers) {
1031
+ val playbackAllowed = peer.audioTrack?.isPlaybackAllowed
1032
+ if (playbackAllowed !== null && playbackAllowed) {
1033
+ peer.audioTrack?.setVolume(10.0)
1034
+ }
1035
+ val auxTracks = peer.auxiliaryTracks
1036
+
1037
+ for (track in auxTracks) {
1038
+ if (track.type === HMSTrackType.AUDIO) {
1039
+
1040
+ (track as? HMSRemoteAudioTrack)?.setVolume(10.0)
1041
+ }
1042
+ }
1043
+ }
1044
+ }
1045
+ }
899
1046
  }