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