@100mslive/react-native-hms 1.1.0 → 1.2.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 (101) hide show
  1. package/README.md +145 -340
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +205 -75
  4. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +127 -127
  5. package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +153 -115
  6. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +147 -17
  7. package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +7 -7
  8. package/ios/HMSDecoder.swift +205 -129
  9. package/ios/HMSHelper.swift +3 -3
  10. package/ios/HMSManager.m +3 -0
  11. package/ios/HMSManager.swift +22 -1
  12. package/ios/HMSRNSDK.swift +228 -79
  13. package/ios/HMSView.m +2 -0
  14. package/ios/HMSView.swift +35 -3
  15. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/yogesh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  16. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  17. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  18. package/lib/commonjs/classes/HMSEncoder.js +133 -84
  19. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  20. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -1
  21. package/lib/commonjs/classes/HMSLocalVideoTrack.js +0 -2
  22. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  23. package/lib/commonjs/classes/HMSMessageRecipient.js +1 -1
  24. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -1
  25. package/lib/commonjs/classes/HMSNativeEventEmitter.js +106 -0
  26. package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -0
  27. package/lib/commonjs/classes/HMSPeer.js +4 -0
  28. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  29. package/lib/commonjs/classes/HMSPublishSettings.js +0 -6
  30. package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
  31. package/lib/commonjs/classes/HMSRole.js +0 -6
  32. package/lib/commonjs/classes/HMSRole.js.map +1 -1
  33. package/lib/commonjs/classes/HMSRoleChangeRequest.js +3 -1
  34. package/lib/commonjs/classes/HMSRoleChangeRequest.js.map +1 -1
  35. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  36. package/lib/commonjs/classes/HMSSDK.js +465 -137
  37. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  38. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  39. package/lib/commonjs/classes/HMSSubscribeSettings.js +0 -2
  40. package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
  41. package/lib/commonjs/index.js.map +1 -1
  42. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  43. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  44. package/lib/module/classes/HMSEncoder.js +133 -84
  45. package/lib/module/classes/HMSEncoder.js.map +1 -1
  46. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -1
  47. package/lib/module/classes/HMSLocalVideoTrack.js +0 -2
  48. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  49. package/lib/module/classes/HMSMessageRecipient.js +1 -1
  50. package/lib/module/classes/HMSMessageRecipient.js.map +1 -1
  51. package/lib/module/classes/HMSNativeEventEmitter.js +99 -0
  52. package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -0
  53. package/lib/module/classes/HMSPeer.js +4 -0
  54. package/lib/module/classes/HMSPeer.js.map +1 -1
  55. package/lib/module/classes/HMSPublishSettings.js +0 -6
  56. package/lib/module/classes/HMSPublishSettings.js.map +1 -1
  57. package/lib/module/classes/HMSRole.js +0 -6
  58. package/lib/module/classes/HMSRole.js.map +1 -1
  59. package/lib/module/classes/HMSRoleChangeRequest.js +3 -1
  60. package/lib/module/classes/HMSRoleChangeRequest.js.map +1 -1
  61. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  62. package/lib/module/classes/HMSSDK.js +466 -138
  63. package/lib/module/classes/HMSSDK.js.map +1 -1
  64. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  65. package/lib/module/classes/HMSSubscribeSettings.js +0 -2
  66. package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
  67. package/lib/module/index.js.map +1 -1
  68. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -4
  69. package/lib/typescript/classes/HMSChangeTrackStateRequest.d.ts +2 -2
  70. package/lib/typescript/classes/HMSEncoder.d.ts +3 -0
  71. package/lib/typescript/classes/HMSHLSStreamingState.d.ts +2 -2
  72. package/lib/typescript/classes/HMSLocalVideoTrack.d.ts +0 -2
  73. package/lib/typescript/classes/HMSMessageRecipient.d.ts +2 -2
  74. package/lib/typescript/classes/HMSNativeEventEmitter.d.ts +13 -0
  75. package/lib/typescript/classes/HMSPublishSettings.d.ts +8 -15
  76. package/lib/typescript/classes/HMSRole.d.ts +0 -6
  77. package/lib/typescript/classes/HMSRoleChangeRequest.d.ts +2 -2
  78. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -4
  79. package/lib/typescript/classes/HMSSDK.d.ts +2 -12
  80. package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -2
  81. package/lib/typescript/classes/HMSSubscribeSettings.d.ts +0 -2
  82. package/lib/typescript/index.d.ts +1 -0
  83. package/package.json +6 -4
  84. package/react-native-hms.podspec +1 -1
  85. package/sdk-versions.json +5 -0
  86. package/src/classes/HMSBrowserRecordingState.ts +4 -4
  87. package/src/classes/HMSChangeTrackStateRequest.ts +2 -2
  88. package/src/classes/HMSEncoder.ts +186 -99
  89. package/src/classes/HMSHLSStreamingState.ts +2 -2
  90. package/src/classes/HMSLocalVideoTrack.ts +0 -2
  91. package/src/classes/HMSMessageRecipient.ts +3 -3
  92. package/src/classes/HMSNativeEventEmitter.ts +86 -0
  93. package/src/classes/HMSPeer.ts +4 -0
  94. package/src/classes/HMSPublishSettings.ts +8 -18
  95. package/src/classes/HMSRole.ts +0 -9
  96. package/src/classes/HMSRoleChangeRequest.ts +5 -3
  97. package/src/classes/HMSRtmpStreamingState.ts +4 -4
  98. package/src/classes/HMSSDK.tsx +629 -269
  99. package/src/classes/HMSServerRecordingState.ts +2 -2
  100. package/src/classes/HMSSubscribeSettings.ts +1 -7
  101. package/src/index.ts +1 -0
