@webex/plugin-meetings 3.7.0-next.1 → 3.7.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,6 +39,7 @@ var _lodash = require("lodash");
39
39
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
40
40
  var _webexCore = require("@webex/webex-core");
41
41
  var _common = require("@webex/common");
42
+ var _commonTimers = require("@webex/common-timers");
42
43
  var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
43
44
  var _internalMediaCore = require("@webex/internal-media-core");
44
45
  var _mediaHelpers = require("@webex/media-helpers");
@@ -552,6 +553,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
552
553
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidateErrors", void 0);
553
554
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidatesCount", void 0);
554
555
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "rtcMetrics", void 0);
556
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "uploadLogsTimer", void 0);
557
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "logUploadIntervalIndex", void 0);
555
558
  /**
556
559
  * Callback called when a relay event is received from meeting LLM Connection
557
560
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1434,6 +1437,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1434
1437
  _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with generated correlation id from sdk ".concat(_this.id));
1435
1438
  _this.callStateForMetrics.correlationId = _this.id;
1436
1439
  }
1440
+ _this.logUploadIntervalIndex = 0;
1441
+
1437
1442
  /**
1438
1443
  * @instance
1439
1444
  * @type {String}
@@ -4488,6 +4493,64 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4488
4493
  _triggerProxy.default.trigger(this, options, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
4489
4494
  }
4490
4495
 
4496
+ /**
4497
+ * sets the timer for periodic log upload
4498
+ * @returns {void}
4499
+ */
4500
+ }, {
4501
+ key: "setLogUploadTimer",
4502
+ value: function setLogUploadTimer() {
4503
+ var _this23 = this;
4504
+ // start with short timeouts and increase them later on so in case users have very long multi-hour meetings we don't get too fragmented logs
4505
+ var LOG_UPLOAD_INTERVALS = [0.1, 1, 15, 15, 30, 30, 30, 60];
4506
+ var delay = 1000 *
4507
+ // @ts-ignore - config coming from registerPlugin
4508
+ this.config.logUploadIntervalMultiplicationFactor * LOG_UPLOAD_INTERVALS[this.logUploadIntervalIndex];
4509
+ if (this.logUploadIntervalIndex < LOG_UPLOAD_INTERVALS.length - 1) {
4510
+ this.logUploadIntervalIndex += 1;
4511
+ }
4512
+ this.uploadLogsTimer = (0, _commonTimers.safeSetTimeout)(function () {
4513
+ _this23.uploadLogsTimer = undefined;
4514
+ _this23.uploadLogs();
4515
+
4516
+ // just as an extra precaution, to avoid uploading logs forever in case something goes wrong
4517
+ // and the page remains opened, we stop it if there is no media connection
4518
+ if (!_this23.mediaProperties.webrtcMediaConnection) {
4519
+ return;
4520
+ }
4521
+ _this23.setLogUploadTimer();
4522
+ }, delay);
4523
+ }
4524
+
4525
+ /**
4526
+ * Starts a periodic upload of logs
4527
+ *
4528
+ * @returns {undefined}
4529
+ */
4530
+ }, {
4531
+ key: "startPeriodicLogUpload",
4532
+ value: function startPeriodicLogUpload() {
4533
+ // @ts-ignore - config coming from registerPlugin
4534
+ if (this.config.logUploadIntervalMultiplicationFactor && !this.uploadLogsTimer) {
4535
+ this.logUploadIntervalIndex = 0;
4536
+ this.setLogUploadTimer();
4537
+ }
4538
+ }
4539
+
4540
+ /**
4541
+ * Stops the periodic upload of logs
4542
+ *
4543
+ * @returns {undefined}
4544
+ */
4545
+ }, {
4546
+ key: "stopPeriodicLogUpload",
4547
+ value: function stopPeriodicLogUpload() {
4548
+ if (this.uploadLogsTimer) {
4549
+ clearTimeout(this.uploadLogsTimer);
4550
+ this.uploadLogsTimer = undefined;
4551
+ }
4552
+ }
4553
+
4491
4554
  /**
4492
4555
  * Removes remote audio, video and share streams from class instance's mediaProperties
4493
4556
  * @returns {undefined}
@@ -4522,7 +4585,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4522
4585
  }, {
4523
4586
  key: "closeRemoteStreams",
4524
4587
  value: function closeRemoteStreams() {
4525
- var _this23 = this;
4588
+ var _this24 = this;
4526
4589
  var _this$mediaProperties4 = this.mediaProperties,
4527
4590
  remoteAudioStream = _this$mediaProperties4.remoteAudioStream,
4528
4591
  remoteVideoStream = _this$mediaProperties4.remoteVideoStream,
@@ -4536,7 +4599,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4536
4599
  */
4537
4600
  // eslint-disable-next-line @typescript-eslint/no-shadow
4538
4601
  var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
4539
- _triggerProxy.default.trigger(_this23, {
4602
+ _triggerProxy.default.trigger(_this24, {
4540
4603
  file: 'meeting/index',
4541
4604
  function: 'closeRemoteStreams'
4542
4605
  }, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
@@ -4844,7 +4907,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4844
4907
  }, {
4845
4908
  key: "setMercuryListener",
4846
4909
  value: function setMercuryListener() {
4847
- var _this24 = this;
4910
+ var _this25 = this;
4848
4911
  // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
4849
4912
  // if the meeting has active peer connections, it should try to reconnect.
4850
4913
  // @ts-ignore
@@ -4852,33 +4915,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4852
4915
  _loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
4853
4916
 
4854
4917
  // Only send restore event when it was disconnected before and for connected later
4855
- if (!_this24.hasWebsocketConnected) {
4918
+ if (!_this25.hasWebsocketConnected) {
4856
4919
  // @ts-ignore
4857
- _this24.webex.internal.newMetrics.submitClientEvent({
4920
+ _this25.webex.internal.newMetrics.submitClientEvent({
4858
4921
  name: 'client.mercury.connection.restored',
4859
4922
  options: {
4860
- meetingId: _this24.id
4923
+ meetingId: _this25.id
4861
4924
  }
4862
4925
  });
4863
4926
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
4864
- correlation_id: _this24.correlationId
4927
+ correlation_id: _this25.correlationId
4865
4928
  });
4866
4929
  }
4867
- _this24.hasWebsocketConnected = true;
4930
+ _this25.hasWebsocketConnected = true;
4868
4931
  });
4869
4932
 
4870
4933
  // @ts-ignore
4871
4934
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
4872
4935
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4873
4936
  // @ts-ignore
4874
- _this24.webex.internal.newMetrics.submitClientEvent({
4937
+ _this25.webex.internal.newMetrics.submitClientEvent({
4875
4938
  name: 'client.mercury.connection.lost',
4876
4939
  options: {
4877
- meetingId: _this24.id
4940
+ meetingId: _this25.id
4878
4941
  }
4879
4942
  });
4880
4943
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
4881
- correlation_id: _this24.correlationId
4944
+ correlation_id: _this25.correlationId
4882
4945
  });
4883
4946
  });
4884
4947
  }
@@ -4980,7 +5043,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4980
5043
  }, {
4981
5044
  key: "muteAudio",
4982
5045
  value: function muteAudio() {
4983
- var _this25 = this;
5046
+ var _this26 = this;
4984
5047
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4985
5048
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4986
5049
  }
@@ -4996,22 +5059,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4996
5059
 
4997
5060
  // First, stop sending the local audio media
4998
5061
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4999
- _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
5062
+ _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
5000
5063
  // @ts-ignore
5001
- _this25.webex.internal.newMetrics.submitClientEvent({
5064
+ _this26.webex.internal.newMetrics.submitClientEvent({
5002
5065
  name: 'client.muted',
5003
5066
  payload: {
5004
5067
  trigger: 'user-interaction',
5005
5068
  mediaType: 'audio'
5006
5069
  },
5007
5070
  options: {
5008
- meetingId: _this25.id
5071
+ meetingId: _this26.id
5009
5072
  }
5010
5073
  });
5011
5074
  }).catch(function (error) {
5012
5075
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
5013
- correlation_id: _this25.correlationId,
5014
- locus_id: _this25.locusUrl.split('/').pop(),
5076
+ correlation_id: _this26.correlationId,
5077
+ locus_id: _this26.locusUrl.split('/').pop(),
5015
5078
  reason: error.message,
5016
5079
  stack: error.stack
5017
5080
  });
@@ -5030,7 +5093,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5030
5093
  }, {
5031
5094
  key: "unmuteAudio",
5032
5095
  value: function unmuteAudio() {
5033
- var _this26 = this;
5096
+ var _this27 = this;
5034
5097
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5035
5098
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5036
5099
  }
@@ -5046,22 +5109,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5046
5109
 
5047
5110
  // First, send the control to unmute the participant on the server
5048
5111
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
5049
- _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
5112
+ _util2.default.handleAudioLogging(_this27.mediaProperties.audioStream);
5050
5113
  // @ts-ignore
5051
- _this26.webex.internal.newMetrics.submitClientEvent({
5114
+ _this27.webex.internal.newMetrics.submitClientEvent({
5052
5115
  name: 'client.unmuted',
5053
5116
  payload: {
5054
5117
  trigger: 'user-interaction',
5055
5118
  mediaType: 'audio'
5056
5119
  },
5057
5120
  options: {
5058
- meetingId: _this26.id
5121
+ meetingId: _this27.id
5059
5122
  }
5060
5123
  });
5061
5124
  }).catch(function (error) {
5062
5125
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
5063
- correlation_id: _this26.correlationId,
5064
- locus_id: _this26.locusUrl.split('/').pop(),
5126
+ correlation_id: _this27.correlationId,
5127
+ locus_id: _this27.locusUrl.split('/').pop(),
5065
5128
  reason: error.message,
5066
5129
  stack: error.stack
5067
5130
  });
@@ -5080,7 +5143,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5080
5143
  }, {
5081
5144
  key: "muteVideo",
5082
5145
  value: function muteVideo() {
5083
- var _this27 = this;
5146
+ var _this28 = this;
5084
5147
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5085
5148
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5086
5149
  }
@@ -5094,22 +5157,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5094
5157
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
5095
5158
  }
