@100mslive/react-native-hms 0.9.8 → 0.9.92

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 (91) hide show
  1. package/README.md +50 -43
  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/libraries/{Gradle__com_github_100mslive_android_sdk_lib_2_4_2_aar.xml → Gradle__com_github_100mslive_android_sdk_lib_2_4_7_aar.xml} +4 -4
  10. package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m97_hms_1_1_aar.xml +11 -0
  11. package/android/.idea/modules/android.androidTest.iml +4 -4
  12. package/android/.idea/modules/android.main.iml +4 -4
  13. package/android/.idea/modules/android.unitTest.iml +4 -4
  14. package/android/build.gradle +2 -2
  15. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +84 -0
  16. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +77 -8
  17. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +95 -22
  18. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +88 -2
  19. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +282 -49
  20. package/ios/HMSDecoder.swift +9 -8
  21. package/ios/HMSHelper.swift +5 -8
  22. package/ios/HMSManager.m +4 -1
  23. package/ios/HMSManager.swift +28 -6
  24. package/ios/HMSRNSDK.swift +146 -101
  25. package/lib/commonjs/classes/HMSAudioDevice.js +17 -0
  26. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -0
  27. package/lib/commonjs/classes/HMSAudioMixingMode.js +15 -0
  28. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -0
  29. package/lib/commonjs/classes/HMSAudioMode.js +17 -0
  30. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -0
  31. package/lib/commonjs/classes/HMSEncoder.js +15 -0
  32. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  33. package/lib/commonjs/classes/HMSException.js +18 -13
  34. package/lib/commonjs/classes/HMSException.js.map +1 -1
  35. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  36. package/lib/commonjs/classes/HMSLogger.js +2 -2
  37. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  38. package/lib/commonjs/classes/HMSPermissions.js +7 -4
  39. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  40. package/lib/commonjs/classes/HMSSDK.js +267 -58
  41. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  42. package/lib/commonjs/classes/HMSUpdateListenerActions.js +1 -0
  43. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  44. package/lib/commonjs/index.js +42 -0
  45. package/lib/commonjs/index.js.map +1 -1
  46. package/lib/module/classes/HMSAudioDevice.js +10 -0
  47. package/lib/module/classes/HMSAudioDevice.js.map +1 -0
  48. package/lib/module/classes/HMSAudioMixingMode.js +8 -0
  49. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -0
  50. package/lib/module/classes/HMSAudioMode.js +10 -0
  51. package/lib/module/classes/HMSAudioMode.js.map +1 -0
  52. package/lib/module/classes/HMSEncoder.js +14 -0
  53. package/lib/module/classes/HMSEncoder.js.map +1 -1
  54. package/lib/module/classes/HMSException.js +18 -13
  55. package/lib/module/classes/HMSException.js.map +1 -1
  56. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  57. package/lib/module/classes/HMSLogger.js +2 -2
  58. package/lib/module/classes/HMSLogger.js.map +1 -1
  59. package/lib/module/classes/HMSPermissions.js +7 -4
  60. package/lib/module/classes/HMSPermissions.js.map +1 -1
  61. package/lib/module/classes/HMSSDK.js +267 -52
  62. package/lib/module/classes/HMSSDK.js.map +1 -1
  63. package/lib/module/classes/HMSUpdateListenerActions.js +1 -0
  64. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  65. package/lib/module/index.js +3 -0
  66. package/lib/module/index.js.map +1 -1
  67. package/lib/typescript/classes/HMSAudioDevice.d.ts +7 -0
  68. package/lib/typescript/classes/HMSAudioMixingMode.d.ts +5 -0
  69. package/lib/typescript/classes/HMSAudioMode.d.ts +7 -0
  70. package/lib/typescript/classes/HMSEncoder.d.ts +2 -0
  71. package/lib/typescript/classes/HMSException.d.ts +8 -14
  72. package/lib/typescript/classes/HMSHLSConfig.d.ts +2 -2
  73. package/lib/typescript/classes/HMSLogger.d.ts +1 -1
  74. package/lib/typescript/classes/HMSPermissions.d.ts +6 -4
  75. package/lib/typescript/classes/HMSSDK.d.ts +112 -12
  76. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +2 -1
  77. package/lib/typescript/index.d.ts +3 -0
  78. package/package.json +1 -19
  79. package/react-native-hms.podspec +2 -1
  80. package/src/classes/HMSAudioDevice.ts +7 -0
  81. package/src/classes/HMSAudioMixingMode.ts +5 -0
  82. package/src/classes/HMSAudioMode.ts +7 -0
  83. package/src/classes/HMSEncoder.ts +12 -0
  84. package/src/classes/HMSException.ts +15 -24
  85. package/src/classes/HMSHLSConfig.ts +2 -2
  86. package/src/classes/HMSLogger.ts +2 -2
  87. package/src/classes/HMSPermissions.ts +9 -6
  88. package/src/classes/HMSSDK.tsx +352 -67
  89. package/src/classes/HMSUpdateListenerActions.ts +1 -0
  90. package/src/index.ts +3 -0
  91. package/android/.idea/libraries/Gradle__com_github_100mslive_webrtc_m97_aar.xml +0 -11