@@ -2,15 +2,26 @@ import HMSSDK
2
2
  import Foundation
3
3
 
4
4
  class HMSDecoder: NSObject {
5
+ static private var restrictRoleData: [String: Bool] = [:]
6
+
7
+ static func setRestrictRoleData (_ roleName: String, _ value: Bool) {
8
+ restrictRoleData[roleName] = value
9
+ }
10
+
11
+ static func clearRestrictDataStates () {
12
+ restrictRoleData.removeAll()
13
+ }
14
+
5
15
  static func getHmsRoom (_ hmsRoom: HMSRoom?) -> [String: Any] {
6
16
 
7
- guard let room = hmsRoom else { return [:] }
17
+ guard let room = hmsRoom else { return [String: Any]() }
8
18
 
9
19
  let id = room.roomID ?? ""
10
20
  let sessionId = room.sessionID ?? ""
11
21
  let name = room.name ?? ""
12
22
  let metaData = room.metaData ?? ""
13
23
  let count = room.peerCount ?? 0
24
+ // sessionStartedAt?
14
25
  let browserRecordingState = HMSDecoder.getHMSBrowserRecordingState(hmsRoom?.browserRecordingState)
15
26
  let rtmpStreamingState = HMSDecoder.getHMSRtmpStreamingState(hmsRoom?.rtmpStreamingState)
16
27
  let serverRecordingState = HMSDecoder.getHMSServerRecordingState(hmsRoom?.serverRecordingState)
@@ -32,32 +43,41 @@ class HMSDecoder: NSObject {
32
43
 
33
44
  static func getHmsPeer (_ hmsPeer: HMSPeer?) -> [String: Any] {
34
45
 
35
- guard let peer = hmsPeer else { return [:] }
36
-
37
- let peerID = peer.peerID
38
- let name = peer.name
39
- let isLocal = peer.isLocal
40
- let customerUserID = peer.customerUserID ?? ""
41
- let customerDescription = peer.metadata ?? ""
42
- let metadata = peer.metadata ?? ""
43
- let audioTrack = getHmsAudioTrack(peer.audioTrack)
44
- let videoTrack = getHmsVideoTrack(peer.videoTrack)
45
- let role = getHmsRole(peer.role)
46
- let networkQuality = getHmsNetworkQuality(peer.networkQuality)
47
-
48
- let auxiliaryTracks = getAllTracks(peer.auxiliaryTracks ?? [] )
49
-
50
- return ["peerID": peerID,
51
- "name": name,
52
- "isLocal": isLocal,
53
- "customerUserID": customerUserID,
54
- "customerDescription": customerDescription,
55
- "metadata": metadata,
56
- "audioTrack": audioTrack,
57
- "videoTrack": videoTrack,
58
- "auxiliaryTracks": auxiliaryTracks,
59
- "networkQuality": networkQuality,
60
- "role": role]
46
+ guard let peer = hmsPeer else { return [String: Any]() }
47
+
48
+ var peerDict = [String: Any]()
49
+
50
+ peerDict["peerID"] = peer.peerID
51
+ peerDict["name"] = peer.name
52
+ peerDict["isLocal"] = peer.isLocal
53
+
54
+ if let userID = peer.customerUserID {
55
+ peerDict["customerUserID"] = userID
56
+ }
57
+
58
+ peerDict["metadata"] = peer.metadata ?? ""
59
+
60
+ // joinedAt
61
+
62
+ peerDict["role"] = getHmsRole(peer.role)
63
+
64
+ if let quality = peer.networkQuality {
65
+ peerDict["networkQuality"] = getHmsNetworkQuality(quality)
66
+ }
67
+
68
+ if let audio = peer.audioTrack {
69
+ peerDict["audioTrack"] = getHmsAudioTrack(audio)
70
+ }
71
+
72
+ if let video = peer.videoTrack {
73
+ peerDict["videoTrack"] = getHmsVideoTrack(video)
74
+ }
75
+
76
+ if let auxTracks = peer.auxiliaryTracks, auxTracks.count > 0 {
77
+ peerDict["auxiliaryTracks"] = getAllTracks(auxTracks)
78
+ }
79
+
80
+ return peerDict
61
81
  }
62
82
 
63
83
  static func getAllTracks (_ tracks: [HMSTrack]) -> [[String: Any]] {
@@ -71,7 +91,7 @@ class HMSDecoder: NSObject {
71
91
 
72
92
  static func getHmsTrack (_ track: HMSTrack?) -> [String: Any] {
73
93
 
74
- guard let hmsTrack = track else { return [:] }
94
+ guard let hmsTrack = track else { return [String: Any]() }
75
95
 
76
96
  let trackId = hmsTrack.trackId
77
97
  let source = hmsTrack.source
@@ -84,7 +104,7 @@ class HMSDecoder: NSObject {
84
104
 
85
105
  static func getHmsAudioTrack (_ hmsAudioTrack: HMSAudioTrack?) -> [String: Any] {
86
106
 
87
- guard let hmsTrack = hmsAudioTrack else { return [:] }
107
+ guard let hmsTrack = hmsAudioTrack else { return [String: Any]() }
88
108
 
89
109
  let trackId: String = hmsTrack.trackId
90
110
  let source: String = hmsTrack.source
@@ -97,7 +117,7 @@ class HMSDecoder: NSObject {
97
117
 
98
118
  static func getHmsVideoTrack (_ hmsVideoTrack: HMSVideoTrack?) -> [String: Any] {
99
119
 
100
- guard let hmsTrack = hmsVideoTrack else { return [:] }
120
+ guard let hmsTrack = hmsVideoTrack else { return [String: Any]() }
101
121
 
102
122
  let trackId = hmsTrack.trackId
103
123
  let source = hmsTrack.source
@@ -111,38 +131,48 @@ class HMSDecoder: NSObject {
111
131
 
112
132
  static func getHmsLocalPeer(_ hmsLocalPeer: HMSLocalPeer?) -> [String: Any] {
113
133
 
114
- guard let peer = hmsLocalPeer else { return [:] }
134
+ guard let peer = hmsLocalPeer else { return [String: Any]() }
115
135
 
116
- let peerID = peer.peerID
117
- let name = peer.name
118
- let isLocal = peer.isLocal
119
- let customerUserID = peer.customerUserID ?? ""
120
- let customerDescription = peer.metadata ?? ""
121
- let metadata = peer.metadata ?? ""
122
- let audioTrack = getHmsAudioTrack(peer.audioTrack)
123
- let videoTrack = getHmsVideoTrack(peer.videoTrack)
124
- let role = getHmsRole(peer.role)
125
- let networkQuality = getHmsNetworkQuality(peer.networkQuality)
136
+ var peerDict = [String: Any]()
126
137
 
127
- var auxiliaryTracks = [[String: Any]]()
128
- for track in peer.auxiliaryTracks ?? [] {
129
- auxiliaryTracks.append(getHmsTrack(track))
138
+ peerDict["peerID"] = peer.peerID
139
+
140
+ peerDict["name"] = peer.name
141
+ peerDict["isLocal"] = peer.isLocal
142
+
143
+ if let userID = peer.customerUserID {
144
+ peerDict["customerUserID"] = userID
130
145
  }
131
146
 
132
- let localAudioTrack = peer.localAudioTrack()
133
- let localVideoTrack = peer.localVideoTrack()
147
+ peerDict["metadata"] = peer.metadata ?? ""
148
+
149
+ peerDict["role"] = getHmsRole(peer.role)
150
+
151
+ if let audio = peer.audioTrack {
152
+ peerDict["audioTrack"] = getHmsAudioTrack(audio)
134
153
 
135
- var localAudioTrackData = [String: Any]()
136
- if let localAudio = localAudioTrack {
137
- localAudioTrackData = getHmsLocalAudioTrack(localAudio)
154
+ if let localAudio = audio as? HMSLocalAudioTrack {
155
+ peerDict["localAudioTrackData"] = getHmsLocalAudioTrack(localAudio)
156
+ }
157
+ }
158
+
159
+ if let video = peer.videoTrack {
160
+ peerDict["videoTrack"] = getHmsVideoTrack(video)
161
+
162
+ if let localVideo = video as? HMSLocalVideoTrack {
163
+ peerDict["localVideoTrackData"] = getHmsLocalVideoTrack(localVideo)
164
+ }
138
165
  }
139
166
 
140
- var localVideoTrackData = [String: Any]()
141
- if let localVideo = localVideoTrack {
142
- localVideoTrackData = getHmsLocalVideoTrack(localVideo)
167
+ if let quality = peer.networkQuality {
168
+ peerDict["networkQuality"] = getHmsNetworkQuality(quality)
143
169
  }
144
170
 
145
- 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]
171
+ if let auxTracks = peer.auxiliaryTracks, auxTracks.count > 0 {
172
+ peerDict["auxiliaryTracks"] = getAllTracks(auxTracks)
173
+ }
174
+
175
+ return peerDict
146
176
  }
147
177
 
148
178
  static func getHmsLocalAudioTrack(_ localAudio: HMSLocalAudioTrack) -> [String: Any] {
@@ -157,7 +187,7 @@ class HMSDecoder: NSObject {
157
187
 
158
188
  static func getHmsAudioTrackSettings(_ hmsAudioTrackSettings: HMSAudioTrackSettings?) -> [String: Any] {
159
189
 
160
- guard let settings = hmsAudioTrackSettings else { return [:] }
190
+ guard let settings = hmsAudioTrackSettings else { return [String: Any]() }
161
191
 
162
192
  // TODO: parsing not done for audioSource
163
193
  let audioSource = settings.audioSource
@@ -168,7 +198,7 @@ class HMSDecoder: NSObject {
168
198
 
169
199
  static func getHmsVideoTrackSettings(_ hmsVideoTrackSettings: HMSVideoTrackSettings?) -> [String: Any] {
170
200
 
171
- guard let settings = hmsVideoTrackSettings else { return [:] }
201
+ guard let settings = hmsVideoTrackSettings else { return [String: Any]() }
172
202
 
173
203
  let cameraFacing = getHmsVideoTrackCameraFacing(settings.cameraFacing)
174
204
  let initialState = HMSHelper.getHMSTrackInitState(settings.initialMuteState)
@@ -194,7 +224,7 @@ class HMSDecoder: NSObject {
194
224
  case HMSCodec.H264:
195
225
  return "H264"
196
226
  default:
197
- return "H264"
227
+ return "VP8"
198
228
  }
199
229
  }
200
230
 
@@ -210,13 +240,13 @@ class HMSDecoder: NSObject {
210
240
  }
211
241
 
212
242
  static func getHmsVideoResolution(_ hmsVideoResolution: HMSVideoResolution?) -> [String: Any] {
213
- guard let resolution = hmsVideoResolution else { return [:] }
243
+ guard let resolution = hmsVideoResolution else { return [String: Any]() }
214
244
 
215
245
  return ["width": resolution.width, "height": resolution.height]
216
246
  }
217
247
 
218
248
  static func getHmsRemotePeers (_ remotePeers: [HMSRemotePeer]?) -> [[String: Any]] {
219
- guard let remotePeers = remotePeers else { return [[:]] }
249
+ guard let remotePeers = remotePeers else { return [[String: Any]()] }
220
250
 
221
251
  var peers = [[String: Any]]()
222
252
 
@@ -227,39 +257,49 @@ class HMSDecoder: NSObject {
227
257
  return peers
228
258
  }
229
259
 
230
- static func getHmsRemotePeer(_ hmsRemotePeer: HMSRemotePeer) -> [String: Any] {
260
+ static func getHmsRemotePeer(_ peer: HMSRemotePeer) -> [String: Any] {
231
261
 
232
- let peerID = hmsRemotePeer.peerID
233
- let name = hmsRemotePeer.name
234
- let isLocal = hmsRemotePeer.isLocal
235
- let customerUserID = hmsRemotePeer.customerUserID ?? ""
236
- let customerDescription = hmsRemotePeer.metadata ?? ""
237
- let metadata = hmsRemotePeer.metadata ?? ""
238
- let audioTrack = getHmsAudioTrack(hmsRemotePeer.audioTrack)
239
- let videoTrack = getHmsVideoTrack(hmsRemotePeer.videoTrack)
240
- let role = getHmsRole(hmsRemotePeer.role)
241
- let networkQuality = getHmsNetworkQuality(hmsRemotePeer.networkQuality)
262
+ var peerDict = [String: Any]()
242
263
 
243
- var auxiliaryTracks = [[String: Any]]()
264
+ peerDict["peerID"] = peer.peerID
265
+ peerDict["name"] = peer.name
266
+ peerDict["isLocal"] = peer.isLocal
244
267
 
245
- for track in hmsRemotePeer.auxiliaryTracks ?? [] {
246
- auxiliaryTracks.append(getHmsTrack(track))
268
+ if let userID = peer.customerUserID {
269
+ peerDict["customerUserID"] = userID
247
270
  }
248
271
 
249
- let remoteAudioTrack = hmsRemotePeer.remoteAudioTrack()
250
- let remoteVideoTrack = hmsRemotePeer.remoteVideoTrack()
272
+ peerDict["metadata"] = peer.metadata ?? ""
273
+
274
+ // joinedAt
275
+
276
+ peerDict["role"] = getHmsRole(peer.role)
251
277
 
252
- var remoteAudioTrackData = [String: Any]()
253
- if let remoteAudio = remoteAudioTrack {
254
- remoteAudioTrackData = getHMSRemoteAudioTrack(remoteAudio)
278
+ if let quality = peer.networkQuality {
279
+ peerDict["networkQuality"] = getHmsNetworkQuality(quality)
255
280
  }
256
281
 
257
- var remoteVideoTrackData = [String: Any]()
258
- if let remoteVideo = remoteVideoTrack {
259
- remoteVideoTrackData = getHMSRemoteVideoTrack(remoteVideo)
282
+ if let audio = peer.audioTrack {
283
+ peerDict["audioTrack"] = getHmsAudioTrack(audio)
284
+
285
+ if let remoteAudio = audio as? HMSRemoteAudioTrack {
286
+ peerDict["remoteAudioTrackData"] = getHMSRemoteAudioTrack(remoteAudio)
287
+ }
260
288
  }
261
289
 
262
- 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]
290
+ if let video = peer.videoTrack {
291
+ peerDict["videoTrack"] = getHmsVideoTrack(video)
292
+
293
+ if let remoteVideo = video as? HMSRemoteVideoTrack {
294
+ peerDict["remoteVideoTrackData"] = getHMSRemoteVideoTrack(remoteVideo)
295
+ }
296
+ }
297
+
298
+ if let auxTracks = peer.auxiliaryTracks, auxTracks.count > 0 {
299
+ peerDict["auxiliaryTracks"] = getAllTracks(auxTracks)
300
+ }
301
+
302
+ return peerDict
263
303
  }
264
304
 
265
305
  static func getHMSRemoteAudioTrack(_ remoteAudio: HMSRemoteAudioTrack) -> [String: Any] {
@@ -304,18 +344,20 @@ class HMSDecoder: NSObject {
304
344
 
305
345
  static func getHmsRole(_ hmsRole: HMSRole?) -> [String: Any] {
306
346
 
307
- guard let role = hmsRole else { return [:] }
347
+ guard let role = hmsRole else { return [String: Any]() }
308
348
 
309
349
  let name = role.name
350
+
351
+ if restrictRoleData[role.name] == true {
352
+ return ["name": name]
353
+ }
354
+
310
355
  let permissions = getHmsPermissions(role.permissions)
311
356
  let publishSettings = getHmsPublishSettings(role.publishSettings)
312
357
  let subscribeSettings = getHmsSubscribeSettings(role.subscribeSettings)
313
358
  let priority = role.priority
314
- let generalPermissions = role.generalPermissions ?? [:]
315
- let internalPlugins = role.internalPlugins ?? [:]
316
- let externalPlugins = role.externalPlugins ?? [:]
317
359
 
318
- return ["name": name, "permissions": permissions, "publishSettings": publishSettings, "subscribeSettings": subscribeSettings, "priority": priority, "generalPermissions": generalPermissions, "internalPlugins": internalPlugins, "externalPlugins": externalPlugins]
360
+ return ["name": name, "permissions": permissions, "publishSettings": publishSettings, "subscribeSettings": subscribeSettings, "priority": priority]
319
361
  }
320
362
 
321
363
  static func getHmsPermissions (_ permissions: HMSPermissions) -> [String: Any] {
@@ -341,41 +383,33 @@ class HMSDecoder: NSObject {
341
383
 
342
384
  static func getHmsPublishSettings (_ publishSettings: HMSPublishSettings) -> [String: Any] {
343
385
 
344
- let audio = getHmsAudioSettings(publishSettings.audio)
345
- let video = getHmsVideoSettings(publishSettings.video)
346
- let screen = getHmsVideoSettings(publishSettings.screen)
347
- let videoSimulcastLayers = getHmsSimulcastLayers(publishSettings.simulcast?.video)
348
- let screenSimulcastLayers = getHmsSimulcastLayers(publishSettings.simulcast?.screen)
349
- var allowed = publishSettings.allowed ?? []
350
- if (publishSettings.allowed) != nil {
351
- allowed = getWriteableArray(publishSettings.allowed)
352
- } else {
353
- allowed = []
386
+ var dict = [String: Any]()
387
+
388
+ dict["audio"] = getHmsAudioSettings(publishSettings.audio)
389
+ dict["video"] = getHmsVideoSettings(publishSettings.video)
390
+ dict["screen"] = getHmsVideoSettings(publishSettings.screen)
391
+
392
+ if let allowed = publishSettings.allowed {
393
+ dict["allowed"] = getWriteableArray(allowed)
354
394
  }
355
395
 
356
- return ["audio": audio,
357
- "video": video,
358
- "screen": screen,
359
- "videoSimulcastLayers": videoSimulcastLayers,
360
- "screenSimulcastLayers": screenSimulcastLayers,
361
- "allowed": allowed]
396
+ return dict
362
397
  }
363
398
 
364
399
  static func getHmsSubscribeSettings (_ subscribeSettings: HMSSubscribeSettings?) -> [String: Any] {
365
400
  guard let settings = subscribeSettings
366
- else { return [:] }
401
+ else { return [String: Any]() }
367
402
 
368
403
  let maxSubsBitRate = settings.maxSubsBitRate
369
- let subscribeDegradationParam = getHmsSubscribeDegradationSettings(settings.subscribeDegradation)
370
404
  let subscribeTo = settings.subscribeToRoles
371
405
 
372
- return ["maxSubsBitRate": maxSubsBitRate, "subscribeDegradationParam": subscribeDegradationParam, "subscribeTo": subscribeTo ?? []]
406
+ return ["maxSubsBitRate": maxSubsBitRate, "subscribeTo": subscribeTo ?? []]
373
407
  }
374
408
 
375
409
  static func getHmsSubscribeDegradationSettings (_ hmsSubscribeDegradationParams: HMSSubscribeDegradationPolicy?) -> [String: Any] {
376
410
  guard let params = hmsSubscribeDegradationParams
377
411
  else {
378
- return [:]
412
+ return [String: Any]()
379
413
  }
380
414
 
381
415
  let degradeGracePeriodSeconds = String(params.degradeGracePeriodSeconds ?? 0)
@@ -415,7 +449,7 @@ class HMSDecoder: NSObject {
415
449
 
416
450
  static func getHmsSimulcastLayers(_ videoSimulcastLayers: HMSSimulcastSettingsPolicy?) -> [String: Any] {
417
451
 
418
- guard let videoLayers = videoSimulcastLayers else { return [:] }
452
+ guard let videoLayers = videoSimulcastLayers else { return [String: Any]() }
419
453
 
420
454
  let layers = getHmsSimulcastLayerSettingsPolicy(videoLayers.layers)
421
455
 
@@ -460,7 +494,7 @@ class HMSDecoder: NSObject {
460
494
  return request
461
495
  }
462
496
 
463
- return [:]
497
+ return [String: Any]()
464
498
  }
465
499
 
466
500
  static func getHmsChangeTrackStateRequest(_ changeTrackStateRequest: HMSChangeTrackStateRequest, _ id: String) -> [String: Any] {
@@ -492,38 +526,60 @@ class HMSDecoder: NSObject {
492
526
  }
493
527
 
494
528
  static func getHMSBrowserRecordingState(_ data: HMSBrowserRecordingState?) -> [String: Any] {
529
+
495
530
  if let recordingState = data {
496
- let running = recordingState.running
497
- let startedAt = recordingState.startedAt?.timeIntervalSince1970 ?? 0
498
- let error = HMSDecoder.getError(recordingState.error)
499
531
 
500
- return ["running": running, "error": error, "startedAt": startedAt * 1000]
532
+ var state = [String: Any]()
533
+
534
+ state["running"] = recordingState.running
535
+
536
+ state["startedAt"] = (recordingState.startedAt?.timeIntervalSince1970 ?? 0) * 1000
537
+
538
+ if let error = recordingState.error {
539
+ state["error"] = HMSDecoder.getError(error)
540
+ }
541
+
542
+ return state
501
543
  } else {
502
- return [:]
544
+ return [String: Any]()
503
545
  }
504
546
  }
505
547
 
506
548
  static func getHMSRtmpStreamingState(_ data: HMSRTMPStreamingState?) -> [String: Any] {
507
549
  if let streamingState = data {
508
- let running = streamingState.running
509
- let startedAt = streamingState.startedAt?.timeIntervalSince1970 ?? 0
510
- let error = HMSDecoder.getError(streamingState.error)
511
550
 
512
- return ["running": running, "error": error, "startedAt": startedAt * 1000]
551
+ var state = [String: Any]()
552
+
553
+ state["running"] = streamingState.running
554
+
555
+ state["startedAt"] = (streamingState.startedAt?.timeIntervalSince1970 ?? 0) * 1000
556
+
557
+ if let error = streamingState.error {
558
+ state["error"] = HMSDecoder.getError(error)
559
+ }
560
+
561
+ return state
513
562
  } else {
514
- return [:]
563
+ return [String: Any]()
515
564
  }
516
565
  }
517
566
 
518
567
  static func getHMSServerRecordingState(_ data: HMSServerRecordingState?) -> [String: Any] {
519
568
  if let recordingState = data {
520
- let running = recordingState.running
521
- let startedAt = recordingState.startedAt?.timeIntervalSince1970 ?? 0
522
- let error = HMSDecoder.getError(recordingState.error)
523
569
 
524
- return ["running": running, "error": error, "startedAt": startedAt * 1000]
570
+ var state = [String: Any]()
571
+
572
+ state["running"] = recordingState.running
573
+
574
+ state["startedAt"] = (recordingState.startedAt?.timeIntervalSince1970 ?? 0) * 1000
575
+
576
+ if let error = recordingState.error {
577
+ state["error"] = HMSDecoder.getError(error)
578
+ }
579
+
580
+ return state
525
581
  } else {
526
- return [:]
582
+ return [String: Any]()
527
583
  }
528
584
  }
529
585
 
@@ -534,7 +590,7 @@ class HMSDecoder: NSObject {
534
590
 
535
591
  return ["running": running, "variants": variants]
536
592
  } else {
537
- return [:]
593
+ return [String: Any]()
538
594
  }
539
595
  }
540
596
 
@@ -547,7 +603,7 @@ class HMSDecoder: NSObject {
547
603
 
548
604
  return ["running": running, "startedAt": startedAt * 1000, "singleFilePerLayer": singleFilePerLayer, "videoOnDemand": enableVOD]
549
605
  } else {
550
- return [:]
606
+ return [String: Any]()
551
607
  }
552
608
  }
553
609
 
@@ -576,8 +632,15 @@ class HMSDecoder: NSObject {
576
632
  return ["roundTripTime": data.roundTripTime, "bytesSent": data.bytesSent, "bitrate": data.bitrate]
577
633
  }
578
634
 
579
- static func getLocalVideoStats(_ data: HMSLocalVideoStats) -> [String: Any] {
580
- return ["roundTripTime": data.roundTripTime, "bytesSent": data.bytesSent, "bitrate": data.bitrate, "resolution": HMSDecoder.getHmsVideoResolution(data.resolution), "frameRate": data.frameRate]
635
+ static func getLocalVideoStats(_ data: [HMSLocalVideoStats]) -> [[String: Any]] {
636
+ var dict = [[String: Any]]()
637
+ for stat in data {
638
+ dict.append(["roundTripTime": stat.roundTripTime,
639
+ "bytesSent": stat.bytesSent,
640
+ "bitrate": stat.bitrate,
641
+ "resolution": HMSDecoder.getHmsVideoResolution(stat.resolution), "frameRate": stat.frameRate])
642
+ }
643
+ return dict
581
644
  }
582
645
 
583
646
  static func getRemoteAudioStats(_ data: HMSRemoteAudioStats) -> [String: Any] {
@@ -589,11 +652,24 @@ class HMSDecoder: NSObject {
589
652
  }
590
653
 
591
654
  static func getHmsMessageRecipient(_ recipient: HMSMessageRecipient) -> [String: Any] {
592
- return ["recipientPeer": getHmsPeer(recipient.peerRecipient), "recipientRoles": getAllRoles(recipient.rolesRecipient), "recipientType": self.getRecipientType(from: recipient.type)]
655
+
656
+ var data = [String: Any]()
657
+
658
+ if let peer = recipient.peerRecipient {
659
+ data["recipientPeer"] = getHmsPeer(peer)
660
+ }
661
+
662
+ data["recipientType"] = getRecipientType(from: recipient.type)
663
+
664
+ if let roles = recipient.rolesRecipient {
665
+ data["recipientRoles"] = getAllRoles(roles)
666
+ }
667
+
668
+ return data
593
669
  }
594
670
 
595
671
  static func getHmsNetworkQuality(_ hmsNetworkQuality: HMSNetworkQuality?) -> [String: Any] {
596
- guard let networkQuality = hmsNetworkQuality else { return [:] }
672
+ guard let networkQuality = hmsNetworkQuality else { return [String: Any]() }
597
673
 
598
674
  return ["downlinkQuality": networkQuality.downlinkQuality]
599
675
  }
@@ -154,7 +154,7 @@ class HMSHelper: NSObject {
154
154
  let resolution = HMSVideoResolution.init(width: 320, height: 180)
155
155
  let maxBitrate = 512
156
156
  let maxFrameRate = 25
157
- let trackDescription = "video track description"
157
+ let trackDescription = ""
158
158
  let cameraFacing = settings?.value(forKey: "cameraFacing") as? String
159
159
  let cameraFacingEncoded = HMSHelper.getCameraFacing(cameraFacing)
160
160
  let initialState = settings?.value(forKey: "initialState") as? String
@@ -203,7 +203,7 @@ class HMSHelper: NSObject {
203
203
  do {
204
204
  self.audioMixerSourceHashMap = audioMixerSourceMap
205
205
  let audioMixerSource = try HMSAudioMixerSource(nodes: audioMixerSourceMap.values.map {$0})
206
- return HMSAudioTrackSettings(maxBitrate: 32, trackDescription: "audio track description", initialMuteState: initialStateEncoded, audioSource: audioMixerSource)
206
+ return HMSAudioTrackSettings(maxBitrate: 32, trackDescription: "", initialMuteState: initialStateEncoded, audioSource: audioMixerSource)
207
207
  } catch {
208
208
  delegate?.emitEvent("ON_ERROR", ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]], "id": id])
209
209
  return nil
@@ -211,7 +211,7 @@ class HMSHelper: NSObject {
211
211
  }
212
212
  }
213
213
 
214
- return HMSAudioTrackSettings(maxBitrate: 32, trackDescription: "audio track description", initialMuteState: initialStateEncoded, audioSource: nil)
214
+ return HMSAudioTrackSettings(maxBitrate: 32, trackDescription: "", initialMuteState: initialStateEncoded, audioSource: nil)
215
215
  }
216
216
 
217
217
  static func getAudioMixerSourceMap() -> [String: HMSAudioNode]? {
package/ios/HMSManager.m CHANGED
@@ -57,4 +57,7 @@ RCT_EXTERN_METHOD(setSessionMetaData: (NSDictionary) data :(RCTPromiseResolveBlo
57
57
  RCT_EXTERN_METHOD(getSessionMetaData: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
58
58
  RCT_EXTERN_METHOD(changeRoleOfPeer: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
59
59
  RCT_EXTERN_METHOD(changeRoleOfPeersWithRoles: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
60
+ RCT_EXTERN_METHOD(enableEvent: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
61
+ RCT_EXTERN_METHOD(disableEvent: (NSDictionary) data :(RCTPromiseResolveBlock) resolve :(RCTPromiseRejectBlock) reject)
62
+ RCT_EXTERN_METHOD(restrictData: (NSDictionary) data)
60
63
  @end
@@ -3,7 +3,7 @@ import HMSSDK
3
3
  @objc(HMSManager)
4
4
  class HMSManager: RCTEventEmitter {
5
5
 
6
- var hmsCollection: [String: HMSRNSDK] = [:]
6
+ var hmsCollection = [String: HMSRNSDK]()
7
7
 
8
8
  let ON_PREVIEW = "ON_PREVIEW"
9
9
  let ON_JOIN = "ON_JOIN"
@@ -401,6 +401,27 @@ class HMSManager: RCTEventEmitter {
401
401
  hms?.setSessionMetaData(data, resolve, reject)
402
402
  }
403
403
 
404
+ @objc
405
+ func enableEvent(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
406
+ let hms = HMSHelper.getHms(data, hmsCollection)
407
+
408
+ hms?.enableEvent(data, resolve, reject)
409
+ }
410
+
411
+ @objc
412
+ func disableEvent(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
413
+ let hms = HMSHelper.getHms(data, hmsCollection)
414
+
415
+ hms?.disableEvent(data, resolve, reject)
416
+ }
417
+
418
+ @objc
419
+ func restrictData(_ data: NSDictionary) {
420
+ let hms = HMSHelper.getHms(data, hmsCollection)
421
+
422
+ hms?.restrictData(data)
423
+ }
424
+
404
425
  // MARK: - HMS SDK Get APIs
405
426
  @objc
406
427
  func getRoom(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {