@100mslive/react-native-hms 0.9.91 → 0.9.93

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 (69) hide show
  1. package/README.md +13 -7
  2. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +1 -1
  3. package/ios/HMSDecoder.swift +21 -24
  4. package/ios/HMSHelper.swift +42 -8
  5. package/ios/HMSManager.m +11 -0
  6. package/ios/HMSManager.swift +87 -18
  7. package/ios/HMSRNSDK.swift +308 -119
  8. package/ios/HMSView.swift +3 -4
  9. package/lib/commonjs/classes/HMSAudioFilePlayerNode.js +87 -0
  10. package/lib/commonjs/classes/HMSAudioFilePlayerNode.js.map +1 -0
  11. package/lib/commonjs/classes/HMSAudioMixerSource.js +26 -0
  12. package/lib/commonjs/classes/HMSAudioMixerSource.js.map +1 -0
  13. package/lib/commonjs/classes/HMSAudioNode.js +26 -0
  14. package/lib/commonjs/classes/HMSAudioNode.js.map +1 -0
  15. package/lib/commonjs/classes/HMSAudioTrackSettings.js +6 -0
  16. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  17. package/lib/commonjs/classes/HMSEncoder.js +3 -2
  18. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  19. package/lib/commonjs/classes/HMSException.js +7 -0
  20. package/lib/commonjs/classes/HMSException.js.map +1 -1
  21. package/lib/commonjs/classes/HMSMicNode.js +35 -0
  22. package/lib/commonjs/classes/HMSMicNode.js.map +1 -0
  23. package/lib/commonjs/classes/HMSSDK.js +22 -34
  24. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  25. package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js +18 -0
  26. package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -0
  27. package/lib/commonjs/index.js +70 -0
  28. package/lib/commonjs/index.js.map +1 -1
  29. package/lib/module/classes/HMSAudioFilePlayerNode.js +75 -0
  30. package/lib/module/classes/HMSAudioFilePlayerNode.js.map +1 -0
  31. package/lib/module/classes/HMSAudioMixerSource.js +17 -0
  32. package/lib/module/classes/HMSAudioMixerSource.js.map +1 -0
  33. package/lib/module/classes/HMSAudioNode.js +17 -0
  34. package/lib/module/classes/HMSAudioNode.js.map +1 -0
  35. package/lib/module/classes/HMSAudioTrackSettings.js +6 -0
  36. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  37. package/lib/module/classes/HMSEncoder.js +3 -2
  38. package/lib/module/classes/HMSEncoder.js.map +1 -1
  39. package/lib/module/classes/HMSException.js +7 -0
  40. package/lib/module/classes/HMSException.js.map +1 -1
  41. package/lib/module/classes/HMSMicNode.js +23 -0
  42. package/lib/module/classes/HMSMicNode.js.map +1 -0
  43. package/lib/module/classes/HMSSDK.js +21 -33
  44. package/lib/module/classes/HMSSDK.js.map +1 -1
  45. package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js +8 -0
  46. package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -0
  47. package/lib/module/index.js +5 -0
  48. package/lib/module/index.js.map +1 -1
  49. package/lib/typescript/classes/HMSAudioFilePlayerNode.d.ts +12 -0
  50. package/lib/typescript/classes/HMSAudioMixerSource.d.ts +8 -0
  51. package/lib/typescript/classes/HMSAudioNode.d.ts +6 -0
  52. package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +4 -2
  53. package/lib/typescript/classes/HMSException.d.ts +8 -6
  54. package/lib/typescript/classes/HMSMicNode.d.ts +5 -0
  55. package/lib/typescript/classes/HMSSDK.d.ts +28 -26
  56. package/lib/typescript/classes/HMSScreenBroadcastAudioReceiverNode.d.ts +4 -0
  57. package/lib/typescript/index.d.ts +5 -0
  58. package/package.json +1 -1
  59. package/react-native-hms.podspec +2 -1
  60. package/src/classes/HMSAudioFilePlayerNode.ts +75 -0
  61. package/src/classes/HMSAudioMixerSource.ts +15 -0
  62. package/src/classes/HMSAudioNode.ts +12 -0
  63. package/src/classes/HMSAudioTrackSettings.ts +7 -4
  64. package/src/classes/HMSEncoder.ts +1 -0
  65. package/src/classes/HMSException.ts +9 -6
  66. package/src/classes/HMSMicNode.ts +23 -0
  67. package/src/classes/HMSSDK.tsx +47 -58
  68. package/src/classes/HMSScreenBroadcastAudioReceiverNode.ts +7 -0
  69. package/src/index.ts +5 -0