@@ -7,6 +7,7 @@
7
7
 
8
8
  import Foundation
9
9
  import HMSSDK
10
+ import ReplayKit
10
11
 
11
12
  class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
12
13
 
@@ -17,6 +18,13 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
17
18
  var id: String = "12345"
18
19
  var rtcStatsAttached = false
19
20
  var recentPreviewTracks: [HMSTrack]? = []
21
+ private var reconnectingStage: Bool = false
22
+ private var preferredExtension: String? = nil
23
+ private var systemBroadcastPicker: RPSystemBroadcastPickerView? = nil
24
+ private var startScreenshareResolve: RCTPromiseResolveBlock? = nil
25
+ private var stopScreenshareResolve: RCTPromiseResolveBlock? = nil
26
+ private var isScreenShared: Bool? = false
27
+ private var previewInProgress = false
20
28
 
21
29
  let ON_PREVIEW = "ON_PREVIEW"
22
30
  let ON_JOIN = "ON_JOIN"
@@ -37,14 +45,17 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
37
45
  let ON_REMOTE_VIDEO_STATS = "ON_REMOTE_VIDEO_STATS"
38
46
 
39
47
  // MARK: - Setup
40
-
41
48
  init(data: NSDictionary?, delegate manager: HMSManager?, uid id: String) {
42
- let videoSettings = HMSHelper.getLocalVideoSettings(data?.value(forKey: "video") as? NSDictionary)
43
- let audioSettings = HMSHelper.getLocalAudioSettings(data?.value(forKey: "audio") as? NSDictionary)
49
+ let trackSettings = data?.value(forKey: "trackSettings") as? NSDictionary
50
+ let videoSettings = HMSHelper.getLocalVideoSettings(trackSettings?.value(forKey: "video") as? NSDictionary)
51
+ let audioSettings = HMSHelper.getLocalAudioSettings(trackSettings?.value(forKey: "audio") as? NSDictionary)
52
+ preferredExtension = data?.value(forKey: "preferredExtension") as? String
53
+
44
54
  DispatchQueue.main.async { [weak self] in
45
55
  let hmsTrackSettings = HMSTrackSettings(videoSettings: videoSettings, audioSettings: audioSettings)
46
56
  self?.hms = HMSSDK.build { sdk in
47
57
  sdk.trackSettings = hmsTrackSettings
58
+ sdk.appGroup = data?.value(forKey: "appGroup") as? String
48
59
  }
49
60
  }
50
61
  self.delegate = manager
@@ -52,13 +63,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
52
63
  }
53
64
 
54
65
  // MARK: - HMS SDK Actions
