@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.9
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/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +7 -0
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +8 -0
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +8 -0
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +7 -0
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +7 -0
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +7 -0
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +7 -0
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +7 -0
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +3 -0
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +43 -5
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +12 -3
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +12 -0
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +8 -1
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/index.js +173 -50
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +6 -0
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +54 -24
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +4 -1
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +5 -0
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +14 -2
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -0
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +4 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +72 -20
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +4 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +30 -7
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +2 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +14 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +19 -9
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +8 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +10 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +11 -0
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -1
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +17 -7
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +1 -0
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +21 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +23 -13
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +5 -2
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +9 -1
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +19 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +9 -3
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +10 -3
- package/dist/transcription/index.js.map +1 -1
- package/package.json +17 -18
- package/src/common/{browser-detection.js → browser-detection.ts} +1 -1
- package/src/common/collection.ts +6 -6
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +5 -1
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +6 -1
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +6 -1
- package/src/common/errors/{media.js → media.ts} +5 -1
- package/src/common/errors/parameter.ts +3 -2
- package/src/common/errors/{password-error.js → password-error.ts} +5 -1
- package/src/common/errors/{permission.js → permission.ts} +5 -1
- package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +5 -1
- package/src/common/errors/{stats.js → stats.ts} +5 -1
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +1 -2
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +3 -1
- package/src/common/events/{events-scope.js → events-scope.ts} +1 -1
- package/src/common/events/{events.js → events.ts} +0 -0
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +1 -2
- package/src/common/events/{util.js → util.ts} +1 -1
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/{logger-proxy.js → logger-proxy.ts} +1 -1
- package/src/common/logs/{request.js → request.ts} +12 -2
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +1 -0
- package/src/constants.ts +2 -1
- package/src/locus-info/{controlsUtils.js → controlsUtils.ts} +4 -4
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +1 -1
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +5 -5
- package/src/locus-info/{index.js → index.ts} +67 -32
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +3 -4
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +13 -13
- package/src/locus-info/{parser.js → parser.ts} +22 -12
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +17 -19
- package/src/media/{index.js → index.ts} +62 -16
- package/src/media/{properties.js → properties.ts} +16 -4
- package/src/media/{util.js → util.ts} +1 -1
- package/src/mediaQualityMetrics/{config.js → config.ts} +1 -1
- package/src/meeting/{effectsState.js → effectsState.ts} +12 -6
- package/src/meeting/{index.js → index.ts} +341 -156
- package/src/meeting/{muteState.js → muteState.ts} +16 -11
- package/src/meeting/{request.js → request.ts} +124 -36
- package/src/meeting/{state.js → state.ts} +6 -6
- package/src/meeting/{util.js → util.ts} +4 -4
- package/src/meeting-info/{collection.js → collection.ts} +4 -1
- package/src/meeting-info/{index.js → index.ts} +10 -6
- package/src/meeting-info/{meeting-info-v2.js → meeting-info-v2.ts} +28 -10
- package/src/meeting-info/{request.js → request.ts} +6 -2
- package/src/meeting-info/{util.js → util.ts} +6 -5
- package/src/meeting-info/{utilv2.js → utilv2.ts} +8 -7
- package/src/meetings/{collection.js → collection.ts} +5 -2
- package/src/meetings/{index.js → index.ts} +88 -21
- package/src/meetings/{request.js → request.ts} +6 -1
- package/src/meetings/{util.js → util.ts} +5 -3
- package/src/member/{index.js → index.ts} +46 -15
- package/src/member/{util.js → util.ts} +17 -16
- package/src/members/{collection.js → collection.ts} +2 -1
- package/src/members/{index.js → index.ts} +46 -26
- package/src/members/{request.js → request.ts} +16 -5
- package/src/members/{util.js → util.ts} +7 -7
- package/src/metrics/{config.js → config.ts} +0 -2
- package/src/metrics/{constants.js → constants.ts} +0 -0
- package/src/metrics/{index.js → index.ts} +27 -8
- package/src/networkQualityMonitor/{index.js → index.ts} +18 -3
- package/src/personal-meeting-room/{index.js → index.ts} +17 -4
- package/src/personal-meeting-room/{request.js → request.ts} +3 -1
- package/src/personal-meeting-room/{util.js → util.ts} +1 -1
- package/src/reachability/{index.js → index.ts} +28 -17
- package/src/reachability/request.ts +4 -2
- package/src/reconnection-manager/{index.js → index.ts} +41 -12
- package/src/roap/{index.js → index.ts} +27 -18
- package/src/roap/{request.js → request.ts} +14 -2
- package/src/roap/turnDiscovery.ts +14 -5
- package/src/statsAnalyzer/{global.js → global.ts} +0 -0
- package/src/statsAnalyzer/{index.js → index.ts} +36 -17
- package/src/statsAnalyzer/{mqaUtil.js → mqaUtil.ts} +6 -1
- package/src/transcription/{index.js → index.ts} +16 -11
- package/test/integration/spec/space-meeting.js +1 -2
- package/test/unit/spec/meeting/index.js +26 -14
- package/test/unit/spec/reconnection-manager/index.js +1 -0
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/peer-connection-manager/util.ts +0 -117
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import uuid from 'uuid';
|
|
2
2
|
import {cloneDeep, isEqual, pick, isString} from 'lodash';
|
|
3
|
+
// @ts-ignore - Fix this
|
|
3
4
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
4
5
|
import {Media as WebRTCMedia, MediaConnection as MC} from '@webex/internal-media-core';
|
|
5
6
|
|
|
@@ -80,7 +81,7 @@ import InMeetingActions from './in-meeting-actions';
|
|
|
80
81
|
|
|
81
82
|
const {isBrowser} = BrowserDetection();
|
|
82
83
|
|
|
83
|
-
const logRequest = (request, {header = '', success = '', failure = ''}) => {
|
|
84
|
+
const logRequest = (request: any, { header = '', success = '', failure = '' }) => {
|
|
84
85
|
LoggerProxy.logger.info(header);
|
|
85
86
|
|
|
86
87
|
return request
|
|
@@ -391,6 +392,92 @@ export const MEDIA_UPDATE_TYPE = {
|
|
|
391
392
|
* @class Meeting
|
|
392
393
|
*/
|
|
393
394
|
export default class Meeting extends StatelessWebexPlugin {
|
|
395
|
+
attrs: any;
|
|
396
|
+
audio: any;
|
|
397
|
+
conversationUrl: string;
|
|
398
|
+
correlationId: string;
|
|
399
|
+
destination: string;
|
|
400
|
+
destinationType: string;
|
|
401
|
+
deviceUrl: string;
|
|
402
|
+
effects: any;
|
|
403
|
+
hostId: string;
|
|
404
|
+
id: string;
|
|
405
|
+
isMultistream: boolean;
|
|
406
|
+
locusUrl: string;
|
|
407
|
+
mediaConnections: any[];
|
|
408
|
+
mediaId?: string;
|
|
409
|
+
meetingFiniteStateMachine: any;
|
|
410
|
+
meetingInfo: object;
|
|
411
|
+
meetingRequest: any;
|
|
412
|
+
members: Members;
|
|
413
|
+
options: object;
|
|
414
|
+
orgId: string;
|
|
415
|
+
owner: string;
|
|
416
|
+
partner: any;
|
|
417
|
+
policy: string;
|
|
418
|
+
reconnectionManager: ReconnectionManager;
|
|
419
|
+
resource: string;
|
|
420
|
+
roap: Roap;
|
|
421
|
+
roapSeq: number;
|
|
422
|
+
sipUri: string;
|
|
423
|
+
type: string;
|
|
424
|
+
userId: string;
|
|
425
|
+
video: any;
|
|
426
|
+
callEvents: any[];
|
|
427
|
+
deferJoin: Promise<any>;
|
|
428
|
+
dialInDeviceStatus: string;
|
|
429
|
+
dialInUrl: string;
|
|
430
|
+
dialOutDeviceStatus: string;
|
|
431
|
+
dialOutUrl: string;
|
|
432
|
+
fetchMeetingInfoTimeoutId: NodeJS.Timeout;
|
|
433
|
+
floorGrantPending: boolean;
|
|
434
|
+
hasJoinedOnce: boolean;
|
|
435
|
+
hasWebsocketConnected: boolean;
|
|
436
|
+
inMeetingActions: InMeetingActions;
|
|
437
|
+
isLocalShareLive: boolean;
|
|
438
|
+
isRoapInProgress: boolean;
|
|
439
|
+
isSharing: boolean;
|
|
440
|
+
keepAliveTimerId: NodeJS.Timeout;
|
|
441
|
+
lastVideoLayoutInfo: any;
|
|
442
|
+
locusInfo: any;
|
|
443
|
+
media: MultistreamMedia;
|
|
444
|
+
mediaProperties: MediaProperties;
|
|
445
|
+
mediaRequestManagers: {
|
|
446
|
+
audio: MediaRequestManager;
|
|
447
|
+
video: MediaRequestManager;
|
|
448
|
+
};
|
|
449
|
+
meetingInfoFailureReason: string;
|
|
450
|
+
networkQualityMonitor: NetworkQualityMonitor;
|
|
451
|
+
networkStatus: string;
|
|
452
|
+
passwordStatus: string;
|
|
453
|
+
queuedMediaUpdates: any[];
|
|
454
|
+
recording: any;
|
|
455
|
+
remoteMediaManager: RemoteMediaManager | null;
|
|
456
|
+
requiredCaptcha: any;
|
|
457
|
+
receiveSlotManager: ReceiveSlotManager;
|
|
458
|
+
shareStatus: string;
|
|
459
|
+
statsAnalyzer: StatsAnalyzer;
|
|
460
|
+
transcription: Transcription;
|
|
461
|
+
updateMediaConnections: (mediaConnections: any[]) => void;
|
|
462
|
+
endCallInitiateJoinReq: any;
|
|
463
|
+
endJoinReqResp: any;
|
|
464
|
+
endLocalSDPGenRemoteSDPRecvDelay: any;
|
|
465
|
+
joinedWith: any;
|
|
466
|
+
locusId: any;
|
|
467
|
+
startCallInitiateJoinReq: any;
|
|
468
|
+
startJoinReqResp: any;
|
|
469
|
+
startLocalSDPGenRemoteSDPRecvDelay: any;
|
|
470
|
+
wirelessShare: any;
|
|
471
|
+
guest: any;
|
|
472
|
+
meetingJoinUrl: any;
|
|
473
|
+
meetingNumber: any;
|
|
474
|
+
meetingState: any;
|
|
475
|
+
permissionToken: any;
|
|
476
|
+
resourceId: any;
|
|
477
|
+
resourceUrl: string;
|
|
478
|
+
selfId: string;
|
|
479
|
+
state: any;
|
|
480
|
+
|
|
394
481
|
namespace = MEETINGS;
|
|
395
482
|
|
|
396
483
|
/**
|
|
@@ -399,7 +486,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
399
486
|
* @constructor
|
|
400
487
|
* @memberof Meeting
|
|
401
488
|
*/
|
|
402
|
-
constructor(attrs, options) {
|
|
489
|
+
constructor(attrs: any, options: object) {
|
|
403
490
|
super({}, options);
|
|
404
491
|
/**
|
|
405
492
|
* @instance
|
|
@@ -512,6 +599,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
512
599
|
locusUrl: (attrs.locus && attrs.locus.url),
|
|
513
600
|
receiveSlotManager: this.receiveSlotManager,
|
|
514
601
|
mediaRequestManagers: this.mediaRequestManagers,
|
|
602
|
+
// @ts-ignore - Fix type
|
|
515
603
|
}, {parent: this.webex});
|
|
516
604
|
/**
|
|
517
605
|
* @instance
|
|
@@ -520,6 +608,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
520
608
|
* @private
|
|
521
609
|
* @memberof Meeting
|
|
522
610
|
*/
|
|
611
|
+
// @ts-ignore - Fix type
|
|
523
612
|
this.roap = new Roap({}, {parent: this.webex});
|
|
524
613
|
/**
|
|
525
614
|
* indicates if an SDP exchange is happening
|
|
@@ -691,7 +780,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
691
780
|
* @private
|
|
692
781
|
* @memberof Meeting
|
|
693
782
|
*/
|
|
694
|
-
this.updateMediaConnections = (mediaConnections) => {
|
|
783
|
+
this.updateMediaConnections = (mediaConnections: any[]) => {
|
|
695
784
|
if (!isEqual(this.mediaConnections, mediaConnections)) {
|
|
696
785
|
// grab last/latest item in the new mediaConnections information
|
|
697
786
|
this.mediaConnections = mediaConnections.slice(-1);
|
|
@@ -724,7 +813,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
724
813
|
this.isSharing = false;
|
|
725
814
|
/**
|
|
726
815
|
* @instance
|
|
727
|
-
* @type {
|
|
816
|
+
* @type {string}
|
|
728
817
|
* @readonly
|
|
729
818
|
* @public
|
|
730
819
|
* @memberof Meeting
|
|
@@ -742,7 +831,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
742
831
|
/**
|
|
743
832
|
* There is a pending floor requested by the user
|
|
744
833
|
* @instance
|
|
745
|
-
* @type {
|
|
834
|
+
* @type {boolean}
|
|
746
835
|
* @private
|
|
747
836
|
* @memberof Meeting
|
|
748
837
|
*/
|
|
@@ -810,6 +899,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
810
899
|
* @private
|
|
811
900
|
* @memberof Meeting
|
|
812
901
|
*/
|
|
902
|
+
// @ts-ignore - Fix type
|
|
813
903
|
this.locusInfo = new LocusInfo(this.updateMeetingObject.bind(this), this.webex, this.id);
|
|
814
904
|
// We had to add listeners first before setting up the locus instance
|
|
815
905
|
/**
|
|
@@ -837,6 +927,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
837
927
|
* @private
|
|
838
928
|
* @memberof Meeting
|
|
839
929
|
*/
|
|
930
|
+
// @ts-ignore - Fix type
|
|
840
931
|
this.hasWebsocketConnected = this.webex.internal.mercury.connected;
|
|
841
932
|
|
|
842
933
|
/**
|
|
@@ -930,9 +1021,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
930
1021
|
* @memberof Meeting
|
|
931
1022
|
* @returns {Promise}
|
|
932
1023
|
*/
|
|
933
|
-
async fetchMeetingInfo({
|
|
934
|
-
password = null, captchaCode = null
|
|
935
|
-
}) {
|
|
1024
|
+
public async fetchMeetingInfo({ password = null, captchaCode = null }: { password?: string; captchaCode?: string }) {
|
|
936
1025
|
// when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it
|
|
937
1026
|
if (this.fetchMeetingInfoTimeoutId) {
|
|
938
1027
|
clearTimeout(this.fetchMeetingInfoTimeoutId);
|
|
@@ -974,6 +1063,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
974
1063
|
}
|
|
975
1064
|
catch (err) {
|
|
976
1065
|
if (err instanceof MeetingInfoV2PasswordError) {
|
|
1066
|
+
// @ts-ignore
|
|
977
1067
|
LoggerProxy.logger.info(`Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ${this.destination} - password required (code=${err?.body?.code}).`);
|
|
978
1068
|
|
|
979
1069
|
// when wbxappapi requires password it still populates partial meeting info in the response
|
|
@@ -992,6 +1082,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
992
1082
|
throw (new PasswordError());
|
|
993
1083
|
}
|
|
994
1084
|
else if (err instanceof MeetingInfoV2CaptchaError) {
|
|
1085
|
+
// @ts-ignore
|
|
995
1086
|
LoggerProxy.logger.info(`Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ${this.destination} - captcha required (code=${err?.body?.code}).`);
|
|
996
1087
|
|
|
997
1088
|
this.meetingInfoFailureReason = (this.requiredCaptcha) ?
|
|
@@ -1021,7 +1112,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1021
1112
|
* @memberof Meeting
|
|
1022
1113
|
* @returns {Promise<{isPasswordValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}
|
|
1023
1114
|
*/
|
|
1024
|
-
verifyPassword(password, captchaCode) {
|
|
1115
|
+
public verifyPassword(password: string, captchaCode: string) {
|
|
1025
1116
|
return this.fetchMeetingInfo({
|
|
1026
1117
|
password, captchaCode
|
|
1027
1118
|
})
|
|
@@ -1051,7 +1142,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1051
1142
|
* @memberof Meeting
|
|
1052
1143
|
* @returns {Promise}
|
|
1053
1144
|
*/
|
|
1054
|
-
refreshCaptcha() {
|
|
1145
|
+
public refreshCaptcha() {
|
|
1055
1146
|
if (!this.requiredCaptcha) {
|
|
1056
1147
|
return Promise.reject(new Error('There is no captcha to refresh'));
|
|
1057
1148
|
}
|
|
@@ -1081,7 +1172,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1081
1172
|
* @private
|
|
1082
1173
|
* @memberof Meeting
|
|
1083
1174
|
*/
|
|
1084
|
-
setUpLocusInfoListeners() {
|
|
1175
|
+
private setUpLocusInfoListeners() {
|
|
1085
1176
|
// meeting update listeners
|
|
1086
1177
|
this.setUpLocusInfoSelfListener();
|
|
1087
1178
|
this.setUpLocusInfoMeetingListener();
|
|
@@ -1099,14 +1190,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1099
1190
|
this.setUpLocusInfoMediaInactiveListener();
|
|
1100
1191
|
}
|
|
1101
1192
|
|
|
1102
|
-
|
|
1103
1193
|
/**
|
|
1104
1194
|
* Set up the locus info listener for meetings disconnected due to inactivity
|
|
1105
1195
|
* @returns {undefined}
|
|
1106
1196
|
* @private
|
|
1107
1197
|
* @memberof Meeting
|
|
1108
1198
|
*/
|
|
1109
|
-
setUpLocusInfoMediaInactiveListener() {
|
|
1199
|
+
private setUpLocusInfoMediaInactiveListener() {
|
|
1110
1200
|
// User gets kicked off the meeting due to inactivity or user did a refresh
|
|
1111
1201
|
this.locusInfo.on(EVENTS.DISCONNECT_DUE_TO_INACTIVITY, (res) => {
|
|
1112
1202
|
// https:// jira-eng-gpk2.cisco.com/jira/browse/SPARK-240520
|
|
@@ -1134,6 +1224,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1134
1224
|
|
|
1135
1225
|
LoggerProxy.logger.error(`Meeting:index#setUpLocusInfoMediaInactiveListener --> Meeting disconnected due to inactivity: ${res.reason}`);
|
|
1136
1226
|
|
|
1227
|
+
// @ts-ignore - config coming from registerPlugin
|
|
1137
1228
|
if (this.config.reconnection.autoRejoin) {
|
|
1138
1229
|
this.reconnect();
|
|
1139
1230
|
}
|
|
@@ -1157,7 +1248,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1157
1248
|
* @private
|
|
1158
1249
|
* @memberof Meeting
|
|
1159
1250
|
*/
|
|
1160
|
-
setUpLocusInfoAssignHostListener() {
|
|
1251
|
+
private setUpLocusInfoAssignHostListener() {
|
|
1161
1252
|
this.locusInfo.on(EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST, (payload) => {
|
|
1162
1253
|
const changed = this.inMeetingActions.set({
|
|
1163
1254
|
canAssignHost: payload.canAssignHost,
|
|
@@ -1183,7 +1274,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1183
1274
|
* @private
|
|
1184
1275
|
* @memberof Meeting
|
|
1185
1276
|
*/
|
|
1186
|
-
setUpLocusFullStateListener() {
|
|
1277
|
+
private setUpLocusFullStateListener() {
|
|
1187
1278
|
this.locusInfo.on(LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE, (payload) => {
|
|
1188
1279
|
Trigger.trigger(
|
|
1189
1280
|
this,
|
|
@@ -1214,7 +1305,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1214
1305
|
* @returns {Object}
|
|
1215
1306
|
* @memberof Meeting
|
|
1216
1307
|
*/
|
|
1217
|
-
getAnalyzerMetricsPrePayload(options
|
|
1308
|
+
getAnalyzerMetricsPrePayload(options: {
|
|
1309
|
+
event: string;
|
|
1310
|
+
trackingId: string;
|
|
1311
|
+
locus: object;
|
|
1312
|
+
mediaConnections: Array<any>;
|
|
1313
|
+
errors: object;
|
|
1314
|
+
} | any) {
|
|
1218
1315
|
if (options) {
|
|
1219
1316
|
const {
|
|
1220
1317
|
event,
|
|
@@ -1228,11 +1325,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1228
1325
|
return null;
|
|
1229
1326
|
}
|
|
1230
1327
|
|
|
1231
|
-
const identifiers = {
|
|
1328
|
+
const identifiers: any = {
|
|
1232
1329
|
correlationId: this.correlationId,
|
|
1233
1330
|
userId: this.userId,
|
|
1234
1331
|
deviceId: this.deviceUrl,
|
|
1235
1332
|
orgId: this.orgId,
|
|
1333
|
+
// @ts-ignore fix type
|
|
1236
1334
|
locusUrl: this.webex.internal.services.get('locus')
|
|
1237
1335
|
};
|
|
1238
1336
|
|
|
@@ -1354,12 +1452,14 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1354
1452
|
* @private
|
|
1355
1453
|
* @memberof Meeting
|
|
1356
1454
|
*/
|
|
1357
|
-
sendCallAnalyzerMetrics(options) {
|
|
1455
|
+
private sendCallAnalyzerMetrics(options: { event: string; trackingId: string; locus: object; errors: object }) {
|
|
1358
1456
|
const payload = this.getAnalyzerMetricsPrePayload({
|
|
1457
|
+
// @ts-ignore - config coming from registerPlugin
|
|
1359
1458
|
...pick(this.config.metrics, ['clientType', 'subClientType']),
|
|
1360
1459
|
...options
|
|
1361
1460
|
});
|
|
1362
1461
|
|
|
1462
|
+
// @ts-ignore - fix type
|
|
1363
1463
|
return this.webex.internal.metrics.submitCallDiagnosticEvents(payload);
|
|
1364
1464
|
}
|
|
1365
1465
|
|
|
@@ -1373,13 +1473,15 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1373
1473
|
* @private
|
|
1374
1474
|
* @memberof Meeting
|
|
1375
1475
|
*/
|
|
1376
|
-
sendMediaQualityAnalyzerMetrics(options) {
|
|
1476
|
+
private sendMediaQualityAnalyzerMetrics(options: { event: string; trackingId: string; locus: object }) {
|
|
1377
1477
|
const payload = this.getAnalyzerMetricsPrePayload({
|
|
1378
1478
|
type: MQA_STATS.CA_TYPE,
|
|
1479
|
+
// @ts-ignore - config coming from registerPlugin
|
|
1379
1480
|
...pick(this.config.metrics, ['clientType', 'subClientType']),
|
|
1380
1481
|
...options
|
|
1381
1482
|
});
|
|
1382
1483
|
|
|
1484
|
+
// @ts-ignore
|
|
1383
1485
|
return this.webex.internal.metrics.submitCallDiagnosticEvents(payload);
|
|
1384
1486
|
}
|
|
1385
1487
|
|
|
@@ -1390,7 +1492,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1390
1492
|
* @returns {undefined}
|
|
1391
1493
|
* @memberof Meeting
|
|
1392
1494
|
*/
|
|
1393
|
-
setNetworkStatus(networkStatus) {
|
|
1495
|
+
private setNetworkStatus(networkStatus: string) {
|
|
1394
1496
|
if (networkStatus === NETWORK_STATUS.DISCONNECTED) {
|
|
1395
1497
|
Trigger.trigger(
|
|
1396
1498
|
this,
|
|
@@ -1423,14 +1525,14 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1423
1525
|
* @private
|
|
1424
1526
|
* @memberof Meeting
|
|
1425
1527
|
*/
|
|
1426
|
-
setUpLocusSelfListener() {
|
|
1528
|
+
private setUpLocusSelfListener() {
|
|
1427
1529
|
this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_SELF, (payload) => {
|
|
1428
1530
|
this.members.locusSelfUpdate(payload);
|
|
1429
1531
|
this.pstnUpdate(payload);
|
|
1430
1532
|
|
|
1431
1533
|
// If user moved to a JOINED state and there is a pending floor grant trigger it
|
|
1432
1534
|
if (this.floorGrantPending && payload.newSelf.state === MEETING_STATE.STATES.JOINED) {
|
|
1433
|
-
this.
|
|
1535
|
+
this.requestScreenShareFloor()
|
|
1434
1536
|
.then(() => { this.floorGrantPending = false; });
|
|
1435
1537
|
}
|
|
1436
1538
|
});
|
|
@@ -1443,7 +1545,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1443
1545
|
* @private
|
|
1444
1546
|
* @memberof Meeting
|
|
1445
1547
|
*/
|
|
1446
|
-
pstnUpdate(payload) {
|
|
1548
|
+
private pstnUpdate(payload: any) {
|
|
1447
1549
|
if (this.locusInfo.self) {
|
|
1448
1550
|
const dialInPstnDevice = payload.newSelf?.pstnDevices.find((device) => device.url === this.dialInUrl);
|
|
1449
1551
|
const dialOutPstnDevice = payload.newSelf?.pstnDevices.find((device) => device.url === this.dialOutUrl);
|
|
@@ -1498,7 +1600,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1498
1600
|
* @private
|
|
1499
1601
|
* @memberof Meeting
|
|
1500
1602
|
*/
|
|
1501
|
-
setUpLocusHostListener() {
|
|
1603
|
+
private setUpLocusHostListener() {
|
|
1502
1604
|
this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_HOST, (payload) => {
|
|
1503
1605
|
this.members.locusHostUpdate(payload);
|
|
1504
1606
|
});
|
|
@@ -1512,13 +1614,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1512
1614
|
* @private
|
|
1513
1615
|
* @memberof Meeting
|
|
1514
1616
|
*/
|
|
1515
|
-
setUpLocusParticipantsListener() {
|
|
1617
|
+
private setUpLocusParticipantsListener() {
|
|
1516
1618
|
this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS, (payload) => {
|
|
1517
1619
|
this.members.locusParticipantsUpdate(payload);
|
|
1518
1620
|
});
|
|
1519
1621
|
}
|
|
1520
1622
|
|
|
1521
|
-
|
|
1522
1623
|
/**
|
|
1523
1624
|
* Set up the locus info recording update listener
|
|
1524
1625
|
* update recording value for the meeting
|
|
@@ -1537,7 +1638,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1537
1638
|
* @private
|
|
1538
1639
|
* @memberof Meeting
|
|
1539
1640
|
*/
|
|
1540
|
-
|
|
1641
|
+
private setupLocusControlsListener() {
|
|
1541
1642
|
this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,
|
|
1542
1643
|
({state, modifiedBy, lastModified}) => {
|
|
1543
1644
|
let event;
|
|
@@ -1593,6 +1694,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1593
1694
|
|
|
1594
1695
|
this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,
|
|
1595
1696
|
({caption, transcribing}) => {
|
|
1697
|
+
|
|
1698
|
+
// @ts-ignore - config coming from registerPlugin
|
|
1596
1699
|
if (transcribing && this.transcription && this.config.receiveTranscription) {
|
|
1597
1700
|
this.receiveTranscription();
|
|
1598
1701
|
}
|
|
@@ -1631,7 +1734,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1631
1734
|
* @private
|
|
1632
1735
|
* @memberof Meeting
|
|
1633
1736
|
*/
|
|
1634
|
-
|
|
1737
|
+
private setUpLocusMediaSharesListener() {
|
|
1635
1738
|
// Will get triggered on local and remote share
|
|
1636
1739
|
this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, (payload) => {
|
|
1637
1740
|
const {content: contentShare, whiteboard: whiteboardShare} = payload.current;
|
|
@@ -1719,7 +1822,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1719
1822
|
this,
|
|
1720
1823
|
{
|
|
1721
1824
|
file: 'meeting/index',
|
|
1722
|
-
function: '
|
|
1825
|
+
function: 'localShare'
|
|
1723
1826
|
},
|
|
1724
1827
|
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
1725
1828
|
{
|
|
@@ -1862,7 +1965,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1862
1965
|
* @private
|
|
1863
1966
|
* @memberof Meeting
|
|
1864
1967
|
*/
|
|
1865
|
-
setUpLocusUrlListener() {
|
|
1968
|
+
private setUpLocusUrlListener() {
|
|
1866
1969
|
this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_URL, (payload) => {
|
|
1867
1970
|
this.members.locusUrlUpdate(payload);
|
|
1868
1971
|
this.locusUrl = payload;
|
|
@@ -1876,7 +1979,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1876
1979
|
* @private
|
|
1877
1980
|
* @memberof meeting
|
|
1878
1981
|
*/
|
|
1879
|
-
setUpLocusInfoMeetingInfoListener() {
|
|
1982
|
+
private setUpLocusInfoMeetingInfoListener() {
|
|
1880
1983
|
this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_LOCKED, (payload) => {
|
|
1881
1984
|
if (payload) {
|
|
1882
1985
|
Trigger.trigger(
|
|
@@ -1954,7 +2057,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1954
2057
|
* @private
|
|
1955
2058
|
* @memberof meeting
|
|
1956
2059
|
*/
|
|
1957
|
-
setUpLocusEmbeddedAppsListener() {
|
|
2060
|
+
private setUpLocusEmbeddedAppsListener() {
|
|
1958
2061
|
this.locusInfo.on(LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, (embeddedApps) => {
|
|
1959
2062
|
if (embeddedApps) {
|
|
1960
2063
|
Trigger.trigger(
|
|
@@ -1976,7 +2079,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1976
2079
|
* @private
|
|
1977
2080
|
* @memberof Meeting
|
|
1978
2081
|
*/
|
|
1979
|
-
setUpLocusInfoSelfListener() {
|
|
2082
|
+
private setUpLocusInfoSelfListener() {
|
|
1980
2083
|
this.locusInfo.on(LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, (payload) => {
|
|
1981
2084
|
if (this.audio) {
|
|
1982
2085
|
this.audio.handleServerLocalUnmuteRequired(this);
|
|
@@ -2074,6 +2177,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2074
2177
|
}
|
|
2075
2178
|
});
|
|
2076
2179
|
|
|
2180
|
+
// @ts-ignore - check if MEDIA_INACTIVITY exists
|
|
2077
2181
|
this.locusInfo.on(LOCUSINFO.EVENTS.MEDIA_INACTIVITY, () => {
|
|
2078
2182
|
Metrics.sendBehavioralMetric(
|
|
2079
2183
|
BEHAVIORAL_METRICS.MEETING_MEDIA_INACTIVE,
|
|
@@ -2140,7 +2244,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2140
2244
|
* @private
|
|
2141
2245
|
* @memberof Meeting
|
|
2142
2246
|
*/
|
|
2143
|
-
setUpLocusInfoMeetingListener() {
|
|
2247
|
+
private setUpLocusInfoMeetingListener() {
|
|
2144
2248
|
this.locusInfo.on(EVENTS.REMOTE_RESPONSE, (payload) => {
|
|
2145
2249
|
this.meetingFiniteStateMachine.remote(payload);
|
|
2146
2250
|
|
|
@@ -2148,6 +2252,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2148
2252
|
this.leave({reason: payload.reason}).then(() => {
|
|
2149
2253
|
LoggerProxy.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.');
|
|
2150
2254
|
}).catch((error) => {
|
|
2255
|
+
// @ts-ignore
|
|
2151
2256
|
LoggerProxy.logger.error(`Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ${this.meeting}, error: ${error}`);
|
|
2152
2257
|
});
|
|
2153
2258
|
}
|
|
@@ -2176,6 +2281,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2176
2281
|
this.leave({reason: payload.reason}).then(() => {
|
|
2177
2282
|
LoggerProxy.logger.warn('Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. The meeting has been left, but has not been destroyed, you should see a later event for leave.');
|
|
2178
2283
|
}).catch((error) => {
|
|
2284
|
+
// @ts-ignore
|
|
2179
2285
|
LoggerProxy.logger.error(`Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ${this.meeting}, error: ${error}`);
|
|
2180
2286
|
});
|
|
2181
2287
|
}
|
|
@@ -2207,7 +2313,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2207
2313
|
* @memberof Meeting
|
|
2208
2314
|
* // TODO: is this function necessary?
|
|
2209
2315
|
*/
|
|
2210
|
-
updateMeetingObject(object) {
|
|
2316
|
+
private updateMeetingObject(object: object) {
|
|
2211
2317
|
// Validate if these are valid meeting object property
|
|
2212
2318
|
// TODO: add a check to make sure the value passed in the constructor
|
|
2213
2319
|
// is not changed by any delta event
|
|
@@ -2229,7 +2335,14 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2229
2335
|
* @public
|
|
2230
2336
|
* @memberof Meeting
|
|
2231
2337
|
*/
|
|
2232
|
-
invite(
|
|
2338
|
+
public invite(
|
|
2339
|
+
invitee: {
|
|
2340
|
+
emailAddress: string;
|
|
2341
|
+
email: string;
|
|
2342
|
+
phoneNumber: string;
|
|
2343
|
+
},
|
|
2344
|
+
alertIfActive: boolean = true
|
|
2345
|
+
) {
|
|
2233
2346
|
return this.members.addMember(invitee, alertIfActive);
|
|
2234
2347
|
}
|
|
2235
2348
|
|
|
@@ -2241,7 +2354,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2241
2354
|
* @public
|
|
2242
2355
|
* @memberof Meeting
|
|
2243
2356
|
*/
|
|
2244
|
-
cancelPhoneInvite(invitee) {
|
|
2357
|
+
public cancelPhoneInvite(invitee: { phoneNumber: string }) {
|
|
2245
2358
|
return this.members.cancelPhoneInvite(invitee);
|
|
2246
2359
|
}
|
|
2247
2360
|
|
|
@@ -2252,7 +2365,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2252
2365
|
* @public
|
|
2253
2366
|
* @memberof Meeting
|
|
2254
2367
|
*/
|
|
2255
|
-
admit(memberIds) {
|
|
2368
|
+
public admit(memberIds: Array<any>) {
|
|
2256
2369
|
return this.members.admitMembers(memberIds);
|
|
2257
2370
|
}
|
|
2258
2371
|
|
|
@@ -2263,7 +2376,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2263
2376
|
* @public
|
|
2264
2377
|
* @memberof Meeting
|
|
2265
2378
|
*/
|
|
2266
|
-
remove(memberId) {
|
|
2379
|
+
public remove(memberId: string) {
|
|
2267
2380
|
return this.members.removeMember(memberId);
|
|
2268
2381
|
}
|
|
2269
2382
|
|
|
@@ -2275,7 +2388,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2275
2388
|
* @public
|
|
2276
2389
|
* @memberof Meeting
|
|
2277
2390
|
*/
|
|
2278
|
-
mute(memberId, mute = true) {
|
|
2391
|
+
public mute(memberId: string, mute: boolean = true) {
|
|
2279
2392
|
return this.members.muteMember(memberId, mute);
|
|
2280
2393
|
}
|
|
2281
2394
|
|
|
@@ -2287,7 +2400,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2287
2400
|
* @public
|
|
2288
2401
|
* @memberof Meeting
|
|
2289
2402
|
*/
|
|
2290
|
-
transfer(memberId, moderator = true) {
|
|
2403
|
+
public transfer(memberId: string, moderator: boolean = true) {
|
|
2291
2404
|
return this.members.transferHostToMember(memberId, moderator);
|
|
2292
2405
|
}
|
|
2293
2406
|
|
|
@@ -2297,7 +2410,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2297
2410
|
* @public
|
|
2298
2411
|
* @memberof Meeting
|
|
2299
2412
|
*/
|
|
2300
|
-
getMembers() {
|
|
2413
|
+
public getMembers() {
|
|
2301
2414
|
return this.members;
|
|
2302
2415
|
}
|
|
2303
2416
|
|
|
@@ -2307,7 +2420,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2307
2420
|
* @public
|
|
2308
2421
|
* @memberof Meeting
|
|
2309
2422
|
*/
|
|
2310
|
-
isAudioConnected() {
|
|
2423
|
+
public isAudioConnected() {
|
|
2311
2424
|
return !!this.audio;
|
|
2312
2425
|
}
|
|
2313
2426
|
|
|
@@ -2317,7 +2430,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2317
2430
|
* @public
|
|
2318
2431
|
* @memberof Meeting
|
|
2319
2432
|
*/
|
|
2320
|
-
isAudioMuted() {
|
|
2433
|
+
public isAudioMuted() {
|
|
2321
2434
|
return this.audio && this.audio.isMuted();
|
|
2322
2435
|
}
|
|
2323
2436
|
|
|
@@ -2327,7 +2440,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2327
2440
|
* @public
|
|
2328
2441
|
* @memberof Meeting
|
|
2329
2442
|
*/
|
|
2330
|
-
isAudioSelf() {
|
|
2443
|
+
public isAudioSelf() {
|
|
2331
2444
|
return this.audio && this.audio.isSelf();
|
|
2332
2445
|
}
|
|
2333
2446
|
|
|
@@ -2337,7 +2450,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2337
2450
|
* @public
|
|
2338
2451
|
* @memberof Meeting
|
|
2339
2452
|
*/
|
|
2340
|
-
isVideoConnected() {
|
|
2453
|
+
public isVideoConnected() {
|
|
2341
2454
|
return !!this.video;
|
|
2342
2455
|
}
|
|
2343
2456
|
|
|
@@ -2347,7 +2460,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2347
2460
|
* @public
|
|
2348
2461
|
* @memberof Meeting
|
|
2349
2462
|
*/
|
|
2350
|
-
isVideoMuted() {
|
|
2463
|
+
public isVideoMuted() {
|
|
2351
2464
|
return this.video && this.video.isMuted();
|
|
2352
2465
|
}
|
|
2353
2466
|
|
|
@@ -2357,7 +2470,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2357
2470
|
* @public
|
|
2358
2471
|
* @memberof Meeting
|
|
2359
2472
|
*/
|
|
2360
|
-
isVideoSelf() {
|
|
2473
|
+
public isVideoSelf() {
|
|
2361
2474
|
return this.video && this.video.isSelf();
|
|
2362
2475
|
}
|
|
2363
2476
|
|
|
@@ -2374,7 +2487,17 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2374
2487
|
* @private
|
|
2375
2488
|
* @memberof Meeting
|
|
2376
2489
|
*/
|
|
2377
|
-
parseMeetingInfo(
|
|
2490
|
+
parseMeetingInfo(
|
|
2491
|
+
meetingInfo: {
|
|
2492
|
+
body: {
|
|
2493
|
+
conversationUrl: string;
|
|
2494
|
+
locusUrl: string;
|
|
2495
|
+
sipUri: string;
|
|
2496
|
+
owner: object;
|
|
2497
|
+
};
|
|
2498
|
+
} | any,
|
|
2499
|
+
destination: object | string | null = null
|
|
2500
|
+
) {
|
|
2378
2501
|
const webexMeetingInfo = meetingInfo?.body;
|
|
2379
2502
|
// We try to use as much info from Locus meeting object, stored in destination
|
|
2380
2503
|
|
|
@@ -2388,7 +2511,9 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2388
2511
|
if (locusMeetingObject || (webexMeetingInfo && !(meetingInfo?.errors && meetingInfo?.errors.length > 0))) {
|
|
2389
2512
|
this.conversationUrl = locusMeetingObject?.conversationUrl || webexMeetingInfo?.conversationUrl || this.conversationUrl;
|
|
2390
2513
|
this.locusUrl = locusMeetingObject?.url || webexMeetingInfo?.locusUrl || this.locusUrl;
|
|
2514
|
+
// @ts-ignore - config coming from registerPlugin
|
|
2391
2515
|
this.setSipUri(this.config.experimental.enableUnifiedMeetings ? locusMeetingObject?.info.sipUri || webexMeetingInfo?.sipUrl : locusMeetingObject?.info.sipUri || webexMeetingInfo?.sipMeetingUri || this.sipUri);
|
|
2516
|
+
// @ts-ignore - config coming from registerPlugin
|
|
2392
2517
|
if (this.config.experimental.enableUnifiedMeetings) {
|
|
2393
2518
|
this.meetingNumber = locusMeetingObject?.info.webExMeetingId || webexMeetingInfo?.meetingNumber;
|
|
2394
2519
|
this.meetingJoinUrl = webexMeetingInfo?.meetingJoinUrl;
|
|
@@ -2408,7 +2533,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2408
2533
|
* @private
|
|
2409
2534
|
* @memberof Meeting
|
|
2410
2535
|
*/
|
|
2411
|
-
parseLocus(locus) {
|
|
2536
|
+
private parseLocus(locus: { url: string; participants: Array<any>; self: object }) {
|
|
2412
2537
|
if (locus) {
|
|
2413
2538
|
this.locusUrl = locus.url;
|
|
2414
2539
|
// TODO: move this to parse participants module
|
|
@@ -2435,7 +2560,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2435
2560
|
* @private
|
|
2436
2561
|
* @memberof Meeting
|
|
2437
2562
|
*/
|
|
2438
|
-
setSipUri(sipUri) {
|
|
2563
|
+
setSipUri(sipUri: string) {
|
|
2439
2564
|
// This can be tel no, device id or a sip uri, user Id
|
|
2440
2565
|
this.sipUri = sipUri;
|
|
2441
2566
|
}
|
|
@@ -2453,8 +2578,14 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2453
2578
|
* @private
|
|
2454
2579
|
* @memberof Meeting
|
|
2455
2580
|
*/
|
|
2456
|
-
setLocus(locus
|
|
2457
|
-
|
|
2581
|
+
private setLocus(locus: {
|
|
2582
|
+
mediaConnections: Array<any>;
|
|
2583
|
+
locusUrl: string;
|
|
2584
|
+
locusId: string;
|
|
2585
|
+
mediaId: string;
|
|
2586
|
+
host: object;
|
|
2587
|
+
} | any) {
|
|
2588
|
+
const mtgLocus: any = locus.locus || locus;
|
|
2458
2589
|
|
|
2459
2590
|
// LocusInfo object saves the locus object
|
|
2460
2591
|
// this.locus = mtgLocus;
|
|
@@ -2474,7 +2605,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2474
2605
|
* @public
|
|
2475
2606
|
* @memberof Meeting
|
|
2476
2607
|
*/
|
|
2477
|
-
uploadLogs(options = {file: 'meeting/index', function: 'uploadLogs'}) {
|
|
2608
|
+
public uploadLogs(options: object = { file: 'meeting/index', function: 'uploadLogs' }) {
|
|
2478
2609
|
Trigger.trigger(
|
|
2479
2610
|
this,
|
|
2480
2611
|
options,
|
|
@@ -2483,7 +2614,6 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2483
2614
|
);
|
|
2484
2615
|
}
|
|
2485
2616
|
|
|
2486
|
-
|
|
2487
2617
|
/**
|
|
2488
2618
|
* Removes remote audio and video stream on the class instance and triggers an event
|
|
2489
2619
|
* to developers
|
|
@@ -2492,7 +2622,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2492
2622
|
* @memberof Meeting
|
|
2493
2623
|
* @deprecated after v1.89.3
|
|
2494
2624
|
*/
|
|
2495
|
-
unsetRemoteStream() {
|
|
2625
|
+
public unsetRemoteStream() {
|
|
2496
2626
|
LoggerProxy.logger.warn('Meeting:index#unsetRemoteStream --> [DEPRECATION WARNING]: unsetRemoteStream has been deprecated after v1.89.3');
|
|
2497
2627
|
this.mediaProperties.unsetRemoteMedia();
|
|
2498
2628
|
}
|
|
@@ -2513,7 +2643,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2513
2643
|
* @memberof Meeting
|
|
2514
2644
|
* @deprecated after v1.89.3
|
|
2515
2645
|
*/
|
|
2516
|
-
closeRemoteStream() {
|
|
2646
|
+
public closeRemoteStream() {
|
|
2517
2647
|
LoggerProxy.logger.warn('Meeting:index#closeRemoteStream --> [DEPRECATION WARNING]: closeRemoteStream has been deprecated after v1.89.3');
|
|
2518
2648
|
this.closeRemoteTracks();
|
|
2519
2649
|
}
|
|
@@ -2537,7 +2667,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2537
2667
|
* @returns {void}
|
|
2538
2668
|
* @inner
|
|
2539
2669
|
*/
|
|
2540
|
-
const triggerMediaStoppedEvent = (mediaType) => {
|
|
2670
|
+
const triggerMediaStoppedEvent = (mediaType: string) => {
|
|
2541
2671
|
Trigger.trigger(
|
|
2542
2672
|
this,
|
|
2543
2673
|
{
|
|
@@ -2559,7 +2689,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2559
2689
|
* @inner
|
|
2560
2690
|
*/
|
|
2561
2691
|
// eslint-disable-next-line arrow-body-style
|
|
2562
|
-
const stopTrack = (track, type) => {
|
|
2692
|
+
const stopTrack = (track: MediaStreamTrack, type: string) => {
|
|
2563
2693
|
return Media.stopTracks(track)
|
|
2564
2694
|
.then(() => {
|
|
2565
2695
|
const isTrackStopped = track && track.readyState === ENDED;
|
|
@@ -2587,7 +2717,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2587
2717
|
* @private
|
|
2588
2718
|
* @memberof Meeting
|
|
2589
2719
|
*/
|
|
2590
|
-
sendLocalMediaReadyEvent() {
|
|
2720
|
+
private sendLocalMediaReadyEvent() {
|
|
2591
2721
|
Trigger.trigger(
|
|
2592
2722
|
this,
|
|
2593
2723
|
{
|
|
@@ -2610,7 +2740,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2610
2740
|
* @private
|
|
2611
2741
|
* @memberof Meeting
|
|
2612
2742
|
*/
|
|
2613
|
-
setLocalAudioTrack(audioTrack, emitEvent = true) {
|
|
2743
|
+
private setLocalAudioTrack(audioTrack: MediaStreamTrack, emitEvent: boolean = true) {
|
|
2614
2744
|
if (audioTrack) {
|
|
2615
2745
|
const settings = audioTrack.getSettings();
|
|
2616
2746
|
|
|
@@ -2637,7 +2767,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2637
2767
|
* @private
|
|
2638
2768
|
* @memberof Meeting
|
|
2639
2769
|
*/
|
|
2640
|
-
setLocalVideoTrack(videoTrack, emitEvent = true) {
|
|
2770
|
+
private setLocalVideoTrack(videoTrack: MediaStreamTrack, emitEvent: boolean = true) {
|
|
2641
2771
|
if (videoTrack) {
|
|
2642
2772
|
const {
|
|
2643
2773
|
aspectRatio, frameRate, height, width, deviceId
|
|
@@ -2677,7 +2807,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2677
2807
|
* @public
|
|
2678
2808
|
* @memberof Meeting
|
|
2679
2809
|
*/
|
|
2680
|
-
setLocalTracks(localStream) {
|
|
2810
|
+
public setLocalTracks(localStream: any) {
|
|
2681
2811
|
if (localStream) {
|
|
2682
2812
|
const {audioTrack, videoTrack} = MeetingUtil.getTrack(localStream);
|
|
2683
2813
|
|
|
@@ -2690,12 +2820,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2690
2820
|
|
|
2691
2821
|
/**
|
|
2692
2822
|
* Sets the local media stream on the class and emits an event to the developer
|
|
2693
|
-
* @param {
|
|
2823
|
+
* @param {MediaStream} localShare the local media stream
|
|
2694
2824
|
* @returns {undefined}
|
|
2695
2825
|
* @public
|
|
2696
2826
|
* @memberof Meeting
|
|
2697
2827
|
*/
|
|
2698
|
-
setLocalShareTrack(localShare) {
|
|
2828
|
+
public setLocalShareTrack(localShare: MediaStream) {
|
|
2699
2829
|
let settings = null;
|
|
2700
2830
|
|
|
2701
2831
|
if (localShare) {
|
|
@@ -2739,7 +2869,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2739
2869
|
* @public
|
|
2740
2870
|
* @memberof Meeting
|
|
2741
2871
|
*/
|
|
2742
|
-
closeLocalStream() {
|
|
2872
|
+
public closeLocalStream() {
|
|
2743
2873
|
const {audioTrack, videoTrack} = this.mediaProperties;
|
|
2744
2874
|
|
|
2745
2875
|
return Media.stopTracks(audioTrack)
|
|
@@ -2774,7 +2904,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2774
2904
|
* @public
|
|
2775
2905
|
* @memberof Meeting
|
|
2776
2906
|
*/
|
|
2777
|
-
closeLocalShare() {
|
|
2907
|
+
public closeLocalShare() {
|
|
2778
2908
|
const track = this.mediaProperties.shareTrack;
|
|
2779
2909
|
|
|
2780
2910
|
return Media.stopTracks(track).then(() => {
|
|
@@ -2803,7 +2933,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2803
2933
|
* @public
|
|
2804
2934
|
* @memberof Meeting
|
|
2805
2935
|
*/
|
|
2806
|
-
unsetLocalVideoTrack() {
|
|
2936
|
+
public unsetLocalVideoTrack() {
|
|
2807
2937
|
this.mediaProperties.unsetLocalVideoTrack();
|
|
2808
2938
|
}
|
|
2809
2939
|
|
|
@@ -2813,7 +2943,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2813
2943
|
* @public
|
|
2814
2944
|
* @memberof Meeting
|
|
2815
2945
|
*/
|
|
2816
|
-
unsetLocalShareTrack() {
|
|
2946
|
+
public unsetLocalShareTrack() {
|
|
2817
2947
|
this.mediaProperties.unsetLocalShareTrack();
|
|
2818
2948
|
}
|
|
2819
2949
|
|
|
@@ -2823,9 +2953,10 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2823
2953
|
* @public
|
|
2824
2954
|
* @memberof Meeting
|
|
2825
2955
|
*/
|
|
2826
|
-
setMercuryListener() {
|
|
2956
|
+
public setMercuryListener() {
|
|
2827
2957
|
// Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
|
|
2828
2958
|
// if the meeting has active peer connections, it should try to reconnect.
|
|
2959
|
+
// @ts-ignore
|
|
2829
2960
|
this.webex.internal.mercury.on(ONLINE, () => {
|
|
2830
2961
|
LoggerProxy.logger.info('Meeting:index#setMercuryListener --> Web socket online');
|
|
2831
2962
|
|
|
@@ -2845,6 +2976,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2845
2976
|
this.hasWebsocketConnected = true;
|
|
2846
2977
|
});
|
|
2847
2978
|
|
|
2979
|
+
// @ts-ignore
|
|
2848
2980
|
this.webex.internal.mercury.on(OFFLINE, () => {
|
|
2849
2981
|
LoggerProxy.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
|
|
2850
2982
|
Metrics.postEvent({
|
|
@@ -2868,7 +3000,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2868
3000
|
* @public
|
|
2869
3001
|
* @memberof Meeting
|
|
2870
3002
|
*/
|
|
2871
|
-
closePeerConnections() {
|
|
3003
|
+
public closePeerConnections() {
|
|
2872
3004
|
if (this.mediaProperties.webrtcMediaConnection) {
|
|
2873
3005
|
if (this.remoteMediaManager) {
|
|
2874
3006
|
this.remoteMediaManager.stop();
|
|
@@ -2891,9 +3023,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2891
3023
|
* @public
|
|
2892
3024
|
* @memberof Meeting
|
|
2893
3025
|
*/
|
|
2894
|
-
unsetPeerConnections() {
|
|
3026
|
+
public unsetPeerConnections() {
|
|
2895
3027
|
this.mediaProperties.unsetPeerConnection();
|
|
3028
|
+
// @ts-ignore - config coming from registerPlugin
|
|
2896
3029
|
if (this.config.reconnection.detection) {
|
|
3030
|
+
// @ts-ignore
|
|
2897
3031
|
this.webex.internal.mercury.off(ONLINE);
|
|
2898
3032
|
}
|
|
2899
3033
|
}
|
|
@@ -2905,7 +3039,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2905
3039
|
* @private
|
|
2906
3040
|
* @memberof Meeting
|
|
2907
3041
|
*/
|
|
2908
|
-
setCorrelationId(id) {
|
|
3042
|
+
private setCorrelationId(id: string) {
|
|
2909
3043
|
this.correlationId = id;
|
|
2910
3044
|
}
|
|
2911
3045
|
|
|
@@ -2915,11 +3049,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2915
3049
|
* @public
|
|
2916
3050
|
* @memberof Meeting
|
|
2917
3051
|
*/
|
|
2918
|
-
muteAudio() {
|
|
3052
|
+
public muteAudio() {
|
|
2919
3053
|
if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {
|
|
2920
3054
|
return Promise.reject(new UserNotJoinedError());
|
|
2921
3055
|
}
|
|
2922
3056
|
|
|
3057
|
+
// @ts-ignore
|
|
2923
3058
|
if (!this.mediaId) {
|
|
2924
3059
|
// Happens when addMedia and mute are triggered in succession
|
|
2925
3060
|
return Promise.reject(new NoMediaEstablishedYetError());
|
|
@@ -2966,11 +3101,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
2966
3101
|
* @public
|
|
2967
3102
|
* @memberof Meeting
|
|
2968
3103
|
*/
|
|
2969
|
-
unmuteAudio() {
|
|
3104
|
+
public unmuteAudio() {
|
|
2970
3105
|
if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {
|
|
2971
3106
|
return Promise.reject(new UserNotJoinedError());
|
|
2972
3107
|
}
|
|
2973
3108
|
|
|
3109
|
+
// @ts-ignore
|
|
2974
3110
|
if (!this.mediaId) {
|
|
2975
3111
|
// Happens when addMedia and mute are triggered in succession
|
|
2976
3112
|
return Promise.reject(new NoMediaEstablishedYetError());
|
|
@@ -3017,11 +3153,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3017
3153
|
* @public
|
|
3018
3154
|
* @memberof Meeting
|
|
3019
3155
|
*/
|
|
3020
|
-
muteVideo() {
|
|
3156
|
+
public muteVideo() {
|
|
3021
3157
|
if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {
|
|
3022
3158
|
return Promise.reject(new UserNotJoinedError());
|
|
3023
3159
|
}
|
|
3024
3160
|
|
|
3161
|
+
// @ts-ignore
|
|
3025
3162
|
if (!this.mediaId) {
|
|
3026
3163
|
// Happens when addMedia and mute are triggered in succession
|
|
3027
3164
|
return Promise.reject(new NoMediaEstablishedYetError());
|
|
@@ -3067,11 +3204,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3067
3204
|
* @public
|
|
3068
3205
|
* @memberof Meeting
|
|
3069
3206
|
*/
|
|
3070
|
-
unmuteVideo() {
|
|
3207
|
+
public unmuteVideo() {
|
|
3071
3208
|
if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {
|
|
3072
3209
|
return Promise.reject(new UserNotJoinedError());
|
|
3073
3210
|
}
|
|
3074
3211
|
|
|
3212
|
+
// @ts-ignore
|
|
3075
3213
|
if (!this.mediaId) {
|
|
3076
3214
|
// Happens when addMedia and mute are triggered in succession
|
|
3077
3215
|
return Promise.reject(new NoMediaEstablishedYetError());
|
|
@@ -3136,7 +3274,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3136
3274
|
* video: 'videoDeviceId'
|
|
3137
3275
|
* }})
|
|
3138
3276
|
*/
|
|
3139
|
-
joinWithMedia(
|
|
3277
|
+
public joinWithMedia(
|
|
3278
|
+
options: {
|
|
3279
|
+
joinOptions?: any;
|
|
3280
|
+
mediaSettings: any;
|
|
3281
|
+
audioVideoOptions?: any;
|
|
3282
|
+
} = {} as any
|
|
3283
|
+
) {
|
|
3140
3284
|
// TODO: add validations for parameters
|
|
3141
3285
|
const {mediaSettings, joinOptions, audioVideoOptions} = options;
|
|
3142
3286
|
|
|
@@ -3180,19 +3324,21 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3180
3324
|
* @public
|
|
3181
3325
|
* @memberof Meeting
|
|
3182
3326
|
*/
|
|
3183
|
-
reconnect(options) {
|
|
3327
|
+
public reconnect(options?: object) {
|
|
3184
3328
|
LoggerProxy.logger.log(`Meeting:index#reconnect --> attempting to reconnect meeting ${this.id}`);
|
|
3185
3329
|
|
|
3186
3330
|
if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
|
|
3187
3331
|
return Promise.reject(new ParameterError('Cannot reconnect, ReconnectionManager must first be defined.'));
|
|
3188
3332
|
}
|
|
3189
3333
|
|
|
3334
|
+
// @ts-ignore - currentMediaStatus coming from SelfUtil
|
|
3190
3335
|
if (!MeetingUtil.isMediaEstablished(this.currentMediaStatus)) {
|
|
3191
3336
|
return Promise.reject(new ParameterError('Cannot reconnect, Media has not established to reconnect'));
|
|
3192
3337
|
}
|
|
3193
3338
|
|
|
3194
3339
|
try {
|
|
3195
3340
|
LoggerProxy.logger.info('Meeting:index#reconnect --> Validating reconnect ability.');
|
|
3341
|
+
// @ts-ignore
|
|
3196
3342
|
this.reconnectionManager.validate();
|
|
3197
3343
|
}
|
|
3198
3344
|
catch (error) {
|
|
@@ -3216,7 +3362,6 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3216
3362
|
EVENT_TRIGGERS.MEETING_RECONNECTION_STARTING
|
|
3217
3363
|
);
|
|
3218
3364
|
|
|
3219
|
-
|
|
3220
3365
|
return this.reconnectionManager
|
|
3221
3366
|
.reconnect(options)
|
|
3222
3367
|
.then(() => {
|
|
@@ -3289,7 +3434,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3289
3434
|
* @private
|
|
3290
3435
|
* @returns {void}
|
|
3291
3436
|
*/
|
|
3292
|
-
monitorTranscriptionSocketConnection() {
|
|
3437
|
+
private monitorTranscriptionSocketConnection() {
|
|
3293
3438
|
this.transcription.onCloseSocket((event) => {
|
|
3294
3439
|
LoggerProxy.logger.info(
|
|
3295
3440
|
`Meeting:index#onCloseSocket -->
|
|
@@ -3327,7 +3472,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3327
3472
|
* @private
|
|
3328
3473
|
* @returns {Promise<void>} a promise to open the WebSocket connection
|
|
3329
3474
|
*/
|
|
3330
|
-
async receiveTranscription() {
|
|
3475
|
+
private async receiveTranscription() {
|
|
3331
3476
|
LoggerProxy.logger.info(
|
|
3332
3477
|
`Meeting:index#receiveTranscription -->
|
|
3333
3478
|
Attempting to generate a web socket url.`
|
|
@@ -3335,6 +3480,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3335
3480
|
|
|
3336
3481
|
try {
|
|
3337
3482
|
const {datachannelUrl} = this.locusInfo.info;
|
|
3483
|
+
// @ts-ignore - fix type
|
|
3338
3484
|
const {body: {webSocketUrl}} = await this.request({
|
|
3339
3485
|
method: HTTP_VERBS.POST,
|
|
3340
3486
|
uri: datachannelUrl,
|
|
@@ -3348,6 +3494,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3348
3494
|
|
|
3349
3495
|
this.transcription = new Transcription(
|
|
3350
3496
|
webSocketUrl,
|
|
3497
|
+
// @ts-ignore - fix type
|
|
3351
3498
|
this.webex.sessionId,
|
|
3352
3499
|
this.members,
|
|
3353
3500
|
);
|
|
@@ -3371,6 +3518,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3371
3518
|
});
|
|
3372
3519
|
|
|
3373
3520
|
this.monitorTranscriptionSocketConnection();
|
|
3521
|
+
// @ts-ignore - fix type
|
|
3374
3522
|
this.transcription.connect(this.webex.credentials.supertoken.access_token);
|
|
3375
3523
|
}
|
|
3376
3524
|
catch (error) {
|
|
@@ -3403,12 +3551,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3403
3551
|
* @private
|
|
3404
3552
|
* @returns{void}
|
|
3405
3553
|
*/
|
|
3406
|
-
triggerStopReceivingTranscriptionEvent() {
|
|
3554
|
+
private triggerStopReceivingTranscriptionEvent() {
|
|
3407
3555
|
LoggerProxy.logger.info(`
|
|
3408
3556
|
Meeting:index#stopReceivingTranscription -->
|
|
3409
3557
|
closed transcription LLM web socket connection successfully.`);
|
|
3410
3558
|
|
|
3411
|
-
|
|
3412
3559
|
Trigger.trigger(
|
|
3413
3560
|
this,
|
|
3414
3561
|
{
|
|
@@ -3431,7 +3578,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3431
3578
|
* if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop
|
|
3432
3579
|
* Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
|
|
3433
3580
|
*/
|
|
3434
|
-
join(options = {}) {
|
|
3581
|
+
public join(options: any = {}) {
|
|
3582
|
+
// @ts-ignore - fix type
|
|
3435
3583
|
if (!this.webex.meetings.registered) {
|
|
3436
3584
|
const errorMessage = 'Meeting:index#join --> Device not registered';
|
|
3437
3585
|
const error = new Error(errorMessage);
|
|
@@ -3559,6 +3707,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3559
3707
|
return join;
|
|
3560
3708
|
}).then(async (join) => {
|
|
3561
3709
|
if (isBrowser) {
|
|
3710
|
+
// @ts-ignore - config coming from registerPlugin
|
|
3562
3711
|
if (this.config.receiveTranscription || options.receiveTranscription) {
|
|
3563
3712
|
if (this.isTranscriptionSupported()) {
|
|
3564
3713
|
await this.receiveTranscription();
|
|
@@ -3570,7 +3719,6 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3570
3719
|
LoggerProxy.logger.error('Meeting:index#join --> Receving transcription is not supported on this platform');
|
|
3571
3720
|
}
|
|
3572
3721
|
|
|
3573
|
-
|
|
3574
3722
|
return join;
|
|
3575
3723
|
})
|
|
3576
3724
|
.catch((error) => {
|
|
@@ -3623,7 +3771,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3623
3771
|
* @public
|
|
3624
3772
|
* @memberof Meeting
|
|
3625
3773
|
*/
|
|
3626
|
-
usePhoneAudio(phoneNumber) {
|
|
3774
|
+
public usePhoneAudio(phoneNumber: string) {
|
|
3627
3775
|
if (!phoneNumber) {
|
|
3628
3776
|
return this.dialInPstn();
|
|
3629
3777
|
}
|
|
@@ -3638,7 +3786,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3638
3786
|
* @private
|
|
3639
3787
|
* @memberof Meeting
|
|
3640
3788
|
*/
|
|
3641
|
-
isPhoneProvisioned(pstnStatus) {
|
|
3789
|
+
private isPhoneProvisioned(pstnStatus: string) {
|
|
3642
3790
|
return [PSTN_STATUS.JOINED, PSTN_STATUS.CONNECTED, PSTN_STATUS.SUCCESS].includes(pstnStatus);
|
|
3643
3791
|
}
|
|
3644
3792
|
|
|
@@ -3648,7 +3796,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3648
3796
|
* @private
|
|
3649
3797
|
* @memberof Meeting
|
|
3650
3798
|
*/
|
|
3651
|
-
dialInPstn() {
|
|
3799
|
+
private dialInPstn() {
|
|
3652
3800
|
if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return Promise.resolve(); // prevent multiple dial in devices from being provisioned
|
|
3653
3801
|
|
|
3654
3802
|
const {correlationId, locusUrl} = this;
|
|
@@ -3686,7 +3834,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3686
3834
|
* @private
|
|
3687
3835
|
* @memberof Meeting
|
|
3688
3836
|
*/
|
|
3689
|
-
dialOutPstn(phoneNumber) {
|
|
3837
|
+
private dialOutPstn(phoneNumber: string) {
|
|
3690
3838
|
if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return Promise.resolve(); // prevent multiple dial out devices from being provisioned
|
|
3691
3839
|
|
|
3692
3840
|
const {correlationId, locusUrl} = this;
|
|
@@ -3725,7 +3873,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3725
3873
|
* @memberof Meeting
|
|
3726
3874
|
* @returns {Promise}
|
|
3727
3875
|
*/
|
|
3728
|
-
disconnectPhoneAudio() {
|
|
3876
|
+
public disconnectPhoneAudio() {
|
|
3729
3877
|
return Promise.all([
|
|
3730
3878
|
this.isPhoneProvisioned(this.dialInDeviceStatus) ?
|
|
3731
3879
|
MeetingUtil.disconnectPhoneAudio(this, this.dialInUrl) :
|
|
@@ -3743,7 +3891,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3743
3891
|
* @public
|
|
3744
3892
|
* @memberof Meeting
|
|
3745
3893
|
*/
|
|
3746
|
-
moveTo(resourceId) {
|
|
3894
|
+
public moveTo(resourceId: string) {
|
|
3747
3895
|
if (!resourceId) {
|
|
3748
3896
|
throw new ParameterError('Cannot move call without a resourceId.');
|
|
3749
3897
|
}
|
|
@@ -3778,7 +3926,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3778
3926
|
|
|
3779
3927
|
try {
|
|
3780
3928
|
if (this.isSharing) {
|
|
3781
|
-
await this.
|
|
3929
|
+
await this.releaseScreenShareFloor();
|
|
3782
3930
|
}
|
|
3783
3931
|
const mediaSettings = {
|
|
3784
3932
|
mediaDirection: {
|
|
@@ -3803,6 +3951,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3803
3951
|
|
|
3804
3952
|
// when a move to is intiated by the client , Locus delets the existing media node from the server as soon the DX answers the meeting
|
|
3805
3953
|
// once the DX answers we establish connection back the media server with only receiveShare enabled
|
|
3954
|
+
// @ts-ignore - reconnectMedia does not accept any argument
|
|
3806
3955
|
await this.reconnectionManager.reconnectMedia(mediaSettings)
|
|
3807
3956
|
.then(() => {
|
|
3808
3957
|
Metrics.sendBehavioralMetric(
|
|
@@ -3852,7 +4001,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3852
4001
|
* @public
|
|
3853
4002
|
* @memberof Meeting
|
|
3854
4003
|
*/
|
|
3855
|
-
moveFrom(resourceId) {
|
|
4004
|
+
public moveFrom(resourceId: string) {
|
|
3856
4005
|
// On moveFrom ask the developer to re capture it moveFrom then updateMedia
|
|
3857
4006
|
if (!resourceId) {
|
|
3858
4007
|
throw new ParameterError('Cannot move call without a resourceId.');
|
|
@@ -3902,10 +4051,10 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3902
4051
|
* @memberof Meeting
|
|
3903
4052
|
*/
|
|
3904
4053
|
getMediaStreams = (
|
|
3905
|
-
mediaDirection,
|
|
4054
|
+
mediaDirection: any,
|
|
3906
4055
|
// This return an OBJECT {video: {height, widght}}
|
|
3907
|
-
audioVideo = VIDEO_RESOLUTIONS[this.mediaProperties.localQualityLevel],
|
|
3908
|
-
sharePreferences
|
|
4056
|
+
audioVideo: any = VIDEO_RESOLUTIONS[this.mediaProperties.localQualityLevel],
|
|
4057
|
+
sharePreferences?: any
|
|
3909
4058
|
) => {
|
|
3910
4059
|
if (
|
|
3911
4060
|
mediaDirection &&
|
|
@@ -3982,6 +4131,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3982
4131
|
},
|
|
3983
4132
|
audioVideo,
|
|
3984
4133
|
sharePreferences,
|
|
4134
|
+
// @ts-ignore - config coming from registerPlugin
|
|
3985
4135
|
this.config
|
|
3986
4136
|
)
|
|
3987
4137
|
.catch((error) => {
|
|
@@ -4019,7 +4169,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4019
4169
|
* @returns {Object}
|
|
4020
4170
|
* @memberof Meetings
|
|
4021
4171
|
*/
|
|
4022
|
-
getSupportedDevices = ({sendAudio = true, sendVideo = true}) => Media.getSupportedDevice({sendAudio, sendVideo});
|
|
4172
|
+
getSupportedDevices = ({ sendAudio = true, sendVideo = true }: { sendAudio: boolean; sendVideo: boolean }) => Media.getSupportedDevice({ sendAudio, sendVideo });
|
|
4023
4173
|
|
|
4024
4174
|
/**
|
|
4025
4175
|
* Get the devices from the Media module
|
|
@@ -4059,7 +4209,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4059
4209
|
data: {
|
|
4060
4210
|
canProceed: false,
|
|
4061
4211
|
errors: [
|
|
4062
|
-
Metrics.generateErrorPayload(2001, true, MetricsError.name.MEDIA_ENGINE)]
|
|
4212
|
+
Metrics.generateErrorPayload(2001, true, MetricsError.name.MEDIA_ENGINE, undefined)]
|
|
4063
4213
|
}
|
|
4064
4214
|
});
|
|
4065
4215
|
}
|
|
@@ -4071,7 +4221,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4071
4221
|
meetingId: this.id,
|
|
4072
4222
|
data: {
|
|
4073
4223
|
canProceed: false,
|
|
4074
|
-
errors: [Metrics.generateErrorPayload(2001, true,
|
|
4224
|
+
errors: [Metrics.generateErrorPayload(2001, true, MetricsError.name.MEDIA_ENGINE, undefined)]
|
|
4075
4225
|
}
|
|
4076
4226
|
});
|
|
4077
4227
|
}
|
|
@@ -4084,7 +4234,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4084
4234
|
data: {
|
|
4085
4235
|
canProceed: false,
|
|
4086
4236
|
errors: [
|
|
4087
|
-
Metrics.generateErrorPayload(2001, true, MetricsError.name.MEDIA_ENGINE)]
|
|
4237
|
+
Metrics.generateErrorPayload(2001, true, MetricsError.name.MEDIA_ENGINE, undefined)]
|
|
4088
4238
|
}
|
|
4089
4239
|
});
|
|
4090
4240
|
}
|
|
@@ -4264,7 +4414,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4264
4414
|
canProceed: false,
|
|
4265
4415
|
errors: [
|
|
4266
4416
|
Metrics.generateErrorPayload(
|
|
4267
|
-
2004, false, MetricsError.name.MEDIA_ENGINE
|
|
4417
|
+
2004, false, MetricsError.name.MEDIA_ENGINE, undefined
|
|
4268
4418
|
)]
|
|
4269
4419
|
}
|
|
4270
4420
|
});
|
|
@@ -4376,6 +4526,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4376
4526
|
this.statsAnalyzer.on(StatsAnalyzerEvents.MEDIA_QUALITY, (options) => {
|
|
4377
4527
|
// TODO: might have to send the same event to the developer
|
|
4378
4528
|
// Add ip address info if geo hint is present
|
|
4529
|
+
// @ts-ignore fix type
|
|
4379
4530
|
options.data.intervalMetadata.peerReflexiveIP = this.webex.meetings.geoHintInfo?.clientAddress || options.data.intervalMetadata.peerReflexiveIP || MQA_STATS.DEFAULT_IP;
|
|
4380
4531
|
Metrics.postEvent({event: eventType.MEDIA_QUALITY, meeting: this, data: {intervalData: options.data, networkType: options.networkType}});
|
|
4381
4532
|
});
|
|
@@ -4446,7 +4597,9 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4446
4597
|
{
|
|
4447
4598
|
mediaProperties: this.mediaProperties,
|
|
4448
4599
|
remoteQualityLevel: this.mediaProperties.remoteQualityLevel,
|
|
4600
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4449
4601
|
enableRtx: this.config.enableRtx,
|
|
4602
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4450
4603
|
enableExtmap: this.config.enableExtmap,
|
|
4451
4604
|
turnServerInfo
|
|
4452
4605
|
}
|
|
@@ -4491,7 +4644,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4491
4644
|
* @public
|
|
4492
4645
|
* @memberof Meeting
|
|
4493
4646
|
*/
|
|
4494
|
-
addMedia(options = {}) {
|
|
4647
|
+
addMedia(options: any = {}) {
|
|
4495
4648
|
const LOG_HEADER = 'Meeting:index#addMedia -->';
|
|
4496
4649
|
|
|
4497
4650
|
let turnDiscoverySkippedReason;
|
|
@@ -4505,6 +4658,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4505
4658
|
return Promise.reject(new UserNotJoinedError());
|
|
4506
4659
|
}
|
|
4507
4660
|
// If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
|
|
4661
|
+
// @ts-ignore - isUserUnadmitted coming from SelfUtil
|
|
4508
4662
|
if (this.isUserUnadmitted && !this.wirelessShare) {
|
|
4509
4663
|
return Promise.reject(new UserInLobbyError());
|
|
4510
4664
|
}
|
|
@@ -4577,8 +4731,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4577
4731
|
this.handleMediaLogging(this.mediaProperties);
|
|
4578
4732
|
LoggerProxy.logger.info(`${LOG_HEADER} media connection created`);
|
|
4579
4733
|
|
|
4734
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4580
4735
|
if (this.config.stats.enableStatsAnalyzer) {
|
|
4736
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4581
4737
|
this.networkQualityMonitor = new NetworkQualityMonitor(this.config.stats);
|
|
4738
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4582
4739
|
this.statsAnalyzer = new StatsAnalyzer(this.config.stats, this.networkQualityMonitor);
|
|
4583
4740
|
this.setupStatsAnalyzerEventHandlers();
|
|
4584
4741
|
this.networkQualityMonitor.on(EVENT_TRIGGERS.NETWORK_QUALITY, this.sendNetworkQualityEvent.bind(this));
|
|
@@ -4589,7 +4746,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4589
4746
|
|
|
4590
4747
|
throw error;
|
|
4591
4748
|
})
|
|
4592
|
-
.then(() => new Promise((resolve, reject) => {
|
|
4749
|
+
.then(() => new Promise<void>((resolve, reject) => {
|
|
4593
4750
|
let timerCount = 0;
|
|
4594
4751
|
|
|
4595
4752
|
// eslint-disable-next-line func-names
|
|
@@ -4620,7 +4777,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4620
4777
|
LoggerProxy.logger.info(`${LOG_HEADER} PeerConnection CONNECTED`);
|
|
4621
4778
|
if (mediaSettings && mediaSettings.sendShare && localShare) {
|
|
4622
4779
|
if (this.state === MEETING_STATE.STATES.JOINED) {
|
|
4623
|
-
return this.
|
|
4780
|
+
return this.requestScreenShareFloor();
|
|
4624
4781
|
}
|
|
4625
4782
|
|
|
4626
4783
|
// When the self state changes to JOINED then request the floor
|
|
@@ -4707,7 +4864,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4707
4864
|
* @private
|
|
4708
4865
|
* @memberof Meeting
|
|
4709
4866
|
*/
|
|
4710
|
-
enqueueMediaUpdate(mediaUpdateType, options) {
|
|
4867
|
+
private enqueueMediaUpdate(mediaUpdateType: string, options: object) {
|
|
4711
4868
|
return new Promise((resolve, reject) => {
|
|
4712
4869
|
const queueItem = {
|
|
4713
4870
|
pendingPromiseResolve: resolve, pendingPromiseReject: reject, mediaUpdateType, options
|
|
@@ -4725,6 +4882,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4725
4882
|
* @memberof Meeting
|
|
4726
4883
|
*/
|
|
4727
4884
|
mediaNegotiatedEvent = () => {
|
|
4885
|
+
// @ts-ignore - config coming from registerPlugin
|
|
4728
4886
|
if (this.config.experimental.enableMediaNegotiatedEvent) {
|
|
4729
4887
|
LoggerProxy.logger.info('Meeting:mediaNegotiatedEvent --> Media server negotiated');
|
|
4730
4888
|
Trigger.trigger(
|
|
@@ -4783,7 +4941,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4783
4941
|
* @public
|
|
4784
4942
|
* @memberof Meeting
|
|
4785
4943
|
*/
|
|
4786
|
-
updateMedia(
|
|
4944
|
+
public updateMedia(
|
|
4945
|
+
options: {
|
|
4946
|
+
localStream?: MediaStream;
|
|
4947
|
+
localShare?: MediaStream;
|
|
4948
|
+
mediaSettings?: any;
|
|
4949
|
+
} = {} as any
|
|
4950
|
+
) {
|
|
4787
4951
|
const LOG_HEADER = 'Meeting:index#updateMedia -->';
|
|
4788
4952
|
|
|
4789
4953
|
if (!this.canUpdateMedia()) {
|
|
@@ -4842,7 +5006,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4842
5006
|
// we actually get a OFFER from the server and a GLAR condition happens
|
|
4843
5007
|
if (startShare) {
|
|
4844
5008
|
// We are assuming that the clients are connected when doing an update
|
|
4845
|
-
return this.
|
|
5009
|
+
return this.requestScreenShareFloor();
|
|
4846
5010
|
}
|
|
4847
5011
|
|
|
4848
5012
|
return Promise.resolve();
|
|
@@ -4862,7 +5026,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4862
5026
|
* @public
|
|
4863
5027
|
* @memberof Meeting
|
|
4864
5028
|
*/
|
|
4865
|
-
async updateAudio(options) {
|
|
5029
|
+
public async updateAudio(options: { sendAudio: boolean; receiveAudio: boolean; stream: MediaStream }) {
|
|
4866
5030
|
if (!this.canUpdateMedia()) {
|
|
4867
5031
|
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.AUDIO, options);
|
|
4868
5032
|
}
|
|
@@ -4921,7 +5085,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4921
5085
|
* @public
|
|
4922
5086
|
* @memberof Meeting
|
|
4923
5087
|
*/
|
|
4924
|
-
updateVideo(options) {
|
|
5088
|
+
public updateVideo(options: { sendVideo: boolean; receiveVideo: boolean; stream: MediaStream }) {
|
|
4925
5089
|
if (!this.canUpdateMedia()) {
|
|
4926
5090
|
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.VIDEO, options);
|
|
4927
5091
|
}
|
|
@@ -4964,7 +5128,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4964
5128
|
* @private
|
|
4965
5129
|
* @memberof Meeting
|
|
4966
5130
|
*/
|
|
4967
|
-
checkForStopShare(sendShare, previousShareStatus) {
|
|
5131
|
+
private checkForStopShare(sendShare: boolean, previousShareStatus: boolean) {
|
|
4968
5132
|
if (sendShare && !previousShareStatus) {
|
|
4969
5133
|
// When user starts sharing
|
|
4970
5134
|
return Promise.resolve(true);
|
|
@@ -4972,7 +5136,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4972
5136
|
|
|
4973
5137
|
if (!sendShare && previousShareStatus) {
|
|
4974
5138
|
// When user stops sharing
|
|
4975
|
-
return this.
|
|
5139
|
+
return this.releaseScreenShareFloor()
|
|
4976
5140
|
.then(() => Promise.resolve(false));
|
|
4977
5141
|
}
|
|
4978
5142
|
|
|
@@ -4991,7 +5155,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4991
5155
|
* @public
|
|
4992
5156
|
* @memberof Meeting
|
|
4993
5157
|
*/
|
|
4994
|
-
updateShare(options) {
|
|
5158
|
+
public updateShare(options: { sendShare?: boolean; receiveShare?: boolean, stream?: any, skipSignalingCheck?: boolean }) {
|
|
4995
5159
|
if (!options.skipSignalingCheck && !this.canUpdateMedia()) {
|
|
4996
5160
|
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.SHARE, options);
|
|
4997
5161
|
}
|
|
@@ -5023,7 +5187,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5023
5187
|
})
|
|
5024
5188
|
.then(() => {
|
|
5025
5189
|
if (startShare) {
|
|
5026
|
-
return this.
|
|
5190
|
+
return this.requestScreenShareFloor();
|
|
5027
5191
|
}
|
|
5028
5192
|
|
|
5029
5193
|
return Promise.resolve();
|
|
@@ -5033,7 +5197,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5033
5197
|
this.mediaProperties.mediaDirection.receiveShare = receiveShare;
|
|
5034
5198
|
})
|
|
5035
5199
|
.catch((error) => {
|
|
5036
|
-
this.unsetLocalShareTrack(
|
|
5200
|
+
this.unsetLocalShareTrack();
|
|
5037
5201
|
throw error;
|
|
5038
5202
|
});
|
|
5039
5203
|
}
|
|
@@ -5047,9 +5211,10 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5047
5211
|
* @private
|
|
5048
5212
|
* @memberof Meeting
|
|
5049
5213
|
*/
|
|
5050
|
-
preMedia(localStream, localShare, mediaSettings) {
|
|
5214
|
+
private preMedia(localStream: MediaStream, localShare: MediaStream, mediaSettings: any) {
|
|
5051
5215
|
// eslint-disable-next-line no-warning-comments
|
|
5052
5216
|
// TODO wire into default config. There's currently an issue with the stateless plugin or how we register
|
|
5217
|
+
// @ts-ignore - config coming from registerPlugin
|
|
5053
5218
|
this.mediaProperties.setMediaDirection(Object.assign(this.config.mediaSettings, mediaSettings));
|
|
5054
5219
|
// add a setup a function move the create and setup media in future
|
|
5055
5220
|
// TODO: delete old audio and video if stale
|
|
@@ -5067,7 +5232,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5067
5232
|
* @public
|
|
5068
5233
|
* @memberof Meeting
|
|
5069
5234
|
*/
|
|
5070
|
-
acknowledge(type) {
|
|
5235
|
+
public acknowledge(type: string) {
|
|
5071
5236
|
if (!type) {
|
|
5072
5237
|
return Promise.reject(new ParameterError('Type must be set to acknowledge the meeting.'));
|
|
5073
5238
|
}
|
|
@@ -5102,7 +5267,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5102
5267
|
* @public
|
|
5103
5268
|
* @memberof Meeting
|
|
5104
5269
|
*/
|
|
5105
|
-
decline(reason) {
|
|
5270
|
+
public decline(reason: string) {
|
|
5106
5271
|
return MeetingUtil.declineMeeting(this, reason).then((decline) => {
|
|
5107
5272
|
this.meetingFiniteStateMachine.decline();
|
|
5108
5273
|
|
|
@@ -5122,7 +5287,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5122
5287
|
* @public
|
|
5123
5288
|
* @memberof Meeting
|
|
5124
5289
|
*/
|
|
5125
|
-
leave(options = {}) {
|
|
5290
|
+
public leave(options: { resourceId?: string, reason?: any } = {} as any) {
|
|
5126
5291
|
Metrics.postEvent({event: eventType.LEAVE, meeting: this, data: {trigger: trigger.USER_INTERACTION, canProceed: false}});
|
|
5127
5292
|
const leaveReason = options.reason || MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
|
|
5128
5293
|
|
|
@@ -5199,7 +5364,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5199
5364
|
* @public
|
|
5200
5365
|
* @memberof Meeting
|
|
5201
5366
|
*/
|
|
5202
|
-
startWhiteboardShare(channelUrl, resourceToken) {
|
|
5367
|
+
public startWhiteboardShare(channelUrl: string, resourceToken: string) {
|
|
5203
5368
|
const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');
|
|
5204
5369
|
|
|
5205
5370
|
if (!channelUrl) {
|
|
@@ -5209,7 +5374,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5209
5374
|
if (whiteboard) {
|
|
5210
5375
|
Metrics.postEvent({event: eventType.WHITEBOARD_SHARE_INITIATED, meeting: this});
|
|
5211
5376
|
|
|
5212
|
-
const body = {
|
|
5377
|
+
const body: any = {
|
|
5213
5378
|
disposition: FLOOR_ACTION.GRANTED,
|
|
5214
5379
|
personUrl: this.locusInfo.self.url,
|
|
5215
5380
|
deviceUrl: this.deviceUrl,
|
|
@@ -5255,7 +5420,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5255
5420
|
* @public
|
|
5256
5421
|
* @memberof Meeting
|
|
5257
5422
|
*/
|
|
5258
|
-
stopWhiteboardShare(channelUrl) {
|
|
5423
|
+
public stopWhiteboardShare(channelUrl: string) {
|
|
5259
5424
|
const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');
|
|
5260
5425
|
|
|
5261
5426
|
if (whiteboard) {
|
|
@@ -5271,6 +5436,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5271
5436
|
LoggerProxy.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
|
|
5272
5437
|
|
|
5273
5438
|
Metrics.sendBehavioralMetric(
|
|
5439
|
+
// @ts-ignore - check if STOP_WHITEBOARD_SHARE_FAILURE exists
|
|
5274
5440
|
BEHAVIORAL_METRICS.STOP_WHITEBOARD_SHARE_FAILURE,
|
|
5275
5441
|
{
|
|
5276
5442
|
correlation_id: this.correlationId,
|
|
@@ -5291,12 +5457,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5291
5457
|
}
|
|
5292
5458
|
|
|
5293
5459
|
/**
|
|
5294
|
-
*
|
|
5460
|
+
* Sends a request to Locus to obtain the screen share floor
|
|
5295
5461
|
* @returns {Promise} see #meetingRequest.changeMeetingFloor
|
|
5296
5462
|
* @private
|
|
5297
5463
|
* @memberof Meeting
|
|
5298
5464
|
*/
|
|
5299
|
-
|
|
5465
|
+
private requestScreenShareFloor() {
|
|
5300
5466
|
const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);
|
|
5301
5467
|
|
|
5302
5468
|
if (content && (this.shareStatus !== SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
|
|
@@ -5342,7 +5508,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5342
5508
|
*/
|
|
5343
5509
|
// Internal only, temporarily allows optional params
|
|
5344
5510
|
// eslint-disable-next-line valid-jsdoc
|
|
5345
|
-
stopShare(options = {}) {
|
|
5511
|
+
public stopShare(options = {}) {
|
|
5346
5512
|
return this.updateShare({
|
|
5347
5513
|
sendShare: false,
|
|
5348
5514
|
receiveShare: this.mediaProperties.mediaDirection.receiveShare,
|
|
@@ -5351,12 +5517,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5351
5517
|
}
|
|
5352
5518
|
|
|
5353
5519
|
/**
|
|
5354
|
-
*
|
|
5520
|
+
* Sends a request to Locus to release the screen share floor.
|
|
5355
5521
|
* @returns {Promise} see #meetingRequest.changeMeetingFloor
|
|
5356
5522
|
* @private
|
|
5357
5523
|
* @memberof Meeting
|
|
5358
5524
|
*/
|
|
5359
|
-
|
|
5525
|
+
private releaseScreenShareFloor() {
|
|
5360
5526
|
const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);
|
|
5361
5527
|
|
|
5362
5528
|
if (content && (this.mediaProperties.mediaDirection.sendShare)) {
|
|
@@ -5378,7 +5544,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5378
5544
|
resourceUrl: this.resourceUrl
|
|
5379
5545
|
})
|
|
5380
5546
|
.catch((error) => {
|
|
5381
|
-
LoggerProxy.logger.error('Meeting:index#
|
|
5547
|
+
LoggerProxy.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
|
|
5382
5548
|
|
|
5383
5549
|
Metrics.sendBehavioralMetric(
|
|
5384
5550
|
BEHAVIORAL_METRICS.STOP_FLOOR_REQUEST_FAILURE,
|
|
@@ -5406,7 +5572,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5406
5572
|
* @public
|
|
5407
5573
|
* @memberof Meeting
|
|
5408
5574
|
*/
|
|
5409
|
-
startRecording() {
|
|
5575
|
+
public startRecording() {
|
|
5410
5576
|
return MeetingUtil.startRecording(this.meetingRequest, this.locusUrl, this.locusInfo);
|
|
5411
5577
|
}
|
|
5412
5578
|
|
|
@@ -5416,7 +5582,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5416
5582
|
* @public
|
|
5417
5583
|
* @memberof Meeting
|
|
5418
5584
|
*/
|
|
5419
|
-
stopRecording() {
|
|
5585
|
+
public stopRecording() {
|
|
5420
5586
|
return MeetingUtil.stopRecording(this.meetingRequest, this.locusUrl, this.locusInfo);
|
|
5421
5587
|
}
|
|
5422
5588
|
|
|
@@ -5426,7 +5592,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5426
5592
|
* @public
|
|
5427
5593
|
* @memberof Meeting
|
|
5428
5594
|
*/
|
|
5429
|
-
pauseRecording() {
|
|
5595
|
+
public pauseRecording() {
|
|
5430
5596
|
return MeetingUtil.pauseRecording(this.meetingRequest, this.locusUrl, this.locusInfo);
|
|
5431
5597
|
}
|
|
5432
5598
|
|
|
@@ -5436,7 +5602,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5436
5602
|
* @public
|
|
5437
5603
|
* @memberof Meeting
|
|
5438
5604
|
*/
|
|
5439
|
-
resumeRecording() {
|
|
5605
|
+
public resumeRecording() {
|
|
5440
5606
|
return MeetingUtil.resumeRecording(this.meetingRequest, this.locusUrl, this.locusInfo);
|
|
5441
5607
|
}
|
|
5442
5608
|
|
|
@@ -5446,7 +5612,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5446
5612
|
* @public
|
|
5447
5613
|
* @memberof Meeting
|
|
5448
5614
|
*/
|
|
5449
|
-
lockMeeting() {
|
|
5615
|
+
public lockMeeting() {
|
|
5450
5616
|
return MeetingUtil.lockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);
|
|
5451
5617
|
}
|
|
5452
5618
|
|
|
@@ -5456,7 +5622,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5456
5622
|
* @public
|
|
5457
5623
|
* @memberof Meeting
|
|
5458
5624
|
*/
|
|
5459
|
-
unlockMeeting() {
|
|
5625
|
+
public unlockMeeting() {
|
|
5460
5626
|
return MeetingUtil.unlockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);
|
|
5461
5627
|
}
|
|
5462
5628
|
|
|
@@ -5467,7 +5633,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5467
5633
|
* @private
|
|
5468
5634
|
* @memberof Meeting
|
|
5469
5635
|
*/
|
|
5470
|
-
rejectWithErrorLog(message) {
|
|
5636
|
+
private rejectWithErrorLog(message: string) {
|
|
5471
5637
|
LoggerProxy.logger.error(message);
|
|
5472
5638
|
|
|
5473
5639
|
return Promise.reject(new Error(message));
|
|
@@ -5480,7 +5646,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5480
5646
|
* @public
|
|
5481
5647
|
* @memberof Meeting
|
|
5482
5648
|
*/
|
|
5483
|
-
sendDTMF(tones) {
|
|
5649
|
+
public sendDTMF(tones: string) {
|
|
5484
5650
|
if (this.locusInfo && this.locusInfo.self) {
|
|
5485
5651
|
if (this.locusInfo.self.enableDTMF) {
|
|
5486
5652
|
return this.meetingRequest
|
|
@@ -5511,7 +5677,19 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5511
5677
|
* @public
|
|
5512
5678
|
* @memberof Meeting
|
|
5513
5679
|
*/
|
|
5514
|
-
changeVideoLayout(
|
|
5680
|
+
public changeVideoLayout(
|
|
5681
|
+
layoutType?: string,
|
|
5682
|
+
renderInfo: {
|
|
5683
|
+
main: {
|
|
5684
|
+
width: number;
|
|
5685
|
+
height: number;
|
|
5686
|
+
};
|
|
5687
|
+
content: {
|
|
5688
|
+
width: number;
|
|
5689
|
+
height: number;
|
|
5690
|
+
};
|
|
5691
|
+
} = {} as any
|
|
5692
|
+
) {
|
|
5515
5693
|
const {main, content} = renderInfo;
|
|
5516
5694
|
const {mediaDirection, remoteShare, remoteVideoTrack} = this.mediaProperties;
|
|
5517
5695
|
|
|
@@ -5607,7 +5785,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5607
5785
|
* @param {String} level {LOW|MEDIUM|HIGH}
|
|
5608
5786
|
* @returns {Promise<MediaStream>} localStream
|
|
5609
5787
|
*/
|
|
5610
|
-
setLocalVideoQuality(level) {
|
|
5788
|
+
setLocalVideoQuality(level: string) {
|
|
5611
5789
|
LoggerProxy.logger.log(`Meeting:index#setLocalVideoQuality --> Setting quality to ${level}`);
|
|
5612
5790
|
|
|
5613
5791
|
if (!VIDEO_RESOLUTIONS[level]) {
|
|
@@ -5657,7 +5835,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5657
5835
|
* @param {String} level {LOW|MEDIUM|HIGH}
|
|
5658
5836
|
* @returns {Promise}
|
|
5659
5837
|
*/
|
|
5660
|
-
setRemoteQualityLevel(level) {
|
|
5838
|
+
setRemoteQualityLevel(level: string) {
|
|
5661
5839
|
LoggerProxy.logger.log(`Meeting:index#setRemoteQualityLevel --> Setting quality to ${level}`);
|
|
5662
5840
|
|
|
5663
5841
|
if (!QUALITY_LEVELS[level]) {
|
|
@@ -5687,7 +5865,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5687
5865
|
* @returns {Promise}
|
|
5688
5866
|
* @deprecated After FHD support
|
|
5689
5867
|
*/
|
|
5690
|
-
setMeetingQuality(level) {
|
|
5868
|
+
setMeetingQuality(level: string) {
|
|
5691
5869
|
LoggerProxy.logger.log(`Meeting:index#setMeetingQuality --> Setting quality to ${level}`);
|
|
5692
5870
|
|
|
5693
5871
|
if (!QUALITY_LEVELS[level]) {
|
|
@@ -5754,7 +5932,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5754
5932
|
* @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
|
|
5755
5933
|
* @returns {Promise}
|
|
5756
5934
|
*/
|
|
5757
|
-
shareScreen(
|
|
5935
|
+
shareScreen(
|
|
5936
|
+
options: {
|
|
5937
|
+
sendAudio: boolean;
|
|
5938
|
+
sendShare: boolean;
|
|
5939
|
+
sharePreferences: { shareConstraints: MediaTrackConstraints };
|
|
5940
|
+
} = {} as any
|
|
5941
|
+
) {
|
|
5758
5942
|
LoggerProxy.logger.log('Meeting:index#shareScreen --> Getting local share');
|
|
5759
5943
|
|
|
5760
5944
|
const shareConstraints = {
|
|
@@ -5763,6 +5947,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5763
5947
|
...options
|
|
5764
5948
|
};
|
|
5765
5949
|
|
|
5950
|
+
// @ts-ignore - config coming from registerPlugin
|
|
5766
5951
|
return Media.getDisplayMedia(shareConstraints, this.config)
|
|
5767
5952
|
.then((shareStream) => this.updateShare({
|
|
5768
5953
|
sendShare: true,
|
|
@@ -5800,7 +5985,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5800
5985
|
* @param {MediaStream} localShare
|
|
5801
5986
|
* @returns {undefined}
|
|
5802
5987
|
*/
|
|
5803
|
-
handleShareTrackEnded(localShare) {
|
|
5988
|
+
private handleShareTrackEnded(localShare: MediaStream) {
|
|
5804
5989
|
if (this.wirelessShare) {
|
|
5805
5990
|
this.leave({reason: MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS});
|
|
5806
5991
|
}
|
|
@@ -5840,7 +6025,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5840
6025
|
* @private
|
|
5841
6026
|
* @memberof Meeting
|
|
5842
6027
|
*/
|
|
5843
|
-
sendNetworkQualityEvent(res) {
|
|
6028
|
+
private sendNetworkQualityEvent(res: any) {
|
|
5844
6029
|
Trigger.trigger(
|
|
5845
6030
|
this,
|
|
5846
6031
|
{
|
|
@@ -5862,7 +6047,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5862
6047
|
* @private
|
|
5863
6048
|
* @returns {undefined}
|
|
5864
6049
|
*/
|
|
5865
|
-
handleMediaLogging({audioTrack, videoTrack}) {
|
|
6050
|
+
private handleMediaLogging({ audioTrack, videoTrack }: any) {
|
|
5866
6051
|
MeetingUtil.handleVideoLogging(videoTrack);
|
|
5867
6052
|
MeetingUtil.handleAudioLogging(audioTrack);
|
|
5868
6053
|
}
|
|
@@ -5871,7 +6056,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5871
6056
|
* @param {string} typeMedia 'audio' or 'video'
|
|
5872
6057
|
* @returns {undefined}
|
|
5873
6058
|
*/
|
|
5874
|
-
setStartSetupDelay(typeMedia) {
|
|
6059
|
+
setStartSetupDelay(typeMedia: string) {
|
|
5875
6060
|
this[`startSetupDelay${typeMedia}`] = performance.now();
|
|
5876
6061
|
this[`endSetupDelay${typeMedia}`] = undefined;
|
|
5877
6062
|
}
|
|
@@ -5880,7 +6065,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5880
6065
|
* @param {string} typeMedia 'audio' or 'video'
|
|
5881
6066
|
* @returns {undefined}
|
|
5882
6067
|
*/
|
|
5883
|
-
setEndSetupDelay(typeMedia) {
|
|
6068
|
+
setEndSetupDelay(typeMedia: string) {
|
|
5884
6069
|
this[`endSetupDelay${typeMedia}`] = performance.now();
|
|
5885
6070
|
}
|
|
5886
6071
|
|
|
@@ -5888,7 +6073,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5888
6073
|
* @param {string} typeMedia 'audio' or 'video'
|
|
5889
6074
|
* @returns {string} duration between start and end of setup
|
|
5890
6075
|
*/
|
|
5891
|
-
getSetupDelayDuration(typeMedia) {
|
|
6076
|
+
getSetupDelayDuration(typeMedia: string) {
|
|
5892
6077
|
const start = this[`startSetupDelay${typeMedia}`];
|
|
5893
6078
|
const end = this[`endSetupDelay${typeMedia}`];
|
|
5894
6079
|
|
|
@@ -5899,7 +6084,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5899
6084
|
* @param {string} typeMedia 'audio' or 'video'
|
|
5900
6085
|
* @returns {undefined}
|
|
5901
6086
|
*/
|
|
5902
|
-
setStartSendingMediaDelay(typeMedia) {
|
|
6087
|
+
setStartSendingMediaDelay(typeMedia: string) {
|
|
5903
6088
|
this[`startSendingMediaDelay${typeMedia}`] = performance.now();
|
|
5904
6089
|
this[`endSendingMediaDelay${typeMedia}`] = undefined;
|
|
5905
6090
|
}
|
|
@@ -5908,7 +6093,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5908
6093
|
* @param {string} typeMedia 'audio' or 'video'
|
|
5909
6094
|
* @returns {undefined}
|
|
5910
6095
|
*/
|
|
5911
|
-
setEndSendingMediaDelay(typeMedia) {
|
|
6096
|
+
setEndSendingMediaDelay(typeMedia: string) {
|
|
5912
6097
|
this[`endSendingMediaDelay${typeMedia}`] = performance.now();
|
|
5913
6098
|
}
|
|
5914
6099
|
|
|
@@ -5916,7 +6101,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5916
6101
|
* @param {string} typeMedia 'audio' or 'video'
|
|
5917
6102
|
* @returns {string} duration between join response and first media tx
|
|
5918
6103
|
*/
|
|
5919
|
-
getSendingMediaDelayDuration(typeMedia) {
|
|
6104
|
+
getSendingMediaDelayDuration(typeMedia: string) {
|
|
5920
6105
|
const start = this[`startSendingMediaDelay${typeMedia}`];
|
|
5921
6106
|
const end = this[`endSendingMediaDelay${typeMedia}`];
|
|
5922
6107
|
|
|
@@ -5927,7 +6112,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5927
6112
|
*
|
|
5928
6113
|
* @returns {undefined}
|
|
5929
6114
|
*/
|
|
5930
|
-
|
|
6115
|
+
setStartLocalSDPGenRemoteSDPRecvDelay() {
|
|
5931
6116
|
if (!this.startLocalSDPGenRemoteSDPRecvDelay) {
|
|
5932
6117
|
this.startLocalSDPGenRemoteSDPRecvDelay = performance.now();
|
|
5933
6118
|
this.endLocalSDPGenRemoteSDPRecvDelay = undefined;
|
|
@@ -6053,7 +6238,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6053
6238
|
* @public
|
|
6054
6239
|
* @memberof Meeting
|
|
6055
6240
|
*/
|
|
6056
|
-
endMeetingForAll() {
|
|
6241
|
+
public endMeetingForAll() {
|
|
6057
6242
|
Metrics.postEvent({event: eventType.LEAVE, meeting: this, data: {trigger: trigger.USER_INTERACTION, canProceed: false}});
|
|
6058
6243
|
|
|
6059
6244
|
LoggerProxy.logger.log('Meeting:index#endMeetingForAll --> End meeting for All');
|
|
@@ -6138,7 +6323,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6138
6323
|
* @public
|
|
6139
6324
|
* @memberof Meeting
|
|
6140
6325
|
*/
|
|
6141
|
-
isBnrEnabled() {
|
|
6326
|
+
public isBnrEnabled() {
|
|
6142
6327
|
return this.effects && this.effects.isBnrEnabled();
|
|
6143
6328
|
}
|
|
6144
6329
|
|
|
@@ -6149,7 +6334,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6149
6334
|
* @param {MedaiStreamTrack} audioTrack from updateAudio
|
|
6150
6335
|
* @memberof Meeting
|
|
6151
6336
|
*/
|
|
6152
|
-
async internal_enableBNR(audioTrack) {
|
|
6337
|
+
private async internal_enableBNR(audioTrack: any) {
|
|
6153
6338
|
try {
|
|
6154
6339
|
LoggerProxy.logger.info('Meeting:index#internal_enableBNR. Internal enable BNR called');
|
|
6155
6340
|
const bnrAudioTrack = await WebRTCMedia.Effects.BNR.enableBNR(audioTrack);
|
|
@@ -6170,7 +6355,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6170
6355
|
* @public
|
|
6171
6356
|
* @memberof Meeting
|
|
6172
6357
|
*/
|
|
6173
|
-
enableBNR() {
|
|
6358
|
+
public enableBNR() {
|
|
6174
6359
|
if (typeof this.mediaProperties === 'undefined' || typeof this.mediaProperties.audioTrack === 'undefined') {
|
|
6175
6360
|
return Promise.reject(new Error("Meeting doesn't have an audioTrack attached"));
|
|
6176
6361
|
}
|
|
@@ -6205,7 +6390,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6205
6390
|
* @public
|
|
6206
6391
|
* @memberof Meeting
|
|
6207
6392
|
*/
|
|
6208
|
-
disableBNR() {
|
|
6393
|
+
public disableBNR() {
|
|
6209
6394
|
if (typeof this.mediaProperties === 'undefined' || typeof this.mediaProperties.audioTrack === 'undefined') {
|
|
6210
6395
|
return Promise.reject(new Error("Meeting doesn't have an audioTrack attached"));
|
|
6211
6396
|
}
|