package/README.md CHANGED
@@ -50,10 +50,10 @@ Add following lines in `Info.plist` file
50
50
  ```xml
51
51
  <key>NSCameraUsageDescription</key>
52
52
  <string>Please allow access to Camera to enable video conferencing</string>
53
- <key>NSLocalNetworkUsageDescription</key>
54
- <string>Please allow access to network usage to enable video conferencing</string>
55
53
  <key>NSMicrophoneUsageDescription</key>
56
54
  <string>Please allow access to Microphone to enable video conferencing</string>
55
+ <key>NSLocalNetworkUsageDescription</key>
56
+ <string>Please allow access to network usage to enable video conferencing</string>
57
57
  ```
58
58
 
59
59
  ### For Android Permissions
@@ -61,9 +61,15 @@ Add following lines in `Info.plist` file
61
61
  Add following permissions in `AndroidManifest.xml`
62
62
 
63
63
  ```xml
64
- <uses-permission android:name="android.permission.CAMERA" />
65
- <uses-permission android:name="android.permission.RECORD_AUDIO" />
66
- <uses-permission android:name="android.permission.INTERNET" />
64
+ <uses-feature android:name="android.hardware.camera.autofocus"/>
65
+ <uses-permission android:name="android.permission.CAMERA"/>
66
+ <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
67
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
68
+ <uses-permission android:name="android.permission.RECORD_AUDIO"/>
69
+ <uses-permission android:name="android.permission.BLUETOOTH"/>
70
+ <uses-permission android:name="android.permission.INTERNET"/>
71
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
72
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
67
73
  ```
68
74
 