55
-
56
- private var previewInProgress = false
57
-
58
- func emitRequiredKeysError(_ error: String) {
59
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": ["code": HMSErrorCode.genericErrorUnknown, "description": error, "localizedDescription": error, "debugDescription": error, "message": error, "name": "REQUIRED_KEYS_NOT_FOUND", "action": "SEND_ALL_REQUIRED_KEYS", "id": 102], "id": id])
60
- }
61
-
62
66
  func preview(_ credentials: NSDictionary) {
63
67
 
64
68
  guard !previewInProgress else {
@@ -105,7 +109,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
105
109
  if let extractedRole = roleObj {
106
110
  hms?.preview(role: extractedRole, completion: { tracks, error in
107
111
  if (error != nil) {
108
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
112
+ delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
109
113
  reject?(error?.message, error?.localizedDescription, nil)
110
114
  return
111
115
  }
@@ -139,7 +143,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
139
143
  emitRequiredKeysError(errorMessage)
140
144
  return
141
145
  }
142
-
146
+ reconnectingStage = false
143
147
  let metadata = credentials.value(forKey: "metadata") as? String
144
148
  let captureNetworkQualityInPreview = credentials.value(forKey: "captureNetworkQualityInPreview") as? Bool ?? false
145
149
 
@@ -192,18 +196,27 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
192
196
  }
193
197
 
194
198
  func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
195
- DispatchQueue.main.async { [weak self] in
196
- guard let strongSelf = self else { return }
197
- self?.config = nil
198
- self?.recentRoleChangeRequest = nil
199
- self?.hms?.leave({ success, error in
200
- if success {
201
- resolve?("")
202
- } else {
203
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
204
- reject?(nil, "error in leave", nil)
205
- }
206
- })
199
+ if(reconnectingStage) {
200
+ reject?("Still in reconnecting stage", "Still in reconnecting stage", nil)
201
+ } else {
202
+ DispatchQueue.main.async { [weak self] in
203
+ guard let strongSelf = self else { return }
204
+ self?.config = nil
205
+ self?.recentRoleChangeRequest = nil
206
+ self?.systemBroadcastPicker = nil
207
+ self?.preferredExtension = nil
208
+ self?.stopScreenshareResolve = nil
209
+ self?.startScreenshareResolve = nil
210
+ self?.isScreenShared = false
211
+ self?.hms?.leave({ success, error in
212
+ if success {
213
+ resolve?(["success": success])
214
+ } else {
215
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
216
+ reject?("error in leave", "error in leave", nil)
217
+ }
218
+ })
219
+ }
207
220
  }
208
221
  }
209
222
 
@@ -224,7 +237,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
224
237
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
225
238
  return
226
239
  } else {
227
- self?.delegate?.emitEvent("ON_ERROR", ["event": "ON_ERROR", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
240
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
228
241
  reject?(error?.message, error?.localizedDescription, nil)
229
242
  return
230
243
  }
@@ -250,7 +263,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
250
263
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
251
264
  return
252
265
  } else {
253
- self?.delegate?.emitEvent("ON_ERROR", ["event": "ON_ERROR", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
266
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
254
267
  reject?(error?.message, error?.localizedDescription, nil)
255
268
  return
256
269
  }
@@ -276,7 +289,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
276
289
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
277
290
  return
278
291
  } else {
279
- self?.delegate?.emitEvent("ON_ERROR", ["event": "ON_ERROR", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
292
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
280
293
  reject?(error?.message, error?.localizedDescription, nil)
281
294
  return
282
295
  }
@@ -298,9 +311,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
298
311
 
299
312
  self?.hms?.accept(changeRole: request, completion: { success, error in
300
313
  if success {
301
- resolve?(["success": true])
314
+ resolve?(["success": success])
302
315
  } else {
303
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
316
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
304
317
  reject?(error?.message, error?.localizedDescription, nil)
305
318
  }
306
319
  })
@@ -329,9 +342,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
329
342
 
330
343
  self?.hms?.changeRole(for: peer, to: role, force: force, completion: { success, error in
331
344
  if success {
332
- resolve?(["success": true])
345
+ resolve?(["success": success])
333
346
  } else {
334
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
347
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
335
348
  reject?(error?.message, error?.localizedDescription, nil)
336
349
  }
337
350
  })
@@ -354,15 +367,15 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
354
367
  guard let remotePeers = self?.hms?.remotePeers,
355
368
  let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
356
369
  else {
357
- reject?(nil, "TRACK_NOT_FOUND", nil)
370
+ reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
358
371
  return
359
372
  }
360
373
 
361
374
  self?.hms?.changeTrackState(for: track, mute: mute, completion: { success, error in
362
375
  if success {
363
- resolve?(["success": true])
376
+ resolve?(["success": success])
364
377
  } else {
365
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
378
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
366
379
  reject?(error?.message, error?.localizedDescription, nil)
367
380
  }
368
381
  })
@@ -395,9 +408,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
395
408
  let encodedTargetedRoles = HMSHelper.getRolesFromRoleNames(targetedRoles, roles: self?.hms?.roles)
396
409
  self?.hms?.changeTrackState(mute: mute, for: decodeType, source: source, roles: encodedTargetedRoles, completion: { success, error in
397
410
  if success {
398
- resolve?(["success": true])
411
+ resolve?(["success": success])
399
412
  } else {
400
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
413
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
401
414
  reject?(error?.message, error?.localizedDescription, nil)
402
415
  }
403
416
  })
@@ -422,8 +435,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
422
435
  let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
423
436
  else {
424
437
  let error = HMSError(id: "120", code: HMSErrorCode.genericErrorUnknown, message: "TRACK_NOT_FOUND")
425
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
426
- reject?(nil, "TRACK_NOT_FOUND", nil)
438
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
439
+ reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
427
440
  return
428
441
  }
429
442
  let mute = track.isMute()
@@ -452,15 +465,15 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
452
465
  guard let remotePeers = self?.hms?.remotePeers,
453
466
  let peer = HMSHelper.getRemotePeerFromPeerId(peerId, remotePeers: remotePeers)
454
467
  else {
455
- reject?(nil, "PEER_NOT_FOUND", nil)
468
+ reject?("PEER_NOT_FOUND", "PEER_NOT_FOUND", nil)
456
469
  return
457
470
  }
458
471
 
459
472
  self?.hms?.removePeer(peer, reason: reason ?? "Removed from room", completion: { success, error in
460
473
  if success {
461
- resolve?(["success": true])
474
+ resolve?(["success": success])
462
475
  } else {
463
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
476
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
464
477
  reject?(error?.message, error?.localizedDescription, nil)
465
478
  }
466
479
  })
@@ -481,9 +494,9 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
481
494
  DispatchQueue.main.async { [weak self] in
482
495
  self?.hms?.endRoom(lock: lock, reason: reason, completion: { success, error in
483
496
  if success {
484
- resolve?(["success": true])
497
+ resolve?(["success": success])
485
498
  } else {
486
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
499
+ self?.delegate?.emitEvent("ON_ERROR", ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
487
500
  reject?(error?.message, error?.localizedDescription, nil)
488
501
  }
489
502
  })
@@ -501,7 +514,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
501
514
  DispatchQueue.main.async { [weak self] in
502
515
  guard let remotePeers = self?.hms?.remotePeers
503
516
  else {
504
- reject?(nil, "REMOTE_PEERS_NOT_FOUND", nil)
517
+ reject?("REMOTE_PEERS_NOT_FOUND", "REMOTE_PEERS_NOT_FOUND", nil)
505
518
  return
506
519
  }
507
520
  let remoteAudioTrack = HMSHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
@@ -515,7 +528,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
515
528
  resolve?(isPlaybackAllowed)
516
529
  return
517
530
  } else {
518
- reject?(nil, "TRACK_NOT_FOUND", nil)
531
+ reject?("TRACK_NOT_FOUND", "TRACK_NOT_FOUND", nil)
519
532
  return
520
533
  }
521
534
  }
@@ -568,7 +581,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
568
581
  resolve?(["success": success])
569
582
  return
570
583
  } else {
571
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
584
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
572
585
  reject?(error?.message, error?.localizedDescription, nil)
573
586
  return
574
587
  }
@@ -594,7 +607,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
594
607
  remoteAudioTrack?.setVolume(volume)
595
608
  } else {
596
609
  let error = HMSError(id: "125", code: HMSErrorCode.genericErrorUnknown, message: "TRACK_NOT_FOUND")
597
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HMSDecoder.getError(error), "id": strongSelf.id])
610
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
598
611
  }
599
612
  }
600
613
  }
@@ -616,7 +629,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
616
629
  meetingUrl = meetLink
617
630
  } else {
618
631
  let error = HMSError(id: "127", code: HMSErrorCode.genericErrorUnknown, message: "INVALID_MEETING_URL_PASSED")
619
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
632
+ delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
620
633
  reject?("INVALID_MEETING_URL_PASSED", "INVALID_MEETING_URL_PASSED", nil)
621
634
  }
