@100mslive/react-native-hms 1.7.2 → 1.8.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 (47) hide show
  1. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +1 -0
  2. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +28 -10
  3. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +113 -68
  4. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +17 -4
  5. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +34 -18
  6. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +363 -159
  7. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +367 -151
  8. package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +26 -7
  9. package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +32 -12
  10. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +1 -0
  11. package/android/src/main/java/com/reactnativehmssdk/PipActionReceiver.kt +10 -6
  12. package/android/src/main/res/layout/player_view.xml +3 -2
  13. package/ios/HMSDecoder.swift +2 -2
  14. package/ios/HMSHLSPlayerManager.swift +18 -2
  15. package/ios/HMSManager.m +227 -70
  16. package/ios/HMSManager.swift +2 -2
  17. package/ios/HMSRNSDK.swift +67 -126
  18. package/ios/HMSView.swift +17 -3
  19. package/lib/commonjs/classes/HMSEncoder.js +6 -0
  20. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  21. package/lib/commonjs/classes/HMSSDK.js +40 -26
  22. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  23. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +10 -5
  24. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/commonjs/types.js +1 -0
  27. package/lib/commonjs/types.js.map +1 -1
  28. package/lib/module/classes/HMSEncoder.js +6 -0
  29. package/lib/module/classes/HMSEncoder.js.map +1 -1
  30. package/lib/module/classes/HMSSDK.js +40 -26
  31. package/lib/module/classes/HMSSDK.js.map +1 -1
  32. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +11 -6
  33. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/module/types.js +1 -0
  36. package/lib/module/types.js.map +1 -1
  37. package/lib/typescript/classes/HMSEncoder.d.ts +1 -0
  38. package/lib/typescript/classes/HMSSDK.d.ts +23 -12
  39. package/lib/typescript/index.d.ts +1 -1
  40. package/lib/typescript/types.d.ts +3 -1
  41. package/package.json +1 -1
  42. package/sdk-versions.json +2 -2
  43. package/src/classes/HMSEncoder.ts +9 -0
  44. package/src/classes/HMSSDK.tsx +48 -24
  45. package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +15 -13
  46. package/src/index.ts +4 -1
  47. package/src/types.ts +2 -0
@@ -12,9 +12,12 @@ import ReplayKit
12
12
  class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
13
13
 
14
14
  var hms: HMSSDK?
15
- var recentRoleChangeRequest: HMSRoleChangeRequest?
15
+
16
16
  var delegate: HMSManager?
17
17
  var id: String = "12345"
18
+
19
+ private var recentRoleChangeRequest: HMSRoleChangeRequest?
20
+ internal var previewForRoleTracks: [HMSTrack]?
18
21
  private var reconnectingStage: Bool = false
19
22
  private var preferredExtension: String?
20
23
  private var systemBroadcastPicker: RPSystemBroadcastPickerView?
@@ -129,25 +132,29 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
129
132
  let roleObj = HMSHelper.getRoleFromRoleName(role, roles: hms?.roles)
130
133
 
131
134
  if let extractedRole = roleObj {
132
- hms?.preview(role: extractedRole, completion: { tracks, error in
133
- if error != nil {
134
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
135
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": id])
135
+ DispatchQueue.main.async { [weak self] in
136
+ self?.hms?.preview(role: extractedRole) { tracks, error in
137
+ if error != nil {
138
+ reject?(error?.localizedDescription, error?.localizedDescription, nil)
139
+ return
136
140
  }
137
- reject?(error?.localizedDescription, error?.localizedDescription, nil)
138
- return
139
- }
140
141
 
141
- let decodedTracks = HMSDecoder.getAllTracks(tracks ?? [])
142
+ self?.previewForRoleTracks = tracks
142
143
 
143
- resolve?(["success": true, "tracks": decodedTracks] as [String: Any])
144
- return
145
- })
144
+ let decodedTracks = HMSDecoder.getAllTracks(tracks ?? [])
145
+
146
+ resolve?(["success": true, "tracks": decodedTracks] as [String: Any])
147
+ }
148
+ }
146
149
  }
