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