@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
@@ -5,6 +5,7 @@ import com.facebook.react.bridge.ReadableMap
5
5
  import live.hms.video.media.codec.HMSAudioCodec
6
6
  import live.hms.video.media.codec.HMSVideoCodec
7
7
  import live.hms.video.media.settings.HMSAudioTrackSettings
8
+ import live.hms.video.media.settings.HMSTrackSettings
8
9
  import live.hms.video.media.settings.HMSVideoResolution
9
10
  import live.hms.video.media.settings.HMSVideoTrackSettings
10
11
  import live.hms.video.media.tracks.*
@@ -28,26 +29,11 @@ object HmsHelper {
28
29
  return false
29
30
  }
30
31
  }
31
- "Float" -> {
32
- if (map.getDouble(key) == null) {
33
- return false
34
- }
35
- }
36
- "Boolean" -> {
37
- if (map.getBoolean(key) == null) {
38
- return false
39
- }
40
- }
41
32
  "Array" -> {
42
33
  if (map.getArray(key) == null) {
43
34
  return false
44
35
  }
45
36
  }
46
- "Int" -> {
47
- if (map.getInt(key) == null) {
48
- return false
49
- }
50
- }
51
37
  "Map" -> {
52
38
  if (map.getMap(key) == null) {
53
39
  return false
@@ -174,13 +160,54 @@ object HmsHelper {
174
160
  return null
175
161
  }
176
162
 
177
- fun getAudioTrackSettings(data: ReadableMap?): HMSAudioTrackSettings {
178
- val builder = HMSAudioTrackSettings.Builder()
163
+ fun getTrackSettings(data: ReadableMap?): HMSTrackSettings? {
164
+ if (data == null) {
165
+ return null
166
+ }
167
+
168
+ var useHardwareEchoCancellation = false
169
+ val requiredKeysUseHardwareEchoCancellation =
170
+ this.areAllRequiredKeysAvailable(
171
+ data,
172
+ arrayOf(Pair("useHardwareEchoCancellation", "Boolean"))
173
+ )
174
+ if (requiredKeysUseHardwareEchoCancellation) {
175
+ useHardwareEchoCancellation = data.getBoolean("useHardwareEchoCancellation")
176
+ }
177
+
178
+ var video: ReadableMap? = null
179
+ val requiredKeysVideo = this.areAllRequiredKeysAvailable(data, arrayOf(Pair("video", "Map")))
180
+ if (requiredKeysVideo) {
181
+ video = data.getMap("video")
182
+ }
183
+
184
+ var audio: ReadableMap? = null
185
+ val requiredKeysAudio = this.areAllRequiredKeysAvailable(data, arrayOf(Pair("audio", "Map")))
186
+ if (requiredKeysAudio) {
187
+ audio = data.getMap("audio")
188
+ }
189
+
190
+ if (video == null && audio == null && !useHardwareEchoCancellation) {
191
+ return null
192
+ }
193
+
194
+ val videoSettings = this.getVideoTrackSettings(video)
195
+ val audioSettings = this.getAudioTrackSettings(audio, useHardwareEchoCancellation)
196
+ val trackSettingsBuilder = HMSTrackSettings.Builder()
197
+ return trackSettingsBuilder.audio(audioSettings).video(videoSettings).build()
198
+ }
199
+
200
+ private fun getAudioTrackSettings(
201
+ data: ReadableMap?,
202
+ useHardwareEchoCancellation: Boolean
203
+ ): HMSAudioTrackSettings {
204
+ val builder =
205
+ HMSAudioTrackSettings.Builder()
206
+ .setUseHardwareAcousticEchoCanceler(useHardwareEchoCancellation)
179
207
 
180
208
  if (data != null) {
181
209
  val maxBitrate = data.getInt("maxBitrate")
182
210
  val codec = getAudioCodec(data.getString("codec"))
183
- val trackDescription = data.getString("trackDescription")
184
211
 
185
212
  builder.maxBitrate(maxBitrate)
186
213
  builder.codec(codec)
@@ -189,9 +216,9 @@ object HmsHelper {
189
216
  return builder.build()
190
217
  }
191
218
 
192
- // TODO: find out a way to set settings required to create HMSVideTrackSettings
219
+ // TODO: find out a way to set settings required to create HMSVideoTrackSettings
193
220
 
194
- fun getVideoTrackSettings(data: ReadableMap?): HMSVideoTrackSettings {
221
+ private fun getVideoTrackSettings(data: ReadableMap?): HMSVideoTrackSettings {
195
222
  val builder = HMSVideoTrackSettings.Builder()
196
223
  if (data != null) {
197
224
  val codec = getVideoCodec(data.getString("codec"))
@@ -199,7 +226,6 @@ object HmsHelper {
199
226
  val maxBitrate = data.getInt("maxBitrate")
200
227
  val maxFrameRate = data.getInt("maxFrameRate")
201
228
  val cameraFacing = getCameraFacing(data.getString("cameraFacing"))
202
- val trackDescription = data.getString("trackDescription")
203
229
 
204
230
  builder.codec(codec)
205
231
  builder.cameraFacing(cameraFacing)
@@ -212,7 +238,7 @@ object HmsHelper {
212
238
  return builder.build()
213
239
  }
214
240
 
215
- fun getVideoResolution(map: ReadableMap?): HMSVideoResolution? {
241
+ private fun getVideoResolution(map: ReadableMap?): HMSVideoResolution? {
216
242
  val width = map?.getDouble("width")
217
243
  val height = map?.getDouble("height")
218
244
 
@@ -223,7 +249,7 @@ object HmsHelper {
223
249
  }
224
250
  }
225
251
 
226
- fun getAudioCodec(codecString: String?): HMSAudioCodec {
252
+ private fun getAudioCodec(codecString: String?): HMSAudioCodec {
227
253
  when (codecString) {
228
254
  "opus" -> {
229
255
  return HMSAudioCodec.OPUS
@@ -232,22 +258,22 @@ object HmsHelper {
232
258
  return HMSAudioCodec.OPUS
233
259
  }
234
260
 
235
- fun getVideoCodec(codecString: String?): HMSVideoCodec {
261
+ private fun getVideoCodec(codecString: String?): HMSVideoCodec {
236
262
  when (codecString) {
237
- "h264" -> {
263
+ "H264" -> {
238
264
  return HMSVideoCodec.H264
239
265
  }
240
- "vp8" -> {
266
+ "VP8" -> {
241
267
  return HMSVideoCodec.VP8
242
268
  }
243
- "vp9" -> {
269
+ "VP9" -> {
244
270
  return HMSVideoCodec.VP9
245
271
  }
246
272
  }
247
273
  return HMSVideoCodec.H264
248
274
  }
249
275
 
250
- fun getCameraFacing(cameraFacing: String?): HMSVideoTrackSettings.CameraFacing {
276
+ private fun getCameraFacing(cameraFacing: String?): HMSVideoTrackSettings.CameraFacing {
251
277
  when (cameraFacing) {
252
278
  "FRONT" -> {
253
279
  return HMSVideoTrackSettings.CameraFacing.FRONT
@@ -262,10 +288,10 @@ object HmsHelper {
262
288
  fun getHms(credentials: ReadableMap, hmsCollection: MutableMap<String, HmsSDK>): HmsSDK? {
263
289
  val id = credentials.getString("id")
264
290
 
265
- if (id != null) {
266
- return hmsCollection[id]
291
+ return if (id != null) {
292
+ hmsCollection[id]
267
293
  } else {
268
- return null
294
+ null
269
295
  }
270
296
  }
271
297
 
@@ -278,4 +304,29 @@ object HmsHelper {
278
304
  }
279
305
  return rtmpURLs
280
306
  }
307
+
308
+ fun getHMSHLSMeetingURLVariants(
309
+ hmsMeetingURLVariants: ArrayList<HashMap<String, String>>?
310
+ ): List<HMSHLSMeetingURLVariant> {
311
+ val meetingURLVariants = mutableListOf<HMSHLSMeetingURLVariant>()
312
+ if (hmsMeetingURLVariants !== null) {
313
+ for (variant in hmsMeetingURLVariants) {
314
+ val meetingURLVariant = this.getHMSHLSMeetingURLVariant(variant)
315
+ meetingURLVariants.add(meetingURLVariant)
316
+ }
317
+ }
318
+ return meetingURLVariants
319
+ }
320
+
321
+ private fun getHMSHLSMeetingURLVariant(
322
+ hmsMeetingURLVariant: HashMap<String, String>?
323
+ ): HMSHLSMeetingURLVariant {
324
+ var meetingURLVariant = HMSHLSMeetingURLVariant("", "")
325
+ if (hmsMeetingURLVariant !== null) {
326
+ val meetingUrl = hmsMeetingURLVariant["meetingUrl"] as String
327
+ val metadata = hmsMeetingURLVariant["metadata"] as String
328
+ meetingURLVariant = HMSHLSMeetingURLVariant(meetingUrl, metadata)
329
+ }
330
+ return meetingURLVariant
331
+ }
281
332
  }
@@ -1,5 +1,8 @@
1
1
  package com.reactnativehmssdk
2
2
 
3
+ import android.app.Activity
4
+ import android.app.Application
5
+ import android.os.Bundle
3
6
  import com.facebook.react.bridge.*
4
7
  import com.facebook.react.module.annotations.ReactModule
5
8
  import com.facebook.react.modules.core.DeviceEventManagerModule
@@ -7,11 +10,12 @@ import com.reactnativehmssdk.HmsModule.Companion.REACT_CLASS
7
10
  import java.util.UUID
8
11
 
9
12
  @ReactModule(name = REACT_CLASS)
10
- class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
13
+ class HmsModule(reactContext: ReactApplicationContext) :
14
+ ReactContextBaseJavaModule(reactContext), Application.ActivityLifecycleCallbacks {
11
15
  companion object {
12
16
  const val REACT_CLASS = "HmsManager"
17
+ var hmsCollection = mutableMapOf<String, HmsSDK>()
13
18
  }
14
- private var hmsCollection = mutableMapOf<String, HmsSDK>()
15
19
  override fun getName(): String {
16
20
  return "HmsManager"
17
21
  }
@@ -28,14 +32,14 @@ class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
28
32
  if (hasItem) {
29
33
  val uuid = UUID.randomUUID()
30
34
  val randomUUIDString = uuid.toString()
31
- val sdkInstance: HmsSDK = HmsSDK(data, this, randomUUIDString, reactApplicationContext)
35
+ val sdkInstance = HmsSDK(data, this, randomUUIDString, reactApplicationContext)
32
36
 
33
37
  hmsCollection[randomUUIDString] = sdkInstance
34
38
 
35
39
  callback?.resolve(randomUUIDString)
36
40
  } else {
37
41
  val randomUUIDString = "12345"
38
- val sdkInstance: HmsSDK = HmsSDK(data, this, randomUUIDString, reactApplicationContext)
42
+ val sdkInstance = HmsSDK(data, this, randomUUIDString, reactApplicationContext)
39
43
 
40
44
  hmsCollection[randomUUIDString] = sdkInstance
41
45
 
@@ -86,45 +90,45 @@ class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
86
90
  }
87
91
 
88
92
  @ReactMethod
89
- fun sendBroadcastMessage(data: ReadableMap) {
93
+ fun sendBroadcastMessage(data: ReadableMap, callback: Promise?) {
90
94
  val hms = HmsHelper.getHms(data, hmsCollection)
91
95
 
92
- hms?.sendBroadcastMessage(data)
96
+ hms?.sendBroadcastMessage(data, callback)
93
97
  }
94
98
 
95
99
  @ReactMethod
96
- fun sendGroupMessage(data: ReadableMap) {
100
+ fun sendGroupMessage(data: ReadableMap, callback: Promise?) {
97
101
  val hms = HmsHelper.getHms(data, hmsCollection)
98
102
 
99
- hms?.sendGroupMessage(data)
103
+ hms?.sendGroupMessage(data, callback)
100
104
  }
101
105
 
102
106
  @ReactMethod
103
- fun sendDirectMessage(data: ReadableMap) {
107
+ fun sendDirectMessage(data: ReadableMap, callback: Promise?) {
104
108
  val hms = HmsHelper.getHms(data, hmsCollection)
105
109
 
106
- hms?.sendDirectMessage(data)
110
+ hms?.sendDirectMessage(data, callback)
107
111
  }
108
112
 
109
113
  @ReactMethod
110
- fun changeRole(data: ReadableMap) {
114
+ fun changeRole(data: ReadableMap, callback: Promise?) {
111
115
  val hms = HmsHelper.getHms(data, hmsCollection)
112
116
 
113
- hms?.changeRole(data)
117
+ hms?.changeRole(data, callback)
114
118
  }
115
119
 
116
120
  @ReactMethod
117
- fun changeTrackState(data: ReadableMap) {
121
+ fun changeTrackState(data: ReadableMap, callback: Promise?) {
118
122
  val hms = HmsHelper.getHms(data, hmsCollection)
119
123
 
120
- hms?.changeTrackState(data)
124
+ hms?.changeTrackState(data, callback)
121
125
  }
122
126
 
123
127
  @ReactMethod
124
- fun changeTrackStateRoles(data: ReadableMap) {
128
+ fun changeTrackStateForRoles(data: ReadableMap, callback: Promise?) {
125
129
  val hms = HmsHelper.getHms(data, hmsCollection)
126
130
 
127
- hms?.changeTrackStateRoles(data)
131
+ hms?.changeTrackStateForRoles(data, callback)
128
132
  }
129
133
 
130
134
  @ReactMethod
@@ -135,10 +139,10 @@ class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
135
139
  }
136
140
 
137
141
  @ReactMethod
138
- fun removePeer(data: ReadableMap) {
142
+ fun removePeer(data: ReadableMap, callback: Promise?) {
139
143
  val hms = HmsHelper.getHms(data, hmsCollection)
140
144
 
141
- hms?.removePeer(data)
145
+ hms?.removePeer(data, callback)
142
146
  }
143
147
 
144
148
  @ReactMethod
@@ -163,17 +167,17 @@ class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
163
167
  }
164
168
 
165
169
  @ReactMethod
166
- fun endRoom(data: ReadableMap) {
170
+ fun endRoom(data: ReadableMap, callback: Promise?) {
167
171
  val hms = HmsHelper.getHms(data, hmsCollection)
168
172
 
169
- hms?.endRoom(data)
173
+ hms?.endRoom(data, callback)
170
174
  }
171
175
 
172
176
  @ReactMethod
173
- fun acceptRoleChange(data: ReadableMap) {
177
+ fun acceptRoleChange(data: ReadableMap, callback: Promise?) {
174
178
  val hms = HmsHelper.getHms(data, hmsCollection)
175
179
 
176
- hms?.acceptRoleChange()
180
+ hms?.acceptRoleChange(callback)
177
181
  }
178
182
 
179
183
  @ReactMethod
@@ -204,6 +208,29 @@ class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
204
208
  hms?.changeMetadata(data, callback)
205
209
  }
206
210
 
211
+ @ReactMethod
212
+ fun startScreenshare(data: ReadableMap) {
213
+ currentActivity?.application?.registerActivityLifecycleCallbacks(this)
214
+ val hms = HmsHelper.getHms(data, hmsCollection)
215
+
216
+ hms?.startScreenshare()
217
+ }
218
+
219
+ @ReactMethod
220
+ fun isScreenShared(data: ReadableMap, callback: Promise?) {
221
+ val hms = HmsHelper.getHms(data, hmsCollection)
222
+
223
+ hms?.isScreenShared(callback)
224
+ }
225
+
226
+ @ReactMethod
227
+ fun stopScreenshare(data: ReadableMap, callback: Promise?) {
228
+ val hms = HmsHelper.getHms(data, hmsCollection)
229
+
230
+ currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
231
+ hms?.stopScreenshare(callback)
232
+ }
233
+
207
234
  @ReactMethod
208
235
  fun startRTMPOrRecording(data: ReadableMap, callback: Promise?) {
209
236
  val hms = HmsHelper.getHms(data, hmsCollection)
@@ -218,9 +245,59 @@ class HmsModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
218
245
  hms?.stopRtmpAndRecording(callback)
219
246
  }
220
247
 
248
+ @ReactMethod
249
+ fun startHLSStreaming(data: ReadableMap, callback: Promise?) {
250
+ val hms = HmsHelper.getHms(data, hmsCollection)
251
+
252
+ hms?.startHLSStreaming(data, callback)
253
+ }
254
+
255
+ @ReactMethod
256
+ fun stopHLSStreaming(data: ReadableMap, callback: Promise?) {
257
+ val hms = HmsHelper.getHms(data, hmsCollection)
258
+
259
+ hms?.stopHLSStreaming(callback)
260
+ }
261
+
262
+ @ReactMethod
263
+ fun resetVolume(data: ReadableMap) {
264
+ val hms = HmsHelper.getHms(data, hmsCollection)
265
+
266
+ hms?.resetVolume()
267
+ }
268
+
221
269
  fun emitEvent(event: String, data: WritableMap) {
222
270
  reactApplicationContext
223
271
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
224
272
  .emit(event, data)
225
273
  }
274
+
275
+ override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
276
+
277
+ override fun onActivityStarted(activity: Activity) {}
278
+
279
+ override fun onActivityResumed(activity: Activity) {}
280
+
281
+ override fun onActivityPaused(activity: Activity) {}
282
+
283
+ override fun onActivityStopped(activity: Activity) {}
284
+
285
+ override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
286
+
287
+ override fun onActivityDestroyed(activity: Activity) {
288
+ try {
289
+ if (activity.componentName.shortClassName == ".MainActivity") {
290
+ for (key in hmsCollection.keys) {
291
+ val hmsLocalPeer = hmsCollection[key]?.hmsSDK?.getLocalPeer()
292
+ if (hmsLocalPeer != null) {
293
+ hmsCollection[key]?.leave(null)
294
+ }
295
+ }
296
+ currentActivity?.application?.unregisterActivityLifecycleCallbacks(this)
297
+ hmsCollection = mutableMapOf<String, HmsSDK>()
298
+ }
299
+ } catch (e: Exception) {
300
+ // Log.d("error", e.message)
301
+ }
302
+ }
226
303
  }