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