@100mslive/react-native-hms 1.9.0 → 1.9.1-beta.0
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/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +1 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +4 -3
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +27 -22
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +226 -249
- package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +24 -4
- package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +1 -1
- package/ios/HMSHLSPlayerManager.swift +20 -11
- package/ios/HMSManager.m +40 -10
- package/ios/HMSManager.swift +20 -20
- package/ios/HMSRNSDK.swift +86 -85
- package/lib/commonjs/classes/HMSPIPConfig.js +4 -0
- package/lib/commonjs/classes/HMSPIPConfig.js.map +1 -0
- package/lib/commonjs/classes/HMSSDK.js +0 -2
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/HmsView.js +14 -1
- package/lib/commonjs/classes/HmsView.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +8 -5
- package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js +6 -1
- package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/commonjs/components/HMSHLSPlayer/index.js +8 -1
- package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -1
- package/lib/commonjs/hooks/hmsviews.js +17 -0
- package/lib/commonjs/hooks/hmsviews.js.map +1 -0
- package/lib/commonjs/index.js +9 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hls-player-playback-slice.js +4 -0
- package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -1
- package/lib/commonjs/stores/hms-store.js +3 -1
- package/lib/commonjs/stores/hms-store.js.map +1 -1
- package/lib/commonjs/stores/hmsviews-slice.js +19 -0
- package/lib/commonjs/stores/hmsviews-slice.js.map +1 -0
- package/lib/commonjs/stores/types.js +9 -0
- package/lib/commonjs/stores/types.js.map +1 -1
- package/lib/commonjs/types.js +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/classes/HMSPIPConfig.js +2 -0
- package/lib/module/classes/HMSPIPConfig.js.map +1 -0
- package/lib/module/classes/HMSSDK.js +0 -3
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/HmsView.js +14 -1
- package/lib/module/classes/HmsView.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +9 -6
- package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/hooks.js +4 -0
- package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -1
- package/lib/module/components/HMSHLSPlayer/index.js +1 -1
- package/lib/module/components/HMSHLSPlayer/index.js.map +1 -1
- package/lib/module/hooks/hmsviews.js +12 -0
- package/lib/module/hooks/hmsviews.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/stores/hls-player-playback-slice.js +4 -0
- package/lib/module/stores/hls-player-playback-slice.js.map +1 -1
- package/lib/module/stores/hms-store.js +3 -1
- package/lib/module/stores/hms-store.js.map +1 -1
- package/lib/module/stores/hmsviews-slice.js +12 -0
- package/lib/module/stores/hmsviews-slice.js.map +1 -0
- package/lib/module/stores/types.js +9 -0
- package/lib/module/stores/types.js.map +1 -1
- package/lib/module/types.js +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/classes/HMSPIPConfig.d.ts +7 -0
- package/lib/typescript/classes/HMSSDK.d.ts +3 -9
- package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +2 -0
- package/lib/typescript/components/HMSHLSPlayer/index.d.ts +1 -1
- package/lib/typescript/hooks/hmsviews.d.ts +3 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/stores/hms-store.d.ts +4 -3
- package/lib/typescript/stores/hmsviews-slice.d.ts +5 -0
- package/lib/typescript/stores/types.d.ts +14 -2
- package/lib/typescript/types.d.ts +9 -5
- package/package.json +3 -1
- package/sdk-versions.json +1 -1
- package/src/classes/HMSPIPConfig.ts +7 -0
- package/src/classes/HMSSDK.tsx +3 -11
- package/src/classes/HmsView.tsx +16 -2
- package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +11 -5
- package/src/components/HMSHLSPlayer/hooks.ts +7 -0
- package/src/components/HMSHLSPlayer/index.ts +1 -0
- package/src/hooks/hmsviews.ts +13 -0
- package/src/index.ts +2 -0
- package/src/stores/hls-player-playback-slice.ts +3 -0
- package/src/stores/hms-store.ts +2 -0
- package/src/stores/hmsviews-slice.ts +20 -0
- package/src/stores/types.ts +20 -1
- package/src/types.ts +13 -3
package/ios/HMSRNSDK.swift
CHANGED
|
@@ -125,7 +125,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
125
125
|
guard let role = data.value(forKey: "role") as? String
|
|
126
126
|
else {
|
|
127
127
|
let errorMessage = "previewForRole: " + HMSHelper.getUnavailableRequiredKey(data, ["role"])
|
|
128
|
-
emitRequiredKeysError(errorMessage)
|
|
129
128
|
reject?(errorMessage, errorMessage, nil)
|
|
130
129
|
return
|
|
131
130
|
}
|
|
@@ -211,8 +210,8 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
211
210
|
DispatchQueue.main.async { [weak self] in
|
|
212
211
|
self?.hms?.getAuthTokenByRoomCode(roomCode, userID: userId) { token, error in
|
|
213
212
|
// error occurred
|
|
214
|
-
if error
|
|
215
|
-
reject?(error
|
|
213
|
+
if let error = error as? NSError {
|
|
214
|
+
reject?(String(error.code), error.localizedDescription, nil)
|
|
216
215
|
return
|
|
217
216
|
}
|
|
218
217
|
// no error and token is valid
|
|
@@ -229,44 +228,48 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
229
228
|
}
|
|
230
229
|
}
|
|
231
230
|
|
|
232
|
-
func setLocalMute(_ data: NSDictionary) {
|
|
231
|
+
func setLocalMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
233
232
|
guard let isMute = data.value(forKey: "isMute") as? Bool
|
|
234
233
|
else {
|
|
235
234
|
let errorMessage = "setLocalMute: " + HMSHelper.getUnavailableRequiredKey(data, ["isMute"])
|
|
236
|
-
|
|
235
|
+
reject?(errorMessage, errorMessage, nil)
|
|
237
236
|
return
|
|
238
237
|
}
|
|
239
238
|
|
|
240
239
|
DispatchQueue.main.async { [weak self] in
|
|
241
240
|
if let audioTrack = self?.hms?.localPeer?.localAudioTrack() {
|
|
242
241
|
audioTrack.setMute(isMute)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
242
|
+
resolve?(true)
|
|
243
|
+
} else if let tracks = self?.previewForRoleTracks, let audioTrack = tracks.first(where: { $0.kind == HMSTrackKind.audio }) as? HMSLocalAudioTrack {
|
|
244
|
+
audioTrack.setMute(isMute)
|
|
245
|
+
resolve?(true)
|
|
247
246
|
} else {
|
|
248
|
-
|
|
247
|
+
let errorMessage = "setLocalMute: No local audio track available for setting mute state."
|
|
248
|
+
print(#function, errorMessage)
|
|
249
|
+
reject?(errorMessage, errorMessage, nil)
|
|
249
250
|
}
|
|
250
251
|
}
|
|
251
252
|
}
|
|
252
253
|
|
|
253
|
-
func setLocalVideoMute(_ data: NSDictionary) {
|
|
254
|
+
func setLocalVideoMute(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
254
255
|
guard let isMute = data.value(forKey: "isMute") as? Bool
|
|
255
256
|
else {
|
|
256
257
|
let errorMessage = "setLocalVideoMute: " + HMSHelper.getUnavailableRequiredKey(data, ["isMute"])
|
|
257
|
-
|
|
258
|
+
reject?(errorMessage, errorMessage, nil)
|
|
258
259
|
return
|
|
259
260
|
}
|
|
260
261
|
|
|
261
262
|
DispatchQueue.main.async { [weak self] in
|
|
262
263
|
if let videoTrack = self?.hms?.localPeer?.localVideoTrack() {
|
|
263
264
|
videoTrack.setMute(isMute)
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
265
|
+
resolve?(true)
|
|
266
|
+
} else if let tracks = self?.previewForRoleTracks, let videoTrack = tracks.first(where: { $0.kind == HMSTrackKind.video }) as? HMSLocalVideoTrack {
|
|
267
|
+
videoTrack.setMute(isMute)
|
|
268
|
+
resolve?(true)
|
|
268
269
|
} else {
|
|
269
|
-
|
|
270
|
+
let errorMessage = "setLocalVideoMute: No local video track available for setting mute state."
|
|
271
|
+
print(#function, errorMessage)
|
|
272
|
+
reject?(errorMessage, errorMessage, nil)
|
|
270
273
|
}
|
|
271
274
|
}
|
|
272
275
|
}
|
|
@@ -288,24 +291,27 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
288
291
|
func leave(_ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
289
292
|
DispatchQueue.main.async { [weak self] in
|
|
290
293
|
guard let strongSelf = self else {
|
|
291
|
-
|
|
294
|
+
let errorMessage = "\(#function): Could not find reference to self while executing Room leave"
|
|
295
|
+
print(#function, errorMessage)
|
|
296
|
+
reject?(errorMessage, errorMessage, nil)
|
|
292
297
|
return
|
|
293
298
|
}
|
|
294
299
|
|
|
295
300
|
strongSelf.hms?.leave { [weak self] success, error in
|
|
296
301
|
|
|
297
302
|
guard let strongSelf = self else {
|
|
298
|
-
|
|
303
|
+
let errorMessage = "\(#function): Could not find reference to self when callback is received while executing Room leave"
|
|
304
|
+
print(#function, errorMessage)
|
|
305
|
+
reject?(errorMessage, errorMessage, nil)
|
|
299
306
|
return
|
|
300
307
|
}
|
|
301
308
|
|
|
302
|
-
if
|
|
309
|
+
if let nonnilError = error {
|
|
310
|
+
reject?(nonnilError.localizedDescription, nonnilError.localizedDescription, nil)
|
|
311
|
+
} else if success {
|
|
303
312
|
resolve?(["success": success])
|
|
304
313
|
strongSelf.cleanup() // resetting states and doing data cleanup
|
|
305
314
|
} else {
|
|
306
|
-
if strongSelf.eventsEnableStatus[HMSConstants.ON_ERROR] == true {
|
|
307
|
-
strongSelf.delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": HMSDecoder.getError(error), "id": strongSelf.id])
|
|
308
|
-
}
|
|
309
315
|
reject?("error in leave", "error in leave", nil)
|
|
310
316
|
}
|
|
311
317
|
}
|
|
@@ -316,7 +322,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
316
322
|
guard let message = data.value(forKey: "message") as? String
|
|
317
323
|
else {
|
|
318
324
|
let errorMessage = "sendBroadcastMessage: " + HMSHelper.getUnavailableRequiredKey(data, ["message"])
|
|
319
|
-
emitRequiredKeysError(errorMessage)
|
|
320
325
|
reject?(errorMessage, errorMessage, nil)
|
|
321
326
|
return
|
|
322
327
|
}
|
|
@@ -341,7 +346,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
341
346
|
let targetedRoles = data.value(forKey: "roles") as? [String]
|
|
342
347
|
else {
|
|
343
348
|
let errorMessage = "sendGroupMessage: " + HMSHelper.getUnavailableRequiredKey(data, ["message", "roles"])
|
|
344
|
-
emitRequiredKeysError(errorMessage)
|
|
345
349
|
reject?(errorMessage, errorMessage, nil)
|
|
346
350
|
return
|
|
347
351
|
}
|
|
@@ -366,7 +370,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
366
370
|
let peerId = data.value(forKey: "peerId") as? String
|
|
367
371
|
else {
|
|
368
372
|
let errorMessage = "sendDirectMessage: " + HMSHelper.getUnavailableRequiredKey(data, ["message", "peerId"])
|
|
369
|
-
emitRequiredKeysError(errorMessage)
|
|
370
373
|
reject?(errorMessage, errorMessage, nil)
|
|
371
374
|
return
|
|
372
375
|
}
|
|
@@ -394,7 +397,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
394
397
|
guard let request = self?.recentRoleChangeRequest
|
|
395
398
|
else {
|
|
396
399
|
let errorMessage = "acceptRoleChange: recentRoleChangeRequest not found"
|
|
397
|
-
self?.emitRequiredKeysError(errorMessage)
|
|
398
400
|
reject?(errorMessage, errorMessage, nil)
|
|
399
401
|
return
|
|
400
402
|
}
|
|
@@ -417,7 +419,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
417
419
|
let role = data.value(forKey: "role") as? String
|
|
418
420
|
else {
|
|
419
421
|
let errorMessage = "changeRole: " + HMSHelper.getUnavailableRequiredKey(data, ["peerId", "role"])
|
|
420
|
-
emitRequiredKeysError(errorMessage)
|
|
421
422
|
reject?(errorMessage, errorMessage, nil)
|
|
422
423
|
return
|
|
423
424
|
}
|
|
@@ -452,7 +453,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
452
453
|
guard let toRoleString = data.object(forKey: "toRole") as? String
|
|
453
454
|
else {
|
|
454
455
|
let errorMessage = "changeRolesOfAllPeers: " + HMSHelper.getUnavailableRequiredKey(data, ["toRole"])
|
|
455
|
-
emitRequiredKeysError(errorMessage)
|
|
456
456
|
reject?(errorMessage, errorMessage, nil)
|
|
457
457
|
return
|
|
458
458
|
}
|
|
@@ -461,7 +461,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
461
461
|
|
|
462
462
|
guard let toRole = HMSHelper.getRoleFromRoleName(toRoleString, roles: self?.hms?.roles) else {
|
|
463
463
|
let errorMessage = "changeRolesOfAllPeers: " + HMSHelper.getUnavailableRequiredKey(data, ["toRole"])
|
|
464
|
-
self?.emitRequiredKeysError(errorMessage)
|
|
465
464
|
reject?(errorMessage, errorMessage, nil)
|
|
466
465
|
return
|
|
467
466
|
}
|
|
@@ -487,7 +486,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
487
486
|
guard let trackId = data.value(forKey: "trackId") as? String
|
|
488
487
|
else {
|
|
489
488
|
let errorMessage = "changeTrackState: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
|
|
490
|
-
emitRequiredKeysError(errorMessage)
|
|
491
489
|
reject?(errorMessage, errorMessage, nil)
|
|
492
490
|
return
|
|
493
491
|
}
|
|
@@ -517,7 +515,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
517
515
|
guard let mute = data.value(forKey: "mute") as? Bool
|
|
518
516
|
else {
|
|
519
517
|
let errorMessage = "changeTrackStateForRoles: " + HMSHelper.getUnavailableRequiredKey(data, ["mute"])
|
|
520
|
-
emitRequiredKeysError(errorMessage)
|
|
521
518
|
reject?(errorMessage, errorMessage, nil)
|
|
522
519
|
return
|
|
523
520
|
}
|
|
@@ -550,7 +547,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
550
547
|
guard let trackId = data.value(forKey: "trackId") as? String
|
|
551
548
|
else {
|
|
552
549
|
let errorMessage = "isMute: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
|
|
553
|
-
emitRequiredKeysError(errorMessage)
|
|
554
550
|
reject?(errorMessage, errorMessage, nil)
|
|
555
551
|
return
|
|
556
552
|
}
|
|
@@ -580,7 +576,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
580
576
|
guard let peerId = data.value(forKey: "peerId") as? String
|
|
581
577
|
else {
|
|
582
578
|
let errorMessage = "removePeer: " + HMSHelper.getUnavailableRequiredKey(data, ["peerId"])
|
|
583
|
-
emitRequiredKeysError(errorMessage)
|
|
584
579
|
reject?(errorMessage, errorMessage, nil)
|
|
585
580
|
return
|
|
586
581
|
}
|
|
@@ -612,7 +607,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
612
607
|
let reason = data.value(forKey: "reason") as? String
|
|
613
608
|
else {
|
|
614
609
|
let errorMessage = "endRoom: " + HMSHelper.getUnavailableRequiredKey(data, ["lock", "reason"])
|
|
615
|
-
emitRequiredKeysError(errorMessage)
|
|
616
610
|
reject?(errorMessage, errorMessage, nil)
|
|
617
611
|
return
|
|
618
612
|
}
|
|
@@ -633,7 +627,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
633
627
|
guard let trackId = data.value(forKey: "trackId") as? String
|
|
634
628
|
else {
|
|
635
629
|
let errorMessage = "isPlaybackAllowed: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
|
|
636
|
-
emitRequiredKeysError(errorMessage)
|
|
637
630
|
reject?(errorMessage, errorMessage, nil)
|
|
638
631
|
return
|
|
639
632
|
}
|
|
@@ -660,29 +653,35 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
660
653
|
}
|
|
661
654
|
}
|
|
662
655
|
|
|
663
|
-
func setPlaybackAllowed(_ data: NSDictionary) {
|
|
656
|
+
func setPlaybackAllowed(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
664
657
|
guard let trackId = data.value(forKey: "trackId") as? String,
|
|
665
658
|
let playbackAllowed = data.value(forKey: "playbackAllowed") as? Bool
|
|
666
659
|
else {
|
|
667
660
|
let errorMessage = "setPlaybackAllowed: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId", "playbackAllowed"])
|
|
668
|
-
|
|
661
|
+
reject?(errorMessage, errorMessage, nil)
|
|
669
662
|
return
|
|
670
663
|
}
|
|
664
|
+
|
|
671
665
|
DispatchQueue.main.async { [weak self] in
|
|
672
666
|
guard let remotePeers = self?.hms?.remotePeers
|
|
673
667
|
else {
|
|
668
|
+
let errorMessage = "setPlaybackAllowed: No remote peers found"
|
|
669
|
+
reject?(errorMessage, errorMessage, nil)
|
|
674
670
|
return
|
|
675
671
|
}
|
|
672
|
+
|
|
676
673
|
let remoteAudioTrack = HMSHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
|
|
677
674
|
let remoteVideoTrack = HMSHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
|
|
675
|
+
|
|
678
676
|
if remoteAudioTrack != nil {
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
} else {
|
|
682
|
-
remoteAudioTrack?.setPlaybackAllowed(playbackAllowed)
|
|
683
|
-
}
|
|
677
|
+
remoteAudioTrack?.setPlaybackAllowed(playbackAllowed)
|
|
678
|
+
resolve?(true)
|
|
684
679
|
} else if remoteVideoTrack != nil {
|
|
685
680
|
remoteVideoTrack?.setPlaybackAllowed(playbackAllowed)
|
|
681
|
+
resolve?(true)
|
|
682
|
+
} else {
|
|
683
|
+
let errorMessage = "setPlaybackAllowed: No remote audio or video track to set playback"
|
|
684
|
+
reject?(errorMessage, errorMessage, nil)
|
|
686
685
|
}
|
|
687
686
|
}
|
|
688
687
|
}
|
|
@@ -691,7 +690,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
691
690
|
guard let metadata = data.value(forKey: "metadata") as? String
|
|
692
691
|
else {
|
|
693
692
|
let errorMessage = "changeMetadata: " + HMSHelper.getUnavailableRequiredKey(data, ["metadata"])
|
|
694
|
-
emitRequiredKeysError(errorMessage)
|
|
695
693
|
reject?(errorMessage, errorMessage, nil)
|
|
696
694
|
return
|
|
697
695
|
}
|
|
@@ -707,23 +705,27 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
707
705
|
})
|
|
708
706
|
}
|
|
709
707
|
|
|
710
|
-
func setVolume(_ data: NSDictionary) {
|
|
708
|
+
func setVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
711
709
|
guard let trackId = data.value(forKey: "trackId") as? String,
|
|
712
710
|
let volume = data.value(forKey: "volume") as? Double
|
|
713
711
|
else {
|
|
714
712
|
let errorMessage = "setVolume: " + HMSHelper.getUnavailableRequiredKey(data, ["trackId", "volume"])
|
|
715
|
-
|
|
713
|
+
reject?(errorMessage, errorMessage, nil)
|
|
716
714
|
return
|
|
717
715
|
}
|
|
718
716
|
|
|
719
717
|
DispatchQueue.main.async { [weak self] in
|
|
720
718
|
guard let strongSelf = self else { return }
|
|
721
|
-
let remotePeers =
|
|
719
|
+
let remotePeers = strongSelf.hms?.remotePeers
|
|
722
720
|
|
|
723
721
|
let remoteAudioTrack = HMSHelper.getRemoteAudioAuxiliaryTrackFromTrackId(trackId, remotePeers)
|
|
724
722
|
|
|
725
723
|
if remoteAudioTrack != nil {
|
|
726
724
|
remoteAudioTrack?.setVolume(volume)
|
|
725
|
+
resolve?(true)
|
|
726
|
+
} else {
|
|
727
|
+
let errorMessage = "setVolume: No remote audio track not available"
|
|
728
|
+
reject?(errorMessage, errorMessage, nil)
|
|
727
729
|
}
|
|
728
730
|
}
|
|
729
731
|
}
|
|
@@ -732,7 +734,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
732
734
|
guard let record = data.value(forKey: "record") as? Bool
|
|
733
735
|
else {
|
|
734
736
|
let errorMessage = "startRTMPOrRecording: " + HMSHelper.getUnavailableRequiredKey(data, ["record"])
|
|
735
|
-
emitRequiredKeysError(errorMessage)
|
|
736
737
|
reject?(errorMessage, errorMessage, nil)
|
|
737
738
|
return
|
|
738
739
|
}
|
|
@@ -747,6 +748,7 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
747
748
|
meetingUrl = meetLink
|
|
748
749
|
} else {
|
|
749
750
|
reject?("Invalid meeting url passed", "Invalid meeting url passed", nil)
|
|
751
|
+
return
|
|
750
752
|
}
|
|
751
753
|
}
|
|
752
754
|
|
|
@@ -811,7 +813,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
811
813
|
guard let name = data.value(forKey: "name") as? String
|
|
812
814
|
else {
|
|
813
815
|
let errorMessage = "changeName: " + HMSHelper.getUnavailableRequiredKey(data, ["name"])
|
|
814
|
-
emitRequiredKeysError(errorMessage)
|
|
815
816
|
reject?(errorMessage, errorMessage, nil)
|
|
816
817
|
return
|
|
817
818
|
}
|
|
@@ -843,18 +844,23 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
843
844
|
}
|
|
844
845
|
}
|
|
845
846
|
|
|
846
|
-
func setPlaybackForAllAudio(_ data: NSDictionary) {
|
|
847
|
+
func setPlaybackForAllAudio(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
847
848
|
guard let mute = data.value(forKey: "mute") as? Bool
|
|
848
849
|
else {
|
|
849
|
-
let errorMessage = "setPlaybackForAllAudio: " + HMSHelper.getUnavailableRequiredKey(data, ["
|
|
850
|
-
|
|
850
|
+
let errorMessage = "setPlaybackForAllAudio: " + HMSHelper.getUnavailableRequiredKey(data, ["mute"])
|
|
851
|
+
reject?(errorMessage, errorMessage, nil)
|
|
851
852
|
return
|
|
852
853
|
}
|
|
853
854
|
|
|
854
855
|
DispatchQueue.main.async { [weak self] in
|
|
855
|
-
let remotePeers = self?.hms?.remotePeers
|
|
856
|
-
|
|
857
|
-
|
|
856
|
+
if let remotePeers = self?.hms?.remotePeers {
|
|
857
|
+
for peer in remotePeers {
|
|
858
|
+
peer.remoteAudioTrack()?.setPlaybackAllowed(!mute)
|
|
859
|
+
}
|
|
860
|
+
resolve?(true)
|
|
861
|
+
} else {
|
|
862
|
+
let errorMessage = "setPlaybackForAllAudio: No Audio is available to set playback"
|
|
863
|
+
reject?(errorMessage, errorMessage, nil)
|
|
858
864
|
}
|
|
859
865
|
}
|
|
860
866
|
}
|
|
@@ -954,7 +960,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
954
960
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
955
961
|
else {
|
|
956
962
|
let errorMessage = "playAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode", "fileUrl"])
|
|
957
|
-
emitRequiredKeysError(errorMessage)
|
|
958
963
|
reject?(errorMessage, errorMessage, nil)
|
|
959
964
|
return
|
|
960
965
|
}
|
|
@@ -976,14 +981,14 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
976
981
|
}
|
|
977
982
|
}
|
|
978
983
|
|
|
979
|
-
func setAudioShareVolume(_ data: NSDictionary) {
|
|
984
|
+
func setAudioShareVolume(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
980
985
|
guard let volume = data.value(forKey: "volume") as? NSNumber,
|
|
981
986
|
let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
982
987
|
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
983
988
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
984
989
|
else {
|
|
985
990
|
let errorMessage = "setAudioShareVolume: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode", "volume"])
|
|
986
|
-
|
|
991
|
+
reject?(errorMessage, errorMessage, nil)
|
|
987
992
|
return
|
|
988
993
|
}
|
|
989
994
|
if let audioMicNode = playerNode as? HMSMicNode {
|
|
@@ -992,53 +997,64 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
992
997
|
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
993
998
|
audioFilePlayerNode.volume = volume.floatValue
|
|
994
999
|
}
|
|
1000
|
+
resolve?(true)
|
|
995
1001
|
}
|
|
996
1002
|
|
|
997
|
-
func stopAudioShare(_ data: NSDictionary) {
|
|
1003
|
+
func stopAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
998
1004
|
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
999
1005
|
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
1000
1006
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
1001
1007
|
else {
|
|
1002
1008
|
let errorMessage = "stopAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
1003
|
-
|
|
1009
|
+
reject?(errorMessage, errorMessage, nil)
|
|
1004
1010
|
return
|
|
1005
1011
|
}
|
|
1006
1012
|
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
1007
1013
|
audioFilePlayerNode.stop()
|
|
1014
|
+
resolve?(true)
|
|
1015
|
+
} else {
|
|
1016
|
+
let errorMessage = "stopAudioShare: HMSAudioFilePlayerNode not available!"
|
|
1017
|
+
reject?(errorMessage, errorMessage, nil)
|
|
1008
1018
|
}
|
|
1009
1019
|
}
|
|
1010
1020
|
|
|
1011
|
-
func resumeAudioShare(_ data: NSDictionary) {
|
|
1021
|
+
func resumeAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
1012
1022
|
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
1013
1023
|
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
1014
1024
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
1015
1025
|
else {
|
|
1016
1026
|
let errorMessage = "resumeAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
1017
|
-
|
|
1027
|
+
reject?(errorMessage, errorMessage, nil)
|
|
1018
1028
|
return
|
|
1019
1029
|
}
|
|
1020
1030
|
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
1021
1031
|
do {
|
|
1022
1032
|
try audioFilePlayerNode.resume()
|
|
1033
|
+
resolve?(true)
|
|
1023
1034
|
} catch {
|
|
1024
|
-
|
|
1025
|
-
delegate?.emitEvent(HMSConstants.ON_ERROR, ["error": ["code": 6002, "description": error.localizedDescription, "isTerminal": false, "canRetry": true, "params": ["function": #function]] as [String: Any], "id": id])
|
|
1026
|
-
}
|
|
1035
|
+
reject?(error.localizedDescription, error.localizedDescription, nil)
|
|
1027
1036
|
}
|
|
1037
|
+
} else {
|
|
1038
|
+
let errorMessage = "resumeAudioShare: HMSAudioFilePlayerNode not available!"
|
|
1039
|
+
reject?(errorMessage, errorMessage, nil)
|
|
1028
1040
|
}
|
|
1029
1041
|
}
|
|
1030
1042
|
|
|
1031
|
-
func pauseAudioShare(_ data: NSDictionary) {
|
|
1043
|
+
func pauseAudioShare(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
1032
1044
|
guard let audioNodeName = data.value(forKey: "audioNode") as? String,
|
|
1033
1045
|
let audioMixerSourceMap = HMSHelper.getAudioMixerSourceMap(),
|
|
1034
1046
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
1035
1047
|
else {
|
|
1036
1048
|
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
1037
|
-
|
|
1049
|
+
reject?(errorMessage, errorMessage, nil)
|
|
1038
1050
|
return
|
|
1039
1051
|
}
|
|
1040
1052
|
if let audioFilePlayerNode = playerNode as? HMSAudioFilePlayerNode {
|
|
1041
1053
|
audioFilePlayerNode.pause()
|
|
1054
|
+
resolve?(true)
|
|
1055
|
+
} else {
|
|
1056
|
+
let errorMessage = "pauseAudioShare: HMSAudioFilePlayerNode not available!"
|
|
1057
|
+
reject?(errorMessage, errorMessage, nil)
|
|
1042
1058
|
}
|
|
1043
1059
|
}
|
|
1044
1060
|
|
|
@@ -1048,7 +1064,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1048
1064
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
1049
1065
|
else {
|
|
1050
1066
|
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
1051
|
-
emitRequiredKeysError(errorMessage)
|
|
1052
1067
|
reject?(errorMessage, errorMessage, nil)
|
|
1053
1068
|
return
|
|
1054
1069
|
}
|
|
@@ -1065,7 +1080,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1065
1080
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
1066
1081
|
else {
|
|
1067
1082
|
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
1068
|
-
emitRequiredKeysError(errorMessage)
|
|
1069
1083
|
reject?(errorMessage, errorMessage, nil)
|
|
1070
1084
|
return
|
|
1071
1085
|
}
|
|
@@ -1082,7 +1096,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1082
1096
|
let playerNode = audioMixerSourceMap[audioNodeName]
|
|
1083
1097
|
else {
|
|
1084
1098
|
let errorMessage = "pauseAudioShare: " + HMSHelper.getUnavailableRequiredKey(data, ["audioNode"])
|
|
1085
|
-
emitRequiredKeysError(errorMessage)
|
|
1086
1099
|
reject?(errorMessage, errorMessage, nil)
|
|
1087
1100
|
return
|
|
1088
1101
|
}
|
|
@@ -1104,7 +1117,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1104
1117
|
func enableEvent(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
1105
1118
|
guard let eventType = data.value(forKey: "eventType") as? String else {
|
|
1106
1119
|
let errorMessage = "enableEvent: " + HMSHelper.getUnavailableRequiredKey(data, ["eventType"])
|
|
1107
|
-
emitRequiredKeysError(errorMessage)
|
|
1108
1120
|
reject?(errorMessage, errorMessage, nil)
|
|
1109
1121
|
return
|
|
1110
1122
|
}
|
|
@@ -1116,7 +1128,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1116
1128
|
func disableEvent(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
1117
1129
|
guard let eventType = data.value(forKey: "eventType") as? String else {
|
|
1118
1130
|
let errorMessage = "disableEvent: " + HMSHelper.getUnavailableRequiredKey(data, ["eventType"])
|
|
1119
|
-
emitRequiredKeysError(errorMessage)
|
|
1120
1131
|
reject?(errorMessage, errorMessage, nil)
|
|
1121
1132
|
return
|
|
1122
1133
|
}
|
|
@@ -1125,14 +1136,15 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1125
1136
|
resolve?(["success": true, "message": "function call executed successfully"] as [String: Any])
|
|
1126
1137
|
}
|
|
1127
1138
|
|
|
1128
|
-
func restrictData(_ data: NSDictionary) {
|
|
1139
|
+
func restrictData(_ data: NSDictionary, _ resolve: RCTPromiseResolveBlock?, _ reject: RCTPromiseRejectBlock?) {
|
|
1129
1140
|
guard let roleName = data.value(forKey: "roleName") as? String else {
|
|
1130
1141
|
let errorMessage = "restrictData: " + HMSHelper.getUnavailableRequiredKey(data, ["roleName"])
|
|
1131
|
-
|
|
1142
|
+
reject?(errorMessage, errorMessage, nil)
|
|
1132
1143
|
return
|
|
1133
1144
|
}
|
|
1134
1145
|
|
|
1135
1146
|
HMSDecoder.setRestrictRoleData(roleName, true)
|
|
1147
|
+
resolve?(true)
|
|
1136
1148
|
}
|
|
1137
1149
|
|
|
1138
1150
|
// MARK: - HMS SDK Get APIs
|
|
@@ -1272,7 +1284,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1272
1284
|
guard let trackId = data.value(forKey: "trackId") as? String
|
|
1273
1285
|
else {
|
|
1274
1286
|
let errorMessage = "\(#function) " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
|
|
1275
|
-
emitRequiredKeysError(errorMessage)
|
|
1276
1287
|
reject?(errorMessage, errorMessage, nil)
|
|
1277
1288
|
return
|
|
1278
1289
|
}
|
|
@@ -1284,7 +1295,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1284
1295
|
let remoteVideoTrack = HMSHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
|
|
1285
1296
|
else {
|
|
1286
1297
|
let errorMessage = "\(#function) " + "TRACK_NOT_FOUND"
|
|
1287
|
-
self?.emitRequiredKeysError(errorMessage)
|
|
1288
1298
|
reject?(errorMessage, errorMessage, nil)
|
|
1289
1299
|
return
|
|
1290
1300
|
}
|
|
@@ -1297,7 +1307,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1297
1307
|
guard let trackId = data.value(forKey: "trackId") as? String
|
|
1298
1308
|
else {
|
|
1299
1309
|
let errorMessage = "\(#function) " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
|
|
1300
|
-
emitRequiredKeysError(errorMessage)
|
|
1301
1310
|
reject?(errorMessage, errorMessage, nil)
|
|
1302
1311
|
return
|
|
1303
1312
|
}
|
|
@@ -1309,7 +1318,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1309
1318
|
let remoteAudioTrack = HMSHelper.getRemoteAudioTrackFromTrackId(trackId, remotePeers)
|
|
1310
1319
|
else {
|
|
1311
1320
|
let errorMessage = "\(#function) " + "TRACK_NOT_FOUND"
|
|
1312
|
-
self?.emitRequiredKeysError(errorMessage)
|
|
1313
1321
|
reject?(errorMessage, errorMessage, nil)
|
|
1314
1322
|
return
|
|
1315
1323
|
}
|
|
@@ -1553,7 +1561,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1553
1561
|
guard let trackId = data.value(forKey: "trackId") as? String
|
|
1554
1562
|
else {
|
|
1555
1563
|
let errorMessage = "\(#function) " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
|
|
1556
|
-
emitRequiredKeysError(errorMessage)
|
|
1557
1564
|
reject?(errorMessage, errorMessage, nil)
|
|
1558
1565
|
return
|
|
1559
1566
|
}
|
|
@@ -1565,7 +1572,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1565
1572
|
let remoteVideoTrack = HMSHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
|
|
1566
1573
|
else {
|
|
1567
1574
|
let errorMessage = "\(#function) " + "TRACK_NOT_FOUND"
|
|
1568
|
-
self?.emitRequiredKeysError(errorMessage)
|
|
1569
1575
|
reject?(errorMessage, errorMessage, nil)
|
|
1570
1576
|
return
|
|
1571
1577
|
}
|
|
@@ -1573,7 +1579,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1573
1579
|
guard let layerDefinitions = remoteVideoTrack.layerDefinitions
|
|
1574
1580
|
else {
|
|
1575
1581
|
let errorMessage = "\(#function) " + "layer definitions not available for track: '\(trackId)' !"
|
|
1576
|
-
self.emitRequiredKeysError(errorMessage)
|
|
1577
1582
|
reject?(errorMessage, errorMessage, nil)
|
|
1578
1583
|
return
|
|
1579
1584
|
}
|
|
@@ -1589,7 +1594,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1589
1594
|
guard let trackId = data.value(forKey: "trackId") as? String
|
|
1590
1595
|
else {
|
|
1591
1596
|
let errorMessage = "\(#function) " + HMSHelper.getUnavailableRequiredKey(data, ["trackId"])
|
|
1592
|
-
emitRequiredKeysError(errorMessage)
|
|
1593
1597
|
reject?(errorMessage, errorMessage, nil)
|
|
1594
1598
|
return
|
|
1595
1599
|
}
|
|
@@ -1601,7 +1605,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1601
1605
|
let remoteVideoTrack = HMSHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
|
|
1602
1606
|
else {
|
|
1603
1607
|
let errorMessage = "\(#function) " + "TRACK_NOT_FOUND"
|
|
1604
|
-
self?.emitRequiredKeysError(errorMessage)
|
|
1605
1608
|
reject?(errorMessage, errorMessage, nil)
|
|
1606
1609
|
return
|
|
1607
1610
|
}
|
|
@@ -1617,7 +1620,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1617
1620
|
let layer = data.value(forKey: "layer") as? String
|
|
1618
1621
|
else {
|
|
1619
1622
|
let errorMessage = "\(#function) " + HMSHelper.getUnavailableRequiredKey(data, ["trackId", "layer"])
|
|
1620
|
-
emitRequiredKeysError(errorMessage)
|
|
1621
1623
|
reject?(errorMessage, errorMessage, nil)
|
|
1622
1624
|
return
|
|
1623
1625
|
}
|
|
@@ -1629,7 +1631,6 @@ class HMSRNSDK: HMSUpdateListener, HMSPreviewListener {
|
|
|
1629
1631
|
let remoteVideoTrack = HMSHelper.getRemoteVideoTrackFromTrackId(trackId, remotePeers)
|
|
1630
1632
|
else {
|
|
1631
1633
|
let errorMessage = "\(#function) " + "TRACK_NOT_FOUND"
|
|
1632
|
-
self?.emitRequiredKeysError(errorMessage)
|
|
1633
1634
|
reject?(errorMessage, errorMessage, nil)
|
|
1634
1635
|
return
|
|
1635
1636
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["HMSPIPConfig.ts"],"sourcesContent":["export interface HMSPIPConfig {\n autoEnterPipMode?: boolean;\n aspectRatio?: [number, number];\n endButton?: boolean;\n audioButton?: boolean;\n videoButton?: boolean;\n};\n"],"mappings":";;AAMC"}
|
|
@@ -24,8 +24,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
24
24
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
25
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
26
26
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
27
|
-
// TODO: Rename to HMSPIPConfig & to be moved to a separate file
|
|
28
|
-
|
|
29
27
|
const ReactNativeVersion = require('react-native/Libraries/Core/ReactNativeVersion');
|
|
30
28
|
let HmsSdk;
|
|
31
29
|
class HMSSDK {
|