5096
5159
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
5097
- _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5160
+ _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
5098
5161
  // @ts-ignore
5099
- _this27.webex.internal.newMetrics.submitClientEvent({
5162
+ _this28.webex.internal.newMetrics.submitClientEvent({
5100
5163
  name: 'client.muted',
5101
5164
  payload: {
5102
5165
  trigger: 'user-interaction',
5103
5166
  mediaType: 'video'
5104
5167
  },
5105
5168
  options: {
5106
- meetingId: _this27.id
5169
+ meetingId: _this28.id
5107
5170
  }
5108
5171
  });
5109
5172
  }).catch(function (error) {
5110
5173
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
5111
- correlation_id: _this27.correlationId,
5112
- locus_id: _this27.locusUrl.split('/').pop(),
5174
+ correlation_id: _this28.correlationId,
5175
+ locus_id: _this28.locusUrl.split('/').pop(),
5113
5176
  reason: error.message,
5114
5177
  stack: error.stack
5115
5178
  });
@@ -5128,7 +5191,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5128
5191
  }, {
5129
5192
  key: "unmuteVideo",
5130
5193
  value: function unmuteVideo() {
5131
- var _this28 = this;
5194
+ var _this29 = this;
5132
5195
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5133
5196
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5134
5197
  }
@@ -5142,22 +5205,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5142
5205
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
5143
5206
  }
5144
5207
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
5145
- _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
5208
+ _util2.default.handleVideoLogging(_this29.mediaProperties.videoStream);
5146
5209
  // @ts-ignore
5147
- _this28.webex.internal.newMetrics.submitClientEvent({
5210
+ _this29.webex.internal.newMetrics.submitClientEvent({
5148
5211
  name: 'client.unmuted',
5149
5212
  payload: {
5150
5213
  trigger: 'user-interaction',
5151
5214
  mediaType: 'video'
5152
5215
  },
5153
5216
  options: {
5154
- meetingId: _this28.id
5217
+ meetingId: _this29.id
5155
5218
  }
5156
5219
  });
5157
5220
  }).catch(function (error) {
5158
5221
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
5159
- correlation_id: _this28.correlationId,
5160
- locus_id: _this28.locusUrl.split('/').pop(),
5222
+ correlation_id: _this29.correlationId,
5223
+ locus_id: _this29.locusUrl.split('/').pop(),
5161
5224
  reason: error.message,
5162
5225
  stack: error.stack
5163
5226
  });