147
150
  }
148
151
 
149
- func cancelPreview() {
150
- hms?.cancelPreview()
152
+ func cancelPreview(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
153
+ DispatchQueue.main.async { [weak self] in
154
+ self?.hms?.cancelPreview()
155
+ self?.previewForRoleTracks = nil
156
+ resolve?(["success": true])
157
+ }
151
158
  }
152
159
 
153
160
  func join(_ credentials: NSDictionary) {
@@ -230,7 +237,15 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
230
237
  }
231
238
 
232
239
  DispatchQueue.main.async { [weak self] in
233
- self?.hms?.localPeer?.localAudioTrack()?.setMute(isMute)
240
+ if let audioTrack = self?.hms?.localPeer?.localAudioTrack() {
241
+ audioTrack.setMute(isMute)
242
+ } else if let tracks = self?.previewForRoleTracks {
243
+ if let audioTrack = tracks.first(where: { $0.kind == HMSTrackKind.audio }) as? HMSLocalAudioTrack {
244
+ audioTrack.setMute(isMute)
245
+ }
246
+ } else {
247
+ print(#function, "No local audio track available for setting mute state.")
248
+ }
234
249
  }
235
250
  }
236
251
 
@@ -243,42 +258,54 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
243
258
  }
244
259
 
245
260
  DispatchQueue.main.async { [weak self] in
246
- self?.hms?.localPeer?.localVideoTrack()?.setMute(isMute)
261
+ if let videoTrack = self?.hms?.localPeer?.localVideoTrack() {
262
+ videoTrack.setMute(isMute)
263
+ } else if let tracks = self?.previewForRoleTracks {
264
+ if let videoTrack = tracks.first(where: { $0.kind == HMSTrackKind.video }) as? HMSLocalVideoTrack {
265
+ videoTrack.setMute(isMute)
266
+ }
267
+ } else {
268
+ print(#function, "No local video track available for setting mute state.")
269
+ }
247
270
  }
248
271
  }
249
272
 
250
273
  func switchCamera() {
251
274
  DispatchQueue.main.async { [weak self] in
252
- self?.hms?.localPeer?.localVideoTrack()?.switchCamera()
275
+ if let localVideoTrack = self?.hms?.localPeer?.localVideoTrack() {
276
+ localVideoTrack.switchCamera()
277
+ } else if let tracks = self?.previewForRoleTracks {
278
+ if let videoTrack = tracks.first(where: { $0.kind == HMSTrackKind.video }) as? HMSLocalVideoTrack {
279
+ videoTrack.switchCamera()
280
+ }
281
+ } else {
282
+ print(#function, "No local video track available for switching camera.")
283
+ }
253
284
  }
254
285
  }
255
286
 
256
287
  func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
257
- if reconnectingStage {
258
- reject?("Still in reconnecting stage", "Still in reconnecting stage", nil)
259
- } else {
260
- DispatchQueue.main.async { [weak self] in
288
+ DispatchQueue.main.async { [weak self] in
289
+ guard let strongSelf = self else {
290
+ print(#function, "Could not find reference to self while executing Room leave")
291
+ return
292
+ }
293
+
294
+ strongSelf.hms?.leave { [weak self] success, error in
295
+
261
296
  guard let strongSelf = self else {
262
- print(#function, "Could not find reference to self while executing Room leave")
297
+ print(#function, "Could not find reference to self when callback is received while executing Room leave")
263
298
  return
264
299
  }
265
300
 
266
- strongSelf.hms?.leave { [weak self] success, error in
267
-
268
- guard let strongSelf = self else {
269
- print(#function, "Could not find reference to self when callback is received while executing Room leave")
270
- return
271
- }
272
-
273
- if success {
274
- resolve?(["success": success])
275
- strongSelf.cleanup() // resetting states and doing data cleanup
276
- } else {
277
- if strongSelf.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
278
- strongSelf.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
279
- }
280
- reject?("error in leave", "error in leave", nil)
301
+ if success {
302
+ resolve?(["success": success])
303
+ strongSelf.cleanup() // resetting states and doing data cleanup
304
+ } else {
305
+ if strongSelf.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
306
+ strongSelf.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
281
307
  }
308
+ reject?("error in leave", "error in leave", nil)
282
309
  }
283
310
  }
284
311
  }
@@ -301,9 +328,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
301
328
  resolve?(["messageId": message?.messageID ?? "", "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]] as [String: Any])
302
329
  return
303
330
  } else {
304
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
305
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
306
- }
307
331
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
308
332
  return
309
333
  }
@@ -329,9 +353,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
329
353
  resolve?(["messageId": message?.messageID ?? "", "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]] as [String: Any])
330
354
  return
331
355
  } else {
332
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
333
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
334
- }
335
356
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
336
357
  return
337
358
  }
@@ -357,9 +378,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
357
378
  resolve?(["messageId": message?.messageID ?? "", "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]] as [String: Any])
358
379
  return
359
380
  } else {
360
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
361
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
362
- }
363
381
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
364
382
  return
365
383
  }
@@ -383,13 +401,11 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
383
401
  if success {
384
402
  resolve?(["success": success])
385
403
  } else {
386
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
387
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
388
- }
389
404
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
390
405
  }
391
406
  })
392
407
  self?.recentRoleChangeRequest = nil
408
+ self?.previewForRoleTracks = nil
393
409
  }
394
410
  }
395
411
 
@@ -423,9 +439,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
423
439
  if success {
424
440
  resolve?(["success": success])
425
441
  } else {
426
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
427
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
428
- }
429
442
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
430
443
  }
431
444
  })