622
635
 
@@ -634,7 +647,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
634
647
  resolve?(["success": success])
635
648
  return
636
649
  } else {
637
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
650
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
638
651
  reject?(error?.message, error?.localizedDescription, nil)
639
652
  return
640
653
  }
@@ -653,7 +666,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
653
666
  resolve?(["success": success])
654
667
  return
655
668
  } else {
656
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
669
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
657
670
  reject?(error?.message, error?.localizedDescription, nil)
658
671
  return
659
672
  }
@@ -661,17 +674,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
661
674
  }
662
675
 
663
676
  func startHLSStreaming(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
664
- guard let meetingURLVariants = data.value(forKey: "meetingURLVariants") as? [[String: Any]]?
665
- else {
666
- let errorMessage = "startHLSStreaming: " + HMSHelper.getUnavailableRequiredKey(data, ["meetingURLVariants"])
667
- emitRequiredKeysError(errorMessage)
668
- reject?(errorMessage, errorMessage, nil)
669
- return
677
+ let recordConfig = HMSHelper.getHlsRecordingConfig(data.value(forKey: "hlsRecordingConfig") as? NSDictionary)
678
+ let hlsMeetingUrlVariant = HMSHelper.getHMSHLSMeetingURLVariants(data.value(forKey: "meetingURLVariants") as? [[String : Any]])
679
+ var config: HMSHLSConfig? = nil
680
+ if(!hlsMeetingUrlVariant.isEmpty || recordConfig !== nil){
681
+ config = HMSHLSConfig(variants: hlsMeetingUrlVariant, recording: recordConfig)
670
682
  }
671
-
672
- let recordConfig = HMSHelper.getHlsRecordingConfig(data)
673
- let hlsMeetingUrlVariant = HMSHelper.getHMSHLSMeetingURLVariants(meetingURLVariants)
674
- let config = HMSHLSConfig(variants: hlsMeetingUrlVariant, recording: recordConfig)
675
683
 
676
684
  hms?.startHLSStreaming(config: config, completion: { success, error in
677
685
  if success {
@@ -684,7 +692,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
684
692
  resolve?(["success": success])
685
693
  return
686
694
  } else {
687
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
695
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
688
696
  reject?(error?.message, error?.localizedDescription, nil)
689
697
  return
690
698
  }
@@ -703,7 +711,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
703
711
  resolve?(["success": success])
704
712
  return
705
713
  } else {
706
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
714
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
707
715
  reject?(error?.message, error?.localizedDescription, nil)
708
716
  return
709
717
  }
@@ -723,13 +731,13 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
723
731
  if success {
724
732
  resolve?(["success": success])
725
733
  } else {
726
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HMSDecoder.getError(error), "id": self.id])
734
+ self.delegate?.emitEvent(self.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
727
735
  reject?(error?.message, error?.localizedDescription, nil)
728
736
  }
729
737
  }
730
738
  }
