@100mslive/react-native-hms 0.8.4 → 0.9.2

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 (201) hide show
  1. package/README.md +247 -26
  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/gradle.xml +13 -0
  10. package/android/.idea/misc.xml +9 -0
  11. package/android/.idea/modules/android.iml +18 -0
  12. package/android/.idea/modules.xml +8 -0
  13. package/android/.idea/sonarlint/issuestore/f/0/f07866736216be0ee2aba49e392191aeae700a35 +0 -0
  14. package/android/.idea/sonarlint/issuestore/index.pb +3 -0
  15. package/android/.idea/vcs.xml +6 -0
  16. package/android/build.gradle +4 -2
  17. package/android/local.properties +8 -0
  18. package/android/src/main/java/com/reactnativehmssdk/HmsDecoder.kt +67 -5
  19. package/android/src/main/java/com/reactnativehmssdk/HmsHelper.kt +67 -64
  20. package/android/src/main/java/com/reactnativehmssdk/HmsModule.kt +97 -6
  21. package/android/src/main/java/com/reactnativehmssdk/HmsSDK.kt +302 -118
  22. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +77 -0
  23. package/android/src/main/java/com/reactnativehmssdk/HmsView.kt +28 -3
  24. package/android/src/main/java/com/reactnativehmssdk/HmssdkViewManager.kt +10 -1
  25. package/android/src/main/res/layout/hms_view.xml +19 -0
  26. package/ios/HmsDecoder.swift +250 -123
  27. package/ios/HmsHelper.swift +70 -38
  28. package/ios/HmsManager.m +11 -3
  29. package/ios/HmsManager.swift +123 -66
  30. package/ios/HmsSDK.swift +384 -195
  31. package/ios/HmsView.swift +50 -68
  32. package/ios/VideoCollectionViewCell.swift +4 -4
  33. package/lib/commonjs/classes/HMSBrowserRecordingState.js +6 -0
  34. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  35. package/lib/commonjs/classes/HMSEncoder.js +180 -3
  36. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  37. package/lib/commonjs/classes/HMSHLSConfig.js +23 -0
  38. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -0
  39. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js +23 -0
  40. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -0
  41. package/lib/commonjs/classes/HMSHLSRecordingConfig.js +23 -0
  42. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -0
  43. package/lib/commonjs/classes/HMSHLSRecordingState.js +29 -0
  44. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -0
  45. package/lib/commonjs/classes/HMSHLSStreamingState.js +23 -0
  46. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -0
  47. package/lib/commonjs/classes/HMSHLSVariant.js +29 -0
  48. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -0
  49. package/lib/commonjs/classes/HMSLocalAudioStats.js +26 -0
  50. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -0
  51. package/lib/commonjs/classes/HMSLocalVideoStats.js +32 -0
  52. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -0
  53. package/lib/commonjs/classes/HMSLogger.js +48 -21
  54. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  55. package/lib/commonjs/classes/HMSMessage.js +4 -1
  56. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  57. package/lib/commonjs/classes/HMSMessageRecipient.js +26 -0
  58. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -0
  59. package/lib/commonjs/classes/HMSMessageRecipientType.js +15 -0
  60. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -0
  61. package/lib/commonjs/classes/HMSPeerUpdate.js +1 -7
  62. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  63. package/lib/commonjs/classes/HMSPermissions.js +2 -2
  64. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  65. package/lib/commonjs/classes/HMSRTCStats.js +38 -0
  66. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -0
  67. package/lib/commonjs/classes/HMSRTCStatsReport.js +26 -0
  68. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -0
  69. package/lib/commonjs/classes/HMSRemoteAudioStats.js +32 -0
  70. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -0
  71. package/lib/commonjs/classes/HMSRemoteVideoStats.js +38 -0
  72. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -0
  73. package/lib/commonjs/classes/HMSRoom.js +9 -0
  74. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  75. package/lib/commonjs/classes/HMSRoomUpdate.js +7 -0
  76. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  77. package/lib/commonjs/classes/HMSRtmpStreamingState.js +6 -0
  78. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  79. package/lib/commonjs/classes/HMSSDK.js +488 -114
  80. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  81. package/lib/commonjs/classes/HMSServerRecordingState.js +3 -0
  82. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  83. package/lib/commonjs/classes/HMSUpdateListenerActions.js +5 -0
  84. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  85. package/lib/commonjs/classes/HmsView.js +26 -4
  86. package/lib/commonjs/classes/HmsView.js.map +1 -1
  87. package/lib/commonjs/index.js +196 -0
  88. package/lib/commonjs/index.js.map +1 -1
  89. package/lib/module/classes/HMSBrowserRecordingState.js +6 -0
  90. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  91. package/lib/module/classes/HMSEncoder.js +172 -3
  92. package/lib/module/classes/HMSEncoder.js.map +1 -1
  93. package/lib/module/classes/HMSHLSConfig.js +14 -0
  94. package/lib/module/classes/HMSHLSConfig.js.map +1 -0
  95. package/lib/module/classes/HMSHLSMeetingURLVariant.js +14 -0
  96. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -0
  97. package/lib/module/classes/HMSHLSRecordingConfig.js +14 -0
  98. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -0
  99. package/lib/module/classes/HMSHLSRecordingState.js +20 -0
  100. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -0
  101. package/lib/module/classes/HMSHLSStreamingState.js +14 -0
  102. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -0
  103. package/lib/module/classes/HMSHLSVariant.js +20 -0
  104. package/lib/module/classes/HMSHLSVariant.js.map +1 -0
  105. package/lib/module/classes/HMSLocalAudioStats.js +17 -0
  106. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -0
  107. package/lib/module/classes/HMSLocalVideoStats.js +23 -0
  108. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -0
  109. package/lib/module/classes/HMSLogger.js +48 -21
  110. package/lib/module/classes/HMSLogger.js.map +1 -1
  111. package/lib/module/classes/HMSMessage.js +4 -1
  112. package/lib/module/classes/HMSMessage.js.map +1 -1
  113. package/lib/module/classes/HMSMessageRecipient.js +17 -0
  114. package/lib/module/classes/HMSMessageRecipient.js.map +1 -0
  115. package/lib/module/classes/HMSMessageRecipientType.js +8 -0
  116. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -0
  117. package/lib/module/classes/HMSPeerUpdate.js +1 -7
  118. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  119. package/lib/module/classes/HMSPermissions.js +2 -2
  120. package/lib/module/classes/HMSPermissions.js.map +1 -1
  121. package/lib/module/classes/HMSRTCStats.js +29 -0
  122. package/lib/module/classes/HMSRTCStats.js.map +1 -0
  123. package/lib/module/classes/HMSRTCStatsReport.js +17 -0
  124. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -0
  125. package/lib/module/classes/HMSRemoteAudioStats.js +23 -0
  126. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -0
  127. package/lib/module/classes/HMSRemoteVideoStats.js +29 -0
  128. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -0
  129. package/lib/module/classes/HMSRoom.js +9 -0
  130. package/lib/module/classes/HMSRoom.js.map +1 -1
  131. package/lib/module/classes/HMSRoomUpdate.js +7 -0
  132. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  133. package/lib/module/classes/HMSRtmpStreamingState.js +6 -0
  134. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  135. package/lib/module/classes/HMSSDK.js +476 -115
  136. package/lib/module/classes/HMSSDK.js.map +1 -1
  137. package/lib/module/classes/HMSServerRecordingState.js +3 -0
  138. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  139. package/lib/module/classes/HMSUpdateListenerActions.js +5 -0
  140. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  141. package/lib/module/classes/HmsView.js +23 -4
  142. package/lib/module/classes/HmsView.js.map +1 -1
  143. package/lib/module/index.js +14 -0
  144. package/lib/module/index.js.map +1 -1
  145. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +4 -0
  146. package/lib/typescript/classes/HMSEncoder.d.ts +23 -0
  147. package/lib/typescript/classes/HMSHLSConfig.d.ts +10 -0
  148. package/lib/typescript/classes/HMSHLSMeetingURLVariant.d.ts +8 -0
  149. package/lib/typescript/classes/HMSHLSRecordingConfig.d.ts +8 -0
  150. package/lib/typescript/classes/HMSHLSRecordingState.d.ts +12 -0
  151. package/lib/typescript/classes/HMSHLSStreamingState.d.ts +9 -0
  152. package/lib/typescript/classes/HMSHLSVariant.d.ts +12 -0
  153. package/lib/typescript/classes/HMSLocalAudioStats.d.ts +10 -0
  154. package/lib/typescript/classes/HMSLocalVideoStats.d.ts +15 -0
  155. package/lib/typescript/classes/HMSLogger.d.ts +2 -0
  156. package/lib/typescript/classes/HMSMessage.d.ts +8 -4
  157. package/lib/typescript/classes/HMSMessageRecipient.d.ts +13 -0
  158. package/lib/typescript/classes/HMSMessageRecipientType.d.ts +5 -0
  159. package/lib/typescript/classes/HMSPeerUpdate.d.ts +2 -8
  160. package/lib/typescript/classes/HMSPermissions.d.ts +2 -2
  161. package/lib/typescript/classes/HMSRTCStats.d.ts +18 -0
  162. package/lib/typescript/classes/HMSRTCStatsReport.d.ts +11 -0
  163. package/lib/typescript/classes/HMSRemoteAudioStats.d.ts +14 -0
  164. package/lib/typescript/classes/HMSRemoteVideoStats.d.ts +19 -0
  165. package/lib/typescript/classes/HMSRoom.d.ts +8 -0
  166. package/lib/typescript/classes/HMSRoomUpdate.d.ts +8 -1
  167. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +4 -0
  168. package/lib/typescript/classes/HMSSDK.d.ts +325 -14
  169. package/lib/typescript/classes/HMSServerRecordingState.d.ts +2 -0
  170. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +6 -1
  171. package/lib/typescript/index.d.ts +14 -0
  172. package/package.json +1 -2
  173. package/react-native-hms.podspec +1 -1
  174. package/src/classes/HMSBrowserRecordingState.ts +10 -1
  175. package/src/classes/HMSEncoder.ts +193 -3
  176. package/src/classes/HMSHLSConfig.ts +15 -0
  177. package/src/classes/HMSHLSMeetingURLVariant.ts +9 -0
  178. package/src/classes/HMSHLSRecordingConfig.ts +9 -0
  179. package/src/classes/HMSHLSRecordingState.ts +18 -0
  180. package/src/classes/HMSHLSStreamingState.ts +11 -0
  181. package/src/classes/HMSHLSVariant.ts +18 -0
  182. package/src/classes/HMSLocalAudioStats.ts +15 -0
  183. package/src/classes/HMSLocalVideoStats.ts +23 -0
  184. package/src/classes/HMSLogger.ts +17 -3
  185. package/src/classes/HMSMessage.ts +11 -5
  186. package/src/classes/HMSMessageRecipient.ts +19 -0
  187. package/src/classes/HMSMessageRecipientType.ts +5 -0
  188. package/src/classes/HMSPeerUpdate.ts +1 -7
  189. package/src/classes/HMSPermissions.ts +3 -3
  190. package/src/classes/HMSRTCStats.ts +27 -0
  191. package/src/classes/HMSRTCStatsReport.ts +17 -0
  192. package/src/classes/HMSRemoteAudioStats.ts +21 -0
  193. package/src/classes/HMSRemoteVideoStats.ts +29 -0
  194. package/src/classes/HMSRoom.ts +11 -0
  195. package/src/classes/HMSRoomUpdate.ts +7 -0
  196. package/src/classes/HMSRtmpStreamingState.ts +10 -1
  197. package/src/classes/HMSSDK.tsx +618 -30
  198. package/src/classes/HMSServerRecordingState.ts +7 -1
  199. package/src/classes/HMSUpdateListenerActions.ts +5 -0
  200. package/src/classes/HmsView.tsx +32 -4
  201. package/src/index.ts +14 -0