@@ -461,9 +474,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
461
474
  if success {
462
475
  resolve?(["success": success])
463
476
  } else {
464
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
465
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
466
- }
467
477
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
468
478
  }
469
479
  }
@@ -494,9 +504,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
494
504
  if success {
495
505
  resolve?(["success": success])
496
506
  } else {
497
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
498
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
499
- }
500
507
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
501
508
  }
502
509
  })
@@ -531,9 +538,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
531
538
  if success {
532
539
  resolve?(["success": success])
533
540
  } else {
534
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
535
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
536
- }
537
541
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
538
542
  }
539
543
  })
@@ -557,9 +561,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
557
561
  guard let remotePeers = self?.hms?.remotePeers,
558
562
  let track = HMSHelper.getTrackFromTrackId(trackId, remotePeers)
559
563
  else {
560
- if strongSelf.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
561
- strongSelf.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "Track not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": strongSelf.id])
562
- }
563
564
  reject?("Track not found", "Track not found", nil)
564
565
  return
565
566
  }
@@ -597,9 +598,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
597
598
  if success {
598
599
  resolve?(["success": success])
599
600
  } else {
600
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
601
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
602
- }
603
601
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
604
602
  }
605
603
  })
@@ -623,9 +621,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
623
621
  resolve?(["success": success])
624
622
  self?.cleanup() // resetting states and doing data cleanup
625
623
  } else {
626
- if self?.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
627
- self?.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self?.id ?? "12345"])
628
- }
629
624
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
630
625
  }
631
626
  })
@@ -704,9 +699,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
704
699
  resolve?(["success": success])
705
700
  return
706
701
  } else {
707
- if self.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
708
- self.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
709
- }
710
702
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
711
703
  return
712
704
  }
@@ -730,8 +722,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
730
722
 
731
723
  if remoteAudioTrack != nil {
732
724
  remoteAudioTrack?.setVolume(volume)
733
- } else if strongSelf.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
734
- strongSelf.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "Track not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": strongSelf.id])
735
725
  }
736
726
  }
737
727
  }
@@ -754,9 +744,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
754
744
  if let meetLink = URL(string: meetingString) {
755
745
  meetingUrl = meetLink
756
746
  } else {
757
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
758
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "Invalid meeting url passed", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
759
- }
760
747
  reject?("Invalid meeting url passed", "Invalid meeting url passed", nil)
761
748
  }
762
749
  }
@@ -769,9 +756,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
769
756
  resolve?(["success": success])
770
757
  return
771
758
  } else {
772
- if self.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
773
- self.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
774
- }
775
759
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
776
760
  return
777
761
  }
@@ -784,9 +768,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
784
768
  resolve?(["success": success])
785
769
  return
786
770
  } else {
787
- if self.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
788
- self.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
789
- }
790
771
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
791
772
  return
792
773
  }
@@ -806,9 +787,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
806
787
  resolve?(["success": success])
807
788
  return
808
789
  } else {
809
- if self.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
810
- self.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
811
- }
812
790
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
813
791
  return
814
792
  }
@@ -821,9 +799,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
821
799
  resolve?(["success": success])
822
800
  return
823
801
  } else {
824
- if self.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
825
- self.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
826
- }
827
802
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
828
803
  return
829
804
  }
@@ -843,9 +818,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
843
818
  if success {
844
819
  resolve?(["success": success])
845
820
  } else {
846
- if self.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
847
- self.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": self.id])
848
- }
849
821
  reject?(error?.localizedDescription, error?.localizedDescription, nil)
850
822
  }
851
823
  }
@@ -887,9 +859,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
887
859
 
888
860
  func startScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
889
861
  guard let preferredExtension = preferredExtension else {
890
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
891
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "Could not start screen share, preferredExtension not passed in Build method", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
892
- }
893
862
  reject?("Could not start screen share, preferredExtension not passed in Build method", "Could not start screen share, preferredExtension not passed in Build method", nil)
894
863
  return
895
864
  }
@@ -911,9 +880,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
911
880
 
912
881
  func stopScreenshare(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
913
882
  guard let preferredExtension = preferredExtension else {
914
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
915
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "Could not start screen share, preferredExtension not passed in Build method", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
916
- }
917
883
  reject?("Could not start screen share, preferredExtension not passed in Build method", "Could not start screen share, preferredExtension not passed in Build method", nil)
918
884
  return
919
885
  }
@@ -956,21 +922,12 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
956
922
  try audioFilePlayerNode.play(fileUrl: url, loops: loops, interrupts: interrupts)
957
923
  resolve?(["success": true])
958
924
  } catch {
959
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
960
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
961
- }
962
925
  reject?(error.localizedDescription, error.localizedDescription, nil)
963
926
  }
964
927
  } else {
965
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
966
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "Incorrect url", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
967
- }
968
928
  reject?("Incorrect URL", "Incorrect URL", nil)
969
929
  }
970
930
  } else {
971
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
972
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
973
- }
974
931
  reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
975
932
  }
976
933
  }
@@ -1004,8 +961,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1004
961
  }
1005
962
  if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
1006
963
  audioFilePlayerNode.stop()
1007
- } else if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
1008
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
1009
964
  }
1010
965
  }
1011
966
 
@@ -1026,8 +981,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1026
981
  delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
1027
982
  }
1028
983
  }
1029
- } else if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
1030
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
1031
984
  }
1032
985
  }
1033
986
 
@@ -1042,8 +995,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1042
995
  }
1043
996
  if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
1044
997
  audioFilePlayerNode.pause()
1045
- } else if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
1046
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
1047
998
  }
1048
999
  }
1049
1000
 
@@ -1060,9 +1011,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1060
1011
  if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
1061
1012
  resolve?(audioFilePlayerNode.isPlaying)
1062
1013
  } else {
1063
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
1064
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
1065
- }
1066
1014
  reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
1067
1015
  }
1068
1016
  }
@@ -1080,9 +1028,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1080
1028
  if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
1081
1029
  resolve?(audioFilePlayerNode.currentTime)
1082
1030
  } else {
1083
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
1084
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any] as [String: Any], "id": id])
1085
- }
1086
1031
  reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
1087
1032
  }
1088
1033
  }
@@ -1100,9 +1045,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1100
1045
  if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
1101
1046
  resolve?(audioFilePlayerNode.duration)
1102
1047
  } else {
1103
- if eventsEnableStatus[HMSConstants.ON_ERROR] == true {
1104
- delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": "AudioFilePlayerNode not found", "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
1105
- }
1106
1048
  reject?("AudioFilePlayerNode not found", "AudioFilePlayerNode not found", nil)
1107
1049
  }
1108
1050
  }
@@ -1891,6 +1833,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1891
1833
  // Handle resetting states and data cleanup
1892
1834
  private func cleanup() {
1893
1835
  self.recentRoleChangeRequest = nil
1836
+ self.previewForRoleTracks = nil
1894
1837
  self.reconnectingStage = false
1895
1838
  self.preferredExtension = nil
1896
1839
  self.systemBroadcastPicker = nil
@@ -1949,9 +1892,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
1949
1892
 
1950
1893
  func getString(from update: HMSRoomUpdate) -> String {
1951
1894
  switch update {
1952
- case .roomTypeChanged:
1953
- return "ROOM_PEER_COUNT_UPDATED"
1954
- case .metaDataUpdated:
1895
+ case .roomTypeChanged, .metaDataUpdated, .peerCountUpdated:
1955
1896
  return "ROOM_PEER_COUNT_UPDATED"
1956
1897
  case .browserRecordingStateUpdated:
1957
1898
  return "BROWSER_RECORDING_STATE_UPDATED"
package/ios/HMSView.swift CHANGED
@@ -91,14 +91,28 @@ class HmssdkDisplayView: UIView {
91
91
  return
92
92
  }
93
93
 
94
- guard let videoTrack = HMSUtilities.getVideoTrack(for: trackID, in: room)
95
- else {
94
+ if let videoTrack = HMSUtilities.getVideoTrack(for: trackID, in: room) {
95
+ videoView.setVideoTrack(videoTrack)
96
+ } else if let videoTrack = getPreviewForRoleTrack(trackID) {
97
+ videoView.setVideoTrack(videoTrack)
98
+ } else {
96
99
  print(#function, "Could not find video track in room with trackID: \(trackID)")
97
100
  return
98
101
  }
102
+ }
103
+ }
99
104
 
100
- videoView.setVideoTrack(videoTrack)
105
+ private func getPreviewForRoleTrack(_ trackID: String) -> HMSVideoTrack? {
106
+
107
+ if let hmsRnSdk = hmsCollection["12345"] {
108
+ if let tracks = hmsRnSdk.previewForRoleTracks {
109
+ if let videoTrack = tracks.first(where: { $0.trackId == trackID }) as? HMSVideoTrack {
110
+ return videoTrack
111
+ }
112
+ }
101
113
  }
114
+
115
+ return nil
102
116
  }
103
117
 
104
118
  @objc func captureHmsView( _ requestId: NSNumber) {
@@ -44,6 +44,7 @@ var _HMSRemoteVideoStats = require("./HMSRemoteVideoStats");
44
44
  var _HMSLayer = require("./HMSLayer");
45
45
  var _HMSSimulcastLayerDefinition = require("./HMSSimulcastLayerDefinition");
46
46
  var _HMSQualityLimitationReasons = require("./HMSQualityLimitationReasons");
47
+ var _HMSTrackType = require("./HMSTrackType");
47
48
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
48
49
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
49
50
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
@@ -265,6 +266,11 @@ class HMSEncoder {
265
266
  return this.encodeHmsTrack(track, id);
266
267
  });
267
268
  }
269
+ static encodeHmsPreviewForRoleTracks(previewTracks, id) {
270
+ return previewTracks === null || previewTracks === void 0 ? void 0 : previewTracks.map(track => {
271
+ return track.type === _HMSTrackType.HMSTrackType.VIDEO ? this.encodeHmsLocalVideoTrack(track, id) : this.encodeHmsLocalAudioTrack(track, id);
272
+ });
273
+ }
268
274
  static encodeHmsRoles(roles) {
269
275
  const encodedRoles = [];
270
276
  roles === null || roles === void 0 || roles.map(item => {