731
739
 
732
- func remoteMuteAllAudio() {
740
+ func remoteMuteAllAudio(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
733
741
  let allAudioTracks = HMSUtilities.getAllAudioTracks(in: (self.hms?.room)!!)
734
742
  var customError: HMSError? = nil
735
743
  for audioTrack in allAudioTracks {
@@ -740,8 +748,10 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
740
748
  }
741
749
  })
742
750
  }
743
- if (customError != nil) {
744
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(customError), "id": id])
751
+ if (customError === nil) {
752
+ resolve?(["success": true])
753
+ } else {
754
+ reject?(customError?.message, customError?.localizedDescription, nil)
745
755
  }
746
756
  }
747
757
 
@@ -774,34 +784,57 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
774
784
  rtcStatsAttached = false
775
785
  }
776
786
 
777
- // TODO: to be implemented after volume is exposed for iOS
778
- // func getVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
779
- // guard let trackId = data.value(forKey: "trackId") as? String
780
- // else {
781
- // let errorMessage = "getVolume: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
782
- // emitRequiredKeysError(errorMessage)
783
- // reject?(errorMessage, errorMessage, nil)
784
- // return
785
- // }
786
- //
787
- // if (localPeer?.localAudioTrack()?.trackId == trackId) {
788
- //
789
- // }
790
- // }
787
+ func startScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
788
+ guard let preferredExtension = preferredExtension else {
789
+ let error = HMSError(id: "103", code: .genericErrorUnknown, message: "Could not start Screen share, preferredExtension not passed in Build Method", params: ["function": #function])
790
+ on(error: error)
791
+ reject?(error.message, error.localizedDescription, nil)
792
+ return
793
+ }
794
+ DispatchQueue.main.async { [weak self] in
795
+ if self?.systemBroadcastPicker == nil {
796
+ self?.systemBroadcastPicker = RPSystemBroadcastPickerView()
797
+ self?.systemBroadcastPicker!.preferredExtension = preferredExtension
798
+ self?.systemBroadcastPicker!.showsMicrophoneButton = false
799
+ }
800
+
801
+ for view in self!.systemBroadcastPicker!.subviews {
802
+ if let button = view as? UIButton {
803
+ button.sendActions(for: .allEvents)
804
+ }
805
+ }
806
+ self?.startScreenshareResolve = resolve
807
+ }
808
+ }
809
+
810
+ func stopScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
811
+ guard let preferredExtension = preferredExtension else {
812
+ let error = HMSError(id: "103", code: .genericErrorUnknown, message: "Could not start Screen share, preferredExtension not passed in Build Method", params: ["function": #function])
813
+ on(error: error)
814
+ reject?(error.message, error.localizedDescription, nil)
815
+ return
816
+ }
817
+ DispatchQueue.main.async { [weak self] in
818
+ if self?.systemBroadcastPicker == nil {
819
+ self?.systemBroadcastPicker = RPSystemBroadcastPickerView()
820
+ self?.systemBroadcastPicker!.preferredExtension = preferredExtension
821
+ self?.systemBroadcastPicker!.showsMicrophoneButton = false
822
+ }
823
+
824
+ for view in self!.systemBroadcastPicker!.subviews {
825
+ if let button = view as? UIButton {
826
+ button.sendActions(for: .allEvents)
827
+ }
828
+ }
829
+ self?.stopScreenshareResolve = resolve
830
+ }
831
+ }
832
+
833
+ func isScreenShared(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
834
+ resolve?(isScreenShared)
835
+ }
791
836
 
792
- // func setLocalVideoSettings(_ data: NSDictionary) {
793
- // let localVideoTrack = self.hms?.localPeer?.localVideoTrack()
794
- //
795
- // guard let settings = HMSHelper.getLocalVideoSettings(data)
796
- // else {
797
- // let errorMessage = "setLocalVideoSettings: " + HMSHelper.getUnavailableRequiredKey(data)
798
- // emitRequiredKeysError(errorMessage)
799
- // return
800
- // }
801
- // localVideoTrack?.settings = settings
802
- // }
803
-
804
- // MARK: - HMS SDK Delegate Callbacks
837
+ // MARK: - HMS SDK Delegate Callbacks
805
838
  func on(join room: HMSRoom) {
806
839
  let roomData = HMSDecoder.getHmsRoom(room)
807
840
  let localPeerData = HMSDecoder.getHmsLocalPeer(hms?.localPeer)
@@ -854,12 +887,24 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
854
887
  let hmsPeer = HMSDecoder.getHmsPeer(peer)
855
888
  let hmsTrack = HMSDecoder.getHmsTrack(track)
856
889
 
890
+ if peer.isLocal && track.source.uppercased() == "SCREEN" && track.kind == HMSTrackKind.video {
891
+ if update == .trackAdded {
892
+ isScreenShared = true
893
+ startScreenshareResolve?(["success": true])
894
+ startScreenshareResolve = nil
895
+ } else if update == .trackRemoved {
896
+ isScreenShared = false
897
+ stopScreenshareResolve?(["success": true])
898
+ stopScreenshareResolve = nil
899
+ }
900
+ }
901
+
857
902
  self.delegate?.emitEvent(ON_TRACK_UPDATE, ["event": ON_TRACK_UPDATE, "id": self.id, "room": roomData, "type": type, "localPeer": localPeerData, "remotePeers": remotePeerData, "peer": hmsPeer, "track": hmsTrack])
858
903
  }
859
904
 
860
905
  func on(error: HMSError) {
861
906
  if previewInProgress { previewInProgress = false }
862
- self.delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HMSDecoder.getError(error), "id": id])
907
+ self.delegate?.emitEvent(ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
863
908
  }
864
909
 
865
910
  func on(message: HMSMessage) {
@@ -875,10 +920,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
875
920
  }
876
921
 
877
922
  func onReconnecting() {
878
- self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "id": self.id ])
923
+ reconnectingStage = true
924
+ self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "error": ["code": HMSErrorCode.websocketConnectionLost, "description": "Software caused connection abort", "localizedDescription": "Network connection lost ", "debugDescription": "Network connection lost ", "message": "Network connection lost ", "name": "WebSocketConnectionLost", "action": "NONE", "id": 101], "id": self.id ])
879
925
  }
880
926
 
881
927
  func onReconnected() {
928
+ reconnectingStage = false
882
929
  self.delegate?.emitEvent(RECONNECTED, ["event": RECONNECTED, "id": self.id ])
883
930
  }
884
931
 
@@ -1020,10 +1067,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1020
1067
  return ""
1021
1068
  }
1022
1069
  }
1023
- }
1024
1070
 
1025
- // extension HMSRNSDK: HMSLogger {
1026
- // func log(_ message: String, _ level: HMSLogLevel) {
1027
- //
1028
- // }
1029
- // }
1071
+ func emitRequiredKeysError(_ error: String) {
1072
+ delegate?.emitEvent(ON_ERROR, ["error": ["code": HMSErrorCode.genericErrorUnknown.rawValue, "description": error, "message": error, "name": "REQUIRED_KEYS_NOT_FOUND", "action": "SEND_ALL_REQUIRED_KEYS", "id": 102, "isTerminal": false], "id": id])
1073
+ }
1074
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HMSAudioDevice = void 0;
7
+ let HMSAudioDevice;
8
+ exports.HMSAudioDevice = HMSAudioDevice;
9
+
10
+ (function (HMSAudioDevice) {
11
+ HMSAudioDevice["SPEAKER_PHONE"] = "SPEAKER_PHONE";
12
+ HMSAudioDevice["WIRED_HEADSET"] = "WIRED_HEADSET";
13
+ HMSAudioDevice["EARPIECE"] = "EARPIECE";
14
+ HMSAudioDevice["BLUETOOTH"] = "BLUETOOTH";
15
+ HMSAudioDevice["AUTOMATIC"] = "AUTOMATIC";
16
+ })(HMSAudioDevice || (exports.HMSAudioDevice = HMSAudioDevice = {}));
17
+ //# sourceMappingURL=HMSAudioDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["HMSAudioDevice"],"sources":["HMSAudioDevice.ts"],"sourcesContent":["export enum HMSAudioDevice {\n SPEAKER_PHONE = 'SPEAKER_PHONE',\n WIRED_HEADSET = 'WIRED_HEADSET',\n EARPIECE = 'EARPIECE',\n BLUETOOTH = 'BLUETOOTH',\n AUTOMATIC = 'AUTOMATIC',\n}\n"],"mappings":";;;;;;IAAYA,c;;;WAAAA,c;EAAAA,c;EAAAA,c;EAAAA,c;EAAAA,c;EAAAA,c;GAAAA,c,8BAAAA,c"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HMSAudioMixingMode = void 0;
7
+ let HMSAudioMixingMode;
8
+ exports.HMSAudioMixingMode = HMSAudioMixingMode;
9
+
10
+ (function (HMSAudioMixingMode) {
11
+ HMSAudioMixingMode["TALK_ONLY"] = "TALK_ONLY";
12
+ HMSAudioMixingMode["TALK_AND_MUSIC"] = "TALK_AND_MUSIC";
13
+ HMSAudioMixingMode["MUSIC_ONLY"] = "MUSIC_ONLY";
14
+ })(HMSAudioMixingMode || (exports.HMSAudioMixingMode = HMSAudioMixingMode = {}));
15
+ //# sourceMappingURL=HMSAudioMixingMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["HMSAudioMixingMode"],"sources":["HMSAudioMixingMode.ts"],"sourcesContent":["export enum HMSAudioMixingMode {\n TALK_ONLY = 'TALK_ONLY',\n TALK_AND_MUSIC = 'TALK_AND_MUSIC',\n MUSIC_ONLY = 'MUSIC_ONLY',\n}\n"],"mappings":";;;;;;IAAYA,kB;;;WAAAA,kB;EAAAA,kB;EAAAA,kB;EAAAA,kB;GAAAA,kB,kCAAAA,kB"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HMSAudioMode = void 0;
7
+ let HMSAudioMode;
8
+ exports.HMSAudioMode = HMSAudioMode;
9
+
10
+ (function (HMSAudioMode) {
11
+ HMSAudioMode[HMSAudioMode["MODE_NORMAL"] = 0] = "MODE_NORMAL";
12
+ HMSAudioMode[HMSAudioMode["MODE_RINGTONE"] = 1] = "MODE_RINGTONE";
13
+ HMSAudioMode[HMSAudioMode["MODE_IN_CALL"] = 2] = "MODE_IN_CALL";
14
+ HMSAudioMode[HMSAudioMode["MODE_IN_COMMUNICATION"] = 3] = "MODE_IN_COMMUNICATION";
15
+ HMSAudioMode[HMSAudioMode["MODE_CALL_SCREENING"] = 4] = "MODE_CALL_SCREENING";
16
+ })(HMSAudioMode || (exports.HMSAudioMode = HMSAudioMode = {}));
17
+ //# sourceMappingURL=HMSAudioMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["HMSAudioMode"],"sources":["HMSAudioMode.ts"],"sourcesContent":["export enum HMSAudioMode {\n MODE_NORMAL = 0,\n MODE_RINGTONE = 1,\n MODE_IN_CALL = 2,\n MODE_IN_COMMUNICATION = 3,\n MODE_CALL_SCREENING = 4,\n}\n"],"mappings":";;;;;;IAAYA,Y;;;WAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;GAAAA,Y,4BAAAA,Y"}
@@ -63,6 +63,8 @@ var _HMSMessage = require("./HMSMessage");
63
63
 