@@ -5187,7 +5250,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5187
5250
  key: "joinWithMedia",
5188
5251
  value: (function () {
5189
5252
  var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
5190
- var _this29 = this;
5253
+ var _this30 = this;
5191
5254
  var options,
5192
5255
  mediaOptions,
5193
5256
  _options$joinOptions,
@@ -5270,7 +5333,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5270
5333
  case 35:
5271
5334
  _context15.next = 37;
5272
5335
  return this.addMediaInternal(function () {
5273
- return _this29.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5336
+ return _this30.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5274
5337
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5275
5338
  case 37:
5276
5339
  mediaResponse = _context15.sent;
@@ -5362,7 +5425,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5362
5425
  }, {
5363
5426
  key: "reconnect",
5364
5427
  value: function reconnect(options) {
5365
- var _this30 = this;
5428
+ var _this31 = this;
5366
5429
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5367
5430
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5368
5431
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5378,10 +5441,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5378
5441
  while (1) switch (_context16.prev = _context16.next) {
5379
5442
  case 0:
5380
5443
  _context16.next = 2;
5381
- return _this30.waitForRemoteSDPAnswer();
5444
+ return _this31.waitForRemoteSDPAnswer();
5382
5445
  case 2:
5383
5446
  _context16.next = 4;
5384
- return _this30.waitForMediaConnectionConnected();
5447
+ return _this31.waitForMediaConnectionConnected();
5385
5448
  case 4:
5386
5449
  case "end":
5387
5450
  return _context16.stop();
@@ -5395,7 +5458,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5395
5458
  return _promise.default.resolve();
5396
5459
  }
5397
5460
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5398
- _this30.uploadLogs({
5461
+ _this31.uploadLogs({
5399
5462
  file: 'meeting/index',
5400
5463
  function: 'reconnect'
5401
5464
  });
@@ -5442,19 +5505,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5442
5505
  }, {
5443
5506
  key: "setCaptionLanguage",
5444
5507
  value: function setCaptionLanguage(language) {
5445
- var _this31 = this;
5508
+ var _this32 = this;
5446
5509
  return new _promise.default(function (resolve, reject) {
5447
- if (!_this31.isTranscriptionSupported()) {
5510
+ if (!_this32.isTranscriptionSupported()) {
5448
5511
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5449
5512
  reject(new Error('Webex Assistant is not enabled/supported'));
5450
5513
  }
5451
5514
  try {
5452
5515
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5453
5516
  // @ts-ignore
5454
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5517
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5455
5518
  var statusCode = payload.statusCode;
5456
5519
  if (statusCode === 200) {
5457
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5520
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5458
5521
  currentCaptionLanguage: language
5459
5522
  });
5460
5523
  resolve(language);
@@ -5463,9 +5526,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5463
5526
  }
5464
5527
  };
5465
5528
  // @ts-ignore
5466
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5529
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5467
5530
  // @ts-ignore
5468
- _this31.webex.internal.voicea.requestLanguage(language);
5531
+ _this32.webex.internal.voicea.requestLanguage(language);
5469
5532
  } catch (error) {
5470
5533
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5471
5534
  reject(error);
@@ -5481,23 +5544,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5481
5544
  }, {
5482
5545
  key: "setSpokenLanguage",
5483
5546
  value: function setSpokenLanguage(language) {
5484
- var _this32 = this;
5547
+ var _this33 = this;
5485
5548
  return new _promise.default(function (resolve, reject) {
5486
- if (!_this32.isTranscriptionSupported()) {
5549
+ if (!_this33.isTranscriptionSupported()) {
5487
5550
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5488
5551
  reject(new Error('Webex Assistant is not enabled/supported'));
5489
5552
  }
5490
- if (_this32.getCurUserType() !== 'host') {
5553
+ if (_this33.getCurUserType() !== 'host') {
5491
5554
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5492
5555
  reject(new Error('Only host can set spoken language'));
5493
5556
  }
5494
5557
  try {
5495
5558
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5496
5559
  // @ts-ignore
5497
- _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5560
+ _this33.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5498
5561
  var languageCode = payload.languageCode;
5499
5562
  if (languageCode) {
5500
- _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5563
+ _this33.transcription.languageOptions = _objectSpread(_objectSpread({}, _this33.transcription.languageOptions), {}, {
5501
5564
  currentSpokenLanguage: languageCode
5502
5565
  });
5503
5566
  resolve(languageCode);
@@ -5507,10 +5570,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5507
5570
  };
5508
5571
 
5509
5572
  // @ts-ignore
5510
- _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5573
+ _this33.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5511
5574
 
5512
5575
  // @ts-ignore
5513
- _this32.webex.internal.voicea.setSpokenLanguage(language);
5576
+ _this33.webex.internal.voicea.setSpokenLanguage(language);
5514
5577
  } catch (error) {
5515
5578
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5516
5579
  reject(error);
@@ -5630,7 +5693,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5630
5693
  */
5631
5694
  function () {
5632
5695
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5633
- var _this33 = this;
5696
+ var _this34 = this;
5634
5697
  var options,
5635
5698
  errorMessage,
5636
5699
  error,
@@ -5776,62 +5839,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5776
5839
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5777
5840
  case 51:
5778
5841
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5779
- _this33.meetingFiniteStateMachine.join();
5780
- _this33.setupLocusMediaRequest();
5842
+ _this34.meetingFiniteStateMachine.join();
5843
+ _this34.setupLocusMediaRequest();
5781
5844
 
5782
5845
  // @ts-ignore
5783
- _this33.webex.internal.device.meetingStarted();
5784
- (0, _classPrivateFieldSet2.default)(_this33, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5846
+ _this34.webex.internal.device.meetingStarted();
5847
+ (0, _classPrivateFieldSet2.default)(_this34, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5785
5848
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5786
5849
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5787
- correlation_id: _this33.correlationId
5850
+ correlation_id: _this34.correlationId
5788
5851
  });
5789
5852
  joinSuccess(join);
5790
- _this33.deferJoin = undefined;
5853
+ _this34.deferJoin = undefined;
5791
5854
  return join;
5792
5855
  }).catch(function (error) {
5793
- var _this33$meetingInfo, _error$error;
5794
- _this33.meetingFiniteStateMachine.fail(error);
5856
+ var _this34$meetingInfo, _error$error;
5857
+ _this34.meetingFiniteStateMachine.fail(error);
5795
5858
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5796
5859
 
5797
5860
  // @ts-ignore
5798
- _this33.webex.internal.newMetrics.submitClientEvent({
5861
+ _this34.webex.internal.newMetrics.submitClientEvent({
5799
5862
  name: 'client.locus.join.response',
5800
5863
  payload: {
5801
5864
  identifiers: {
5802
- meetingLookupUrl: (_this33$meetingInfo = _this33.meetingInfo) === null || _this33$meetingInfo === void 0 ? void 0 : _this33$meetingInfo.meetingLookupUrl
5865
+ meetingLookupUrl: (_this34$meetingInfo = _this34.meetingInfo) === null || _this34$meetingInfo === void 0 ? void 0 : _this34$meetingInfo.meetingLookupUrl
5803
5866
  }
5804
5867
  },
5805
5868
  options: {
5806
- meetingId: _this33.id,
5869
+ meetingId: _this34.id,
5807
5870
  rawError: error
5808
5871
  }
5809
5872
  });
5810
5873
 
5811
5874
  // TODO: change this to error codes and pre defined dictionary
5812
5875
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5813
- correlation_id: _this33.correlationId,
5876
+ correlation_id: _this34.correlationId,
5814
5877
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5815
5878
  stack: error.stack
5816
5879
  });
5817
5880
 
5818
5881
  // Upload logs on join Failure
5819
- _triggerProxy.default.trigger(_this33, {
5882
+ _triggerProxy.default.trigger(_this34, {
5820
5883
  file: 'meeting/index',
5821
5884
  function: 'join'
5822
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this33);
5885
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this34);
5823
5886
  joinFailed(error);
5824
- _this33.deferJoin = undefined;
5887
+ _this34.deferJoin = undefined;
5825
5888
  return _promise.default.reject(error);
5826
5889
  }).then(function (join) {
5827
5890
  // @ts-ignore - config coming from registerPlugin
5828
- if (_this33.config.enableAutomaticLLM) {
5891
+ if (_this34.config.enableAutomaticLLM) {
5829
5892
  // @ts-ignore
5830
- _this33.webex.internal.llm.on('online', _this33.handleLLMOnline);
5831
- _this33.updateLLMConnection().catch(function (error) {
5893
+ _this34.webex.internal.llm.on('online', _this34.handleLLMOnline);
5894
+ _this34.updateLLMConnection().catch(function (error) {
5832
5895
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5833
5896
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5834
- correlation_id: _this33.correlationId,
5897
+ correlation_id: _this34.correlationId,
5835
5898
  reason: error === null || error === void 0 ? void 0 : error.message,
5836
5899
  stack: error.stack
5837
5900
  });
@@ -5863,7 +5926,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5863
5926
  key: "updateLLMConnection",
5864
5927
  value: (function () {
5865
5928
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5866
- var _this34 = this;
5929
+ var _this35 = this;
5867
5930
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5868
5931
  return _regenerator.default.wrap(function _callee19$(_context19) {
5869
5932
  while (1) switch (_context19.prev = _context19.next) {
@@ -5899,9 +5962,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5899
5962
  case 10:
5900
5963
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5901
5964
  // @ts-ignore - Fix type
5902
- _this34.webex.internal.llm.off('event:relay.event', _this34.processRelayEvent);
5965
+ _this35.webex.internal.llm.off('event:relay.event', _this35.processRelayEvent);
5903
5966
  // @ts-ignore - Fix type
5904
- _this34.webex.internal.llm.on('event:relay.event', _this34.processRelayEvent);
5967
+ _this35.webex.internal.llm.on('event:relay.event', _this35.processRelayEvent);
5905
5968
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5906
5969
  return _promise.default.resolve(registerAndConnectResult);
5907
5970
  }));
@@ -5955,7 +6018,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5955
6018
  }, {
5956
6019
  key: "dialInPstn",
5957
6020
  value: function dialInPstn() {
5958
- var _this35 = this;
6021
+ var _this36 = this;
5959
6022
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5960
6023
 
5961
6024
  var correlationId = this.correlationId,
@@ -5971,10 +6034,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5971
6034
  }).catch(function (error) {
5972
6035
  var _error$error2;
5973
6036
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5974
- correlation_id: _this35.correlationId,
5975
- dial_in_url: _this35.dialInUrl,
6037
+ correlation_id: _this36.correlationId,
6038
+ dial_in_url: _this36.dialInUrl,
5976
6039
  locus_id: locusUrl.split('/').pop(),
5977
- client_url: _this35.deviceUrl,
6040
+ client_url: _this36.deviceUrl,
5978
6041
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5979
6042
  stack: error.stack
5980
6043
  });
@@ -5992,7 +6055,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5992
6055
  }, {
5993
6056
  key: "dialOutPstn",
5994
6057
  value: function dialOutPstn(phoneNumber) {
5995
- var _this36 = this;
6058
+ var _this37 = this;
5996
6059
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5997
6060
 
5998
6061
  var correlationId = this.correlationId,
@@ -6009,10 +6072,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6009
6072
  }).catch(function (error) {
6010
6073
  var _error$error3;
6011
6074
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
6012
- correlation_id: _this36.correlationId,
6013
- dial_out_url: _this36.dialOutUrl,
6075
+ correlation_id: _this37.correlationId,
6076
+ dial_out_url: _this37.dialOutUrl,
6014
6077
  locus_id: locusUrl.split('/').pop(),
6015
- client_url: _this36.deviceUrl,
6078
+ client_url: _this37.deviceUrl,
6016
6079
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
6017
6080
  stack: error.stack
6018
6081
  });
@@ -6043,7 +6106,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6043
6106
  }, {
6044
6107
  key: "moveTo",
6045
6108
  value: function moveTo(resourceId) {
6046
- var _this37 = this;
6109
+ var _this38 = this;
6047
6110
  if (!resourceId) {
6048
6111
  throw new _parameter.default('Cannot move call without a resourceId.');
6049
6112
  }
@@ -6087,12 +6150,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6087
6150
  while (1) switch (_context20.prev = _context20.next) {
6088
6151
  case 0:
6089
6152
  _context20.prev = 0;
6090
- if (!(_this37.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6153
+ if (!(_this38.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6091
6154
  _context20.next = 4;
6092
6155
  break;
6093
6156
  }
6094
6157
  _context20.next = 4;
6095
- return _this37.releaseScreenShareFloor();
6158
+ return _this38.releaseScreenShareFloor();
6096
6159
  case 4:
6097
6160
  mediaSettings = {
6098
6161
  mediaDirection: {
@@ -6104,37 +6167,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6104
6167
  receiveShare: true
6105
6168
  }
6106
6169
  };
6107
- _this37.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6108
- _this37.mediaProperties.unsetRemoteMedia();
6170
+ _this38.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6171
+ _this38.mediaProperties.unsetRemoteMedia();
6109
6172
 
6110
6173
  // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
6111
6174
  // once the device answers we close the old connection and create new media server connection with only share enabled
6112
- if (!_this37.statsAnalyzer) {
6175
+ if (!_this38.statsAnalyzer) {
6113
6176
  _context20.next = 10;
6114
6177
  break;
6115
6178
  }
6116
6179
  _context20.next = 10;
6117
- return _this37.statsAnalyzer.stopAnalyzer();
6180
+ return _this38.statsAnalyzer.stopAnalyzer();
6118
6181
  case 10:
6119
6182
  _context20.next = 12;
6120
- return _this37.closeRemoteStreams();
6183
+ return _this38.closeRemoteStreams();
6121
6184
  case 12:
6122
6185
  _context20.next = 14;
6123
- return _this37.closePeerConnections();
6186
+ return _this38.closePeerConnections();
6124
6187
  case 14:
6125
- _this37.cleanupLocalStreams();
6126
- _this37.unsetRemoteStreams();
6127
- _this37.unsetPeerConnections();
6128
- _this37.reconnectionManager.cleanUp();
6188
+ _this38.cleanupLocalStreams();
6189
+ _this38.unsetRemoteStreams();
6190
+ _this38.unsetPeerConnections();
6191
+ _this38.reconnectionManager.cleanUp();
6129
6192
  _context20.next = 20;
6130
- return _this37.addMedia({
6193
+ return _this38.addMedia({
6131
6194
  audioEnabled: false,
6132
6195
  videoEnabled: false,
6133
6196
  shareVideoEnabled: true
6134
6197
  });
6135
6198
  case 20:
6136
6199
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6137
- _this37.isMoveToInProgress = false;
6200
+ _this38.isMoveToInProgress = false;
6138
6201
  _context20.next = 29;
6139
6202
  break;
6140
6203
  case 24:
@@ -6142,12 +6205,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6142
6205
  _context20.t0 = _context20["catch"](0);
6143
6206
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6144
6207
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6145
- correlation_id: _this37.correlationId,
6146
- locus_id: _this37.locusUrl.split('/').pop(),
6208
+ correlation_id: _this38.correlationId,
6209
+ locus_id: _this38.locusUrl.split('/').pop(),
6147
6210
  reason: _context20.t0.message,
6148
6211
  stack: _context20.t0.stack
6149
6212
  });
6150
- _this37.isMoveToInProgress = false;
6213
+ _this38.isMoveToInProgress = false;
6151
6214
  case 29:
6152
6215
  case "end":
6153
6216
  return _context20.stop();
@@ -6163,17 +6226,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6163
6226
  resourceId: resourceId,
6164
6227
  moveToResource: true
6165
6228
  }).then(function () {
6166
- _this37.meetingFiniteStateMachine.join();
6229
+ _this38.meetingFiniteStateMachine.join();
6167
6230
  }).catch(function (error) {
6168
- _this37.meetingFiniteStateMachine.fail(error);
6231
+ _this38.meetingFiniteStateMachine.fail(error);
6169
6232
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6170
- correlation_id: _this37.correlationId,
6171
- locus_id: _this37.locusUrl.split('/').pop(),
6233
+ correlation_id: _this38.correlationId,
6234
+ locus_id: _this38.locusUrl.split('/').pop(),
6172
6235
  reason: error.message,
6173
6236
  stack: error.stack
6174
6237
  });
6175
6238
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6176
- _this37.isMoveToInProgress = false;
6239
+ _this38.isMoveToInProgress = false;
6177
6240
  return _promise.default.reject(error);
6178
6241
  });
6179
6242
  }
@@ -6188,7 +6251,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6188
6251
  }, {
6189
6252
  key: "moveFrom",
6190
6253
  value: function moveFrom(resourceId) {
6191
- var _this38 = this;
6254
+ var _this39 = this;
6192
6255
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6193
6256
  if (!resourceId) {
6194
6257
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6203,19 +6266,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6203
6266
  }
6204
6267
  });
6205
6268
  return _util2.default.joinMeetingOptions(this).then(function () {
6206
- return _util2.default.leaveMeeting(_this38, {
6269
+ return _util2.default.leaveMeeting(_this39, {
6207
6270
  resourceId: resourceId,
6208
6271
  correlationId: oldCorrelationId,
6209
6272
  moveMeeting: true
6210
6273
  }).then(function () {
6211
- _this38.resourceId = '';
6274
+ _this39.resourceId = '';
6212
6275
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6213
6276
  });
6214
6277
  }).catch(function (error) {
6215
- _this38.meetingFiniteStateMachine.fail(error);
6278
+ _this39.meetingFiniteStateMachine.fail(error);
6216
6279
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6217
- correlation_id: _this38.correlationId,
6218
- locus_id: _this38.locusUrl.split('/').pop(),
6280
+ correlation_id: _this39.correlationId,
6281
+ locus_id: _this39.locusUrl.split('/').pop(),
6219
6282
  reason: error.message,
6220
6283
  stack: error.stack
6221
6284
  });
@@ -6328,9 +6391,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6328
6391
  }, {
6329
6392
  key: "forwardEvent",
6330
6393
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6331
- var _this39 = this;
6394
+ var _this40 = this;
6332
6395
  eventEmitter.on(eventTypeToForward, function (data) {
6333
- return _triggerProxy.default.trigger(_this39, {
6396
+ return _triggerProxy.default.trigger(_this40, {
6334
6397
  file: 'meetings',
6335
6398
  function: 'addMedia'
6336
6399
  }, meetingEventType, data);
@@ -6517,7 +6580,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6517
6580
  */
6518
6581
  function () {
6519
6582
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6520
- var _this40 = this;
6583
+ var _this41 = this;
6521
6584
  var LOG_HEADER, deferSDPAnswer;
6522
6585
  return _regenerator.default.wrap(function _callee24$(_context24) {
6523
6586
  while (1) switch (_context24.prev = _context24.next) {
@@ -6534,18 +6597,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6534
6597
  this.sdpResponseTimer = setTimeout(function () {
6535
6598
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6536
6599
  // @ts-ignore
6537
- _this40.webex.internal.newMetrics.submitClientEvent({
6600
+ _this41.webex.internal.newMetrics.submitClientEvent({
6538
6601
  name: 'client.media-engine.remote-sdp-received',
6539
6602
  payload: {
6540
6603
  canProceed: false,
6541
6604
  errors: [
6542
6605
  // @ts-ignore
6543
- _this40.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6606
+ _this41.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6544
6607
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6545
6608
  })]
6546
6609
  },
6547
6610
  options: {
6548
- meetingId: _this40.id,
6611
+ meetingId: _this41.id,
6549
6612
  rawError: new Error('Timeout waiting for SDP answer')
6550
6613
  }
6551
6614
  });
@@ -7009,10 +7072,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7009
7072
  }, {
7010
7073
  key: "addMedia",
7011
7074
  value: function addMedia() {
7012
- var _this41 = this;
7075
+ var _this42 = this;
7013
7076
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7014
7077
  return this.addMediaInternal(function () {
7015
- return _this41.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7078
+ return _this42.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7016
7079
  }, undefined, false, options);
7017
7080
  }
7018
7081
 
@@ -7212,21 +7275,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7212
7275
 
7213
7276
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7214
7277
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7215
- _context33.next = 68;
7278
+ this.startPeriodicLogUpload();
7279
+ _context33.next = 69;
7216
7280
  break;
7217
- case 50:
7218
- _context33.prev = 50;
7281
+ case 51:
7282
+ _context33.prev = 51;
7219
7283
  _context33.t0 = _context33["catch"](18);
7220
7284
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7221
7285
 
7222
7286
  // @ts-ignore
7223
- _context33.next = 55;
7287
+ _context33.next = 56;
7224
7288
  return this.webex.meetings.reachability.getReachabilityMetrics();
7225
- case 55:
7289
+ case 56:
7226
7290
  reachabilityMetrics = _context33.sent;
7227
- _context33.next = 58;
7291
+ _context33.next = 59;
7228
7292
  return this.mediaProperties.getCurrentConnectionInfo();
7229
- case 58:
7293
+ case 59:
7230
7294
  _yield$this$mediaProp2 = _context33.sent;
7231
7295
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7232
7296
  _numTransports = _yield$this$mediaProp2.numTransports;
@@ -7250,9 +7314,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7250
7314
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7251
7315
  iceCandidatesCount: this.iceCandidatesCount
7252
7316
  }));
7253
- _context33.next = 65;
7317
+ _context33.next = 66;
7254
7318
  return this.cleanUpOnAddMediaFailure();
7255
- case 65:
7319
+ case 66:
7256
7320
  // Upload logs on error while adding media
7257
7321
  _triggerProxy.default.trigger(this, {
7258
7322
  file: 'meeting/index',
@@ -7264,15 +7328,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7264
7328
  });
7265
7329
  }
7266
7330
  throw _context33.t0;
7267
- case 68:
7268
- _context33.prev = 68;
7331
+ case 69:
7332
+ _context33.prev = 69;
7269
7333
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7270
- return _context33.finish(68);
7271
- case 71:
7334
+ return _context33.finish(69);
7335
+ case 72:
7272
7336
  case "end":
7273
7337
  return _context33.stop();
7274
7338
  }
7275
- }, _callee33, this, [[18, 50, 68, 71]]);
7339
+ }, _callee33, this, [[18, 51, 69, 72]]);
7276
7340
  }));
7277
7341
  function addMediaInternal(_x32, _x33, _x34) {
7278
7342
  return _addMediaInternal.apply(this, arguments);
@@ -7304,7 +7368,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7304
7368
  * @memberof Meeting
7305
7369
  */
7306
7370
  function enqueueMediaUpdate(mediaUpdateType) {
7307
- var _this42 = this;
7371
+ var _this43 = this;
7308
7372
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7309
7373
  var canUpdateMediaNow = this.canUpdateMedia();
7310
7374
  return new _promise.default(function (resolve, reject) {
@@ -7315,9 +7379,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7315
7379
  options: options
7316
7380
  };
7317
7381
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7318
- _this42.queuedMediaUpdates.push(queueItem);
7382
+ _this43.queuedMediaUpdates.push(queueItem);
7319
7383
  if (canUpdateMediaNow) {
7320
- _this42.processNextQueuedMediaUpdate();
7384
+ _this43.processNextQueuedMediaUpdate();
7321
7385
  }
7322
7386
  });
7323
7387
  }
@@ -7422,7 +7486,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7422
7486
  }, {
7423
7487
  key: "acknowledge",
7424
7488
  value: function acknowledge(type) {
7425
- var _this43 = this;
7489
+ var _this44 = this;
7426
7490
  if (!type) {
7427
7491
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7428
7492
  }
@@ -7434,12 +7498,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7434
7498
  }).then(function (response) {
7435
7499
  return _promise.default.resolve(response);
7436
7500
  }).then(function (response) {
7437
- _this43.meetingFiniteStateMachine.ring(type);
7501
+ _this44.meetingFiniteStateMachine.ring(type);
7438
7502
  // @ts-ignore
7439
- _this43.webex.internal.newMetrics.submitClientEvent({
7503
+ _this44.webex.internal.newMetrics.submitClientEvent({
7440
7504
  name: 'client.alert.displayed',
7441
7505
  options: {
7442
- meetingId: _this43.id
7506
+ meetingId: _this44.id
7443
7507
  }
7444
7508
  });
7445
7509
  return _promise.default.resolve({
@@ -7464,12 +7528,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7464
7528
  }, {
7465
7529
  key: "decline",
7466
7530
  value: function decline(reason) {
7467
- var _this44 = this;
7531
+ var _this45 = this;
7468
7532
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7469
- _this44.meetingFiniteStateMachine.decline();
7533
+ _this45.meetingFiniteStateMachine.decline();
7470
7534
  return _promise.default.resolve(decline);
7471
7535
  }).catch(function (error) {
7472
- _this44.meetingFiniteStateMachine.fail(error);
7536
+ _this45.meetingFiniteStateMachine.fail(error);
7473
7537
  return _promise.default.reject(error);
7474
7538
  });
7475
7539
  }
@@ -7520,7 +7584,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7520
7584
  }, {
7521
7585
  key: "leave",
7522
7586
  value: function leave() {
7523
- var _this45 = this;
7587
+ var _this46 = this;
7524
7588
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7525
7589
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7526
7590
 
@@ -7532,7 +7596,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7532
7596
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7533
7597
  return (
7534
7598
  // @ts-ignore
7535
- _this45.webex.internal.newMetrics.submitClientEvent({
7599
+ _this46.webex.internal.newMetrics.submitClientEvent({
7536
7600
  name: 'client.call.leave',
7537
7601
  payload: _objectSpread({
7538
7602
  trigger: 'user-interaction',
@@ -7540,7 +7604,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7540
7604
  leaveReason: options.clientEventLeaveReason
7541
7605
  }, payload),
7542
7606
  options: {
7543
- meetingId: _this45.id
7607
+ meetingId: _this46.id
7544
7608
  }
7545
7609
  })
7546
7610
  );
@@ -7549,24 +7613,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7549
7613
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7550
7614
  // CA team recommends submitting this *after* locus /leave
7551
7615
  submitLeaveMetric();
7552
- _this45.meetingFiniteStateMachine.leave();
7553
- _this45.clearMeetingData();
7616
+ _this46.meetingFiniteStateMachine.leave();
7617
+ _this46.clearMeetingData();
7554
7618
 
7555
7619
  // upload logs on leave irrespective of meeting delete
7556
- _triggerProxy.default.trigger(_this45, {
7620
+ _triggerProxy.default.trigger(_this46, {
7557
7621
  file: 'meeting/index',
7558
7622
  function: 'leave'
7559
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7623
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7560
7624
 
7561
7625
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7562
- if (_this45.wirelessShare || _this45.guest) {
7626
+ if (_this46.wirelessShare || _this46.guest) {
7563
7627
  // If screen sharing clean the meeting object
7564
- _triggerProxy.default.trigger(_this45, {
7628
+ _triggerProxy.default.trigger(_this46, {
7565
7629
  file: 'meeting/index',
7566
7630
  function: 'leave'
7567
7631
  }, _constants.EVENTS.DESTROY_MEETING, {
7568
7632
  reason: options.reason,
7569
- meetingId: _this45.id
7633
+ meetingId: _this46.id
7570
7634
  });
7571
7635
  }
7572
7636
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7583,16 +7647,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7583
7647
  shownToUser: false
7584
7648
  }]
7585
7649
  });
7586
- _this45.meetingFiniteStateMachine.fail(error);
7650
+ _this46.meetingFiniteStateMachine.fail(error);
7587
7651
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7588
7652
  // upload logs on leave irrespective of meeting delete
7589
- _triggerProxy.default.trigger(_this45, {
7653
+ _triggerProxy.default.trigger(_this46, {
7590
7654
  file: 'meeting/index',
7591
7655
  function: 'leave'
7592
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7656
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7593
7657
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7594
- correlation_id: _this45.correlationId,
7595
- locus_id: _this45.locusUrl.split('/').pop(),
7658
+ correlation_id: _this46.correlationId,
7659
+ locus_id: _this46.locusUrl.split('/').pop(),
7596
7660
  reason: error.message,
7597
7661
  stack: error.stack,
7598
7662
  code: error.code
@@ -7612,7 +7676,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7612
7676
  }, {
7613
7677
  key: "startWhiteboardShare",
7614
7678
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7615
- var _this46 = this;
7679
+ var _this47 = this;
7616
7680
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7617
7681
  return element.name === 'whiteboard';
7618
7682
  });
@@ -7641,13 +7705,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7641
7705
  body.resourceToken = resourceToken;
7642
7706
  }
7643
7707
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7644
- _this46.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7708
+ _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7645
7709
  return _promise.default.resolve();
7646
7710
  }).catch(function (error) {
7647
7711
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7648
7712
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7649
- correlation_id: _this46.correlationId,
7650
- locus_id: _this46.locusUrl.split('/').pop(),
7713
+ correlation_id: _this47.correlationId,
7714
+ locus_id: _this47.locusUrl.split('/').pop(),
7651
7715
  reason: error.message,
7652
7716
  stack: error.stack,
7653
7717
  board: {
@@ -7670,7 +7734,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7670
7734
  }, {
7671
7735
  key: "stopWhiteboardShare",
7672
7736
  value: function stopWhiteboardShare(channelUrl) {
7673
- var _this47 = this;
7737
+ var _this48 = this;
7674
7738
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7675
7739
  return element.name === 'whiteboard';
7676
7740
  });
@@ -7693,8 +7757,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7693
7757
  }).catch(function (error) {
7694
7758
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7695
7759
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7696
- correlation_id: _this47.correlationId,
7697
- locus_id: _this47.locusUrl.split('/').pop(),
7760
+ correlation_id: _this48.correlationId,
7761
+ locus_id: _this48.locusUrl.split('/').pop(),
7698
7762
  reason: error.message,
7699
7763
  stack: error.stack,
7700
7764
  board: {
@@ -7716,7 +7780,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7716
7780
  }, {
7717
7781
  key: "requestScreenShareFloor",
7718
7782
  value: function requestScreenShareFloor() {
7719
- var _this48 = this;
7783
+ var _this49 = this;
7720
7784
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7721
7785
  _loggerProxy.default.logger.log("Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=".concat(this.mediaProperties.shareVideoStream ? 'yes' : 'no', ", sendShare=").concat(this.mediaProperties.mediaDirection.sendShare, ")"));
7722
7786
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7747,34 +7811,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7747
7811
  resourceUrl: this.resourceUrl,
7748
7812
  shareInstanceId: this.localShareInstanceId
7749
7813
  }).then(function () {
7750
- _this48.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7814
+ _this49.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7751
7815
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7752
- correlation_id: _this48.correlationId,
7753
- locus_id: _this48.locusUrl.split('/').pop()
7816
+ correlation_id: _this49.correlationId,
7817
+ locus_id: _this49.locusUrl.split('/').pop()
7754
7818
  });
7755
7819
  return _promise.default.resolve();
7756
7820
  }).catch(function (error) {
7757
7821
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7758
7822
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7759
- correlation_id: _this48.correlationId,
7760
- locus_id: _this48.locusUrl.split('/').pop(),
7823
+ correlation_id: _this49.correlationId,
7824
+ locus_id: _this49.locusUrl.split('/').pop(),
7761
7825
  reason: error.message,
7762
7826
  stack: error.stack
7763
7827
  });
7764
7828
 
7765
7829
  // @ts-ignore
7766
- _this48.webex.internal.newMetrics.submitClientEvent({
7830
+ _this49.webex.internal.newMetrics.submitClientEvent({
7767
7831
  name: 'client.share.floor-granted.local',
7768
7832
  payload: {
7769
7833
  mediaType: 'share',
7770
7834
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7771
- shareInstanceId: _this48.localShareInstanceId
7835
+ shareInstanceId: _this49.localShareInstanceId
7772
7836
  },
7773
7837
  options: {
7774
- meetingId: _this48.id
7838
+ meetingId: _this49.id
7775
7839
  }
7776
7840
  });
7777
- _this48.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7841
+ _this49.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7778
7842
  return _promise.default.reject(error);
7779
7843
  });
7780
7844
  }
@@ -7797,10 +7861,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7797
7861
  }, {
7798
7862
  key: "requestScreenShareFloorIfPending",
7799
7863
  value: function requestScreenShareFloorIfPending() {
7800
- var _this49 = this;
7864
+ var _this50 = this;
7801
7865
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7802
7866
  this.requestScreenShareFloor().then(function () {
7803
- _this49.floorGrantPending = false;
7867
+ _this50.floorGrantPending = false;
7804
7868
  });
7805
7869
  }
7806
7870
  }
@@ -7814,7 +7878,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7814
7878
  }, {
7815
7879
  key: "releaseScreenShareFloor",
7816
7880
  value: function releaseScreenShareFloor() {
7817
- var _this50 = this;
7881
+ var _this51 = this;
7818
7882
  var content = this.locusInfo.mediaShares.find(function (element) {
7819
7883
  return element.name === _constants.CONTENT;
7820
7884
  });
@@ -7849,8 +7913,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7849
7913
  }).catch(function (error) {
7850
7914
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7851
7915
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7852
- correlation_id: _this50.correlationId,
7853
- locus_id: _this50.locusUrl.split('/').pop(),
7916
+ correlation_id: _this51.correlationId,
7917
+ locus_id: _this51.locusUrl.split('/').pop(),
7854
7918
  reason: error.message,
7855
7919
  stack: error.stack
7856
7920
  });
@@ -8030,7 +8094,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8030
8094
  }, {
8031
8095
  key: "changeVideoLayout",
8032
8096
  value: function changeVideoLayout(layoutType) {
8033
- var _this51 = this;
8097
+ var _this52 = this;
8034
8098
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8035
8099
  var main = renderInfo.main,
8036
8100
  content = renderInfo.content;
@@ -8084,7 +8148,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8084
8148
  }
8085
8149
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
8086
8150
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
8087
- _triggerProxy.default.trigger(_this51, {
8151
+ _triggerProxy.default.trigger(_this52, {
8088
8152
  file: 'meeting/index',
8089
8153
  function: 'changeVideoLayout'
8090
8154
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8200,7 +8264,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8200
8264
  }, {
8201
8265
  key: "endMeetingForAll",
8202
8266
  value: function endMeetingForAll() {
8203
- var _this52 = this;
8267
+ var _this53 = this;
8204
8268
  // @ts-ignore
8205
8269
  this.webex.internal.newMetrics.submitClientEvent({
8206
8270
  name: 'client.call.leave',
@@ -8218,25 +8282,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8218
8282
  locus_id: this.locusId
8219
8283
  });
8220
8284
  return _util2.default.endMeetingForAll(this).then(function (end) {
8221
- _this52.meetingFiniteStateMachine.end();
8222
- _this52.clearMeetingData();
8285
+ _this53.meetingFiniteStateMachine.end();
8286
+ _this53.clearMeetingData();
8223
8287
  // upload logs on leave irrespective of meeting delete
8224
- _triggerProxy.default.trigger(_this52, {
8288
+ _triggerProxy.default.trigger(_this53, {
8225
8289
  file: 'meeting/index',
8226
8290
  function: 'endMeetingForAll'
8227
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8291
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8228
8292
  return end;
8229
8293
  }).catch(function (error) {
8230
- _this52.meetingFiniteStateMachine.fail(error);
8294
+ _this53.meetingFiniteStateMachine.fail(error);
8231
8295
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8232
8296
  // upload logs on leave irrespective of meeting delete
8233
- _triggerProxy.default.trigger(_this52, {
8297
+ _triggerProxy.default.trigger(_this53, {
8234
8298
  file: 'meeting/index',
8235
8299
  function: 'endMeetingForAll'
8236
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8300
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8237
8301
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8238
- correlation_id: _this52.correlationId,
8239
- locus_id: _this52.locusUrl.split('/').pop(),
8302
+ correlation_id: _this53.correlationId,
8303
+ locus_id: _this53.locusUrl.split('/').pop(),
8240
8304
  reason: error.message,
8241
8305
  stack: error.stack,
8242
8306
  code: error.code
@@ -8378,7 +8442,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8378
8442
  _this$mediaProperties41,
8379
8443
  _this$mediaProperties42,
8380
8444
  _this$mediaProperties43,
8381
- _this53 = this;
8445
+ _this54 = this;
8382
8446
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8383
8447
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8384
8448
  if (!this.canUpdateMedia()) {
@@ -8403,8 +8467,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8403
8467
  }).catch(function (error) {
8404
8468
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8405
8469
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8406
- correlation_id: _this53.correlationId,
8407
- locus_id: _this53.locusUrl.split('/').pop(),
8470
+ correlation_id: _this54.correlationId,
8471
+ locus_id: _this54.locusUrl.split('/').pop(),
8408
8472
  reason: error.message,
8409
8473
  stack: error.stack
8410
8474
  });