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