64
64
  var _HMSMessageRecipient = require("./HMSMessageRecipient");
65
65
 
66
+ var _HMSException = require("./HMSException");
67
+
66
68
  class HMSEncoder {
67
69
  static encodeHmsRoom(room, id) {
68
70
  const encodedObj = {
@@ -482,6 +484,19 @@ class HMSEncoder {
482
484
  });
483
485
  }
484
486
 
487
+ static encodeHMSException(data) {
488
+ var _data$error, _data$error2, _data$error3, _data$error4, _data$error5, _data$error6;
489
+
490
+ return new _HMSException.HMSException({
491
+ code: data === null || data === void 0 ? void 0 : (_data$error = data.error) === null || _data$error === void 0 ? void 0 : _data$error.code,
492
+ description: data === null || data === void 0 ? void 0 : (_data$error2 = data.error) === null || _data$error2 === void 0 ? void 0 : _data$error2.description,
493
+ message: data === null || data === void 0 ? void 0 : (_data$error3 = data.error) === null || _data$error3 === void 0 ? void 0 : _data$error3.message,
494
+ name: data === null || data === void 0 ? void 0 : (_data$error4 = data.error) === null || _data$error4 === void 0 ? void 0 : _data$error4.name,
495
+ action: data === null || data === void 0 ? void 0 : (_data$error5 = data.error) === null || _data$error5 === void 0 ? void 0 : _data$error5.action,
496
+ isTerminal: data === null || data === void 0 ? void 0 : (_data$error6 = data.error) === null || _data$error6 === void 0 ? void 0 : _data$error6.isTerminal
497
+ });
498
+ }
499
+
485
500
  }
486
501
 
487
502
  exports.HMSEncoder = HMSEncoder;