package/ios/HmsSDK.swift CHANGED
@@ -8,15 +8,16 @@
8
8
  import Foundation
9
9
  import HMSSDK
10
10
 
11
-
12
11
  class HmsSDK: HMSUpdateListener, HMSPreviewListener {
13
-
12
+
14
13
  var hms: HMSSDK?
15
14
  var config: HMSConfig?
16
15
  var recentRoleChangeRequest: HMSRoleChangeRequest?
17
16
  var delegate: HmsManager?
18
17
  var id: String = "12345"
19
-
18
+ var rtcStatsAttached = false
19
+ var recentPreviewTracks: [HMSTrack]? = []
20
+
20
21
  let ON_PREVIEW = "ON_PREVIEW"
21
22
  let ON_JOIN = "ON_JOIN"
22
23
  let ON_ROOM_UPDATE = "ON_ROOM_UPDATE"
@@ -29,9 +30,14 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
29
30
  let ON_SPEAKER = "ON_SPEAKER"
30
31
  let RECONNECTING = "RECONNECTING"
31
32
  let RECONNECTED = "RECONNECTED"
32
-
33
+ let ON_RTC_STATS = "ON_RTC_STATS"
34
+ let ON_LOCAL_AUDIO_STATS = "ON_LOCAL_AUDIO_STATS"
35
+ let ON_LOCAL_VIDEO_STATS = "ON_LOCAL_VIDEO_STATS"
36
+ let ON_REMOTE_AUDIO_STATS = "ON_REMOTE_AUDIO_STATS"
37
+ let ON_REMOTE_VIDEO_STATS = "ON_REMOTE_VIDEO_STATS"
38
+
33
39
  // MARK: - Setup
34
-
40
+
35
41
  init(data: NSDictionary?, delegate manager: HmsManager?, uid id: String) {
36
42
  let videoSettings = HmsHelper.getLocalVideoSettings(data?.value(forKey: "video") as? NSDictionary)
37
43
  let audioSettings = HmsHelper.getLocalAudioSettings(data?.value(forKey: "audio") as? NSDictionary)
@@ -44,27 +50,27 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
44
50
  self.delegate = manager
45
51
  self.id = id
46
52
  }
47
-
53
+
48
54
  // MARK: - HMS SDK Actions
49
-
55
+
50
56
  private var previewInProgress = false
51
57
 
52
58
  func preview(_ credentials: NSDictionary) {
53
-
59
+
54
60
  guard !previewInProgress else {
55
61
  let error = HMSError(id: "PREVIEW", code: .joinErrorServer, message: "PREVIEW_IS_IN_PROGRESS", params: ["function": #function, "credentials": credentials])
56
62
  on(error: error)
57
63
  return
58
64
  }
59
-
65
+
60
66
  guard let authToken = credentials.value(forKey: "authToken") as? String,
61
67
  let user = credentials.value(forKey: "username") as? String
62
68
  else {
63
69
  let error = HMSError(id: "101", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
64
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
70
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
65
71
  return
66
72
  }
67
-
73
+
68
74
  let metadata = credentials.value(forKey: "metadata") as? String
69
75
  DispatchQueue.main.async { [weak self] in
70
76
  guard let strongSelf = self else { return }
@@ -79,25 +85,57 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
79
85
  }
80
86
  }
81
87
 
88
+ func previewForRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
89
+ guard let role = data.value(forKey: "role") as? String
90
+ else {
91
+ let error = HMSError(id: "111", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
92
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
93
+ reject?(error.message, "FAILED_TO_INITIATE_PREVIEW_FOR_ROLE",nil)
94
+ return
95
+ }
96
+
97
+ let roleObj = HmsHelper.getRoleFromRoleName(role, roles: hms?.roles)
98
+
99
+ if let extractedRole = roleObj {
100
+ hms?.preview(role: extractedRole, completion: { tracks, error in
101
+ if (error != nil) {
102
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
103
+ reject?(error?.message, error?.localizedDescription, nil)
104
+ return
105
+ }
106
+ self.recentPreviewTracks = tracks
107
+
108
+ let decodedTracks = HmsDecoder.getAllTracks(tracks ?? [])
109
+
110
+ resolve?(["success": true, "tracks": decodedTracks])
111
+ return
112
+ })
113
+ }
114
+ }
82
115
 
116
+ func cancelPreview() {
117
+ self.recentPreviewTracks = []
118
+ hms?.cancelPreview()
119
+ }
120
+
83
121
  func join(_ credentials: NSDictionary) {
84
-
122
+
85
123
  guard !previewInProgress else {
86
124
  let error = HMSError(id: "PREVIEW", code: .joinErrorServer, message: "PREVIEW_IS_IN_PROGRESS", params: ["function": #function, "credentials": credentials])
87
125
  on(error: error)
88
126
  return
89
127
  }
90
-
128
+
91
129
  guard let authToken = credentials.value(forKey: "authToken") as? String,
92
130
  let user = credentials.value(forKey: "username") as? String
93
131
  else {
94
132
  let error = HMSError(id: "102", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
95
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
133
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
96
134
  return
97
135
  }
98
136
 
99
137
  let metadata = credentials.value(forKey: "metadata") as? String
100
-
138
+
101
139
  DispatchQueue.main.async { [weak self] in
102
140
  guard let strongSelf = self else { return }
103
141
  if let config = strongSelf.config {
@@ -113,68 +151,68 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
113
151
  }
114
152
  }
115
153
  }
116
-
154
+
117
155
  func setLocalMute(_ data: NSDictionary) {
118
156
  guard let isMute = data.value(forKey: "isMute") as? Bool
119
157
  else {
120
158
  let error = HMSError(id: "106", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
121
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
159
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
122
160
  return
123
161
  }
124
-
162
+
125
163
  DispatchQueue.main.async { [weak self] in
126
164
  self?.hms?.localPeer?.localAudioTrack()?.setMute(isMute)
127
165
  }
128
166
  }
129
-
167
+
130
168
  func setLocalVideoMute(_ data: NSDictionary) {
131
169
  guard let isMute = data.value(forKey: "isMute") as? Bool
132
170
  else {
133
171
  let error = HMSError(id: "107", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
134
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
172
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
135
173
  return
136
174
  }
137
-
175
+
138
176
  DispatchQueue.main.async { [weak self] in
139
177
  self?.hms?.localPeer?.localVideoTrack()?.setMute(isMute)
140
178
  }
141
179
  }
142
-
180
+
143
181
  func switchCamera() {
144
182
  DispatchQueue.main.async { [weak self] in
145
183
  self?.hms?.localPeer?.localVideoTrack()?.switchCamera()
146
184
  }
147
185
  }
148
-
186
+
149
187
  func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
150
188
  DispatchQueue.main.async { [weak self] in
151
189
  guard let strongSelf = self else { return }
152
190
  self?.config = nil
153
191
  self?.recentRoleChangeRequest = nil
154
192
  self?.hms?.leave({ success, error in
155
- if(success){
193
+ if success {
156
194
  resolve?("")
157
- }else{
158
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id":strongSelf.id])
159
- reject?(nil, "error in leave",nil)
195
+ } else {
196
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id": strongSelf.id])
197
+ reject?(nil, "error in leave", nil)
160
198
  }
161
199
  })
162
200
  }
163
201
  }
164
-
202
+
165
203
  func sendBroadcastMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
166
204
  guard let message = data.value(forKey: "message") as? String
167
205
  else {
168
206
  let error = HMSError(id: "108", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
169
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
207
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
170
208
  return
171
209
  }
172
-
210
+
173
211
  let type = data.value(forKey: "type") as? String ?? "chat"
174
-
212
+
175
213
  DispatchQueue.main.async { [weak self] in
176
214
  self?.hms?.sendBroadcastMessage(type: type, message: message, completion: { message, error in
177
- if (error == nil) {
215
+ if error == nil {
178
216
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
179
217
  return
180
218
  } else {
@@ -185,21 +223,21 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
185
223
  })
186
224
  }
187
225
  }
188
-
226
+
189
227
  func sendGroupMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
190
228
  guard let message = data.value(forKey: "message") as? String,
191
229
  let targetedRoles = data.value(forKey: "roles") as? [String]
192
230
  else {
193
231
  let error = HMSError(id: "109", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
194
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
232
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
195
233
  return
196
234
  }
197
-
235
+
198
236
  let type = data.value(forKey: "type") as? String ?? "chat"
199
237
  DispatchQueue.main.async { [weak self] in
200
238
  let encodedTargetedRoles = HmsHelper.getRolesFromRoleNames(targetedRoles, roles: self?.hms?.roles)
201
239
  self?.hms?.sendGroupMessage(type: type, message: message, roles: encodedTargetedRoles, completion: { message, error in
202
- if (error == nil) {
240
+ if error == nil {
203
241
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
204
242
  return
205
243
  } else {
@@ -210,21 +248,21 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
210
248
  })
211
249
  }
212
250
  }
213
-
251
+
214
252
  func sendDirectMessage(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
215
253
  guard let message = data.value(forKey: "message") as? String,
216
254
  let peerId = data.value(forKey: "peerId") as? String
217
255
  else {
218
256
  let error = HMSError(id: "110", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
219
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
257
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
220
258
  return
221
259
  }
222
-
260
+
223
261
  let type = data.value(forKey: "type") as? String ?? "chat"
224
262
  DispatchQueue.main.async { [weak self] in
225
263
  guard let peer = HmsHelper.getRemotePeerFromPeerId(peerId, remotePeers: self?.hms?.remotePeers) else { return }
226
264
  self?.hms?.sendDirectMessage(type: type, message: message, peer: peer, completion: { message, error in
227
- if (error == nil) {
265
+ if error == nil {
228
266
  resolve?(["success": true, "data": ["sender": message?.sender?.name ?? "", "message": message?.message ?? "", "type": message?.type]])
229
267
  return
230
268
  } else {
@@ -233,124 +271,126 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
233
271
  return
234
272
  }
235
273
  })
236
- self?.hms?.sendDirectMessage(type: type, message: message, peer: peer)
237
274
  }
238
275
  }
239
-
276
+
240
277
  func acceptRoleChange(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
241
-
278
+
242
279
  DispatchQueue.main.async { [weak self] in
243
-
280
+
244
281
  guard let request = self?.recentRoleChangeRequest else { return }
245
-
282
+
246
283
  self?.hms?.accept(changeRole: request, completion: { success, error in
247
- if(success) {
284
+ if success {
248
285
  resolve?(["success": true])
249
- } else{
250
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id":self?.id ?? "12345"])
251
- reject?(error?.message, error?.localizedDescription,nil)
286
+ } else {
287
+ self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id": self?.id ?? "12345"])
288
+ reject?(error?.message, error?.localizedDescription, nil)
252
289
  }
253
290
  })
254
-
291
+ self?.recentPreviewTracks = []
255
292
  self?.recentRoleChangeRequest = nil
256
293
  }
257
294
  }
258
-
295
+
259
296
  func changeRole(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
260
-
297
+
261
298
  guard let peerId = data.value(forKey: "peerId") as? String,
262
299
  let role = data.value(forKey: "role") as? String
263
300
  else {
264
301
  let error = HMSError(id: "111", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
265
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
302
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
266
303
  return
267
304
  }
268
-
305
+
269
306
  let force = data.value(forKey: "force") as? Bool ?? false
270
-
307
+
271
308
  DispatchQueue.main.async { [weak self] in
272
- guard let peer = HmsHelper.getPeerFromPeerId(peerId, remotePeers: self?.hms?.remotePeers, localPeer:self?.hms?.localPeer),
309
+ guard let peer = HmsHelper.getPeerFromPeerId(peerId, remotePeers: self?.hms?.remotePeers, localPeer: self?.hms?.localPeer),
273
310
  let role = HmsHelper.getRoleFromRoleName(role, roles: self?.hms?.roles)
274
311
  else { return }
275
-
312
+
276
313
  self?.hms?.changeRole(for: peer, to: role, force: force, completion: { success, error in
277
- if(success) {
314
+ if success {
278
315
  resolve?(["success": true])
279
- } else{
280
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id":self?.id ?? "12345"])
281
- reject?(error?.message, error?.localizedDescription,nil)
316
+ } else {
317
+ self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id": self?.id ?? "12345"])
318
+ reject?(error?.message, error?.localizedDescription, nil)
282
319
  }
283
320
  })
284
321
  }
285
322
  }
286
-
323
+
287
324
  func changeTrackState(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
288
-
325
+
289
326
  guard let trackId = data.value(forKey: "trackId") as? String
290
327
  else {
291
328
  let error = HMSError(id: "112", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
292
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
329
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
293
330
  return
294
331
  }
295
-
332
+
296
333
  let mute = data.value(forKey: "mute") as? Bool ?? true
297
-
334
+
298
335
  DispatchQueue.main.async { [weak self] in
299
336
  guard let remotePeers = self?.hms?.remotePeers,
300
337
  let track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
301
338
  else { return }
302
339
 
303
340
  self?.hms?.changeTrackState(for: track, mute: mute, completion: { success, error in
304
- if(success) {
341
+ if success {
305
342
  resolve?(["success": true])
306
- } else{
307
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id":self?.id ?? "12345"])
343
+ } else {
344
+ self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id": self?.id ?? "12345"])
308
345
  reject?(error?.message, error?.localizedDescription, nil)
309
346
  }
310
347
  })
311
348
  }
312
349
  }
313
-
314
- func changeTrackStateRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
315
-
316
- guard let source = data.value(forKey: "source") as? String,
317
- let targetedRoles = data.value(forKey: "roles") as? [String],
318
- let type = data.value(forKey: "type") as? String
350
+
351
+ func changeTrackStateForRoles(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
352
+
353
+ guard let mute = data.value(forKey: "mute") as? Bool
319
354
  else {
320
355
  let error = HMSError(id: "113", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
321
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
356
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
322
357
  return
323
358
  }
324
- var decodeType: HMSTrackKind;
325
- if( type == "AUDIO") {
326
- decodeType = HMSTrackKind.audio
327
- }else {
328
- decodeType = HMSTrackKind.video
359
+ let source = data.value(forKey: "source") as? String
360
+ let targetedRoles = data.value(forKey: "roles") as? [String]
361
+ let type = data.value(forKey: "type") as? String
362
+
363
+ var decodeType: HMSTrackKind?
364
+ if type != nil {
365
+ if type == "AUDIO" {
366
+ decodeType = HMSTrackKind.audio
367
+ } else {
368
+ decodeType = HMSTrackKind.video
369
+ }
329
370
  }
330
- let mute = data.value(forKey: "mute") as? Bool ?? true
331
-
371
+
332
372
  DispatchQueue.main.async { [weak self] in
333
373
  let encodedTargetedRoles = HmsHelper.getRolesFromRoleNames(targetedRoles, roles: self?.hms?.roles)
334
374
  self?.hms?.changeTrackState(mute: mute, for: decodeType, source: source, roles: encodedTargetedRoles, completion: { success, error in
335
- if(success) {
375
+ if success {
336
376
  resolve?(["success": true])
337
- } else{
338
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id":self?.id ?? "12345"])
339
- reject?(error?.message, error?.localizedDescription,nil)
377
+ } else {
378
+ self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id": self?.id ?? "12345"])
379
+ reject?(error?.message, error?.localizedDescription, nil)
340
380
  }
341
381
  })
342
382
  }
343
383
  }
344
-
384
+
345
385
  func isMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
346
386
  guard let trackId = data.value(forKey: "trackId") as? String
347
387
  else {
348
388
  reject?(nil, "NO_SDK_ID", nil)
349
389
  let error = HMSError(id: "114", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
350
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
390
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
351
391
  return
352
392
  }
353
-
393
+
354
394
  DispatchQueue.main.async { [weak self] in
355
395
  guard let strongSelf = self else { return }
356
396
  guard let localPeer = self?.hms?.localPeer,
@@ -360,7 +400,7 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
360
400
  let track = HmsHelper.getTrackFromTrackId(trackId, remotePeers)
361
401
  else {
362
402
  let error = HMSError(id: "120", code: HMSErrorCode.genericErrorUnknown, message: "NOT_FOUND")
363
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id":strongSelf.id])
403
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id": strongSelf.id])
364
404
  reject?(nil, "NOT_FOUND", nil)
365
405
  return
366
406
  }
@@ -372,64 +412,63 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
372
412
  resolve?(mute)
373
413
  }
374
414
  }
375
-
415
+
376
416
  func removePeer(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
377
-
417
+
378
418
  guard let peerId = data.value(forKey: "peerId") as? String
379
419
  else {
380
420
  let error = HMSError(id: "115", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
381
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
421
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
382
422
  return
383
423
  }
384
-
424
+
385
425
  let reason = data.value(forKey: "reason") as? String
386
-
426
+
387
427
  DispatchQueue.main.async { [weak self] in
388
428
 
389
429
  guard let remotePeers = self?.hms?.remotePeers,
390
430
  let peer = HmsHelper.getRemotePeerFromPeerId(peerId, remotePeers: remotePeers)
391
431
  else { return }
392
-
432
+
393
433
  self?.hms?.removePeer(peer, reason: reason ?? "Removed from room", completion: { success, error in
394
- if(success) {
434
+ if success {
395
435
  resolve?(["success": true])
396
- } else{
397
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id":self?.id ?? "12345"])
398
- reject?(error?.message, error?.localizedDescription,nil)
436
+ } else {
437
+ self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id": self?.id ?? "12345"])
438
+ reject?(error?.message, error?.localizedDescription, nil)
399
439
  }
400
440
  })
401
441
  }
402
442
  }
403
-
404
-
443
+
405
444
  func endRoom(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
406
-
445
+
407
446
  guard let lock = data.value(forKey: "lock") as? Bool,
408
447
  let reason = data.value(forKey: "reason") as? String
409
448
  else {
410
449
  let error = HMSError(id: "116", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
411
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
450
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
412
451
  return
413
452
  }
414
-
453
+
415
454
  DispatchQueue.main.async { [weak self] in
416
455
  self?.hms?.endRoom(lock: lock, reason: reason, completion: { success, error in
417
- if(success) {
456
+ if success {
418
457
  resolve?(["success": true])
419
- } else{
420
- self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id":self?.id ?? "12345"])
421
- reject?(error?.message, error?.localizedDescription,nil)
458
+ } else {
459
+ self?.delegate?.emitEvent("ON_ERROR", ["event": self?.ON_ERROR ?? "", "error": HmsDecoder.getError(error), "id": self?.id ?? "12345"])
460
+ reject?(error?.message, error?.localizedDescription, nil)
422
461
  }
423
462
  })
424
463
  }
425
464
  }
426
-
465
+
427
466
  func isPlaybackAllowed(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
428
467
  guard let trackId = data.value(forKey: "trackId") as? String
429
468
  else {
430
469
  reject?(nil, "NOT_FOUND", nil)
431
470
  let error = HMSError(id: "117", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
432
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
471
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
433
472
  return
434
473
  }
435
474
  DispatchQueue.main.async { [weak self] in
@@ -437,41 +476,41 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
437
476
  guard let remotePeers = self?.hms?.remotePeers
438
477
  else {
439
478
  let error = HMSError(id: "121", code: HMSErrorCode.genericErrorUnknown, message: "NOT_FOUND")
440
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id":strongSelf.id])
479
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id": strongSelf.id])
441
480
  reject?(nil, "NOT_FOUND", nil)
442
481
  return
443
482
  }
444
483
  let remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
445
484
  let remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
446
- if (remoteAudioTrack != nil) {
485
+ if remoteAudioTrack != nil {
447
486
  let isPlaybackAllowed = remoteAudioTrack?.isPlaybackAllowed()
448
487
  resolve?(isPlaybackAllowed)
449
488
  return
450
- } else if (remoteVideoTrack != nil) {
489
+ } else if remoteVideoTrack != nil {
451
490
  let isPlaybackAllowed = remoteVideoTrack?.isPlaybackAllowed()
452
491
  resolve?(isPlaybackAllowed)
453
492
  return
454
493
  } else {
455
494
  let error = HMSError(id: "122", code: HMSErrorCode.genericErrorUnknown, message: "NOT_FOUND")
456
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id":strongSelf.id])
457
- reject?(nil, "NOT_FOUND",nil)
495
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id": strongSelf.id])
496
+ reject?(nil, "NOT_FOUND", nil)
458
497
  return
459
498
  }
460
499
  }
461
500
  }
462
-
501
+
463
502
  func getRoom(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
464
503
  let roomData = HmsDecoder.getHmsRoom(hms?.room)
465
-
504
+
466
505
  resolve?(roomData)
467
506
  }
468
-
507
+
469
508
  func setPlaybackAllowed(_ data: NSDictionary) {
470
509
  guard let trackId = data.value(forKey: "trackId") as? String,
471
510
  let playbackAllowed = data.value(forKey: "playbackAllowed") as? Bool
472
511
  else {
473
512
  let error = HMSError(id: "118", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
474
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
513
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
475
514
  return
476
515
  }
477
516
  DispatchQueue.main.async { [weak self] in
@@ -481,33 +520,33 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
481
520
  }
482
521
  let remoteAudioTrack = HmsHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
483
522
  let remoteVideoTrack = HmsHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
484
- if (remoteAudioTrack != nil) {
485
- if(playbackAllowed){
523
+ if remoteAudioTrack != nil {
524
+ if playbackAllowed {
486
525
  remoteAudioTrack?.setPlaybackAllowed(playbackAllowed)
487
- }else {
526
+ } else {
488
527
  remoteAudioTrack?.setPlaybackAllowed(playbackAllowed)
489
528
  }
490
- } else if (remoteVideoTrack != nil) {
529
+ } else if remoteVideoTrack != nil {
491
530
  remoteVideoTrack?.setPlaybackAllowed(playbackAllowed)
492
531
  }
493
532
  }
494
533
  }
495
-
534
+
496
535
  func changeMetadata(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
497
536
  guard let metadata = data.value(forKey: "metadata") as? String
498
537
  else {
499
538
  let error = HMSError(id: "123", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
500
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
539
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
501
540
  reject?(nil, "REQUIRED_KEYS_NOT_FOUND", nil)
502
541
  return
503
542
  }
504
-
543
+
505
544
  hms?.change(metadata: metadata, completion: { success, error in
506
- if (success) {
545
+ if success {
507
546
  resolve?(["success": success])
508
547
  return
509
548
  } else {
510
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id":self.id])
549
+ self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id": self.id])
511
550
  reject?(error?.message, error?.localizedDescription, nil)
512
551
  return
513
552
  }
@@ -519,86 +558,161 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
519
558
  let volume = data.value(forKey: "volume") as? Double
520
559
  else {
521
560
  let error = HMSError(id: "124", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
522
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
561
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
523
562
  return
524
563
  }
525
564
 
526
565
  DispatchQueue.main.async { [weak self] in
527
566
  guard let strongSelf = self else { return }
528
567
  let remotePeers = self?.hms?.remotePeers
529
-
568
+
530
569
  let remoteAudioTrack = HmsHelper.getRemoteAudioAuxiliaryTrackFromTrackId(trackId, remotePeers)
531
-
532
- if (remoteAudioTrack != nil) {
570
+
571
+ if remoteAudioTrack != nil {
533
572
  remoteAudioTrack?.setVolume(volume)
534
573
  } else {
535
574
  let error = HMSError(id: "125", code: HMSErrorCode.genericErrorUnknown, message: "TRACK_ID_NOT_FOUND_IN_REMOTE_TRACKS")
536
- strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id":strongSelf.id])
575
+ strongSelf.delegate?.emitEvent(strongSelf.ON_ERROR, ["event": strongSelf.ON_ERROR, "error": HmsDecoder.getError(error), "id": strongSelf.id])
537
576
  }
538
577
  }
539
578
  }
540
-
579
+
541
580
  func startRTMPOrRecording(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
542
581
  guard let record = data.value(forKey: "record") as? Bool
543
582
  else {
544
583
  let error = HMSError(id: "126", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
545
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
584
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
546
585
  return
547
586
  }
548
-
587
+
549
588
  let meetingString = data.value(forKey: "meetingURL") as? String
550
589
  let rtmpStrings = data.value(forKey: "rtmpURLs") as? [String]
551
-
552
- var meetingUrl: URL? = nil
590
+
591
+ var meetingUrl: URL?
553
592
  if let meetLink = meetingString {
554
593
  meetingUrl = URL(string: meetLink)
555
594
  } else {
556
595
  let error = HMSError(id: "127", code: HMSErrorCode.genericErrorUnknown, message: "INVALID_MEETING_URL_PASSED")
557
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
596
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
558
597
  }
559
-
598
+
560
599
  let URLs = HmsHelper.getRtmpUrls(rtmpStrings)
561
-
562
-
600
+
563
601
  let config = HMSRTMPConfig(meetingURL: meetingUrl, rtmpURLs: URLs, record: record)
564
602
  hms?.startRTMPOrRecording(config: config, completion: { success, error in
565
- if (success) {
603
+ if success {
566
604
  let roomData = HmsDecoder.getHmsRoom(self.hms?.room)
567
605
  let type = self.getString(from: HMSRoomUpdate.browserRecordingStateUpdated)
568
-
606
+
569
607
  let localPeerData = HmsDecoder.getHmsLocalPeer(self.hms?.localPeer)
570
608
  let remotePeerData = HmsDecoder.getHmsRemotePeers(self.hms?.remotePeers)
571
609
  self.delegate?.emitEvent(self.ON_ROOM_UPDATE, ["event": self.ON_ROOM_UPDATE, "id": self.id, "type": type, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
572
610
  resolve?(["success": success])
573
611
  return
574
612
  } else {
575
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id":self.id])
613
+ self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id": self.id])
576
614
  reject?(error?.message, error?.localizedDescription, nil)
577
615
  return
578
616
  }
579
617
  })
580
618
  }
581
-
619
+
582
620
  func stopRtmpAndRecording(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
583
621
  hms?.stopRTMPAndRecording(completion: { success, error in
584
- if (success) {
622
+ if success {
585
623
  let roomData = HmsDecoder.getHmsRoom(self.hms?.room)
586
624
  let type = self.getString(from: HMSRoomUpdate.browserRecordingStateUpdated)
587
-
625
+
626
+ let localPeerData = HmsDecoder.getHmsLocalPeer(self.hms?.localPeer)
627
+ let remotePeerData = HmsDecoder.getHmsRemotePeers(self.hms?.remotePeers)
628
+ self.delegate?.emitEvent(self.ON_ROOM_UPDATE, ["event": self.ON_ROOM_UPDATE, "id": self.id, "type": type, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
629
+ resolve?(["success": success])
630
+ return
631
+ } else {
632
+ self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id": self.id])
633
+ reject?(error?.message, error?.localizedDescription, nil)
634
+ return
635
+ }
636
+ })
637
+ }
638
+
639
+ func startHLSStreaming(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
640
+ guard let meetingURLVariants = data.value(forKey: "meetingURLVariants") as? [[String: Any]]?
641
+ else {
642
+ let error = HMSError(id: "126", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
643
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
644
+ return
645
+ }
646
+
647
+ let recordConfig = HmsHelper.getHlsRecordingConfig(data)
648
+ let hlsMeetingUrlVariant = HmsHelper.getHMSHLSMeetingURLVariants(meetingURLVariants)
649
+ let config = HMSHLSConfig(variants: hlsMeetingUrlVariant, recording: recordConfig)
650
+
651
+ hms?.startHLSStreaming(config: config, completion: { success, error in
652
+ if success {
653
+ let roomData = HmsDecoder.getHmsRoom(self.hms?.room)
654
+ let type = self.getString(from: HMSRoomUpdate.hlsStreamingStateUpdated)
655
+
656
+ let localPeerData = HmsDecoder.getHmsLocalPeer(self.hms?.localPeer)
657
+ let remotePeerData = HmsDecoder.getHmsRemotePeers(self.hms?.remotePeers)
658
+ self.delegate?.emitEvent(self.ON_ROOM_UPDATE, ["event": self.ON_ROOM_UPDATE, "id": self.id, "type": type, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
659
+ resolve?(["success": success])
660
+ return
661
+ } else {
662
+ self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id": self.id])
663
+ reject?(error?.message, error?.localizedDescription, nil)
664
+ return
665
+ }
666
+ })
667
+ }
668
+
669
+ func stopHLSStreaming(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
670
+ hms?.stopHLSStreaming(config: nil, completion: { success, error in
671
+ if success {
672
+ let roomData = HmsDecoder.getHmsRoom(self.hms?.room)
673
+ let type = self.getString(from: HMSRoomUpdate.browserRecordingStateUpdated)
674
+
588
675
  let localPeerData = HmsDecoder.getHmsLocalPeer(self.hms?.localPeer)
589
676
  let remotePeerData = HmsDecoder.getHmsRemotePeers(self.hms?.remotePeers)
590
677
  self.delegate?.emitEvent(self.ON_ROOM_UPDATE, ["event": self.ON_ROOM_UPDATE, "id": self.id, "type": type, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
591
678
  resolve?(["success": success])
592
679
  return
593
680
  } else {
594
- self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id":self.id])
681
+ self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id": self.id])
595
682
  reject?(error?.message, error?.localizedDescription, nil)
596
683
  return
597
684
  }
598
685
  })
599
686
  }
600
687
 
601
- //TODO: to be implemented after volume is exposed for iOS
688
+ func changeName(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
689
+ guard let name = data.value(forKey: "name") as? String
690
+ else {
691
+ let error = HMSError(id: "123", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
692
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
693
+ reject?(nil, "REQUIRED_KEYS_NOT_FOUND", nil)
694
+ return
695
+ }
696
+
697
+ hms?.change(name: name) { success, error in
698
+ if success {
699
+ resolve?(["success": success])
700
+ } else {
701
+ self.delegate?.emitEvent(self.ON_ERROR, ["event": self.ON_ERROR, "error": HmsDecoder.getError(error), "id": self.id])
702
+ reject?(error?.message, error?.localizedDescription, nil)
703
+ }
704
+ }
705
+ }
706
+
707
+ func enableRTCStats() {
708
+ rtcStatsAttached = true
709
+ }
710
+
711
+ func disableRTCStats() {
712
+ rtcStatsAttached = false
713
+ }
714
+
715
+ // TODO: to be implemented after volume is exposed for iOS
602
716
  // func getVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
603
717
  // guard let trackId = data.value(forKey: "trackId") as? String
604
718
  // else {
@@ -612,7 +726,7 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
612
726
  //
613
727
  // }
614
728
  // }
615
-
729
+
616
730
  // func setLocalVideoSettings(_ data: NSDictionary) {
617
731
  // let localVideoTrack = self.hms?.localPeer?.localVideoTrack()
618
732
  //
@@ -623,104 +737,104 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
623
737
  // }
624
738
  // localVideoTrack?.settings = settings
625
739
  // }
626
-
740
+
627
741
  // MARK: - HMS SDK Delegate Callbacks
628
-
742
+
629
743
  func on(join room: HMSRoom) {
630
744
  // Callback from join action
631
745
  let roomData = HmsDecoder.getHmsRoom(room)
632
746
  let localPeerData = HmsDecoder.getHmsLocalPeer(hms?.localPeer)
633
747
  let remotePeerData = HmsDecoder.getHmsRemotePeers(hms?.remotePeers)
634
-
748
+
635
749
  let decodedRoles = HmsDecoder.getAllRoles(hms?.roles)
636
-
637
- self.delegate?.emitEvent(ON_JOIN, ["event": ON_JOIN, "id": self.id , "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData, "roles": decodedRoles])
750
+ self.recentPreviewTracks = []
751
+ self.delegate?.emitEvent(ON_JOIN, ["event": ON_JOIN, "id": self.id, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData, "roles": decodedRoles])
638
752
  }
639
-
753
+
640
754
  func onPreview(room: HMSRoom, localTracks: [HMSTrack]) {
641
755
  let previewTracks = HmsDecoder.getPreviewTracks(localTracks)
642
756
  let hmsRoom = HmsDecoder.getHmsRoom(room)
643
757
  let localPeerData = HmsDecoder.getHmsLocalPeer(hms?.localPeer)
644
-
758
+
645
759
  previewInProgress = false
646
- self.delegate?.emitEvent(ON_PREVIEW, ["event": ON_PREVIEW, "id": self.id , "room": hmsRoom, "previewTracks": previewTracks, "localPeer": localPeerData])
760
+ self.delegate?.emitEvent(ON_PREVIEW, ["event": ON_PREVIEW, "id": self.id, "room": hmsRoom, "previewTracks": previewTracks, "localPeer": localPeerData])
647
761
  }
648
-
762
+
649
763
  func on(room: HMSRoom, update: HMSRoomUpdate) {
650
764
  // Listener for any updation in room
651
765
  let roomData = HmsDecoder.getHmsRoom(room)
652
766
  let type = getString(from: update)
653
-
767
+
654
768
  let localPeerData = HmsDecoder.getHmsLocalPeer(hms?.localPeer)
655
769
  let remotePeerData = HmsDecoder.getHmsRemotePeers(hms?.remotePeers)
656
-
657
- self.delegate?.emitEvent(ON_ROOM_UPDATE, ["event": ON_ROOM_UPDATE, "id": self.id , "type": type, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
770
+
771
+ self.delegate?.emitEvent(ON_ROOM_UPDATE, ["event": ON_ROOM_UPDATE, "id": self.id, "type": type, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
658
772
  }
659
-
773
+
660
774
  func on(peer: HMSPeer, update: HMSPeerUpdate) {
661
775
  // Listener for updates in Peers
662
776
  let roomData = HmsDecoder.getHmsRoom(hms?.room)
663
777
  let type = getString(from: update)
664
-
778
+
665
779
  let localPeerData = HmsDecoder.getHmsLocalPeer(hms?.localPeer)
666
780
  let remotePeerData = HmsDecoder.getHmsRemotePeers(hms?.remotePeers)
667
781
  let hmsPeer = HmsDecoder.getHmsPeer(peer)
668
-
782
+
669
783
  self.delegate?.emitEvent(ON_PEER_UPDATE, ["event": ON_PEER_UPDATE, "id": self.id, "type": type, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData, "peer": hmsPeer])
670
784
  }
671
-
785
+
672
786
  func on(track: HMSTrack, update: HMSTrackUpdate, for peer: HMSPeer) {
673
787
  // Listener for updates in Tracks
674
788
  let roomData = HmsDecoder.getHmsRoom(hms?.room)
675
789
  let type = getString(from: update)
676
-
790
+
677
791
  let localPeerData = HmsDecoder.getHmsLocalPeer(hms?.localPeer)
678
792
  let remotePeerData = HmsDecoder.getHmsRemotePeers(hms?.remotePeers)
679
793
  let hmsPeer = HmsDecoder.getHmsPeer(peer)
680
794
  let hmsTrack = HmsDecoder.getHmsTrack(track)
681
-
795
+
682
796
  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])
683
797
  }
684
-
798
+
685
799
  func on(error: HMSError) {
686
- if (previewInProgress) { previewInProgress = false }
687
- self.delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
800
+ if previewInProgress { previewInProgress = false }
801
+ self.delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
688
802
  }
689
-
803
+
690
804
  func on(message: HMSMessage) {
691
- self.delegate?.emitEvent(ON_MESSAGE, ["event": ON_MESSAGE, "id": self.id , "sender": message.sender?.name ?? "", "time": message.time, "message": message.message, "type": message.type])
805
+ self.delegate?.emitEvent(ON_MESSAGE, ["event": ON_MESSAGE, "id": self.id, "sender": HmsDecoder.getHmsPeer(message.sender), "recipient": HmsDecoder.getHmsMessageRecipient(message.recipient), "time": message.time.timeIntervalSince1970 * 1000, "message": message.message, "type": message.type])
692
806
  }
693
-
807
+
694
808
  func on(updated speakers: [HMSSpeaker]) {
695
- var speakerPeerIds: [[String : Any]] = []
809
+ var speakerPeerIds: [[String: Any]] = []
696
810
  for speaker in speakers {
697
811
  speakerPeerIds.append(["peer": HmsDecoder.getHmsPeer(speaker.peer), "level": speaker.level, "track": HmsDecoder.getHmsTrack(speaker.track)])
698
812
  }
699
- self.delegate?.emitEvent(ON_SPEAKER, ["event": ON_SPEAKER, "id": self.id , "count": speakers.count, "peers" :speakerPeerIds])
813
+ self.delegate?.emitEvent(ON_SPEAKER, ["event": ON_SPEAKER, "id": self.id, "count": speakers.count, "peers": speakerPeerIds])
700
814
  }
701
-
815
+
702
816
  func onReconnecting() {
703
817
  self.delegate?.emitEvent(RECONNECTING, ["event": RECONNECTING, "id": self.id ])
704
818
  }
705
-
819
+
706
820
  func onReconnected() {
707
821
  self.delegate?.emitEvent(RECONNECTED, ["event": RECONNECTED, "id": self.id ])
708
822
  }
709
-
823
+
710
824
  func on(roleChangeRequest: HMSRoleChangeRequest) {
711
825
  let decodedRoleChangeRequest = HmsDecoder.getHmsRoleChangeRequest(roleChangeRequest, self.id)
712
826
  recentRoleChangeRequest = roleChangeRequest
713
827
  self.delegate?.emitEvent(ON_ROLE_CHANGE_REQUEST, decodedRoleChangeRequest)
714
828
  }
715
-
829
+
716
830
  func on(changeTrackStateRequest: HMSChangeTrackStateRequest) {
717
831
  let decodedChangeTrackStateRequest = HmsDecoder.getHmsChangeTrackStateRequest(changeTrackStateRequest, id)
718
832
  delegate?.emitEvent("ON_CHANGE_TRACK_STATE_REQUEST", decodedChangeTrackStateRequest)
719
833
  }
720
-
834
+
721
835
  func on(removedFromRoom notification: HMSRemovedFromRoomNotification) {
722
836
  let requestedBy = notification.requestedBy as HMSPeer?
723
- var decodedRequestedBy: [String: Any]? = nil
837
+ var decodedRequestedBy: [String: Any]?
724
838
  if let requested = requestedBy {
725
839
  decodedRequestedBy = HmsDecoder.getHmsPeer(requested)
726
840
  }
@@ -729,17 +843,86 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
729
843
  self.delegate?.emitEvent(ON_REMOVED_FROM_ROOM, ["event": ON_REMOVED_FROM_ROOM, "id": self.id, "requestedBy": decodedRequestedBy as Any, "reason": reason, "roomEnded": roomEnded ])
730
844
  }
731
845
 
846
+ func on(rtcStats: HMSRTCStatsReport) {
847
+ if (!rtcStatsAttached) {
848
+ return
849
+ }
850
+ let video = HmsDecoder.getHMSRTCStats(rtcStats.video)
851
+ let audio = HmsDecoder.getHMSRTCStats(rtcStats.audio)
852
+ let combined = HmsDecoder.getHMSRTCStats(rtcStats.combined)
853
+
854
+ self.delegate?.emitEvent(ON_RTC_STATS, ["video": video, "audio": audio, "combined": combined, "id": self.id])
855
+ }
732
856
 
733
- // MARK: Helper Functions
857
+ func on(localAudioStats: HMSLocalAudioStats, track: HMSLocalAudioTrack, peer: HMSPeer) {
858
+ if (!rtcStatsAttached) {
859
+ return
860
+ }
861
+ let localStats = HmsDecoder.getLocalAudioStats(localAudioStats)
862
+ let localTrack = HmsDecoder.getHmsLocalAudioTrack(track)
863
+ let decodedPeer = HmsDecoder.getHmsPeer(peer)
864
+
865
+ self.delegate?.emitEvent(ON_LOCAL_AUDIO_STATS, ["localAudioStats": localStats, "track": localTrack, "peer": decodedPeer, "id": self.id])
866
+ }
867
+
868
+ func on(localVideoStats: HMSLocalVideoStats, track: HMSLocalVideoTrack, peer: HMSPeer) {
869
+ if (!rtcStatsAttached) {
870
+ return
871
+ }
872
+ let localStats = HmsDecoder.getLocalVideoStats(localVideoStats)
873
+ let decodedPeer = HmsDecoder.getHmsPeer(peer)
874
+ let localTrack = HmsDecoder.getHmsLocalVideoTrack(track)
875
+
876
+ self.delegate?.emitEvent(ON_LOCAL_VIDEO_STATS, ["localVideoStats": localStats, "track": localTrack, "peer": decodedPeer, "id": self.id])
877
+ }
734
878
 
735
- func muteAllPeersAudio(_ data: NSDictionary) {
879
+ func on(remoteAudioStats: HMSRemoteAudioStats, track: HMSRemoteAudioTrack, peer: HMSPeer) {
880
+ if (!rtcStatsAttached) {
881
+ return
882
+ }
883
+ let remoteStats = HmsDecoder.getRemoteAudioStats(remoteAudioStats)
884
+ let remoteTrack = HmsDecoder.getHMSRemoteAudioTrack(track)
885
+ let decodedPeer = HmsDecoder.getHmsPeer(peer)
886
+
887
+ self.delegate?.emitEvent(ON_REMOTE_AUDIO_STATS, ["remoteAudioStats": remoteStats, "track": remoteTrack, "peer": decodedPeer, "id": self.id])
888
+ }
889
+
890
+ func on(remoteVideoStats: HMSRemoteVideoStats, track: HMSRemoteVideoTrack, peer: HMSPeer) {
891
+ if (!rtcStatsAttached) {
892
+ return
893
+ }
894
+ let remoteStats = HmsDecoder.getRemoteVideoStats(remoteVideoStats)
895
+ let decodedPeer = HmsDecoder.getHmsPeer(peer)
896
+ let remoteTrack = HmsDecoder.getHMSRemoteVideoTrack(track)
897
+
898
+ self.delegate?.emitEvent(ON_REMOTE_VIDEO_STATS, ["remoteVideoStats": remoteStats, "track": remoteTrack, "peer": decodedPeer, "id": self.id])
899
+ }
900
+
901
+ // MARK: Helper Functions
902
+ func remoteMuteAllAudio() {
903
+ let allAudioTracks = HMSUtilities.getAllAudioTracks(in: (self.hms?.room)!!)
904
+ var customError: HMSError? = nil
905
+ for audioTrack in allAudioTracks {
906
+ self.hms?.changeTrackState(for: audioTrack, mute: true, completion: { success, error in
907
+ if success {
908
+ } else {
909
+ customError = error
910
+ }
911
+ })
912
+ }
913
+ if (customError != nil) {
914
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(customError), "id": id])
915
+ }
916
+ }
917
+
918
+ func setPlaybackForAllAudio(_ data: NSDictionary) {
736
919
  guard let mute = data.value(forKey: "mute") as? Bool
737
920
  else {
738
921
  let error = HMSError(id: "119", code: HMSErrorCode.genericErrorUnknown, message: "REQUIRED_KEYS_NOT_FOUND")
739
- delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id":id])
922
+ delegate?.emitEvent(ON_ERROR, ["event": ON_ERROR, "error": HmsDecoder.getError(error), "id": id])
740
923
  return
741
924
  }
742
-
925
+
743
926
  DispatchQueue.main.async { [weak self] in
744
927
  let remotePeers = self?.hms?.remotePeers
745
928
  for peer in remotePeers ?? [] {
@@ -749,10 +932,10 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
749
932
  let roomData = HmsDecoder.getHmsRoom(hms?.room)
750
933
  let localPeerData = HmsDecoder.getHmsLocalPeer(hms?.localPeer)
751
934
  let remotePeerData = HmsDecoder.getHmsRemotePeers(hms?.remotePeers)
752
-
935
+
753
936
  self.delegate?.emitEvent(ON_PEER_UPDATE, ["event": ON_PEER_UPDATE, "room": roomData, "localPeer": localPeerData, "remotePeers": remotePeerData])
754
937
  }
755
-
938
+
756
939
  private func getString(from update: HMSPeerUpdate) -> String {
757
940
  switch update {
758
941
  case .peerJoined:
@@ -763,11 +946,15 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
763
946
  return "ROLE_CHANGED"
764
947
  case .metadataUpdated:
765
948
  return "METADATA_CHANGED"
949
+ case .nameUpdated:
950
+ return "NAME_CHANGED"
951
+ case .defaultUpdate:
952
+ return "DEFAULT_UPDATE"
766
953
  default:
767
954
  return ""
768
955
  }
769
956
  }
770
-
957
+
771
958
  private func getString(from update: HMSTrackUpdate) -> String {
772
959
  switch update {
773
960
  case .trackAdded:
@@ -788,7 +975,7 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
788
975
  return ""
789
976
  }
790
977
  }
791
-
978
+
792
979
  func getString(from update: HMSRoomUpdate) -> String {
793
980
  switch update {
794
981
  case .roomTypeChanged:
@@ -797,6 +984,8 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
797
984
  return "META_DATA_CHANGED"
798
985
  case .browserRecordingStateUpdated:
799
986
  return "BROWSER_RECORDING_STATE_UPDATED"
987
+ case .hlsStreamingStateUpdated:
988
+ return "HLS_STREAMING_STATE_UPDATED"
800
989
  case .rtmpStreamingStateUpdated:
801
990
  return "RTMP_STREAMING_STATE_UPDATED"
802
991
  case.serverRecordingStateUpdated:
@@ -807,8 +996,8 @@ class HmsSDK: HMSUpdateListener, HMSPreviewListener {
807
996
  }
808
997
  }
809
998
 
810
- //extension HmsSDK: HMSLogger {
999
+ // extension HmsSDK: HMSLogger {
811
1000
  // func log(_ message: String, _ level: HMSLogLevel) {
812
1001
  //
813
1002
  // }
814
- //}
1003
+ // }