69
75
  You will also need to request Camera and Record Audio permissions at runtime before you join a call or display a preview. Please follow [Android Documentation](https://developer.android.com/training/permissions/requesting#request-permission) for runtime permissions.
@@ -152,7 +158,7 @@ hmsInstance?.localPeer?.localVideoTrack()?.switchCamera();
152
158
  await hmsInstance?.leave();
153
159
  ```
154
160
 
155
- ## Viewing the video of a peer
161
+ ## [Viewing the video of a peer](https://www.100ms.live/docs/react-native/v2/features/render-video)
156
162
 
157
163
  To display a video on screen the package provide a UI component named HmsView that takes the video track ID and displays the video in that component, this component requires on _width_ and _height_ in _style_ prop to set bounds of the tile that will show the video stream
158
164
 
@@ -408,7 +414,7 @@ const track: HMSTrack = remotePeer.audioTrack as HMSTrack;
408
414
  hmsInstance?.setVolume(track, volume);
409
415
  ```
410
416
 
411
- ## [Change name](https://www.100ms.live/docs/react-native/v2/features/change-name)
417
+ ## [Change Name](https://www.100ms.live/docs/react-native/v2/features/change-name)
412
418
 
413
419
  ```js
414
420
  const newName: string = 'new name';
@@ -41,7 +41,7 @@ class HMSRNSDK(
41
41
  private var self = this
42
42
 
43
43
  init {
44
- val trackSettings = HMSHelper.getTrackSettings(data)
44
+ val trackSettings = HMSHelper.getTrackSettings(data?.getMap("trackSettings"))
45
45
  if (trackSettings == null) {
46
46
  this.hmsSDK = HMSSDK.Builder(reactApplicationContext).build()
47
47
  } else {
@@ -139,12 +139,12 @@ class HMSDecoder: NSObject {
139
139
 
140
140
  return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "metadata": metadata, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "localAudioTrackData": localAudioTrackData, "localVideoTrackData": localVideoTrackData, "role": role, "networkQuality": networkQuality]
141
141
  }
142
-
142
+
143
143
  static func getHmsLocalAudioTrack(_ localAudio: HMSLocalAudioTrack) -> [String: Any] {
144
144
  let type = HMSHelper.getHmsTrackType(localAudio.kind) ?? ""
145
145
  return ["trackId": localAudio.trackId, "source": localAudio.source, "trackDescription": localAudio.trackDescription, "settings": getHmsAudioTrackSettings(localAudio.settings), "isMute": localAudio.isMute(), "type": type, "kind": type]
146
146
  }
147
-
147
+
148
148
  static func getHmsLocalVideoTrack(_ localVideo: HMSLocalVideoTrack) -> [String: Any] {
149
149
  let type = HMSHelper.getHmsTrackType(localVideo.kind) ?? ""
150
150
  return ["trackId": localVideo.trackId, "source": localVideo.source, "trackDescription": localVideo.trackDescription, "settings": getHmsVideoTrackSettings(localVideo.settings), "isMute": localVideo.isMute(), "type": type, "kind": type]
@@ -259,12 +259,12 @@ class HMSDecoder: NSObject {
259
259
 
260
260
  return ["peerID": peerID, "name": name, "isLocal": isLocal, "customerUserID": customerUserID, "customerDescription": customerDescription, "metadata": metadata, "audioTrack": audioTrack, "videoTrack": videoTrack, "auxiliaryTracks": auxiliaryTracks, "remoteAudioTrackData": remoteAudioTrackData, "remoteVideoTrackData": remoteVideoTrackData, "role": role, "networkQuality": networkQuality]
261
261
  }
262
-
262
+
263
263
  static func getHMSRemoteAudioTrack(_ remoteAudio: HMSRemoteAudioTrack) -> [String: Any] {
264
264
  let type = HMSHelper.getHmsTrackType(remoteAudio.kind) ?? ""
265
265
  return ["trackId": remoteAudio.trackId, "source": remoteAudio.source, "trackDescription": remoteAudio.trackDescription, "playbackAllowed": remoteAudio.isPlaybackAllowed(), "isMute": remoteAudio.isMute(), "type": type, "kind": type]
266
266
  }
267
-
267
+
268
268
  static func getHMSRemoteVideoTrack(_ remoteVideo: HMSRemoteVideoTrack) -> [String: Any] {
269
269
  let type = HMSHelper.getHmsTrackType(remoteVideo.kind) ?? ""
270
270
  return ["trackId": remoteVideo.trackId, "source": remoteVideo.source, "trackDescription": remoteVideo.trackDescription, "layer": remoteVideo.layer.rawValue, "playbackAllowed": remoteVideo.isPlaybackAllowed(), "isMute": remoteVideo.isMute(), "isDegraded": remoteVideo.isDegraded(), "type": type, "kind": type]
@@ -478,17 +478,14 @@ class HMSDecoder: NSObject {
478
478
  return request
479
479
  }
480
480
 
481
- static func getError(_ errorObj: HMSError?) -> [String: Any]? {
482
- if let error = errorObj {
483
- let code = error.code.rawValue
484
- let description = error.description
485
- let message = error.message
486
- let name = error.id
487
- let id = error.id
488
- let action = error.action
489
- let isTerminal = false
481
+ static func getError(_ errorObj: Error?) -> [String: Any]? {
482
+ if let error = errorObj as? HMSError {
483
+ let code = error.errorCode
484
+ let description = error.localizedDescription
485
+ let isTerminal = error.userInfo[HMSIsTerminalUserInfoKey] as? Bool ?? false
486
+ let canRetry = error.userInfo[HMSCanRetryUserInfoKey] as? Bool ?? false
490
487
 
491
- return ["code": code, "description": description, "message": message, "name": name, "action": action, "id": id, "isTerminal": isTerminal]
488
+ return ["code": code, "description": description, "isTerminal": isTerminal, "canRetry": canRetry]
492
489
  } else {
493
490
  return nil
494
491
  }
@@ -540,7 +537,7 @@ class HMSDecoder: NSObject {
540
537
  return [:]
541
538
  }
542
539
  }
543
-
540
+
544
541
  static func getHlsRecordingState(_ data: HMSHLSRecordingState?) -> [String: Any] {
545
542
  if let recordingState = data {
546
543
  let running = recordingState.running
@@ -570,37 +567,37 @@ class HMSDecoder: NSObject {
570
567
  }
571
568
  return variants
572
569
  }
573
-
570
+
574
571
  static func getHMSRTCStats(_ data: HMSRTCStats) -> [String: Any] {
575
572
  return ["bitrateReceived": data.bitrateReceived, "bitrateSent": data.bitrateSent, "bytesReceived": data.bytesReceived, "bytesSent": data.bytesSent, "packetsLost": data.packetsLost, "packetsReceived": data.packetsReceived, "roundTripTime": data.roundTripTime]
576
573
  }
577
-
574
+
578
575
  static func getLocalAudioStats(_ data: HMSLocalAudioStats) -> [String: Any] {
579
576
  return ["roundTripTime": data.roundTripTime, "bytesSent": data.bytesSent, "bitrate": data.bitrate]
580
577
  }
581
-
578
+
582
579
  static func getLocalVideoStats(_ data: HMSLocalVideoStats) -> [String: Any] {
583
580
  return ["roundTripTime": data.roundTripTime, "bytesSent": data.bytesSent, "bitrate": data.bitrate, "resolution": HMSDecoder.getHmsVideoResolution(data.resolution), "frameRate": data.frameRate]
584
581
  }
585
-
582
+
586
583
  static func getRemoteAudioStats(_ data: HMSRemoteAudioStats) -> [String: Any] {
587
584
  return ["bitrate": data.bitrate, "packetsReceived": data.packetsReceived, "packetsLost": data.packetsLost, "bytesReceived": data.bytesReceived, "jitter": data.jitter]
588
585
  }
589
-
586
+
590
587
  static func getRemoteVideoStats(_ data: HMSRemoteVideoStats) -> [String: Any] {
591
588
  return ["bitrate": data.bitrate, "packetsReceived": data.packetsReceived, "packetsLost": data.packetsLost, "bytesReceived": data.bytesReceived, "jitter": data.jitter, "resolution": HMSDecoder.getHmsVideoResolution(data.resolution), "frameRate": data.frameRate]
592
589
  }
593
-
590
+
594
591
  static func getHmsMessageRecipient(_ recipient: HMSMessageRecipient) -> [String: Any] {
595
592
  return ["recipientPeer": getHmsPeer(recipient.peerRecipient), "recipientRoles": getAllRoles(recipient.rolesRecipient), "recipientType": self.getRecipientType(from: recipient.type)]
596
593
  }
597
-
594
+
598
595
  static func getHmsNetworkQuality(_ hmsNetworkQuality: HMSNetworkQuality?) -> [String: Any] {
599
596
  guard let networkQuality = hmsNetworkQuality else { return [:] }
600
-
597
+
601
598
  return ["downlinkQuality": networkQuality.downlinkQuality]
602
599
  }
603
-
600
+
604
601
  static private func getRecipientType(from recipientType: HMSMessageRecipientType) -> String {
605
602
  switch recipientType {
606
603
  case .broadcast:
@@ -2,14 +2,15 @@ import HMSSDK
2
2
  import Foundation
3
3
 
4
4
  class HMSHelper: NSObject {
5
+ static var audioMixerSourceHashMap: [String: HMSAudioNode]?
5
6
 
6
7
  static func getUnavailableRequiredKey(_ data: NSDictionary, _ requiredKeys: [String]) -> String {
7
8
  for (key) in requiredKeys {
8
9
  let value = data.object(forKey: key)
9
- if (value == nil) {
10
+ if value == nil {
10
11
  return key + "_Is_Required"
11
12
  }
12
- if (value is NSNull) {
13
+ if value is NSNull {
13
14
  return key + "_Is_Null"
14
15
  }
15
16
  }
@@ -159,15 +160,48 @@ class HMSHelper: NSObject {
159
160
  return hmsTrackSettings
160
161
  }
161
162
 
162
- static func getLocalAudioSettings(_ settings: NSDictionary?) -> HMSAudioTrackSettings? {
163
+ static func getLocalAudioSettings(_ settings: NSDictionary?, _ hms: HMSSDK?, _ delegate: HMSManager?, _ id: String) -> HMSAudioTrackSettings? {
163
164
  guard let data = settings,
164
- let maxBitrate = data.value(forKey: "maxBitrate") as? Int,
165
- let trackDescription = data.value(forKey: "trackDescription") as? String?
165
+ let maxBitrate = data.value(forKey: "maxBitrate") as? Int
166
166
  else {
167
167
  return nil
168
168
  }
169
+ let trackDescription = data.value(forKey: "trackDescription") as? String
169
170
  let hmsTrackSettings = HMSAudioTrackSettings(maxBitrate: maxBitrate, trackDescription: trackDescription)
170
- return hmsTrackSettings
171
+ if #available(iOS 13.0, *) {
172
+ var audioMixerSourceMap = [String: HMSAudioNode]()
173
+ if let playerNode = settings?.value(forKey: "audioSource") as? [String] {
174
+ for node in playerNode {
175
+ if audioMixerSourceMap[node] == nil {
176
+ if node == "mic_node" {
177
+ audioMixerSourceMap["mic_node"] = HMSMicNode()
178
+ } else if node == "screen_broadcast_audio_receiver_node" {
179
+ do {
180
+ audioMixerSourceMap["screen_broadcast_audio_receiver_node"] = try hms?.screenBroadcastAudioReceiverNode()
181
+ } catch {
182
+ delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
183
+ }
184
+ } else {
185
+ audioMixerSourceMap[node] = HMSAudioFilePlayerNode()
186
+ }
187
+ }
188
+ }
189
+ }
190
+ do {
191
+ self.audioMixerSourceHashMap = audioMixerSourceMap
192
+ let audioMixerSource = try HMSAudioMixerSource(nodes: audioMixerSourceMap.values.map {$0})
193
+ return HMSAudioTrackSettings(maxBitrate: maxBitrate, trackDescription: trackDescription, audioSource: audioMixerSource)
194
+ } catch {
195
+ delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
196
+ return hmsTrackSettings
197
+ }
198
+ } else {
199
+ return hmsTrackSettings
200
+ }
201
+ }
202
+
203
+ static func getAudioMixerSourceMap() -> [String: HMSAudioNode]? {
204
+ return self.audioMixerSourceHashMap
171
205
  }
172
206
 
173
207
  static func getVideoResolution(_ data: [String: Double]) -> HMSVideoResolution? {
@@ -227,7 +261,7 @@ class HMSHelper: NSObject {
227
261
  }
228
262
  return hlsVariants
229
263
  }
230
-
264
+
231
265
  static func getHlsRecordingConfig(_ config: NSDictionary?) -> HMSHLSRecordingConfig? {
232
266
  guard let hlsRecordingConfig = config
233
267
  else {
@@ -235,7 +269,7 @@ class HMSHelper: NSObject {
235
269
  }
236
270
  let singleFilePerLayer = hlsRecordingConfig.value(forKey: "singleFilePerLayer") as? Bool
237
271
  let videoOnDemand = hlsRecordingConfig.value(forKey: "videoOnDemand") as? Bool
238
-
272
+
239
273
  return HMSHLSRecordingConfig(singleFilePerLayer: singleFilePerLayer ?? false, enableVOD: videoOnDemand ?? false)
240
274
  }
241
275
 
package/ios/HMSManager.m CHANGED
@@ -37,4 +37,15 @@ RCT_EXTERN_METHOD(changeName: (NSDictionary) data :(RCTPromiseResolveBlock) reso
37
37
  RCT_EXTERN_METHOD(enableRTCStats: (NSDictionary) data)
38
38
  RCT_EXTERN_METHOD(disableRTCStats: (NSDictionary) data)
39
39
  RCT_EXTERN_METHOD(destroy: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
40
+ RCT_EXTERN_METHOD(startScreenshare: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
41
+ RCT_EXTERN_METHOD(stopScreenshare: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
42
+ RCT_EXTERN_METHOD(isScreenShared: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
43
+ RCT_EXTERN_METHOD(playAudioShare: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
44
+ RCT_EXTERN_METHOD(setAudioShareVolume: (NSDictionary) data)
45
+ RCT_EXTERN_METHOD(stopAudioShare: (NSDictionary) data)
46
+ RCT_EXTERN_METHOD(resumeAudioShare: (NSDictionary) data)
47
+ RCT_EXTERN_METHOD(pauseAudioShare: (NSDictionary) data)
48
+ RCT_EXTERN_METHOD(audioShareIsPlaying: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
49
+ RCT_EXTERN_METHOD(audioShareCurrentTime: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
50
+ RCT_EXTERN_METHOD(audioShareDuration: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
40
51
  @end
@@ -30,11 +30,11 @@ class HMSManager: RCTEventEmitter {
30
30
  override init() {
31
31
  super.init()
32
32
  }
33
-
33
+
34
34
  override class func requiresMainQueueSetup() -> Bool {
35
35
  true
36
36
  }
37
-
37
+
38
38
  override func supportedEvents() -> [String]! {
39
39
  return [ON_JOIN, ON_PREVIEW, ON_ROOM_UPDATE, ON_PEER_UPDATE, ON_TRACK_UPDATE, ON_ERROR, ON_MESSAGE, ON_SPEAKER, RECONNECTING, RECONNECTED, ON_ROLE_CHANGE_REQUEST, ON_CHANGE_TRACK_STATE_REQUEST, ON_REMOVED_FROM_ROOM, ON_RTC_STATS, ON_LOCAL_AUDIO_STATS, ON_LOCAL_VIDEO_STATS, ON_REMOTE_AUDIO_STATS, ON_REMOTE_VIDEO_STATS, ON_AUDIO_DEVICE_CHANGED]
40
40
  }
@@ -67,18 +67,18 @@ class HMSManager: RCTEventEmitter {
67
67
  let hms = HMSHelper.getHms(credentials, hmsCollection)
68
68
  hms?.preview(credentials)
69
69
  }
70
-
70
+
71
71
  @objc
72
72
  func previewForRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
73
73
  let hms = HMSHelper.getHms(data, hmsCollection)
74
74
 
75
75
  hms?.previewForRole(data, resolve, reject)
76
76
  }
77
-
77
+
78
78
  @objc
79
79
  func cancelPreview(_ data: NSDictionary) {
80
80
  let hms = HMSHelper.getHms(data, hmsCollection)
81
-
81
+
82
82
  hms?.cancelPreview()
83
83
  }
84
84
 
@@ -224,7 +224,7 @@ class HMSManager: RCTEventEmitter {
224
224
 
225
225
  hms?.setPlaybackForAllAudio(data)
226
226
  }
227
-
227
+
228
228
  @objc
229
229
  func remoteMuteAllAudio(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
230
230
  let hms = HMSHelper.getHms(data, hmsCollection)
@@ -273,25 +273,25 @@ class HMSManager: RCTEventEmitter {
273
273
 
274
274
  hms?.stopHLSStreaming(resolve, reject)
275
275
  }
276
-
276
+
277
277
  @objc
278
278
  func changeName(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
279
279
  let hms = HMSHelper.getHms(data, hmsCollection)
280
280
 
281
281
  hms?.changeName(data, resolve, reject)
282
282
  }
283
-
283
+
284
284
  @objc
285
285
  func enableRTCStats(_ data: NSDictionary) {
286
286
  let hms = HMSHelper.getHms(data, hmsCollection)
287
-
287
+
288
288
  hms?.enableRTCStats()
289
289
  }
290
-
290
+
291
291
  @objc
292
292
  func disableRTCStats(_ data: NSDictionary) {
293
293
  let hms = HMSHelper.getHms(data, hmsCollection)
294
-
294
+
295
295
  hms?.disableRTCStats()
296
296
  }
297
297
 
@@ -302,11 +302,80 @@ class HMSManager: RCTEventEmitter {
302
302
  resolve?(["success": id + " removed"])
303
303
  }
304
304
 
305
- // @objc
306
- // func setLocalVideoSettings(_ data: NSDictionary) {
307
- // let hms = HMSHelper.getHms(data, hmsCollection)
308
- //
309
- // hms?.setLocalVideoSettings(data)
310
- // }
311
- }
305
+ @objc
306
+ func startScreenshare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
307
+ let hms = HMSHelper.getHms(data, hmsCollection)
308
+
309
+ hms?.startScreenshare(resolve, reject)
310
+ }
311
+
312
+ @objc
313
+ func stopScreenshare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
314
+ let hms = HMSHelper.getHms(data, hmsCollection)
315
+
316
+ hms?.stopScreenshare(resolve, reject)
317
+ }
318
+
319
+ @objc
320
+ func isScreenShared(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
321
+ let hms = HMSHelper.getHms(data, hmsCollection)
322
+
323
+ hms?.isScreenShared(resolve, reject)
324
+ }
325
+
326
+ @objc
327
+ func playAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
328
+ let hms = HMSHelper.getHms(data, hmsCollection)
329
+
330
+ hms?.playAudioShare(data, resolve, reject)
331
+ }
332
+
333
+ @objc
334
+ func setAudioShareVolume(_ data: NSDictionary) {
335
+ let hms = HMSHelper.getHms(data, hmsCollection)
336
+
337
+ hms?.setAudioShareVolume(data)
338
+ }
312
339
 
340
+ @objc
341
+ func stopAudioShare(_ data: NSDictionary) {
342
+ let hms = HMSHelper.getHms(data, hmsCollection)
343
+
344
+ hms?.stopAudioShare(data)
345
+ }
346
+
347
+ @objc
348
+ func resumeAudioShare(_ data: NSDictionary) {
349
+ let hms = HMSHelper.getHms(data, hmsCollection)
350
+
351
+ hms?.resumeAudioShare(data)
352
+ }
353
+
354
+ @objc
355
+ func pauseAudioShare(_ data: NSDictionary) {
356
+ let hms = HMSHelper.getHms(data, hmsCollection)
357
+
358
+ hms?.pauseAudioShare(data)
359
+ }
360
+
361
+ @objc
362
+ func audioShareIsPlaying(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
363
+ let hms = HMSHelper.getHms(data, hmsCollection)
364
+
365
+ hms?.audioShareIsPlaying(data, resolve, reject)
366
+ }
367
+
368
+ @objc
369
+ func audioShareCurrentTime(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
370
+ let hms = HMSHelper.getHms(data, hmsCollection)
371
+
372
+ hms?.audioShareCurrentTime(data, resolve, reject)
373
+ }
374
+
375
+ @objc
376
+ func audioShareDuration(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
377
+ let hms = HMSHelper.getHms(data, hmsCollection)
378
+
379
+ hms?.audioShareDuration(data, resolve, reject)
380
+ }
381
+ }