@webex/plugin-meetings 2.35.2 → 2.35.4
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 +151 -32
- 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 +12 -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/peer-connection-manager/index.js +11 -4
- package/dist/peer-connection-manager/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/collection.js +1 -0
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js +14 -2
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +11 -1
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +7 -2
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.js +9 -1
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.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 +19 -19
- 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 +1 -0
- 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} +108 -39
- package/src/media/{properties.js → properties.ts} +16 -4
- package/src/media/{util.js → util.ts} +2 -3
- 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} +323 -147
- 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 -22
- 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} +39 -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/peer-connection-manager/{index.js → index.ts} +72 -28
- 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} +42 -13
- package/src/roap/{collection.js → collection.ts} +1 -0
- package/src/roap/{handler.js → handler.ts} +15 -4
- package/src/roap/{index.js → index.ts} +23 -10
- package/src/roap/{request.js → request.ts} +19 -3
- package/src/roap/{state.js → state.ts} +3 -2
- package/src/roap/turnDiscovery.ts +14 -5
- package/src/roap/{util.js → util.ts} +1 -2
- 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/roap/util.js +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
1
|
import '@webex/internal-plugin-mercury';
|
|
3
2
|
import '@webex/internal-plugin-conversation';
|
|
3
|
+
// @ts-ignore
|
|
4
4
|
import {WebexPlugin} from '@webex/webex-core';
|
|
5
5
|
|
|
6
6
|
import 'webrtc-adapter';
|
|
@@ -51,7 +51,6 @@ import CaptchaError from '../common/errors/captcha-error';
|
|
|
51
51
|
import MeetingCollection from './collection';
|
|
52
52
|
import MeetingsUtil from './util';
|
|
53
53
|
|
|
54
|
-
|
|
55
54
|
/**
|
|
56
55
|
* Meetings Ready Event
|
|
57
56
|
* Emitted when the meetings instance on webex is ready
|
|
@@ -105,6 +104,17 @@ import MeetingsUtil from './util';
|
|
|
105
104
|
* @class
|
|
106
105
|
*/
|
|
107
106
|
export default class Meetings extends WebexPlugin {
|
|
107
|
+
loggerRequest: any;
|
|
108
|
+
media: any;
|
|
109
|
+
meetingCollection: any;
|
|
110
|
+
personalMeetingRoom: any;
|
|
111
|
+
preferredWebexSite: any;
|
|
112
|
+
reachability: any;
|
|
113
|
+
registered: any;
|
|
114
|
+
request: any;
|
|
115
|
+
geoHintInfo: any;
|
|
116
|
+
meetingInfo: any;
|
|
117
|
+
|
|
108
118
|
namespace = MEETINGS;
|
|
109
119
|
|
|
110
120
|
/**
|
|
@@ -123,6 +133,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
123
133
|
* @private
|
|
124
134
|
* @memberof Meetings
|
|
125
135
|
*/
|
|
136
|
+
// @ts-ignore
|
|
126
137
|
this.request = new Request({}, {parent: this.webex});
|
|
127
138
|
/**
|
|
128
139
|
* Log upload request helper
|
|
@@ -131,6 +142,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
131
142
|
* @private
|
|
132
143
|
* @memberof Meetings
|
|
133
144
|
*/
|
|
145
|
+
// @ts-ignore
|
|
134
146
|
this.loggerRequest = new LoggerRequest({webex: this.webex});
|
|
135
147
|
this.meetingCollection = new MeetingCollection();
|
|
136
148
|
/**
|
|
@@ -196,13 +208,14 @@ export default class Meetings extends WebexPlugin {
|
|
|
196
208
|
* @private
|
|
197
209
|
* @memberof Meetings
|
|
198
210
|
*/
|
|
199
|
-
handleLocusEvent(data, useRandomDelayForInfo = false) {
|
|
211
|
+
private handleLocusEvent(data: { locusUrl: string; locus: any }, useRandomDelayForInfo: boolean = false) {
|
|
200
212
|
let meeting = null;
|
|
201
213
|
|
|
202
214
|
// getting meeting by correlationId. This will happen for the new event
|
|
203
215
|
// Either the locus
|
|
204
216
|
// TODO : Add check for the callBack Address
|
|
205
217
|
meeting = this.meetingCollection.getByKey(LOCUS_URL, data.locusUrl) ||
|
|
218
|
+
// @ts-ignore
|
|
206
219
|
this.meetingCollection.getByKey(CORRELATION_ID, MeetingsUtil.checkForCorrelationId(this.webex.internal.device.url, data.locus)) ||
|
|
207
220
|
this.meetingCollection.getByKey(SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) ||
|
|
208
221
|
(data.locus.info?.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(CONVERSATION_URL, data.locus.conversationUrl));
|
|
@@ -300,7 +313,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
300
313
|
* @private
|
|
301
314
|
* @memberof Meetings
|
|
302
315
|
*/
|
|
303
|
-
handleLocusMercury(envelope) {
|
|
316
|
+
private handleLocusMercury(envelope: { data: any }) {
|
|
304
317
|
const {data} = envelope;
|
|
305
318
|
const {eventType} = data;
|
|
306
319
|
|
|
@@ -316,7 +329,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
316
329
|
* @private
|
|
317
330
|
* @memberof Meetings
|
|
318
331
|
*/
|
|
319
|
-
handleMercuryOffline() {
|
|
332
|
+
private handleMercuryOffline() {
|
|
320
333
|
Trigger.trigger(
|
|
321
334
|
this,
|
|
322
335
|
{
|
|
@@ -334,18 +347,22 @@ export default class Meetings extends WebexPlugin {
|
|
|
334
347
|
* @private
|
|
335
348
|
* @memberof Meetings
|
|
336
349
|
*/
|
|
337
|
-
listenForEvents() {
|
|
350
|
+
private listenForEvents() {
|
|
351
|
+
// @ts-ignore
|
|
338
352
|
this.webex.internal.mercury.on(LOCUSEVENT.LOCUS_MERCURY, (envelope) => {
|
|
339
353
|
this.handleLocusMercury(envelope);
|
|
340
354
|
});
|
|
355
|
+
// @ts-ignore
|
|
341
356
|
this.webex.internal.mercury.on(ROAP.ROAP_MERCURY, (envelope) => {
|
|
342
357
|
MeetingsUtil.handleRoapMercury(envelope, this.meetingCollection);
|
|
343
358
|
});
|
|
344
359
|
|
|
360
|
+
// @ts-ignore
|
|
345
361
|
this.webex.internal.mercury.on(ONLINE, () => {
|
|
346
362
|
this.syncMeetings();
|
|
347
363
|
});
|
|
348
364
|
|
|
365
|
+
// @ts-ignore
|
|
349
366
|
this.webex.internal.mercury.on(OFFLINE, () => {
|
|
350
367
|
this.handleMercuryOffline();
|
|
351
368
|
});
|
|
@@ -357,9 +374,12 @@ export default class Meetings extends WebexPlugin {
|
|
|
357
374
|
* @private
|
|
358
375
|
* @memberof Meetings
|
|
359
376
|
*/
|
|
360
|
-
stopListeningForEvents() {
|
|
377
|
+
private stopListeningForEvents() {
|
|
378
|
+
// @ts-ignore
|
|
361
379
|
this.webex.internal.mercury.off(LOCUSEVENT.LOCUS_MERCURY);
|
|
380
|
+
// @ts-ignore
|
|
362
381
|
this.webex.internal.mercury.off(ROAP.ROAP_MERCURY);
|
|
382
|
+
// @ts-ignore
|
|
363
383
|
this.webex.internal.mercury.off(ONLINE);
|
|
364
384
|
}
|
|
365
385
|
|
|
@@ -368,10 +388,14 @@ export default class Meetings extends WebexPlugin {
|
|
|
368
388
|
* @private
|
|
369
389
|
* @memberof Meetings
|
|
370
390
|
*/
|
|
371
|
-
onReady() {
|
|
391
|
+
private onReady() {
|
|
392
|
+
// @ts-ignore
|
|
372
393
|
this.webex.once(READY, () => {
|
|
394
|
+
// @ts-ignore
|
|
373
395
|
StaticConfig.set(this.config);
|
|
396
|
+
// @ts-ignore
|
|
374
397
|
LoggerConfig.set(this.config.logging);
|
|
398
|
+
// @ts-ignore
|
|
375
399
|
LoggerProxy.set(this.webex.logger);
|
|
376
400
|
|
|
377
401
|
/**
|
|
@@ -381,7 +405,9 @@ export default class Meetings extends WebexPlugin {
|
|
|
381
405
|
* @private
|
|
382
406
|
* @memberof Meetings
|
|
383
407
|
*/
|
|
408
|
+
// @ts-ignore
|
|
384
409
|
this.meetingInfo = this.config.experimental.enableUnifiedMeetings ? new MeetingInfoV2(this.webex) : new MeetingInfo(this.webex);
|
|
410
|
+
// @ts-ignore
|
|
385
411
|
this.personalMeetingRoom = new PersonalMeetingRoom({meetingInfo: this.meetingInfo}, {parent: this.webex});
|
|
386
412
|
|
|
387
413
|
Trigger.trigger(
|
|
@@ -394,6 +420,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
394
420
|
);
|
|
395
421
|
|
|
396
422
|
MeetingsUtil.checkH264Support({disableNotifications: true});
|
|
423
|
+
// @ts-ignore
|
|
397
424
|
Metrics.initialSetup(this.meetingCollection, this.webex);
|
|
398
425
|
});
|
|
399
426
|
}
|
|
@@ -405,12 +432,15 @@ export default class Meetings extends WebexPlugin {
|
|
|
405
432
|
* @memberof Meetings
|
|
406
433
|
* @returns {undefined}
|
|
407
434
|
*/
|
|
408
|
-
_toggleUnifiedMeetings(changeState) {
|
|
435
|
+
private _toggleUnifiedMeetings(changeState: boolean) {
|
|
409
436
|
if (typeof changeState !== 'boolean') {
|
|
410
437
|
return;
|
|
411
438
|
}
|
|
439
|
+
// @ts-ignore
|
|
412
440
|
if (this.config?.experimental?.enableUnifiedMeetings !== changeState) {
|
|
441
|
+
// @ts-ignore
|
|
413
442
|
this.config.experimental.enableUnifiedMeetings = changeState;
|
|
443
|
+
// @ts-ignore
|
|
414
444
|
this.meetingInfo = changeState ? new MeetingInfoV2(this.webex) : new MeetingInfo(this.webex);
|
|
415
445
|
}
|
|
416
446
|
}
|
|
@@ -422,10 +452,11 @@ export default class Meetings extends WebexPlugin {
|
|
|
422
452
|
* @memberof Meetings
|
|
423
453
|
* @returns {undefined}
|
|
424
454
|
*/
|
|
425
|
-
_toggleTurnDiscovery(enable) {
|
|
455
|
+
private _toggleTurnDiscovery(enable: boolean) {
|
|
426
456
|
if (typeof enable !== 'boolean') {
|
|
427
457
|
return;
|
|
428
458
|
}
|
|
459
|
+
// @ts-ignore
|
|
429
460
|
this.config.experimental.enableTurnDiscovery = enable;
|
|
430
461
|
}
|
|
431
462
|
|
|
@@ -436,11 +467,13 @@ export default class Meetings extends WebexPlugin {
|
|
|
436
467
|
* @memberof Meetings
|
|
437
468
|
* @returns {undefined}
|
|
438
469
|
*/
|
|
439
|
-
_toggleAdhocMeetings(changeState) {
|
|
470
|
+
private _toggleAdhocMeetings(changeState: boolean) {
|
|
440
471
|
if (typeof changeState !== 'boolean') {
|
|
441
472
|
return;
|
|
442
473
|
}
|
|
474
|
+
// @ts-ignore
|
|
443
475
|
if (this.config?.experimental?.enableAdhocMeetings !== changeState) {
|
|
476
|
+
// @ts-ignore
|
|
444
477
|
this.config.experimental.enableAdhocMeetings = changeState;
|
|
445
478
|
}
|
|
446
479
|
}
|
|
@@ -453,7 +486,8 @@ export default class Meetings extends WebexPlugin {
|
|
|
453
486
|
* @public
|
|
454
487
|
* @memberof Meetings
|
|
455
488
|
*/
|
|
456
|
-
register() {
|
|
489
|
+
public register() {
|
|
490
|
+
// @ts-ignore
|
|
457
491
|
if (!this.webex.canAuthorize) {
|
|
458
492
|
LoggerProxy.logger.error('Meetings:index#register --> ERROR, Unable to register, SDK cannot authorize');
|
|
459
493
|
|
|
@@ -473,8 +507,11 @@ export default class Meetings extends WebexPlugin {
|
|
|
473
507
|
this.startReachability().catch((error) => {
|
|
474
508
|
LoggerProxy.logger.error(`Meetings:index#register --> GDM error, ${error.message}`);
|
|
475
509
|
}),
|
|
510
|
+
// @ts-ignore
|
|
476
511
|
this.webex.internal.device.register()
|
|
512
|
+
// @ts-ignore
|
|
477
513
|
.then(() => LoggerProxy.logger.info(`Meetings:index#register --> INFO, Device registered ${this.webex.internal.device.url}`))
|
|
514
|
+
// @ts-ignore
|
|
478
515
|
.then(() => this.webex.internal.mercury.connect()),
|
|
479
516
|
MeetingsUtil.checkH264Support.call(this)
|
|
480
517
|
]).then(() => {
|
|
@@ -524,7 +561,9 @@ export default class Meetings extends WebexPlugin {
|
|
|
524
561
|
|
|
525
562
|
this.stopListeningForEvents();
|
|
526
563
|
|
|
564
|
+
// @ts-ignore
|
|
527
565
|
return this.webex.internal.mercury.disconnect()
|
|
566
|
+
// @ts-ignore
|
|
528
567
|
.then(() => this.webex.internal.device.unregister())
|
|
529
568
|
.then(() => {
|
|
530
569
|
Trigger.trigger(
|
|
@@ -551,7 +590,17 @@ export default class Meetings extends WebexPlugin {
|
|
|
551
590
|
* @param {String} [options.orgId] org id
|
|
552
591
|
* @returns {String} feedback ID logs were submitted under
|
|
553
592
|
*/
|
|
554
|
-
uploadLogs(
|
|
593
|
+
uploadLogs(
|
|
594
|
+
options: {
|
|
595
|
+
callStart?: string;
|
|
596
|
+
feedbackId?: string;
|
|
597
|
+
locusId?: string;
|
|
598
|
+
correlationId?: string;
|
|
599
|
+
meetingId?: string;
|
|
600
|
+
userId?: string;
|
|
601
|
+
orgId?: string;
|
|
602
|
+
} = {}
|
|
603
|
+
) {
|
|
555
604
|
LoggerProxy.logger.info('Meetings:index#uploadLogs --> uploading logs');
|
|
556
605
|
|
|
557
606
|
return this.loggerRequest.uploadLogs(options)
|
|
@@ -569,6 +618,8 @@ export default class Meetings extends WebexPlugin {
|
|
|
569
618
|
details: uploadResult
|
|
570
619
|
}
|
|
571
620
|
);
|
|
621
|
+
|
|
622
|
+
return uploadResult;
|
|
572
623
|
})
|
|
573
624
|
.catch((uploadError) => {
|
|
574
625
|
LoggerProxy.logger.error('Meetings:index#uploadLogs --> Unable to upload logs for meeting', uploadError);
|
|
@@ -588,6 +639,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
588
639
|
Metrics.sendBehavioralMetric(
|
|
589
640
|
BEHAVIORAL_METRICS.UPLOAD_LOGS_FAILURE,
|
|
590
641
|
{
|
|
642
|
+
// @ts-ignore - seems like typo
|
|
591
643
|
meetingId: options.meetingsId,
|
|
592
644
|
reason: uploadError.message,
|
|
593
645
|
stack: uploadError.stack,
|
|
@@ -604,6 +656,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
604
656
|
* @memberof Meetings
|
|
605
657
|
*/
|
|
606
658
|
setReachability() {
|
|
659
|
+
// @ts-ignore
|
|
607
660
|
this.reachability = new Reachability(this.webex);
|
|
608
661
|
}
|
|
609
662
|
|
|
@@ -658,7 +711,6 @@ export default class Meetings extends WebexPlugin {
|
|
|
658
711
|
});
|
|
659
712
|
}
|
|
660
713
|
|
|
661
|
-
|
|
662
714
|
/**
|
|
663
715
|
* gets the personal meeting room instance, for saved PMR values for this user
|
|
664
716
|
* @returns {PersonalMeetingRoom}
|
|
@@ -678,7 +730,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
678
730
|
* @private
|
|
679
731
|
* @memberof Meetings
|
|
680
732
|
*/
|
|
681
|
-
destroy(meeting, reason) {
|
|
733
|
+
private destroy(meeting: Meeting, reason: object) {
|
|
682
734
|
MeetingUtil.cleanUp(meeting);
|
|
683
735
|
this.meetingCollection.delete(meeting.id);
|
|
684
736
|
Trigger.trigger(
|
|
@@ -704,7 +756,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
704
756
|
* @public
|
|
705
757
|
* @memberof Meetings
|
|
706
758
|
*/
|
|
707
|
-
create(destination, type = null, useRandomDelayForInfo = false) {
|
|
759
|
+
public create(destination: string, type: string = null, useRandomDelayForInfo: boolean = false) {
|
|
708
760
|
// TODO: type should be from a dictionary
|
|
709
761
|
|
|
710
762
|
// Validate meeting information based on the provided destination and
|
|
@@ -716,7 +768,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
716
768
|
.catch((error) => {
|
|
717
769
|
LoggerProxy.logger.info(`Meetings:index#create --> INFO, unable to determine info options: ${error.message}`);
|
|
718
770
|
})
|
|
719
|
-
.then((options = {}) => {
|
|
771
|
+
.then((options: any = {}) => {
|
|
720
772
|
// Normalize the destination.
|
|
721
773
|
const targetDest = options.destination || destination;
|
|
722
774
|
|
|
@@ -746,11 +798,12 @@ export default class Meetings extends WebexPlugin {
|
|
|
746
798
|
if (!meeting) {
|
|
747
799
|
// Create a meeting based on the normalized destination and type.
|
|
748
800
|
return this.createMeeting(targetDest, type, useRandomDelayForInfo)
|
|
749
|
-
.then((createdMeeting) => {
|
|
801
|
+
.then((createdMeeting: any) => {
|
|
750
802
|
// If the meeting was successfully created.
|
|
751
803
|
if (createdMeeting && createdMeeting.on) {
|
|
752
804
|
// Create a destruction event for the meeting.
|
|
753
805
|
createdMeeting.on(EVENTS.DESTROY_MEETING, (payload) => {
|
|
806
|
+
// @ts-ignore
|
|
754
807
|
if (this.config.autoUploadLogs) {
|
|
755
808
|
this.uploadLogs({
|
|
756
809
|
callStart: createdMeeting.locusInfo?.fullState?.lastActive,
|
|
@@ -766,6 +819,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
766
819
|
});
|
|
767
820
|
|
|
768
821
|
createdMeeting.on(EVENTS.REQUEST_UPLOAD_LOGS, (meetingInstance) => {
|
|
822
|
+
// @ts-ignore
|
|
769
823
|
if (this.config.autoUploadLogs) {
|
|
770
824
|
this.uploadLogs({
|
|
771
825
|
callStart: meetingInstance?.locusInfo?.fullState?.lastActive,
|
|
@@ -799,11 +853,14 @@ export default class Meetings extends WebexPlugin {
|
|
|
799
853
|
* @private
|
|
800
854
|
* @memberof Meetings
|
|
801
855
|
*/
|
|
802
|
-
async createMeeting(destination, type = null, useRandomDelayForInfo = false) {
|
|
856
|
+
private async createMeeting(destination: any, type: string = null, useRandomDelayForInfo: boolean = false) {
|
|
803
857
|
const meeting = new Meeting(
|
|
804
858
|
{
|
|
859
|
+
// @ts-ignore
|
|
805
860
|
userId: this.webex.internal.device.userId,
|
|
861
|
+
// @ts-ignore
|
|
806
862
|
deviceUrl: this.webex.internal.device.url,
|
|
863
|
+
// @ts-ignore
|
|
807
864
|
orgId: this.webex.internal.device.orgId,
|
|
808
865
|
roapSeq: 0,
|
|
809
866
|
locus: type === _LOCUS_ID_ ? destination : null, // pass the locus object if present
|
|
@@ -812,6 +869,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
812
869
|
destinationType: type,
|
|
813
870
|
},
|
|
814
871
|
{
|
|
872
|
+
// @ts-ignore
|
|
815
873
|
parent: this.webex
|
|
816
874
|
}
|
|
817
875
|
);
|
|
@@ -835,6 +893,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
835
893
|
waitingTime = Math.round(Math.random() * maxWaitingTime);
|
|
836
894
|
}
|
|
837
895
|
const isMeetingActive = !!destination.fullState?.active;
|
|
896
|
+
// @ts-ignore
|
|
838
897
|
const {enableUnifiedMeetings} = this.config.experimental;
|
|
839
898
|
|
|
840
899
|
if (enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0) {
|
|
@@ -911,7 +970,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
911
970
|
* @public
|
|
912
971
|
* @memberof Meetings
|
|
913
972
|
*/
|
|
914
|
-
getMeetingByType(type, value) {
|
|
973
|
+
public getMeetingByType(type: string, value: object) {
|
|
915
974
|
return this.meetingCollection.getByKey(type, value);
|
|
916
975
|
}
|
|
917
976
|
|
|
@@ -924,7 +983,12 @@ export default class Meetings extends WebexPlugin {
|
|
|
924
983
|
* @public
|
|
925
984
|
* @memberof Meetings
|
|
926
985
|
*/
|
|
927
|
-
getAllMeetings(
|
|
986
|
+
public getAllMeetings(
|
|
987
|
+
options: {
|
|
988
|
+
startDate: object;
|
|
989
|
+
endDate: object;
|
|
990
|
+
} = {} as any
|
|
991
|
+
) {
|
|
928
992
|
// Options may include other parameters to filter this collection
|
|
929
993
|
// of meetings.
|
|
930
994
|
return this.meetingCollection.getAll(options);
|
|
@@ -936,7 +1000,7 @@ export default class Meetings extends WebexPlugin {
|
|
|
936
1000
|
* @public
|
|
937
1001
|
* @memberof Meetings
|
|
938
1002
|
*/
|
|
939
|
-
syncMeetings() {
|
|
1003
|
+
public syncMeetings() {
|
|
940
1004
|
return this.request.getActiveMeetings().then((locusArray) => {
|
|
941
1005
|
const activeLocusUrl = [];
|
|
942
1006
|
|
|
@@ -955,8 +1019,10 @@ export default class Meetings extends WebexPlugin {
|
|
|
955
1019
|
// Some time the mercury event is missed after mercury reconnect
|
|
956
1020
|
// if sync returns no locus then clear all the meetings
|
|
957
1021
|
for (const meeting of Object.values(meetingsCollection)) {
|
|
1022
|
+
// @ts-ignore
|
|
958
1023
|
if (!activeLocusUrl.includes(meeting.locusUrl)) {
|
|
959
1024
|
// destroy function also uploads logs
|
|
1025
|
+
// @ts-ignore
|
|
960
1026
|
this.destroy(meeting, MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
|
|
961
1027
|
}
|
|
962
1028
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-ignore
|
|
1
2
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
2
3
|
|
|
3
4
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
@@ -16,6 +17,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
16
17
|
* @returns {Array} return locus array
|
|
17
18
|
*/
|
|
18
19
|
getActiveMeetings() {
|
|
20
|
+
// @ts-ignore
|
|
19
21
|
return this.request({
|
|
20
22
|
api: API.LOCUS,
|
|
21
23
|
resource: RESOURCE.LOCI
|
|
@@ -31,6 +33,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
31
33
|
* @returns {Promise<object>} geoHintInfo
|
|
32
34
|
*/
|
|
33
35
|
fetchGeoHint() {
|
|
36
|
+
// @ts-ignore
|
|
34
37
|
return this.webex.internal.services.fetchClientRegionInfo();
|
|
35
38
|
}
|
|
36
39
|
|
|
@@ -39,6 +42,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
39
42
|
* @returns {Promise<object>} getMeetingPreferences
|
|
40
43
|
*/
|
|
41
44
|
getMeetingPreferences() {
|
|
45
|
+
// @ts-ignore
|
|
42
46
|
return this.webex.internal.services.getMeetingPreferences();
|
|
43
47
|
}
|
|
44
48
|
|
|
@@ -50,8 +54,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
50
54
|
* @param {object} responseBody determine the locus and fetch them if a remoteUrl is given
|
|
51
55
|
* @returns {Promise} returns locusObject array
|
|
52
56
|
*/
|
|
53
|
-
determineRedirections(responseBody) {
|
|
57
|
+
determineRedirections(responseBody: any) {
|
|
54
58
|
if (responseBody.remoteLocusClusterUrls && responseBody.remoteLocusClusterUrls.length) {
|
|
59
|
+
// @ts-ignore
|
|
55
60
|
return Promise.all(responseBody.remoteLocusClusterUrls.map((url) => this.request({
|
|
56
61
|
method: HTTP_VERBS.GET,
|
|
57
62
|
url,
|
|
@@ -29,7 +29,7 @@ import Trigger from '../common/events/trigger-proxy';
|
|
|
29
29
|
* @memberof MeetingsUtil
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
|
-
const MeetingsUtil = {};
|
|
32
|
+
const MeetingsUtil: any = {};
|
|
33
33
|
|
|
34
34
|
MeetingsUtil.getMeetingAddedType = (type) => (type === _LOCUS_ID_ ? _INCOMING_ : _CREATED_);
|
|
35
35
|
|
|
@@ -103,7 +103,6 @@ MeetingsUtil.hasH264Codec = async () => {
|
|
|
103
103
|
return hasCodec;
|
|
104
104
|
};
|
|
105
105
|
|
|
106
|
-
|
|
107
106
|
/**
|
|
108
107
|
* Notifies the user whether or not the H.264
|
|
109
108
|
* codec is present. Will continuously check
|
|
@@ -115,7 +114,10 @@ MeetingsUtil.hasH264Codec = async () => {
|
|
|
115
114
|
* @param {boolean} options.disableNotifications Default is false. Boolean to enable/disable notification and events
|
|
116
115
|
* @returns {undefined}
|
|
117
116
|
*/
|
|
118
|
-
MeetingsUtil.checkH264Support = async function checkH264Support(options
|
|
117
|
+
MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
118
|
+
firstChecked: number;
|
|
119
|
+
disableNotifications: boolean;
|
|
120
|
+
}) {
|
|
119
121
|
const {hasH264Codec} = MeetingsUtil;
|
|
120
122
|
const {firstChecked, disableNotifications} = options || {};
|
|
121
123
|
const delay = 5e3; // ms
|
|
@@ -8,12 +8,35 @@ import {
|
|
|
8
8
|
_IN_MEETING_
|
|
9
9
|
} from '../constants';
|
|
10
10
|
|
|
11
|
-
import MemberUtil from './util
|
|
11
|
+
import MemberUtil from './util';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @class Member
|
|
15
15
|
*/
|
|
16
16
|
export default class Member {
|
|
17
|
+
associatedUser: any;
|
|
18
|
+
id: any;
|
|
19
|
+
isAudioMuted: any;
|
|
20
|
+
isContentSharing: any;
|
|
21
|
+
isDevice: any;
|
|
22
|
+
isGuest: any;
|
|
23
|
+
isHandRaised: any;
|
|
24
|
+
isHost: any;
|
|
25
|
+
isInLobby: any;
|
|
26
|
+
isInMeeting: any;
|
|
27
|
+
isModerator: any;
|
|
28
|
+
isModeratorAssignmentProhibited: any;
|
|
29
|
+
isMutable: any;
|
|
30
|
+
isNotAdmitted: any;
|
|
31
|
+
isRecording: any;
|
|
32
|
+
isRemovable: any;
|
|
33
|
+
isSelf: any;
|
|
34
|
+
isUser: any;
|
|
35
|
+
isVideoMuted: any;
|
|
36
|
+
name: any;
|
|
37
|
+
participant: any;
|
|
38
|
+
status: any;
|
|
39
|
+
type: any;
|
|
17
40
|
namespace = MEETINGS;
|
|
18
41
|
|
|
19
42
|
/**
|
|
@@ -26,8 +49,16 @@ export default class Member {
|
|
|
26
49
|
* @returns {Member}
|
|
27
50
|
* @memberof Member
|
|
28
51
|
*/
|
|
29
|
-
constructor(
|
|
30
|
-
|
|
52
|
+
constructor(
|
|
53
|
+
participant: object,
|
|
54
|
+
options: {
|
|
55
|
+
selfId: string;
|
|
56
|
+
hostId: string;
|
|
57
|
+
contentSharingId: string;
|
|
58
|
+
type: string;
|
|
59
|
+
} | any = {}
|
|
60
|
+
) {
|
|
61
|
+
/**
|
|
31
62
|
* The server participant object
|
|
32
63
|
* @instance
|
|
33
64
|
* @type {Object}
|
|
@@ -206,7 +237,7 @@ export default class Member {
|
|
|
206
237
|
* @private
|
|
207
238
|
* @memberof Member
|
|
208
239
|
*/
|
|
209
|
-
processParticipant(participant) {
|
|
240
|
+
private processParticipant(participant: object) {
|
|
210
241
|
this.participant = participant;
|
|
211
242
|
if (participant) {
|
|
212
243
|
this.id = MemberUtil.extractId(participant);
|
|
@@ -233,7 +264,7 @@ export default class Member {
|
|
|
233
264
|
* @private
|
|
234
265
|
* @memberof Member
|
|
235
266
|
*/
|
|
236
|
-
processParticipantOptions(participant, options) {
|
|
267
|
+
private processParticipantOptions(participant: object, options: any) {
|
|
237
268
|
if (participant && options) {
|
|
238
269
|
this.processIsSelf(participant, options.selfId);
|
|
239
270
|
this.processIsHost(participant, options.hostId);
|
|
@@ -249,7 +280,7 @@ export default class Member {
|
|
|
249
280
|
* @private
|
|
250
281
|
* @memberof Member
|
|
251
282
|
*/
|
|
252
|
-
processMember() {
|
|
283
|
+
private processMember() {
|
|
253
284
|
// must occur after self, guest, meeting, and type properties are calculated
|
|
254
285
|
this.isRemovable = MemberUtil.isRemovable(this.isSelf, this.isGuest, this.isInMeeting, this.type);
|
|
255
286
|
// must occur after self, device, meeting, mute status, and type properties are calculated
|
|
@@ -263,7 +294,7 @@ export default class Member {
|
|
|
263
294
|
* @private
|
|
264
295
|
* @memberof Member
|
|
265
296
|
*/
|
|
266
|
-
processStatus(participant) {
|
|
297
|
+
private processStatus(participant: object) {
|
|
267
298
|
this.status = MemberUtil.extractStatus(participant);
|
|
268
299
|
switch (this.status) {
|
|
269
300
|
case _IN_LOBBY_:
|
|
@@ -291,7 +322,7 @@ export default class Member {
|
|
|
291
322
|
* @public
|
|
292
323
|
* @memberof Member
|
|
293
324
|
*/
|
|
294
|
-
setIsContentSharing(flag) {
|
|
325
|
+
public setIsContentSharing(flag: boolean) {
|
|
295
326
|
this.isContentSharing = flag;
|
|
296
327
|
}
|
|
297
328
|
|
|
@@ -302,7 +333,7 @@ export default class Member {
|
|
|
302
333
|
* @public
|
|
303
334
|
* @memberof Member
|
|
304
335
|
*/
|
|
305
|
-
setIsHost(flag) {
|
|
336
|
+
public setIsHost(flag: boolean) {
|
|
306
337
|
this.isHost = flag;
|
|
307
338
|
}
|
|
308
339
|
|
|
@@ -313,7 +344,7 @@ export default class Member {
|
|
|
313
344
|
* @public
|
|
314
345
|
* @memberof Member
|
|
315
346
|
*/
|
|
316
|
-
setIsSelf(flag) {
|
|
347
|
+
public setIsSelf(flag: boolean) {
|
|
317
348
|
this.isSelf = flag;
|
|
318
349
|
}
|
|
319
350
|
|
|
@@ -325,7 +356,7 @@ export default class Member {
|
|
|
325
356
|
* @public
|
|
326
357
|
* @memberof Member
|
|
327
358
|
*/
|
|
328
|
-
processIsContentSharing(participant, sharingId) {
|
|
359
|
+
public processIsContentSharing(participant: object, sharingId: string) {
|
|
329
360
|
if (MemberUtil.isUser(participant)) {
|
|
330
361
|
this.isContentSharing = MemberUtil.isSame(participant, sharingId);
|
|
331
362
|
}
|
|
@@ -342,7 +373,7 @@ export default class Member {
|
|
|
342
373
|
* @public
|
|
343
374
|
* @memberof Member
|
|
344
375
|
*/
|
|
345
|
-
processIsRecording(participant, recordingId) {
|
|
376
|
+
public processIsRecording(participant: object, recordingId: string) {
|
|
346
377
|
this.isRecording = MemberUtil.isSame(participant, recordingId);
|
|
347
378
|
}
|
|
348
379
|
|
|
@@ -354,7 +385,7 @@ export default class Member {
|
|
|
354
385
|
* @private
|
|
355
386
|
* @memberof Member
|
|
356
387
|
*/
|
|
357
|
-
processIsSelf(participant, selfId) {
|
|
388
|
+
private processIsSelf(participant: object, selfId: string) {
|
|
358
389
|
if (MemberUtil.isUser(participant)) {
|
|
359
390
|
this.isSelf = MemberUtil.isSame(participant, selfId);
|
|
360
391
|
}
|
|
@@ -372,7 +403,7 @@ export default class Member {
|
|
|
372
403
|
* @private
|
|
373
404
|
* @memberof Member
|
|
374
405
|
*/
|
|
375
|
-
processIsHost(participant, hostId) {
|
|
406
|
+
private processIsHost(participant: object, hostId: string) {
|
|
376
407
|
if (MemberUtil.isUser(participant)) {
|
|
377
408
|
this.isHost = MemberUtil.isSame(participant, hostId);
|
|
378
409
|
}
|
|
@@ -388,7 +419,7 @@ export default class Member {
|
|
|
388
419
|
* @private
|
|
389
420
|
* @memberof Member
|
|
390
421
|
*/
|
|
391
|
-
processType(type) {
|
|
422
|
+
private processType(type: string) {
|
|
392
423
|
this.type = type;
|
|
393
424
|
}
|
|
394
425
|
}
|