@webex/plugin-meetings 3.3.1 → 3.4.0-next.10
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/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +7 -2
- package/dist/breakouts/index.js.map +1 -1
- package/dist/constants.js +11 -4
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/selfUtils.js +0 -5
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/MediaConnectionAwaiter.js +70 -15
- package/dist/media/MediaConnectionAwaiter.js.map +1 -1
- package/dist/media/index.js +18 -9
- package/dist/media/index.js.map +1 -1
- package/dist/meeting/connectionStateHandler.js +67 -0
- package/dist/meeting/connectionStateHandler.js.map +1 -0
- package/dist/meeting/index.js +576 -374
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +7 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +6 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/util.js +1 -0
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +4 -4
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +2 -2
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +17 -17
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +16 -16
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +1 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +41 -35
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +8 -0
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/util.js +3 -2
- package/dist/meetings/util.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +57 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +1 -1
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/reachability/clusterReachability.js +108 -53
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +546 -115
- package/dist/reachability/index.js.map +1 -1
- package/dist/reconnection-manager/index.js +1 -1
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/rtcMetrics/index.js +26 -6
- package/dist/rtcMetrics/index.js.map +1 -1
- package/dist/types/constants.d.ts +11 -3
- package/dist/types/media/MediaConnectionAwaiter.d.ts +24 -4
- package/dist/types/meeting/connectionStateHandler.d.ts +30 -0
- package/dist/types/meeting/index.d.ts +28 -8
- package/dist/types/meeting/locusMediaRequest.d.ts +2 -0
- package/dist/types/meeting-info/index.d.ts +3 -2
- package/dist/types/meeting-info/meeting-info-v2.d.ts +3 -2
- package/dist/types/meeting-info/util.d.ts +5 -4
- package/dist/types/meeting-info/utilv2.d.ts +3 -2
- package/dist/types/meetings/collection.d.ts +3 -2
- package/dist/types/meetings/index.d.ts +6 -4
- package/dist/types/meetings/meetings.types.d.ts +9 -0
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/metrics/index.d.ts +15 -0
- package/dist/types/reachability/clusterReachability.d.ts +31 -3
- package/dist/types/reachability/index.d.ts +107 -4
- package/dist/types/rtcMetrics/index.d.ts +11 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +23 -23
- package/src/breakouts/index.ts +7 -1
- package/src/constants.ts +13 -17
- package/src/locus-info/selfUtils.ts +0 -5
- package/src/media/MediaConnectionAwaiter.ts +89 -14
- package/src/media/index.ts +18 -9
- package/src/meeting/connectionStateHandler.ts +65 -0
- package/src/meeting/index.ts +541 -298
- package/src/meeting/locusMediaRequest.ts +5 -0
- package/src/meeting/muteState.ts +6 -1
- package/src/meeting/util.ts +1 -0
- package/src/meeting-info/index.ts +9 -6
- package/src/meeting-info/meeting-info-v2.ts +4 -4
- package/src/meeting-info/util.ts +23 -28
- package/src/meeting-info/utilv2.ts +18 -24
- package/src/meetings/collection.ts +3 -3
- package/src/meetings/index.ts +43 -43
- package/src/meetings/meetings.types.ts +11 -0
- package/src/meetings/util.ts +5 -4
- package/src/metrics/constants.ts +1 -0
- package/src/metrics/index.ts +44 -0
- package/src/personal-meeting-room/index.ts +2 -2
- package/src/reachability/clusterReachability.ts +86 -25
- package/src/reachability/index.ts +364 -30
- package/src/reconnection-manager/index.ts +1 -1
- package/src/rtcMetrics/index.ts +25 -5
- package/test/unit/spec/breakouts/index.ts +51 -32
- package/test/unit/spec/locus-info/selfUtils.js +25 -23
- package/test/unit/spec/media/MediaConnectionAwaiter.ts +131 -32
- package/test/unit/spec/media/index.ts +75 -34
- package/test/unit/spec/meeting/connectionStateHandler.ts +102 -0
- package/test/unit/spec/meeting/index.js +807 -185
- package/test/unit/spec/meeting/locusMediaRequest.ts +7 -0
- package/test/unit/spec/meeting/muteState.js +24 -0
- package/test/unit/spec/meeting-info/index.js +4 -4
- package/test/unit/spec/meeting-info/meetinginfov2.js +24 -28
- package/test/unit/spec/meeting-info/request.js +2 -2
- package/test/unit/spec/meeting-info/utilv2.js +41 -49
- package/test/unit/spec/meetings/index.js +44 -3
- package/test/unit/spec/metrics/index.js +126 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +2 -2
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -2
- package/test/unit/spec/reachability/clusterReachability.ts +116 -22
- package/test/unit/spec/reachability/index.ts +1398 -131
- package/test/unit/spec/rtcMetrics/index.ts +32 -0
- package/dist/mediaQualityMetrics/config.js +0 -321
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/networkQualityMonitor/index.js +0 -227
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/statsAnalyzer/global.js +0 -44
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.js +0 -1072
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.js +0 -368
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -247
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/src/mediaQualityMetrics/config.ts +0 -255
- package/src/networkQualityMonitor/index.ts +0 -211
- package/src/statsAnalyzer/global.ts +0 -37
- package/src/statsAnalyzer/index.ts +0 -1318
- package/src/statsAnalyzer/mqaUtil.ts +0 -463
- package/test/unit/spec/networkQualityMonitor/index.js +0 -99
- package/test/unit/spec/stats-analyzer/index.js +0 -1819
package/dist/meeting/index.js
CHANGED
|
@@ -19,6 +19,7 @@ exports.default = exports.ScreenShareFloorStatus = exports.MEDIA_UPDATE_TYPE = v
|
|
|
19
19
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
20
20
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
21
21
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
22
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
22
23
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
23
24
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
24
25
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
|
|
@@ -41,8 +42,6 @@ var _mediaHelpers = require("@webex/media-helpers");
|
|
|
41
42
|
var _internalPluginVoicea = require("@webex/internal-plugin-voicea");
|
|
42
43
|
var _voiceaMeeting = require("./voicea-meeting");
|
|
43
44
|
var _webexErrors = require("../common/errors/webex-errors");
|
|
44
|
-
var _statsAnalyzer = require("../statsAnalyzer");
|
|
45
|
-
var _networkQualityMonitor = _interopRequireDefault(require("../networkQualityMonitor"));
|
|
46
45
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
47
46
|
var _util = _interopRequireDefault(require("../common/events/util"));
|
|
48
47
|
var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
|
|
@@ -83,6 +82,8 @@ var _recordingController = _interopRequireDefault(require("../recording-controll
|
|
|
83
82
|
var _controlsOptionsManager = _interopRequireDefault(require("../controls-options-manager"));
|
|
84
83
|
var _permission = _interopRequireDefault(require("../common/errors/permission"));
|
|
85
84
|
var _locusMediaRequest = require("./locusMediaRequest");
|
|
85
|
+
var _connectionStateHandler = require("./connectionStateHandler");
|
|
86
|
+
var _rtcMetrics = _interopRequireDefault(require("../rtcMetrics"));
|
|
86
87
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
87
88
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
88
89
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
@@ -91,6 +92,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
91
92
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
92
93
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } // @ts-ignore - Fix this
|
|
93
94
|
// @ts-ignore - Types not available for @webex/common
|
|
95
|
+
// default callback so we don't call an undefined function, but in practice it should never be used
|
|
96
|
+
var DEFAULT_ICE_PHASE_CALLBACK = function DEFAULT_ICE_PHASE_CALLBACK() {
|
|
97
|
+
return 'JOIN_MEETING_FINAL';
|
|
98
|
+
};
|
|
94
99
|
var logRequest = function logRequest(request, _ref) {
|
|
95
100
|
var _ref$logText = _ref.logText,
|
|
96
101
|
logText = _ref$logText === void 0 ? '' : _ref$logText;
|
|
@@ -497,6 +502,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
497
502
|
file: 'meeting/index',
|
|
498
503
|
function: 'setUpVoiceaListeners'
|
|
499
504
|
}), "event#").concat(_constants.EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION));
|
|
505
|
+
if (_this.getCurUserType() !== 'host') {
|
|
506
|
+
delete payload.spokenLanguages;
|
|
507
|
+
}
|
|
500
508
|
|
|
501
509
|
// @ts-ignore
|
|
502
510
|
_this.trigger(_constants.EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION, payload);
|
|
@@ -523,13 +531,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
523
531
|
interimCaptions: _this.transcription.interimCaptions
|
|
524
532
|
});
|
|
525
533
|
}));
|
|
526
|
-
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "
|
|
534
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "addMediaData", void 0);
|
|
527
535
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "sendSlotManager", new _sendSlotManager.default(_loggerProxy.default));
|
|
528
536
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "deferSDPAnswer", void 0);
|
|
529
537
|
// used for waiting for a response
|
|
530
538
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "sdpResponseTimer", void 0);
|
|
531
539
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "hasMediaConnectionConnectedAtLeastOnce", void 0);
|
|
532
540
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "joinWithMediaRetryInfo", void 0);
|
|
541
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "connectionStateHandler", void 0);
|
|
542
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidateErrors", void 0);
|
|
543
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidatesCount", void 0);
|
|
544
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "rtcMetrics", void 0);
|
|
533
545
|
/**
|
|
534
546
|
* Callback called when a relay event is received from meeting LLM Connection
|
|
535
547
|
* @param {RelayEvent} e Event object coming from LLM Connection
|
|
@@ -661,7 +673,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
661
673
|
* @returns {undefined}
|
|
662
674
|
*/
|
|
663
675
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "setupSdpListeners", function () {
|
|
664
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
676
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.REMOTE_SDP_ANSWER_PROCESSED, function () {
|
|
665
677
|
// @ts-ignore
|
|
666
678
|
var cdl = _this.webex.internal.newMetrics.callDiagnosticLatencies;
|
|
667
679
|
|
|
@@ -683,7 +695,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
683
695
|
_this.sdpResponseTimer = undefined;
|
|
684
696
|
}
|
|
685
697
|
});
|
|
686
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
698
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.LOCAL_SDP_OFFER_GENERATED, function () {
|
|
687
699
|
// @ts-ignore
|
|
688
700
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
689
701
|
name: 'client.media-engine.local-sdp-generated',
|
|
@@ -695,7 +707,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
695
707
|
// Instantiate Defer so that the SDP offer/answer exchange timeout can start, see waitForRemoteSDPAnswer()
|
|
696
708
|
_this.deferSDPAnswer = new _common.Defer();
|
|
697
709
|
});
|
|
698
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
710
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.LOCAL_SDP_ANSWER_GENERATED, function () {
|
|
699
711
|
// we are sending "remote-sdp-received" only after we've generated the answer - this indicates that we've fully processed that incoming offer
|
|
700
712
|
// @ts-ignore
|
|
701
713
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
@@ -708,16 +720,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
708
720
|
});
|
|
709
721
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "setupMediaConnectionListeners", function () {
|
|
710
722
|
_this.setupSdpListeners();
|
|
711
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
723
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_STARTED, function () {
|
|
712
724
|
_this.isRoapInProgress = true;
|
|
713
725
|
});
|
|
714
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
726
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_DONE, function () {
|
|
715
727
|
_this.mediaNegotiatedEvent();
|
|
716
728
|
_this.isRoapInProgress = false;
|
|
717
729
|
_this.processNextQueuedMediaUpdate();
|
|
718
730
|
});
|
|
719
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
720
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
731
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_FAILURE, _this.handleRoapFailure);
|
|
732
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, function (event) {
|
|
721
733
|
var LOG_HEADER = "Meeting:index#setupMediaConnectionListeners.ROAP_MESSAGE_TO_SEND --> correlationId=".concat(_this.correlationId);
|
|
722
734
|
switch (event.roapMessage.messageType) {
|
|
723
735
|
case 'OK':
|
|
@@ -743,7 +755,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
743
755
|
}
|
|
744
756
|
}), {
|
|
745
757
|
logText: "".concat(LOG_HEADER, " Roap Offer")
|
|
746
|
-
}).catch(function () {
|
|
758
|
+
}).catch(function (error) {
|
|
759
|
+
// @ts-ignore
|
|
760
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
|
761
|
+
name: 'client.media-engine.remote-sdp-received',
|
|
762
|
+
payload: {
|
|
763
|
+
canProceed: false,
|
|
764
|
+
errors: [
|
|
765
|
+
// @ts-ignore
|
|
766
|
+
_this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
|
|
767
|
+
clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
|
|
768
|
+
})]
|
|
769
|
+
},
|
|
770
|
+
options: {
|
|
771
|
+
meetingId: _this.id,
|
|
772
|
+
rawError: error
|
|
773
|
+
}
|
|
774
|
+
});
|
|
747
775
|
_this.deferSDPAnswer.reject(new Error('failed to send ROAP SDP offer'));
|
|
748
776
|
clearTimeout(_this.sdpResponseTimer);
|
|
749
777
|
_this.sdpResponseTimer = undefined;
|
|
@@ -795,7 +823,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
795
823
|
});
|
|
796
824
|
|
|
797
825
|
// eslint-disable-next-line no-param-reassign
|
|
798
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
826
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.REMOTE_TRACK_ADDED, function (event) {
|
|
799
827
|
_loggerProxy.default.logger.log("Meeting:index#setupMediaConnectionListeners --> REMOTE_TRACK_ADDED event received for webrtcMediaConnection: ".concat((0, _stringify.default)(event)));
|
|
800
828
|
if (event.track) {
|
|
801
829
|
var mediaTrack = event.track;
|
|
@@ -824,7 +852,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
824
852
|
if (eventType && mediaTrack) {
|
|
825
853
|
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
826
854
|
file: 'meeting/index',
|
|
827
|
-
function: 'setupRemoteTrackListener:
|
|
855
|
+
function: 'setupRemoteTrackListener:MediaConnectionEventNames.REMOTE_TRACK_ADDED'
|
|
828
856
|
}, _constants.EVENT_TRIGGERS.MEDIA_READY, {
|
|
829
857
|
type: eventType,
|
|
830
858
|
stream: remoteStream.outputStream
|
|
@@ -832,7 +860,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
832
860
|
}
|
|
833
861
|
}
|
|
834
862
|
});
|
|
835
|
-
_this.
|
|
863
|
+
_this.connectionStateHandler = new _connectionStateHandler.ConnectionStateHandler(_this.mediaProperties.webrtcMediaConnection);
|
|
864
|
+
_this.connectionStateHandler.on(_connectionStateHandler.ConnectionStateEvent.stateChanged, function (event) {
|
|
836
865
|
var connectionFailed = function connectionFailed() {
|
|
837
866
|
_metrics.default.sendBehavioralMetric(_constants2.default.CONNECTION_FAILURE, {
|
|
838
867
|
correlation_id: _this.correlationId,
|
|
@@ -909,7 +938,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
909
938
|
break;
|
|
910
939
|
}
|
|
911
940
|
});
|
|
912
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
941
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ACTIVE_SPEAKERS_CHANGED, function (csis) {
|
|
913
942
|
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
914
943
|
file: 'meeting/index',
|
|
915
944
|
function: 'setupMediaConnectionListeners'
|
|
@@ -924,7 +953,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
924
953
|
})
|
|
925
954
|
});
|
|
926
955
|
});
|
|
927
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
956
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.VIDEO_SOURCES_COUNT_CHANGED, function (numTotalSources, numLiveSources, mediaContent) {
|
|
928
957
|
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
929
958
|
file: 'meeting/index',
|
|
930
959
|
function: 'setupMediaConnectionListeners'
|
|
@@ -937,7 +966,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
937
966
|
_this.mediaRequestManagers.video.setNumCurrentSources(numTotalSources, numLiveSources);
|
|
938
967
|
}
|
|
939
968
|
});
|
|
940
|
-
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.
|
|
969
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.AUDIO_SOURCES_COUNT_CHANGED, function (numTotalSources, numLiveSources, mediaContent) {
|
|
941
970
|
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
942
971
|
file: 'meeting/index',
|
|
943
972
|
function: 'setupMediaConnectionListeners'
|
|
@@ -947,6 +976,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
947
976
|
mediaContent: mediaContent
|
|
948
977
|
});
|
|
949
978
|
});
|
|
979
|
+
_this.iceCandidateErrors.clear();
|
|
980
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE_ERROR, function (event) {
|
|
981
|
+
var errorCode = event.error.errorCode;
|
|
982
|
+
var errorText = event.error.errorText;
|
|
983
|
+
if (errorCode === 600 && errorText === 'Address not associated with the desired network interface.') {
|
|
984
|
+
return;
|
|
985
|
+
}
|
|
986
|
+
if (errorText.endsWith('.')) {
|
|
987
|
+
errorText = errorText.slice(0, -1);
|
|
988
|
+
}
|
|
989
|
+
errorText = errorText.toLowerCase();
|
|
990
|
+
errorText = errorText.replace(/ /g, '_');
|
|
991
|
+
var error = "".concat(errorCode, "_").concat(errorText);
|
|
992
|
+
var count = _this.iceCandidateErrors.get(error) || 0;
|
|
993
|
+
_this.iceCandidateErrors.set(error, count + 1);
|
|
994
|
+
});
|
|
995
|
+
_this.iceCandidatesCount = 0;
|
|
996
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE, function (event) {
|
|
997
|
+
if (event.candidate) {
|
|
998
|
+
_this.iceCandidatesCount += 1;
|
|
999
|
+
}
|
|
1000
|
+
});
|
|
950
1001
|
});
|
|
951
1002
|
/**
|
|
952
1003
|
* Registers for all required StatsAnalyzer events
|
|
@@ -955,7 +1006,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
955
1006
|
* @memberof Meetings
|
|
956
1007
|
*/
|
|
957
1008
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "setupStatsAnalyzerEventHandlers", function () {
|
|
958
|
-
_this.statsAnalyzer.on(
|
|
1009
|
+
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.MEDIA_QUALITY, function (options) {
|
|
959
1010
|
var _this$webex$meetings$;
|
|
960
1011
|
// TODO: might have to send the same event to the developer
|
|
961
1012
|
// Add ip address info if geo hint is present
|
|
@@ -968,14 +1019,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
968
1019
|
name: 'client.mediaquality.event',
|
|
969
1020
|
options: {
|
|
970
1021
|
meetingId: _this.id,
|
|
971
|
-
networkType: options.networkType
|
|
1022
|
+
networkType: options.data.networkType
|
|
972
1023
|
},
|
|
973
1024
|
payload: {
|
|
974
1025
|
intervals: [options.data]
|
|
975
1026
|
}
|
|
976
1027
|
});
|
|
977
1028
|
});
|
|
978
|
-
_this.statsAnalyzer.on(
|
|
1029
|
+
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.LOCAL_MEDIA_STARTED, function (data) {
|
|
979
1030
|
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
980
1031
|
file: 'meeting/index',
|
|
981
1032
|
function: 'addMedia'
|
|
@@ -984,28 +1035,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
984
1035
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
985
1036
|
name: 'client.media.tx.start',
|
|
986
1037
|
payload: {
|
|
987
|
-
mediaType: data.
|
|
988
|
-
shareInstanceId: data.
|
|
1038
|
+
mediaType: data.mediaType,
|
|
1039
|
+
shareInstanceId: data.mediaType === 'share' ? _this.localShareInstanceId : undefined
|
|
989
1040
|
},
|
|
990
1041
|
options: {
|
|
991
1042
|
meetingId: _this.id
|
|
992
1043
|
}
|
|
993
1044
|
});
|
|
994
1045
|
});
|
|
995
|
-
_this.statsAnalyzer.on(
|
|
1046
|
+
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.LOCAL_MEDIA_STOPPED, function (data) {
|
|
996
1047
|
// @ts-ignore
|
|
997
1048
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
998
1049
|
name: 'client.media.tx.stop',
|
|
999
1050
|
payload: {
|
|
1000
|
-
mediaType: data.
|
|
1001
|
-
shareInstanceId: data.
|
|
1051
|
+
mediaType: data.mediaType,
|
|
1052
|
+
shareInstanceId: data.mediaType === 'share' ? _this.localShareInstanceId : undefined
|
|
1002
1053
|
},
|
|
1003
1054
|
options: {
|
|
1004
1055
|
meetingId: _this.id
|
|
1005
1056
|
}
|
|
1006
1057
|
});
|
|
1007
1058
|
});
|
|
1008
|
-
_this.statsAnalyzer.on(
|
|
1059
|
+
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.REMOTE_MEDIA_STARTED, function (data) {
|
|
1009
1060
|
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
1010
1061
|
file: 'meeting/index',
|
|
1011
1062
|
function: 'addMedia'
|
|
@@ -1014,14 +1065,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1014
1065
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
1015
1066
|
name: 'client.media.rx.start',
|
|
1016
1067
|
payload: {
|
|
1017
|
-
mediaType: data.
|
|
1018
|
-
shareInstanceId: data.
|
|
1068
|
+
mediaType: data.mediaType,
|
|
1069
|
+
shareInstanceId: data.mediaType === 'share' ? _this.remoteShareInstanceId : undefined
|
|
1019
1070
|
},
|
|
1020
1071
|
options: {
|
|
1021
1072
|
meetingId: _this.id
|
|
1022
1073
|
}
|
|
1023
1074
|
});
|
|
1024
|
-
if (data.
|
|
1075
|
+
if (data.mediaType === 'share') {
|
|
1025
1076
|
// @ts-ignore
|
|
1026
1077
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
1027
1078
|
name: 'client.media.render.start',
|
|
@@ -1035,19 +1086,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1035
1086
|
});
|
|
1036
1087
|
}
|
|
1037
1088
|
});
|
|
1038
|
-
_this.statsAnalyzer.on(
|
|
1089
|
+
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.REMOTE_MEDIA_STOPPED, function (data) {
|
|
1039
1090
|
// @ts-ignore
|
|
1040
1091
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
1041
1092
|
name: 'client.media.rx.stop',
|
|
1042
1093
|
payload: {
|
|
1043
|
-
mediaType: data.
|
|
1044
|
-
shareInstanceId: data.
|
|
1094
|
+
mediaType: data.mediaType,
|
|
1095
|
+
shareInstanceId: data.mediaType === 'share' ? _this.remoteShareInstanceId : undefined
|
|
1045
1096
|
},
|
|
1046
1097
|
options: {
|
|
1047
1098
|
meetingId: _this.id
|
|
1048
1099
|
}
|
|
1049
1100
|
});
|
|
1050
|
-
if (data.
|
|
1101
|
+
if (data.mediaType === 'share') {
|
|
1051
1102
|
// @ts-ignore
|
|
1052
1103
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
1053
1104
|
name: 'client.media.render.stop',
|
|
@@ -1192,10 +1243,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1192
1243
|
* @returns {undefined}
|
|
1193
1244
|
*/
|
|
1194
1245
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "handleShareVideoStreamMuteStateChange", function (muted) {
|
|
1246
|
+
var _this$statsAnalyzer;
|
|
1195
1247
|
_loggerProxy.default.logger.log("Meeting:index#handleShareVideoStreamMuteStateChange --> Share video stream mute state changed to muted ".concat(muted));
|
|
1196
1248
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE, {
|
|
1197
1249
|
correlationId: _this.correlationId,
|
|
1198
|
-
muted: muted
|
|
1250
|
+
muted: muted,
|
|
1251
|
+
encoderImplementation: (_this$statsAnalyzer = _this.statsAnalyzer) === null || _this$statsAnalyzer === void 0 ? void 0 : _this$statsAnalyzer.shareVideoEncoderImplementation
|
|
1199
1252
|
});
|
|
1200
1253
|
});
|
|
1201
1254
|
/**
|
|
@@ -2043,13 +2096,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2043
2096
|
_this.turnServerUsed = false;
|
|
2044
2097
|
|
|
2045
2098
|
/**
|
|
2046
|
-
*
|
|
2099
|
+
* Contains information used during the addMedia() operation:
|
|
2100
|
+
* retriedWithTurnServer - whether retry was done using TURN Discovery
|
|
2101
|
+
* icePhaseCallback - callback for determining the value for icePhase when sending failure event to CA
|
|
2102
|
+
*
|
|
2047
2103
|
* @instance
|
|
2048
|
-
* @type {
|
|
2104
|
+
* @type {Object}
|
|
2049
2105
|
* @private
|
|
2050
2106
|
* @memberof Meeting
|
|
2051
2107
|
*/
|
|
2052
|
-
_this.
|
|
2108
|
+
_this.addMediaData = {
|
|
2109
|
+
retriedWithTurnServer: false,
|
|
2110
|
+
icePhaseCallback: DEFAULT_ICE_PHASE_CALLBACK
|
|
2111
|
+
};
|
|
2053
2112
|
|
|
2054
2113
|
/**
|
|
2055
2114
|
* Whether or not the media connection has ever successfully connected.
|
|
@@ -2071,6 +2130,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2071
2130
|
isRetry: false,
|
|
2072
2131
|
prevJoinResponse: undefined
|
|
2073
2132
|
};
|
|
2133
|
+
|
|
2134
|
+
/**
|
|
2135
|
+
* Connection state handler
|
|
2136
|
+
* @instance
|
|
2137
|
+
* @type {ConnectionStateHandler}
|
|
2138
|
+
* @private
|
|
2139
|
+
* @memberof Meeting
|
|
2140
|
+
*/
|
|
2141
|
+
_this.connectionStateHandler = undefined;
|
|
2142
|
+
|
|
2143
|
+
/**
|
|
2144
|
+
* ICE Candidates errors map
|
|
2145
|
+
* @instance
|
|
2146
|
+
* @type {Map<[number, string], number>}
|
|
2147
|
+
* @private
|
|
2148
|
+
* @memberof Meeting
|
|
2149
|
+
*/
|
|
2150
|
+
_this.iceCandidateErrors = new _map.default();
|
|
2151
|
+
|
|
2152
|
+
/**
|
|
2153
|
+
* Gathered ICE Candidates count
|
|
2154
|
+
* @instance
|
|
2155
|
+
* @type {number}
|
|
2156
|
+
* @private
|
|
2157
|
+
* @memberof Meeting
|
|
2158
|
+
*/
|
|
2159
|
+
_this.iceCandidatesCount = 0;
|
|
2074
2160
|
return _this;
|
|
2075
2161
|
}
|
|
2076
2162
|
|
|
@@ -2342,13 +2428,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2342
2428
|
_loggerProxy.default.logger.info("Meeting:index#refreshPermissionToken --> cannot refresh the permission token, because we don't have it (reason=".concat(reason, ")"));
|
|
2343
2429
|
return _context6.abrupt("return");
|
|
2344
2430
|
case 3:
|
|
2345
|
-
isStartingSpaceInstantV2Meeting = this.destinationType === _constants.
|
|
2431
|
+
isStartingSpaceInstantV2Meeting = this.destinationType === _constants.DESTINATION_TYPE.CONVERSATION_URL &&
|
|
2346
2432
|
// @ts-ignore - config coming from registerPlugin
|
|
2347
2433
|
this.config.experimental.enableAdhocMeetings &&
|
|
2348
2434
|
// @ts-ignore
|
|
2349
2435
|
this.webex.meetings.preferredWebexSite;
|
|
2350
2436
|
destination = isStartingSpaceInstantV2Meeting ? this.meetingInfo.meetingJoinUrl : this.destination;
|
|
2351
|
-
destinationType = isStartingSpaceInstantV2Meeting ? _constants.
|
|
2437
|
+
destinationType = isStartingSpaceInstantV2Meeting ? _constants.DESTINATION_TYPE.MEETING_LINK : this.destinationType;
|
|
2352
2438
|
permissionTokenExpiryInfo = this.getPermissionTokenExpiryInfo();
|
|
2353
2439
|
timeLeft = permissionTokenExpiryInfo === null || permissionTokenExpiryInfo === void 0 ? void 0 : permissionTokenExpiryInfo.timeLeft;
|
|
2354
2440
|
expiryTime = permissionTokenExpiryInfo === null || permissionTokenExpiryInfo === void 0 ? void 0 : permissionTokenExpiryInfo.expiryTime;
|
|
@@ -3526,6 +3612,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3526
3612
|
});
|
|
3527
3613
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
|
|
3528
3614
|
var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
|
|
3615
|
+
var _this19$rtcMetrics;
|
|
3529
3616
|
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
3530
3617
|
while (1) switch (_context9.prev = _context9.next) {
|
|
3531
3618
|
case 0:
|
|
@@ -3546,8 +3633,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3546
3633
|
}
|
|
3547
3634
|
});
|
|
3548
3635
|
}
|
|
3636
|
+
(_this19$rtcMetrics = _this19.rtcMetrics) === null || _this19$rtcMetrics === void 0 ? void 0 : _this19$rtcMetrics.sendNextMetrics();
|
|
3549
3637
|
_this19.updateLLMConnection();
|
|
3550
|
-
case
|
|
3638
|
+
case 4:
|
|
3551
3639
|
case "end":
|
|
3552
3640
|
return _context9.stop();
|
|
3553
3641
|
}
|
|
@@ -3564,6 +3652,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3564
3652
|
correlation_id: _this19.correlationId,
|
|
3565
3653
|
locus_id: _this19.locusId
|
|
3566
3654
|
});
|
|
3655
|
+
_loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...');
|
|
3567
3656
|
_this19.reconnect();
|
|
3568
3657
|
});
|
|
3569
3658
|
|
|
@@ -4633,7 +4722,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4633
4722
|
}, {
|
|
4634
4723
|
key: "closePeerConnections",
|
|
4635
4724
|
value: function closePeerConnections() {
|
|
4636
|
-
this.locusMediaRequest = undefined;
|
|
4637
4725
|
if (this.mediaProperties.webrtcMediaConnection) {
|
|
4638
4726
|
if (this.remoteMediaManager) {
|
|
4639
4727
|
this.remoteMediaManager.stop();
|
|
@@ -4927,6 +5015,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4927
5015
|
key: "joinWithMedia",
|
|
4928
5016
|
value: (function () {
|
|
4929
5017
|
var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
|
|
5018
|
+
var _this28 = this;
|
|
4930
5019
|
var options,
|
|
4931
5020
|
mediaOptions,
|
|
4932
5021
|
_options$joinOptions,
|
|
@@ -4938,12 +5027,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4938
5027
|
joinResponse,
|
|
4939
5028
|
turnServerInfo,
|
|
4940
5029
|
turnDiscoverySkippedReason,
|
|
5030
|
+
forceTurnDiscovery,
|
|
4941
5031
|
turnDiscoveryRequest,
|
|
4942
5032
|
_yield$this$roap$hand,
|
|
4943
5033
|
mediaResponse,
|
|
4944
5034
|
_this$locusUrl,
|
|
4945
5035
|
_leaveError,
|
|
4946
5036
|
leaveError,
|
|
5037
|
+
shouldRetry,
|
|
4947
5038
|
_args15 = arguments;
|
|
4948
5039
|
return _regenerator.default.wrap(function _callee15$(_context15) {
|
|
4949
5040
|
while (1) switch (_context15.prev = _context15.next) {
|
|
@@ -4962,34 +5053,36 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4962
5053
|
joined = false;
|
|
4963
5054
|
joinResponse = prevJoinResponse;
|
|
4964
5055
|
_context15.prev = 9;
|
|
4965
|
-
|
|
5056
|
+
forceTurnDiscovery = false;
|
|
5057
|
+
if (joinResponse) {
|
|
5058
|
+
_context15.next = 36;
|
|
5059
|
+
break;
|
|
5060
|
+
}
|
|
5061
|
+
_context15.next = 14;
|
|
4966
5062
|
return this.webex.meetings.reachability.getReachabilityResults();
|
|
4967
|
-
case
|
|
5063
|
+
case 14:
|
|
4968
5064
|
joinOptions.reachability = _context15.sent;
|
|
4969
|
-
_context15.next =
|
|
5065
|
+
_context15.next = 17;
|
|
4970
5066
|
return this.roap.generateTurnDiscoveryRequestMessage(this, true);
|
|
4971
|
-
case
|
|
5067
|
+
case 17:
|
|
4972
5068
|
turnDiscoveryRequest = _context15.sent;
|
|
4973
5069
|
turnDiscoverySkippedReason = turnDiscoveryRequest.turnDiscoverySkippedReason;
|
|
4974
5070
|
joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;
|
|
4975
|
-
if (joinResponse) {
|
|
4976
|
-
_context15.next = 23;
|
|
4977
|
-
break;
|
|
4978
|
-
}
|
|
4979
5071
|
_loggerProxy.default.logger.info('Meeting:index#joinWithMedia ---> calling join with joinOptions, ', joinOptions);
|
|
4980
|
-
_context15.next =
|
|
5072
|
+
_context15.next = 23;
|
|
4981
5073
|
return this.join(joinOptions);
|
|
4982
|
-
case 22:
|
|
4983
|
-
joinResponse = _context15.sent;
|
|
4984
5074
|
case 23:
|
|
5075
|
+
joinResponse = _context15.sent;
|
|
4985
5076
|
joined = true;
|
|
5077
|
+
|
|
5078
|
+
// if we sent out TURN discovery Roap message with join, process the TURN discovery response
|
|
4986
5079
|
if (!joinOptions.roapMessage) {
|
|
4987
|
-
_context15.next =
|
|
5080
|
+
_context15.next = 34;
|
|
4988
5081
|
break;
|
|
4989
5082
|
}
|
|
4990
|
-
_context15.next =
|
|
5083
|
+
_context15.next = 28;
|
|
4991
5084
|
return this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse);
|
|
4992
|
-
case
|
|
5085
|
+
case 28:
|
|
4993
5086
|
_yield$this$roap$hand = _context15.sent;
|
|
4994
5087
|
turnServerInfo = _yield$this$roap$hand.turnServerInfo;
|
|
4995
5088
|
turnDiscoverySkippedReason = _yield$this$roap$hand.turnDiscoverySkippedReason;
|
|
@@ -4998,10 +5091,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4998
5091
|
if (turnServerInfo === undefined) {
|
|
4999
5092
|
this.roap.abortTurnDiscovery();
|
|
5000
5093
|
}
|
|
5001
|
-
case
|
|
5002
|
-
_context15.next =
|
|
5003
|
-
|
|
5004
|
-
case
|
|
5094
|
+
case 34:
|
|
5095
|
+
_context15.next = 38;
|
|
5096
|
+
break;
|
|
5097
|
+
case 36:
|
|
5098
|
+
// This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,
|
|
5099
|
+
// but we need to ensure that it also does a new TURN discovery
|
|
5100
|
+
forceTurnDiscovery = true;
|
|
5101
|
+
joined = true;
|
|
5102
|
+
case 38:
|
|
5103
|
+
_context15.next = 40;
|
|
5104
|
+
return this.addMediaInternal(function () {
|
|
5105
|
+
return _this28.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
|
|
5106
|
+
}, turnServerInfo, forceTurnDiscovery, mediaOptions);
|
|
5107
|
+
case 40:
|
|
5005
5108
|
mediaResponse = _context15.sent;
|
|
5006
5109
|
this.joinWithMediaRetryInfo = {
|
|
5007
5110
|
isRetry: false,
|
|
@@ -5011,30 +5114,30 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5011
5114
|
join: joinResponse,
|
|
5012
5115
|
media: mediaResponse
|
|
5013
5116
|
});
|
|
5014
|
-
case
|
|
5015
|
-
_context15.prev =
|
|
5117
|
+
case 45:
|
|
5118
|
+
_context15.prev = 45;
|
|
5016
5119
|
_context15.t0 = _context15["catch"](9);
|
|
5017
5120
|
_loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context15.t0);
|
|
5018
5121
|
this.roap.abortTurnDiscovery();
|
|
5019
5122
|
if (!(joined && isRetry)) {
|
|
5020
|
-
_context15.next =
|
|
5123
|
+
_context15.next = 59;
|
|
5021
5124
|
break;
|
|
5022
5125
|
}
|
|
5023
|
-
_context15.prev =
|
|
5024
|
-
_context15.next =
|
|
5126
|
+
_context15.prev = 50;
|
|
5127
|
+
_context15.next = 53;
|
|
5025
5128
|
return this.leave({
|
|
5026
5129
|
resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
|
|
5027
5130
|
reason: 'joinWithMedia failure'
|
|
5028
5131
|
});
|
|
5029
|
-
case
|
|
5030
|
-
_context15.next =
|
|
5132
|
+
case 53:
|
|
5133
|
+
_context15.next = 59;
|
|
5031
5134
|
break;
|
|
5032
|
-
case
|
|
5033
|
-
_context15.prev =
|
|
5034
|
-
_context15.t1 = _context15["catch"](
|
|
5135
|
+
case 55:
|
|
5136
|
+
_context15.prev = 55;
|
|
5137
|
+
_context15.t1 = _context15["catch"](50);
|
|
5035
5138
|
_loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context15.t1);
|
|
5036
5139
|
leaveError = _context15.t1;
|
|
5037
|
-
case
|
|
5140
|
+
case 59:
|
|
5038
5141
|
_metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
|
|
5039
5142
|
correlation_id: this.correlationId,
|
|
5040
5143
|
locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
|
|
@@ -5046,25 +5149,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5046
5149
|
}, {
|
|
5047
5150
|
type: _context15.t0.name
|
|
5048
5151
|
});
|
|
5049
|
-
|
|
5050
|
-
|
|
5152
|
+
|
|
5153
|
+
// if this was the first attempt, let's do a retry
|
|
5154
|
+
shouldRetry = !isRetry;
|
|
5155
|
+
if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_context15.t0)) {
|
|
5156
|
+
// errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,
|
|
5157
|
+
// so there is no point doing a retry
|
|
5158
|
+
shouldRetry = false;
|
|
5159
|
+
}
|
|
5160
|
+
if (!shouldRetry) {
|
|
5161
|
+
_context15.next = 67;
|
|
5051
5162
|
break;
|
|
5052
5163
|
}
|
|
5053
5164
|
_loggerProxy.default.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');
|
|
5054
5165
|
this.joinWithMediaRetryInfo.isRetry = true;
|
|
5055
5166
|
this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;
|
|
5056
5167
|
return _context15.abrupt("return", this.joinWithMedia(options));
|
|
5057
|
-
case
|
|
5168
|
+
case 67:
|
|
5058
5169
|
this.joinWithMediaRetryInfo = {
|
|
5059
5170
|
isRetry: false,
|
|
5060
5171
|
prevJoinResponse: undefined
|
|
5061
5172
|
};
|
|
5062
5173
|
throw _context15.t0;
|
|
5063
|
-
case
|
|
5174
|
+
case 69:
|
|
5064
5175
|
case "end":
|
|
5065
5176
|
return _context15.stop();
|
|
5066
5177
|
}
|
|
5067
|
-
}, _callee15, this, [[9,
|
|
5178
|
+
}, _callee15, this, [[9, 45], [50, 55]]);
|
|
5068
5179
|
}));
|
|
5069
5180
|
function joinWithMedia() {
|
|
5070
5181
|
return _joinWithMedia.apply(this, arguments);
|
|
@@ -5083,7 +5194,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5083
5194
|
}, {
|
|
5084
5195
|
key: "reconnect",
|
|
5085
5196
|
value: function reconnect(options) {
|
|
5086
|
-
var
|
|
5197
|
+
var _this29 = this;
|
|
5087
5198
|
_loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
|
|
5088
5199
|
if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
|
|
5089
5200
|
return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
|
|
@@ -5098,10 +5209,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5098
5209
|
while (1) switch (_context16.prev = _context16.next) {
|
|
5099
5210
|
case 0:
|
|
5100
5211
|
_context16.next = 2;
|
|
5101
|
-
return
|
|
5212
|
+
return _this29.waitForRemoteSDPAnswer();
|
|
5102
5213
|
case 2:
|
|
5103
5214
|
_context16.next = 4;
|
|
5104
|
-
return
|
|
5215
|
+
return _this29.waitForMediaConnectionConnected();
|
|
5105
5216
|
case 4:
|
|
5106
5217
|
case "end":
|
|
5107
5218
|
return _context16.stop();
|
|
@@ -5115,7 +5226,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5115
5226
|
return _promise.default.resolve();
|
|
5116
5227
|
}
|
|
5117
5228
|
_loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
|
|
5118
|
-
|
|
5229
|
+
_this29.uploadLogs({
|
|
5119
5230
|
file: 'meeting/index',
|
|
5120
5231
|
function: 'reconnect'
|
|
5121
5232
|
});
|
|
@@ -5162,19 +5273,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5162
5273
|
}, {
|
|
5163
5274
|
key: "setCaptionLanguage",
|
|
5164
5275
|
value: function setCaptionLanguage(language) {
|
|
5165
|
-
var
|
|
5276
|
+
var _this30 = this;
|
|
5166
5277
|
return new _promise.default(function (resolve, reject) {
|
|
5167
|
-
if (!
|
|
5278
|
+
if (!_this30.isTranscriptionSupported()) {
|
|
5168
5279
|
_loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
|
|
5169
5280
|
reject(new Error('Webex Assistant is not enabled/supported'));
|
|
5170
5281
|
}
|
|
5171
5282
|
try {
|
|
5172
5283
|
var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
|
|
5173
5284
|
// @ts-ignore
|
|
5174
|
-
|
|
5285
|
+
_this30.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
|
|
5175
5286
|
var statusCode = payload.statusCode;
|
|
5176
5287
|
if (statusCode === 200) {
|
|
5177
|
-
|
|
5288
|
+
_this30.transcription.languageOptions = _objectSpread(_objectSpread({}, _this30.transcription.languageOptions), {}, {
|
|
5178
5289
|
currentCaptionLanguage: language
|
|
5179
5290
|
});
|
|
5180
5291
|
resolve(language);
|
|
@@ -5183,9 +5294,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5183
5294
|
}
|
|
5184
5295
|
};
|
|
5185
5296
|
// @ts-ignore
|
|
5186
|
-
|
|
5297
|
+
_this30.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
|
|
5187
5298
|
// @ts-ignore
|
|
5188
|
-
|
|
5299
|
+
_this30.webex.internal.voicea.requestLanguage(language);
|
|
5189
5300
|
} catch (error) {
|
|
5190
5301
|
_loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
|
|
5191
5302
|
reject(error);
|
|
@@ -5201,19 +5312,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5201
5312
|
}, {
|
|
5202
5313
|
key: "setSpokenLanguage",
|
|
5203
5314
|
value: function setSpokenLanguage(language) {
|
|
5204
|
-
var
|
|
5315
|
+
var _this31 = this;
|
|
5205
5316
|
return new _promise.default(function (resolve, reject) {
|
|
5206
|
-
if (!
|
|
5317
|
+
if (!_this31.isTranscriptionSupported()) {
|
|
5207
5318
|
_loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
|
|
5208
5319
|
reject(new Error('Webex Assistant is not enabled/supported'));
|
|
5209
5320
|
}
|
|
5321
|
+
if (_this31.getCurUserType() !== 'host') {
|
|
5322
|
+
_loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
|
|
5323
|
+
reject(new Error('Only host can set spoken language'));
|
|
5324
|
+
}
|
|
5210
5325
|
try {
|
|
5211
5326
|
var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
|
|
5212
5327
|
// @ts-ignore
|
|
5213
|
-
|
|
5328
|
+
_this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
|
|
5214
5329
|
var languageCode = payload.languageCode;
|
|
5215
5330
|
if (languageCode) {
|
|
5216
|
-
|
|
5331
|
+
_this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
|
|
5217
5332
|
currentSpokenLanguage: languageCode
|
|
5218
5333
|
});
|
|
5219
5334
|
resolve(languageCode);
|
|
@@ -5223,10 +5338,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5223
5338
|
};
|
|
5224
5339
|
|
|
5225
5340
|
// @ts-ignore
|
|
5226
|
-
|
|
5341
|
+
_this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
|
|
5227
5342
|
|
|
5228
5343
|
// @ts-ignore
|
|
5229
|
-
|
|
5344
|
+
_this31.webex.internal.voicea.setSpokenLanguage(language);
|
|
5230
5345
|
} catch (error) {
|
|
5231
5346
|
_loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
|
|
5232
5347
|
reject(error);
|
|
@@ -5248,7 +5363,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5248
5363
|
while (1) switch (_context17.prev = _context17.next) {
|
|
5249
5364
|
case 0:
|
|
5250
5365
|
if (!this.isJoined()) {
|
|
5251
|
-
_context17.next =
|
|
5366
|
+
_context17.next = 14;
|
|
5252
5367
|
break;
|
|
5253
5368
|
}
|
|
5254
5369
|
_loggerProxy.default.logger.info('Meeting:index#startTranscription --> Attempting to enable transcription!');
|
|
@@ -5256,17 +5371,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5256
5371
|
if (!this.areVoiceaEventsSetup) {
|
|
5257
5372
|
this.setUpVoiceaListeners();
|
|
5258
5373
|
}
|
|
5259
|
-
|
|
5260
|
-
|
|
5261
|
-
|
|
5262
|
-
}
|
|
5263
|
-
_context17.next = 7;
|
|
5374
|
+
|
|
5375
|
+
// @ts-ignore
|
|
5376
|
+
_context17.next = 6;
|
|
5264
5377
|
return this.webex.internal.voicea.turnOnCaptions(options === null || options === void 0 ? void 0 : options.spokenLanguage);
|
|
5265
|
-
case
|
|
5266
|
-
_context17.next =
|
|
5378
|
+
case 6:
|
|
5379
|
+
_context17.next = 12;
|
|
5267
5380
|
break;
|
|
5268
|
-
case
|
|
5269
|
-
_context17.prev =
|
|
5381
|
+
case 8:
|
|
5382
|
+
_context17.prev = 8;
|
|
5270
5383
|
_context17.t0 = _context17["catch"](2);
|
|
5271
5384
|
_loggerProxy.default.logger.error("Meeting:index#startTranscription --> ".concat(_context17.t0));
|
|
5272
5385
|
_metrics.default.sendBehavioralMetric(_constants2.default.RECEIVE_TRANSCRIPTION_FAILURE, {
|
|
@@ -5274,17 +5387,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5274
5387
|
reason: _context17.t0.message,
|
|
5275
5388
|
stack: _context17.t0.stack
|
|
5276
5389
|
});
|
|
5277
|
-
case
|
|
5278
|
-
_context17.next =
|
|
5390
|
+
case 12:
|
|
5391
|
+
_context17.next = 16;
|
|
5279
5392
|
break;
|
|
5280
|
-
case
|
|
5393
|
+
case 14:
|
|
5281
5394
|
_loggerProxy.default.logger.error("Meeting:index#startTranscription --> meeting joined : ".concat(this.isJoined()));
|
|
5282
5395
|
throw new Error('Meeting is not joined');
|
|
5283
|
-
case
|
|
5396
|
+
case 16:
|
|
5284
5397
|
case "end":
|
|
5285
5398
|
return _context17.stop();
|
|
5286
5399
|
}
|
|
5287
|
-
}, _callee17, this, [[2,
|
|
5400
|
+
}, _callee17, this, [[2, 8]]);
|
|
5288
5401
|
}));
|
|
5289
5402
|
function startTranscription(_x15) {
|
|
5290
5403
|
return _startTranscription.apply(this, arguments);
|
|
@@ -5348,7 +5461,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5348
5461
|
*/
|
|
5349
5462
|
function () {
|
|
5350
5463
|
var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
|
|
5351
|
-
var
|
|
5464
|
+
var _this32 = this;
|
|
5352
5465
|
var options,
|
|
5353
5466
|
errorMessage,
|
|
5354
5467
|
error,
|
|
@@ -5494,57 +5607,58 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5494
5607
|
return _context18.abrupt("return", _promise.default.reject(_context18.t0));
|
|
5495
5608
|
case 51:
|
|
5496
5609
|
return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
|
|
5497
|
-
|
|
5610
|
+
_this32.meetingFiniteStateMachine.join();
|
|
5611
|
+
_this32.setupLocusMediaRequest();
|
|
5498
5612
|
_loggerProxy.default.logger.log('Meeting:index#join --> Success');
|
|
5499
5613
|
_metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
|
|
5500
|
-
correlation_id:
|
|
5614
|
+
correlation_id: _this32.correlationId
|
|
5501
5615
|
});
|
|
5502
5616
|
joinSuccess(join);
|
|
5503
|
-
|
|
5617
|
+
_this32.deferJoin = undefined;
|
|
5504
5618
|
return join;
|
|
5505
5619
|
}).catch(function (error) {
|
|
5506
|
-
var
|
|
5507
|
-
|
|
5620
|
+
var _this32$meetingInfo, _error$error;
|
|
5621
|
+
_this32.meetingFiniteStateMachine.fail(error);
|
|
5508
5622
|
_loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
|
|
5509
5623
|
|
|
5510
5624
|
// @ts-ignore
|
|
5511
|
-
|
|
5625
|
+
_this32.webex.internal.newMetrics.submitClientEvent({
|
|
5512
5626
|
name: 'client.locus.join.response',
|
|
5513
5627
|
payload: {
|
|
5514
5628
|
identifiers: {
|
|
5515
|
-
meetingLookupUrl: (
|
|
5629
|
+
meetingLookupUrl: (_this32$meetingInfo = _this32.meetingInfo) === null || _this32$meetingInfo === void 0 ? void 0 : _this32$meetingInfo.meetingLookupUrl
|
|
5516
5630
|
}
|
|
5517
5631
|
},
|
|
5518
5632
|
options: {
|
|
5519
|
-
meetingId:
|
|
5633
|
+
meetingId: _this32.id,
|
|
5520
5634
|
rawError: error
|
|
5521
5635
|
}
|
|
5522
5636
|
});
|
|
5523
5637
|
|
|
5524
5638
|
// TODO: change this to error codes and pre defined dictionary
|
|
5525
5639
|
_metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
|
|
5526
|
-
correlation_id:
|
|
5640
|
+
correlation_id: _this32.correlationId,
|
|
5527
5641
|
reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
|
|
5528
5642
|
stack: error.stack
|
|
5529
5643
|
});
|
|
5530
5644
|
|
|
5531
5645
|
// Upload logs on join Failure
|
|
5532
|
-
_triggerProxy.default.trigger(
|
|
5646
|
+
_triggerProxy.default.trigger(_this32, {
|
|
5533
5647
|
file: 'meeting/index',
|
|
5534
5648
|
function: 'join'
|
|
5535
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
5649
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this32);
|
|
5536
5650
|
joinFailed(error);
|
|
5537
|
-
|
|
5651
|
+
_this32.deferJoin = undefined;
|
|
5538
5652
|
return _promise.default.reject(error);
|
|
5539
5653
|
}).then(function (join) {
|
|
5540
5654
|
// @ts-ignore - config coming from registerPlugin
|
|
5541
|
-
if (
|
|
5655
|
+
if (_this32.config.enableAutomaticLLM) {
|
|
5542
5656
|
// @ts-ignore
|
|
5543
|
-
|
|
5544
|
-
|
|
5657
|
+
_this32.webex.internal.llm.on('online', _this32.handleLLMOnline);
|
|
5658
|
+
_this32.updateLLMConnection().catch(function (error) {
|
|
5545
5659
|
_loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
|
|
5546
5660
|
_metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
|
|
5547
|
-
correlation_id:
|
|
5661
|
+
correlation_id: _this32.correlationId,
|
|
5548
5662
|
reason: error === null || error === void 0 ? void 0 : error.message,
|
|
5549
5663
|
stack: error.stack
|
|
5550
5664
|
});
|
|
@@ -5576,7 +5690,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5576
5690
|
key: "updateLLMConnection",
|
|
5577
5691
|
value: (function () {
|
|
5578
5692
|
var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
|
|
5579
|
-
var
|
|
5693
|
+
var _this33 = this;
|
|
5580
5694
|
var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
|
|
5581
5695
|
return _regenerator.default.wrap(function _callee19$(_context19) {
|
|
5582
5696
|
while (1) switch (_context19.prev = _context19.next) {
|
|
@@ -5588,7 +5702,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5588
5702
|
_context19.next = 8;
|
|
5589
5703
|
break;
|
|
5590
5704
|
}
|
|
5591
|
-
if (!(
|
|
5705
|
+
if (!(
|
|
5706
|
+
// @ts-ignore - Fix type
|
|
5707
|
+
url === this.webex.internal.llm.getLocusUrl() &&
|
|
5708
|
+
// @ts-ignore - Fix type
|
|
5709
|
+
datachannelUrl === this.webex.internal.llm.getDatachannelUrl() && isJoined)) {
|
|
5592
5710
|
_context19.next = 5;
|
|
5593
5711
|
break;
|
|
5594
5712
|
}
|
|
@@ -5608,9 +5726,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5608
5726
|
case 10:
|
|
5609
5727
|
return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
|
|
5610
5728
|
// @ts-ignore - Fix type
|
|
5611
|
-
|
|
5729
|
+
_this33.webex.internal.llm.off('event:relay.event', _this33.processRelayEvent);
|
|
5612
5730
|
// @ts-ignore - Fix type
|
|
5613
|
-
|
|
5731
|
+
_this33.webex.internal.llm.on('event:relay.event', _this33.processRelayEvent);
|
|
5614
5732
|
_loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
|
|
5615
5733
|
return _promise.default.resolve(registerAndConnectResult);
|
|
5616
5734
|
}));
|
|
@@ -5664,7 +5782,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5664
5782
|
}, {
|
|
5665
5783
|
key: "dialInPstn",
|
|
5666
5784
|
value: function dialInPstn() {
|
|
5667
|
-
var
|
|
5785
|
+
var _this34 = this;
|
|
5668
5786
|
if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
|
|
5669
5787
|
|
|
5670
5788
|
var correlationId = this.correlationId,
|
|
@@ -5680,10 +5798,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5680
5798
|
}).catch(function (error) {
|
|
5681
5799
|
var _error$error2;
|
|
5682
5800
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
|
|
5683
|
-
correlation_id:
|
|
5684
|
-
dial_in_url:
|
|
5801
|
+
correlation_id: _this34.correlationId,
|
|
5802
|
+
dial_in_url: _this34.dialInUrl,
|
|
5685
5803
|
locus_id: locusUrl.split('/').pop(),
|
|
5686
|
-
client_url:
|
|
5804
|
+
client_url: _this34.deviceUrl,
|
|
5687
5805
|
reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
|
|
5688
5806
|
stack: error.stack
|
|
5689
5807
|
});
|
|
@@ -5701,7 +5819,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5701
5819
|
}, {
|
|
5702
5820
|
key: "dialOutPstn",
|
|
5703
5821
|
value: function dialOutPstn(phoneNumber) {
|
|
5704
|
-
var
|
|
5822
|
+
var _this35 = this;
|
|
5705
5823
|
if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
|
|
5706
5824
|
|
|
5707
5825
|
var correlationId = this.correlationId,
|
|
@@ -5718,10 +5836,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5718
5836
|
}).catch(function (error) {
|
|
5719
5837
|
var _error$error3;
|
|
5720
5838
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
|
|
5721
|
-
correlation_id:
|
|
5722
|
-
dial_out_url:
|
|
5839
|
+
correlation_id: _this35.correlationId,
|
|
5840
|
+
dial_out_url: _this35.dialOutUrl,
|
|
5723
5841
|
locus_id: locusUrl.split('/').pop(),
|
|
5724
|
-
client_url:
|
|
5842
|
+
client_url: _this35.deviceUrl,
|
|
5725
5843
|
reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
|
|
5726
5844
|
stack: error.stack
|
|
5727
5845
|
});
|
|
@@ -5752,7 +5870,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5752
5870
|
}, {
|
|
5753
5871
|
key: "moveTo",
|
|
5754
5872
|
value: function moveTo(resourceId) {
|
|
5755
|
-
var
|
|
5873
|
+
var _this36 = this;
|
|
5756
5874
|
if (!resourceId) {
|
|
5757
5875
|
throw new _parameter.default('Cannot move call without a resourceId.');
|
|
5758
5876
|
}
|
|
@@ -5796,12 +5914,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5796
5914
|
while (1) switch (_context20.prev = _context20.next) {
|
|
5797
5915
|
case 0:
|
|
5798
5916
|
_context20.prev = 0;
|
|
5799
|
-
if (!(
|
|
5917
|
+
if (!(_this36.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
|
|
5800
5918
|
_context20.next = 4;
|
|
5801
5919
|
break;
|
|
5802
5920
|
}
|
|
5803
5921
|
_context20.next = 4;
|
|
5804
|
-
return
|
|
5922
|
+
return _this36.releaseScreenShareFloor();
|
|
5805
5923
|
case 4:
|
|
5806
5924
|
mediaSettings = {
|
|
5807
5925
|
mediaDirection: {
|
|
@@ -5813,37 +5931,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5813
5931
|
receiveShare: true
|
|
5814
5932
|
}
|
|
5815
5933
|
};
|
|
5816
|
-
|
|
5817
|
-
|
|
5934
|
+
_this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
|
|
5935
|
+
_this36.mediaProperties.unsetRemoteMedia();
|
|
5818
5936
|
|
|
5819
5937
|
// 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
|
|
5820
5938
|
// once the device answers we close the old connection and create new media server connection with only share enabled
|
|
5821
|
-
if (!
|
|
5939
|
+
if (!_this36.statsAnalyzer) {
|
|
5822
5940
|
_context20.next = 10;
|
|
5823
5941
|
break;
|
|
5824
5942
|
}
|
|
5825
5943
|
_context20.next = 10;
|
|
5826
|
-
return
|
|
5944
|
+
return _this36.statsAnalyzer.stopAnalyzer();
|
|
5827
5945
|
case 10:
|
|
5828
5946
|
_context20.next = 12;
|
|
5829
|
-
return
|
|
5947
|
+
return _this36.closeRemoteStreams();
|
|
5830
5948
|
case 12:
|
|
5831
5949
|
_context20.next = 14;
|
|
5832
|
-
return
|
|
5950
|
+
return _this36.closePeerConnections();
|
|
5833
5951
|
case 14:
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5952
|
+
_this36.cleanupLocalStreams();
|
|
5953
|
+
_this36.unsetRemoteStreams();
|
|
5954
|
+
_this36.unsetPeerConnections();
|
|
5955
|
+
_this36.reconnectionManager.cleanUp();
|
|
5838
5956
|
_context20.next = 20;
|
|
5839
|
-
return
|
|
5957
|
+
return _this36.addMedia({
|
|
5840
5958
|
audioEnabled: false,
|
|
5841
5959
|
videoEnabled: false,
|
|
5842
5960
|
shareVideoEnabled: true
|
|
5843
5961
|
});
|
|
5844
5962
|
case 20:
|
|
5845
5963
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
|
|
5846
|
-
|
|
5964
|
+
_this36.isMoveToInProgress = false;
|
|
5847
5965
|
_context20.next = 29;
|
|
5848
5966
|
break;
|
|
5849
5967
|
case 24:
|
|
@@ -5851,12 +5969,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5851
5969
|
_context20.t0 = _context20["catch"](0);
|
|
5852
5970
|
_loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
|
|
5853
5971
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
|
|
5854
|
-
correlation_id:
|
|
5855
|
-
locus_id:
|
|
5972
|
+
correlation_id: _this36.correlationId,
|
|
5973
|
+
locus_id: _this36.locusUrl.split('/').pop(),
|
|
5856
5974
|
reason: _context20.t0.message,
|
|
5857
5975
|
stack: _context20.t0.stack
|
|
5858
5976
|
});
|
|
5859
|
-
|
|
5977
|
+
_this36.isMoveToInProgress = false;
|
|
5860
5978
|
case 29:
|
|
5861
5979
|
case "end":
|
|
5862
5980
|
return _context20.stop();
|
|
@@ -5872,17 +5990,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5872
5990
|
resourceId: resourceId,
|
|
5873
5991
|
moveToResource: true
|
|
5874
5992
|
}).then(function () {
|
|
5875
|
-
|
|
5993
|
+
_this36.meetingFiniteStateMachine.join();
|
|
5876
5994
|
}).catch(function (error) {
|
|
5877
|
-
|
|
5995
|
+
_this36.meetingFiniteStateMachine.fail(error);
|
|
5878
5996
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
|
|
5879
|
-
correlation_id:
|
|
5880
|
-
locus_id:
|
|
5997
|
+
correlation_id: _this36.correlationId,
|
|
5998
|
+
locus_id: _this36.locusUrl.split('/').pop(),
|
|
5881
5999
|
reason: error.message,
|
|
5882
6000
|
stack: error.stack
|
|
5883
6001
|
});
|
|
5884
6002
|
_loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
|
5885
|
-
|
|
6003
|
+
_this36.isMoveToInProgress = false;
|
|
5886
6004
|
return _promise.default.reject(error);
|
|
5887
6005
|
});
|
|
5888
6006
|
}
|
|
@@ -5897,7 +6015,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5897
6015
|
}, {
|
|
5898
6016
|
key: "moveFrom",
|
|
5899
6017
|
value: function moveFrom(resourceId) {
|
|
5900
|
-
var
|
|
6018
|
+
var _this37 = this;
|
|
5901
6019
|
// On moveFrom ask the developer to re capture it moveFrom then updateMedia
|
|
5902
6020
|
if (!resourceId) {
|
|
5903
6021
|
throw new _parameter.default('Cannot move call without a resourceId.');
|
|
@@ -5912,19 +6030,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5912
6030
|
}
|
|
5913
6031
|
});
|
|
5914
6032
|
return _util2.default.joinMeetingOptions(this).then(function () {
|
|
5915
|
-
return _util2.default.leaveMeeting(
|
|
6033
|
+
return _util2.default.leaveMeeting(_this37, {
|
|
5916
6034
|
resourceId: resourceId,
|
|
5917
6035
|
correlationId: oldCorrelationId,
|
|
5918
6036
|
moveMeeting: true
|
|
5919
6037
|
}).then(function () {
|
|
5920
|
-
|
|
6038
|
+
_this37.resourceId = '';
|
|
5921
6039
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
|
|
5922
6040
|
});
|
|
5923
6041
|
}).catch(function (error) {
|
|
5924
|
-
|
|
6042
|
+
_this37.meetingFiniteStateMachine.fail(error);
|
|
5925
6043
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
|
|
5926
|
-
correlation_id:
|
|
5927
|
-
locus_id:
|
|
6044
|
+
correlation_id: _this37.correlationId,
|
|
6045
|
+
locus_id: _this37.locusUrl.split('/').pop(),
|
|
5928
6046
|
reason: error.message,
|
|
5929
6047
|
stack: error.stack
|
|
5930
6048
|
});
|
|
@@ -5954,9 +6072,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5954
6072
|
return _regenerator.default.wrap(function _callee21$(_context21) {
|
|
5955
6073
|
while (1) switch (_context21.prev = _context21.next) {
|
|
5956
6074
|
case 0:
|
|
5957
|
-
|
|
6075
|
+
this.rtcMetrics = this.isMultistream ?
|
|
5958
6076
|
// @ts-ignore
|
|
5959
|
-
this.webex, this.id, this.correlationId
|
|
6077
|
+
new _rtcMetrics.default(this.webex, this.id, this.correlationId) : undefined;
|
|
6078
|
+
mc = _media.default.createMediaConnection(this.isMultistream, this.getMediaConnectionDebugId(), this.id, {
|
|
6079
|
+
rtcMetrics: this.rtcMetrics,
|
|
5960
6080
|
mediaProperties: this.mediaProperties,
|
|
5961
6081
|
remoteQualityLevel: this.mediaProperties.remoteQualityLevel,
|
|
5962
6082
|
// @ts-ignore - config coming from registerPlugin
|
|
@@ -5978,36 +6098,36 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5978
6098
|
|
|
5979
6099
|
// publish the streams
|
|
5980
6100
|
if (!this.mediaProperties.audioStream) {
|
|
5981
|
-
_context21.next =
|
|
6101
|
+
_context21.next = 9;
|
|
5982
6102
|
break;
|
|
5983
6103
|
}
|
|
5984
6104
|
this.setSendNamedMediaGroup(_internalMediaCore.MediaType.AudioMain);
|
|
5985
|
-
_context21.next =
|
|
6105
|
+
_context21.next = 9;
|
|
5986
6106
|
return this.publishStream(_internalMediaCore.MediaType.AudioMain, this.mediaProperties.audioStream);
|
|
5987
|
-
case
|
|
6107
|
+
case 9:
|
|
5988
6108
|
if (!this.mediaProperties.videoStream) {
|
|
5989
|
-
_context21.next =
|
|
6109
|
+
_context21.next = 12;
|
|
5990
6110
|
break;
|
|
5991
6111
|
}
|
|
5992
|
-
_context21.next =
|
|
6112
|
+
_context21.next = 12;
|
|
5993
6113
|
return this.publishStream(_internalMediaCore.MediaType.VideoMain, this.mediaProperties.videoStream);
|
|
5994
|
-
case
|
|
6114
|
+
case 12:
|
|
5995
6115
|
if (!this.mediaProperties.shareVideoStream) {
|
|
5996
|
-
_context21.next =
|
|
6116
|
+
_context21.next = 15;
|
|
5997
6117
|
break;
|
|
5998
6118
|
}
|
|
5999
|
-
_context21.next =
|
|
6119
|
+
_context21.next = 15;
|
|
6000
6120
|
return this.publishStream(_internalMediaCore.MediaType.VideoSlides, this.mediaProperties.shareVideoStream);
|
|
6001
|
-
case
|
|
6121
|
+
case 15:
|
|
6002
6122
|
if (!(this.isMultistream && this.mediaProperties.shareAudioStream)) {
|
|
6003
|
-
_context21.next =
|
|
6123
|
+
_context21.next = 18;
|
|
6004
6124
|
break;
|
|
6005
6125
|
}
|
|
6006
|
-
_context21.next =
|
|
6126
|
+
_context21.next = 18;
|
|
6007
6127
|
return this.publishStream(_internalMediaCore.MediaType.AudioSlides, this.mediaProperties.shareAudioStream);
|
|
6008
|
-
case 17:
|
|
6009
|
-
return _context21.abrupt("return", mc);
|
|
6010
6128
|
case 18:
|
|
6129
|
+
return _context21.abrupt("return", mc);
|
|
6130
|
+
case 19:
|
|
6011
6131
|
case "end":
|
|
6012
6132
|
return _context21.stop();
|
|
6013
6133
|
}
|
|
@@ -6031,9 +6151,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6031
6151
|
}, {
|
|
6032
6152
|
key: "forwardEvent",
|
|
6033
6153
|
value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
|
|
6034
|
-
var
|
|
6154
|
+
var _this38 = this;
|
|
6035
6155
|
eventEmitter.on(eventTypeToForward, function (data) {
|
|
6036
|
-
return _triggerProxy.default.trigger(
|
|
6156
|
+
return _triggerProxy.default.trigger(_this38, {
|
|
6037
6157
|
file: 'meetings',
|
|
6038
6158
|
function: 'addMedia'
|
|
6039
6159
|
}, meetingEventType, data);
|
|
@@ -6103,7 +6223,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6103
6223
|
key: "waitForMediaConnectionConnected",
|
|
6104
6224
|
value: (function () {
|
|
6105
6225
|
var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
|
|
6106
|
-
var _this$mediaProperties6, _this$mediaProperties7, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12
|
|
6226
|
+
var iceConnected, _this$mediaProperties6, _this$mediaProperties7, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12;
|
|
6107
6227
|
return _regenerator.default.wrap(function _callee23$(_context23) {
|
|
6108
6228
|
while (1) switch (_context23.prev = _context23.next) {
|
|
6109
6229
|
case 0:
|
|
@@ -6111,37 +6231,59 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6111
6231
|
_context23.next = 3;
|
|
6112
6232
|
return this.mediaProperties.waitForMediaConnectionConnected();
|
|
6113
6233
|
case 3:
|
|
6114
|
-
_context23.next =
|
|
6234
|
+
_context23.next = 30;
|
|
6115
6235
|
break;
|
|
6116
6236
|
case 5:
|
|
6117
6237
|
_context23.prev = 5;
|
|
6118
6238
|
_context23.t0 = _context23["catch"](0);
|
|
6119
|
-
|
|
6120
|
-
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
name: 'client.ice.end',
|
|
6124
|
-
payload: {
|
|
6125
|
-
canProceed: !this.turnServerUsed,
|
|
6126
|
-
// If we haven't done turn tls retry yet we will proceed with join attempt
|
|
6127
|
-
icePhase: this.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY',
|
|
6128
|
-
errors: [
|
|
6129
|
-
// @ts-ignore
|
|
6130
|
-
this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
|
|
6131
|
-
clientErrorCode: _internalPluginMetrics.CallDiagnosticUtils.generateClientErrorCodeForIceFailure({
|
|
6132
|
-
signalingState: ((_this$mediaProperties6 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties6 === void 0 ? void 0 : (_this$mediaProperties7 = _this$mediaProperties6.multistreamConnection) === null || _this$mediaProperties7 === void 0 ? void 0 : (_this$mediaProperties8 = _this$mediaProperties7.pc) === null || _this$mediaProperties8 === void 0 ? void 0 : (_this$mediaProperties9 = _this$mediaProperties8.pc) === null || _this$mediaProperties9 === void 0 ? void 0 : _this$mediaProperties9.signalingState) || ((_this$mediaProperties10 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties10 === void 0 ? void 0 : (_this$mediaProperties11 = _this$mediaProperties10.mediaConnection) === null || _this$mediaProperties11 === void 0 ? void 0 : (_this$mediaProperties12 = _this$mediaProperties11.pc) === null || _this$mediaProperties12 === void 0 ? void 0 : _this$mediaProperties12.signalingState) || 'unknown',
|
|
6133
|
-
iceConnectionState: ((_this$mediaProperties13 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties13 === void 0 ? void 0 : (_this$mediaProperties14 = _this$mediaProperties13.multistreamConnection) === null || _this$mediaProperties14 === void 0 ? void 0 : (_this$mediaProperties15 = _this$mediaProperties14.pc) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.pc) === null || _this$mediaProperties16 === void 0 ? void 0 : _this$mediaProperties16.iceConnectionState) || ((_this$mediaProperties17 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties17 === void 0 ? void 0 : (_this$mediaProperties18 = _this$mediaProperties17.mediaConnection) === null || _this$mediaProperties18 === void 0 ? void 0 : (_this$mediaProperties19 = _this$mediaProperties18.pc) === null || _this$mediaProperties19 === void 0 ? void 0 : _this$mediaProperties19.iceConnectionState) || 'unknown',
|
|
6134
|
-
turnServerUsed: this.turnServerUsed
|
|
6135
|
-
})
|
|
6136
|
-
})]
|
|
6137
|
-
},
|
|
6138
|
-
options: {
|
|
6139
|
-
meetingId: this.id
|
|
6140
|
-
}
|
|
6141
|
-
});
|
|
6239
|
+
iceConnected = _context23.t0.iceConnected;
|
|
6240
|
+
if (this.hasMediaConnectionConnectedAtLeastOnce) {
|
|
6241
|
+
_context23.next = 29;
|
|
6242
|
+
break;
|
|
6142
6243
|
}
|
|
6244
|
+
_context23.t1 = this.webex.internal.newMetrics;
|
|
6245
|
+
_context23.t2 = !this.turnServerUsed;
|
|
6246
|
+
_context23.t3 = this.addMediaData.icePhaseCallback();
|
|
6247
|
+
_context23.t4 = this.webex.internal.newMetrics.callDiagnosticMetrics;
|
|
6248
|
+
_context23.t5 = _internalPluginMetrics.CallDiagnosticUtils;
|
|
6249
|
+
_context23.t6 = ((_this$mediaProperties6 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties6 === void 0 ? void 0 : (_this$mediaProperties7 = _this$mediaProperties6.multistreamConnection) === null || _this$mediaProperties7 === void 0 ? void 0 : (_this$mediaProperties8 = _this$mediaProperties7.pc) === null || _this$mediaProperties8 === void 0 ? void 0 : (_this$mediaProperties9 = _this$mediaProperties8.pc) === null || _this$mediaProperties9 === void 0 ? void 0 : _this$mediaProperties9.signalingState) || ((_this$mediaProperties10 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties10 === void 0 ? void 0 : (_this$mediaProperties11 = _this$mediaProperties10.mediaConnection) === null || _this$mediaProperties11 === void 0 ? void 0 : (_this$mediaProperties12 = _this$mediaProperties11.pc) === null || _this$mediaProperties12 === void 0 ? void 0 : _this$mediaProperties12.signalingState) || 'unknown';
|
|
6250
|
+
_context23.t7 = iceConnected;
|
|
6251
|
+
_context23.t8 = this.turnServerUsed;
|
|
6252
|
+
_context23.next = 19;
|
|
6253
|
+
return this.webex.meetings.reachability.isWebexMediaBackendUnreachable().catch(function () {
|
|
6254
|
+
return false;
|
|
6255
|
+
});
|
|
6256
|
+
case 19:
|
|
6257
|
+
_context23.t9 = _context23.sent;
|
|
6258
|
+
_context23.t10 = {
|
|
6259
|
+
signalingState: _context23.t6,
|
|
6260
|
+
iceConnected: _context23.t7,
|
|
6261
|
+
turnServerUsed: _context23.t8,
|
|
6262
|
+
unreachable: _context23.t9
|
|
6263
|
+
};
|
|
6264
|
+
_context23.t11 = _context23.t5.generateClientErrorCodeForIceFailure.call(_context23.t5, _context23.t10);
|
|
6265
|
+
_context23.t12 = {
|
|
6266
|
+
clientErrorCode: _context23.t11
|
|
6267
|
+
};
|
|
6268
|
+
_context23.t13 = _context23.t4.getErrorPayloadForClientErrorCode.call(_context23.t4, _context23.t12);
|
|
6269
|
+
_context23.t14 = [_context23.t13];
|
|
6270
|
+
_context23.t15 = {
|
|
6271
|
+
canProceed: _context23.t2,
|
|
6272
|
+
icePhase: _context23.t3,
|
|
6273
|
+
errors: _context23.t14
|
|
6274
|
+
};
|
|
6275
|
+
_context23.t16 = {
|
|
6276
|
+
meetingId: this.id
|
|
6277
|
+
};
|
|
6278
|
+
_context23.t17 = {
|
|
6279
|
+
name: 'client.ice.end',
|
|
6280
|
+
payload: _context23.t15,
|
|
6281
|
+
options: _context23.t16
|
|
6282
|
+
};
|
|
6283
|
+
_context23.t1.submitClientEvent.call(_context23.t1, _context23.t17);
|
|
6284
|
+
case 29:
|
|
6143
6285
|
throw new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
|
|
6144
|
-
case
|
|
6286
|
+
case 30:
|
|
6145
6287
|
case "end":
|
|
6146
6288
|
return _context23.stop();
|
|
6147
6289
|
}
|
|
@@ -6162,18 +6304,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6162
6304
|
}, {
|
|
6163
6305
|
key: "createStatsAnalyzer",
|
|
6164
6306
|
value: function createStatsAnalyzer() {
|
|
6165
|
-
var _this38 = this;
|
|
6166
6307
|
// @ts-ignore - config coming from registerPlugin
|
|
6167
6308
|
if (this.config.stats.enableStatsAnalyzer) {
|
|
6168
6309
|
// @ts-ignore - config coming from registerPlugin
|
|
6169
|
-
this.networkQualityMonitor = new
|
|
6170
|
-
this.statsAnalyzer = new
|
|
6171
|
-
|
|
6172
|
-
|
|
6173
|
-
|
|
6174
|
-
|
|
6310
|
+
this.networkQualityMonitor = new _internalMediaCore.NetworkQualityMonitor(this.config.stats);
|
|
6311
|
+
this.statsAnalyzer = new _internalMediaCore.StatsAnalyzer({
|
|
6312
|
+
// @ts-ignore - config coming from registerPlugin
|
|
6313
|
+
config: this.config.stats,
|
|
6314
|
+
networkQualityMonitor: this.networkQualityMonitor,
|
|
6315
|
+
isMultistream: this.isMultistream
|
|
6316
|
+
});
|
|
6175
6317
|
this.setupStatsAnalyzerEventHandlers();
|
|
6176
|
-
this.networkQualityMonitor.on(
|
|
6318
|
+
this.networkQualityMonitor.on(_internalMediaCore.NetworkQualityEventNames.NETWORK_QUALITY, this.sendNetworkQualityEvent.bind(this));
|
|
6177
6319
|
}
|
|
6178
6320
|
}
|
|
6179
6321
|
|
|
@@ -6196,6 +6338,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6196
6338
|
*/
|
|
6197
6339
|
function () {
|
|
6198
6340
|
var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
|
|
6341
|
+
var _this39 = this;
|
|
6199
6342
|
var LOG_HEADER, deferSDPAnswer;
|
|
6200
6343
|
return _regenerator.default.wrap(function _callee24$(_context24) {
|
|
6201
6344
|
while (1) switch (_context24.prev = _context24.next) {
|
|
@@ -6211,6 +6354,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6211
6354
|
deferSDPAnswer = this.deferSDPAnswer;
|
|
6212
6355
|
this.sdpResponseTimer = setTimeout(function () {
|
|
6213
6356
|
_loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
|
|
6357
|
+
// @ts-ignore
|
|
6358
|
+
_this39.webex.internal.newMetrics.submitClientEvent({
|
|
6359
|
+
name: 'client.media-engine.remote-sdp-received',
|
|
6360
|
+
payload: {
|
|
6361
|
+
canProceed: false,
|
|
6362
|
+
errors: [
|
|
6363
|
+
// @ts-ignore
|
|
6364
|
+
_this39.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
|
|
6365
|
+
clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
|
|
6366
|
+
})]
|
|
6367
|
+
},
|
|
6368
|
+
options: {
|
|
6369
|
+
meetingId: _this39.id,
|
|
6370
|
+
rawError: new Error('Timeout waiting for SDP answer')
|
|
6371
|
+
}
|
|
6372
|
+
});
|
|
6214
6373
|
deferSDPAnswer.reject(new Error('Timed out waiting for REMOTE SDP ANSWER'));
|
|
6215
6374
|
}, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
|
|
6216
6375
|
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
|
|
@@ -6284,7 +6443,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6284
6443
|
return _regenerator.default.wrap(function _callee26$(_context26) {
|
|
6285
6444
|
while (1) switch (_context26.prev = _context26.next) {
|
|
6286
6445
|
case 0:
|
|
6287
|
-
this.retriedWithTurnServer = true;
|
|
6446
|
+
this.addMediaData.retriedWithTurnServer = true;
|
|
6288
6447
|
LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';
|
|
6289
6448
|
_context26.next = 4;
|
|
6290
6449
|
return this.cleanUpBeforeRetryWithTurnServer();
|
|
@@ -6400,7 +6559,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6400
6559
|
correlation_id: this.correlationId,
|
|
6401
6560
|
latency: cdl.getTurnDiscoveryTime(),
|
|
6402
6561
|
turnServerUsed: this.turnServerUsed,
|
|
6403
|
-
retriedWithTurnServer: this.retriedWithTurnServer
|
|
6562
|
+
retriedWithTurnServer: this.addMediaData.retriedWithTurnServer
|
|
6404
6563
|
});
|
|
6405
6564
|
}
|
|
6406
6565
|
return _context28.abrupt("return", turnDiscoveryResult);
|
|
@@ -6430,12 +6589,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6430
6589
|
key: "establishMediaConnection",
|
|
6431
6590
|
value: (function () {
|
|
6432
6591
|
var _establishMediaConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29(remoteMediaManagerConfig, bundlePolicy, isForced, turnServerInfo) {
|
|
6592
|
+
var _this$locusMediaReque;
|
|
6433
6593
|
var LOG_HEADER, isReconnecting, _yield$this$doTurnDis, mc;
|
|
6434
6594
|
return _regenerator.default.wrap(function _callee29$(_context29) {
|
|
6435
6595
|
while (1) switch (_context29.prev = _context29.next) {
|
|
6436
6596
|
case 0:
|
|
6437
6597
|
LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';
|
|
6438
|
-
isReconnecting = this.isMoveToInProgress || this.
|
|
6598
|
+
isReconnecting = this.isMoveToInProgress || !!((_this$locusMediaReque = this.locusMediaRequest) !== null && _this$locusMediaReque !== void 0 && _this$locusMediaReque.isConfluenceCreated()); // We are forcing turn discovery if the case is moveTo and a turn server was used already
|
|
6439
6599
|
if (this.isMoveToInProgress && this.turnServerUsed) {
|
|
6440
6600
|
isForced = true;
|
|
6441
6601
|
}
|
|
@@ -6593,23 +6753,70 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6593
6753
|
}
|
|
6594
6754
|
return cleanUpBeforeRetryWithTurnServer;
|
|
6595
6755
|
}()
|
|
6756
|
+
/**
|
|
6757
|
+
* Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls
|
|
6758
|
+
* to Locus /media API (these are used for sending Roap messages and updating audio/video mute status).
|
|
6759
|
+
*
|
|
6760
|
+
* @returns {void}
|
|
6761
|
+
*/
|
|
6762
|
+
)
|
|
6763
|
+
}, {
|
|
6764
|
+
key: "setupLocusMediaRequest",
|
|
6765
|
+
value: function setupLocusMediaRequest() {
|
|
6766
|
+
var _this$webex$meetings$2, _this$webex$meetings$3;
|
|
6767
|
+
this.locusMediaRequest = new _locusMediaRequest.LocusMediaRequest({
|
|
6768
|
+
correlationId: this.correlationId,
|
|
6769
|
+
meetingId: this.id,
|
|
6770
|
+
device: {
|
|
6771
|
+
url: this.deviceUrl,
|
|
6772
|
+
// @ts-ignore
|
|
6773
|
+
deviceType: this.config.deviceType,
|
|
6774
|
+
// @ts-ignore
|
|
6775
|
+
countryCode: (_this$webex$meetings$2 = this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$2 === void 0 ? void 0 : _this$webex$meetings$2.countryCode,
|
|
6776
|
+
// @ts-ignore
|
|
6777
|
+
regionCode: (_this$webex$meetings$3 = this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$3 === void 0 ? void 0 : _this$webex$meetings$3.regionCode
|
|
6778
|
+
},
|
|
6779
|
+
preferTranscoding: !this.isMultistream
|
|
6780
|
+
}, {
|
|
6781
|
+
// @ts-ignore
|
|
6782
|
+
parent: this.webex
|
|
6783
|
+
});
|
|
6784
|
+
}
|
|
6785
|
+
|
|
6596
6786
|
/**
|
|
6597
6787
|
* Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
|
|
6598
6788
|
*
|
|
6599
6789
|
* @param {AddMediaOptions} options
|
|
6600
|
-
* @param {TurnServerInfo} turnServerInfo - TURN server information (used only internally by the SDK)
|
|
6601
6790
|
* @returns {Promise<void>}
|
|
6602
6791
|
* @public
|
|
6603
6792
|
* @memberof Meeting
|
|
6604
6793
|
*/
|
|
6605
|
-
)
|
|
6606
6794
|
}, {
|
|
6607
6795
|
key: "addMedia",
|
|
6796
|
+
value: function addMedia() {
|
|
6797
|
+
var _this40 = this;
|
|
6798
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
6799
|
+
return this.addMediaInternal(function () {
|
|
6800
|
+
return _this40.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
|
|
6801
|
+
}, undefined, false, options);
|
|
6802
|
+
}
|
|
6803
|
+
|
|
6804
|
+
/**
|
|
6805
|
+
* Internal version of addMedia() with some more arguments for finer control of its behavior
|
|
6806
|
+
*
|
|
6807
|
+
* @param {Function} icePhaseCallback - callback to determine the icePhase for CA "client.ice.end" failure events
|
|
6808
|
+
* @param {TurnServerInfo} turnServerInfo - TURN server information
|
|
6809
|
+
* @param {boolean} forceTurnDiscovery - if true, TURN discovery will be done
|
|
6810
|
+
* @param {AddMediaOptions} options - same as options of the public addMedia() method
|
|
6811
|
+
* @returns {Promise<void>}
|
|
6812
|
+
* @protected
|
|
6813
|
+
* @memberof Meeting
|
|
6814
|
+
*/
|
|
6815
|
+
}, {
|
|
6816
|
+
key: "addMediaInternal",
|
|
6608
6817
|
value: (function () {
|
|
6609
|
-
var
|
|
6610
|
-
var _this$webex$meetings$2, _this$webex$meetings$3;
|
|
6818
|
+
var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
|
|
6611
6819
|
var options,
|
|
6612
|
-
turnServerInfo,
|
|
6613
6820
|
LOG_HEADER,
|
|
6614
6821
|
localStreams,
|
|
6615
6822
|
_options$audioEnabled,
|
|
@@ -6628,6 +6835,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6628
6835
|
selectedCandidatePairChanges,
|
|
6629
6836
|
numTransports,
|
|
6630
6837
|
reachabilityStats,
|
|
6838
|
+
iceCandidateErrors,
|
|
6839
|
+
_this$mediaProperties13,
|
|
6840
|
+
_this$mediaProperties14,
|
|
6841
|
+
_this$mediaProperties15,
|
|
6842
|
+
_this$mediaProperties16,
|
|
6843
|
+
_this$mediaProperties17,
|
|
6844
|
+
_this$mediaProperties18,
|
|
6845
|
+
_this$mediaProperties19,
|
|
6631
6846
|
_this$mediaProperties20,
|
|
6632
6847
|
_this$mediaProperties21,
|
|
6633
6848
|
_this$mediaProperties22,
|
|
@@ -6642,27 +6857,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6642
6857
|
_this$mediaProperties31,
|
|
6643
6858
|
_this$mediaProperties32,
|
|
6644
6859
|
_this$mediaProperties33,
|
|
6645
|
-
_this$mediaProperties34,
|
|
6646
|
-
_this$mediaProperties35,
|
|
6647
|
-
_this$mediaProperties36,
|
|
6648
|
-
_this$mediaProperties37,
|
|
6649
|
-
_this$mediaProperties38,
|
|
6650
|
-
_this$mediaProperties39,
|
|
6651
|
-
_this$mediaProperties40,
|
|
6652
6860
|
reachabilityMetrics,
|
|
6653
6861
|
_yield$this$mediaProp2,
|
|
6654
6862
|
_selectedCandidatePairChanges,
|
|
6655
6863
|
_numTransports,
|
|
6864
|
+
_iceCandidateErrors,
|
|
6656
6865
|
_args32 = arguments;
|
|
6657
6866
|
return _regenerator.default.wrap(function _callee32$(_context32) {
|
|
6658
6867
|
while (1) switch (_context32.prev = _context32.next) {
|
|
6659
6868
|
case 0:
|
|
6660
|
-
options = _args32.length >
|
|
6661
|
-
|
|
6662
|
-
this.
|
|
6869
|
+
options = _args32.length > 3 && _args32[3] !== undefined ? _args32[3] : {};
|
|
6870
|
+
this.addMediaData.retriedWithTurnServer = false;
|
|
6871
|
+
this.addMediaData.icePhaseCallback = icePhaseCallback;
|
|
6663
6872
|
this.hasMediaConnectionConnectedAtLeastOnce = false;
|
|
6664
6873
|
LOG_HEADER = 'Meeting:index#addMedia -->';
|
|
6665
|
-
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: ").concat((0, _stringify.default)(options), ", ").concat((0, _stringify.default)(turnServerInfo)));
|
|
6874
|
+
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
|
|
6666
6875
|
if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
|
|
6667
6876
|
_context32.next = 8;
|
|
6668
6877
|
break;
|
|
@@ -6722,74 +6931,60 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6722
6931
|
receiveVideo: videoEnabled,
|
|
6723
6932
|
receiveShare: shareAudioEnabled || shareVideoEnabled
|
|
6724
6933
|
});
|
|
6725
|
-
this.locusMediaRequest = new _locusMediaRequest.LocusMediaRequest({
|
|
6726
|
-
correlationId: this.correlationId,
|
|
6727
|
-
meetingId: this.id,
|
|
6728
|
-
device: {
|
|
6729
|
-
url: this.deviceUrl,
|
|
6730
|
-
// @ts-ignore
|
|
6731
|
-
deviceType: this.config.deviceType,
|
|
6732
|
-
// @ts-ignore
|
|
6733
|
-
countryCode: (_this$webex$meetings$2 = this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$2 === void 0 ? void 0 : _this$webex$meetings$2.countryCode,
|
|
6734
|
-
// @ts-ignore
|
|
6735
|
-
regionCode: (_this$webex$meetings$3 = this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$3 === void 0 ? void 0 : _this$webex$meetings$3.regionCode
|
|
6736
|
-
},
|
|
6737
|
-
preferTranscoding: !this.isMultistream
|
|
6738
|
-
}, {
|
|
6739
|
-
// @ts-ignore
|
|
6740
|
-
parent: this.webex
|
|
6741
|
-
});
|
|
6742
6934
|
this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
|
|
6743
6935
|
this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
|
|
6744
|
-
_context32.prev =
|
|
6745
|
-
_context32.next =
|
|
6936
|
+
_context32.prev = 18;
|
|
6937
|
+
_context32.next = 21;
|
|
6746
6938
|
return this.setUpLocalStreamReferences(localStreams);
|
|
6747
|
-
case
|
|
6939
|
+
case 21:
|
|
6748
6940
|
this.setMercuryListener();
|
|
6749
6941
|
this.createStatsAnalyzer();
|
|
6750
|
-
_context32.next =
|
|
6751
|
-
return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy,
|
|
6752
|
-
case
|
|
6942
|
+
_context32.next = 25;
|
|
6943
|
+
return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
|
|
6944
|
+
case 25:
|
|
6753
6945
|
if (!(audioEnabled || videoEnabled)) {
|
|
6754
|
-
_context32.next =
|
|
6946
|
+
_context32.next = 30;
|
|
6755
6947
|
break;
|
|
6756
6948
|
}
|
|
6757
|
-
_context32.next =
|
|
6949
|
+
_context32.next = 28;
|
|
6758
6950
|
return Meeting.handleDeviceLogging();
|
|
6759
|
-
case
|
|
6760
|
-
_context32.next =
|
|
6951
|
+
case 28:
|
|
6952
|
+
_context32.next = 31;
|
|
6761
6953
|
break;
|
|
6762
|
-
case
|
|
6954
|
+
case 30:
|
|
6763
6955
|
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " device logging not required"));
|
|
6764
|
-
case
|
|
6956
|
+
case 31:
|
|
6765
6957
|
if (!this.mediaProperties.hasLocalShareStream()) {
|
|
6766
|
-
_context32.next =
|
|
6958
|
+
_context32.next = 34;
|
|
6767
6959
|
break;
|
|
6768
6960
|
}
|
|
6769
|
-
_context32.next =
|
|
6961
|
+
_context32.next = 34;
|
|
6770
6962
|
return this.enqueueScreenShareFloorRequest();
|
|
6771
|
-
case
|
|
6772
|
-
_context32.next =
|
|
6963
|
+
case 34:
|
|
6964
|
+
_context32.next = 36;
|
|
6773
6965
|
return this.mediaProperties.getCurrentConnectionInfo();
|
|
6774
|
-
case
|
|
6966
|
+
case 36:
|
|
6775
6967
|
_yield$this$mediaProp = _context32.sent;
|
|
6776
6968
|
connectionType = _yield$this$mediaProp.connectionType;
|
|
6777
6969
|
selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
|
|
6778
6970
|
numTransports = _yield$this$mediaProp.numTransports;
|
|
6779
|
-
_context32.next =
|
|
6971
|
+
_context32.next = 42;
|
|
6780
6972
|
return this.webex.meetings.reachability.getReachabilityMetrics();
|
|
6781
|
-
case
|
|
6973
|
+
case 42:
|
|
6782
6974
|
reachabilityStats = _context32.sent;
|
|
6783
|
-
|
|
6975
|
+
iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
|
|
6976
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
|
|
6784
6977
|
correlation_id: this.correlationId,
|
|
6785
6978
|
locus_id: this.locusUrl.split('/').pop(),
|
|
6786
6979
|
connectionType: connectionType,
|
|
6787
6980
|
selectedCandidatePairChanges: selectedCandidatePairChanges,
|
|
6788
6981
|
numTransports: numTransports,
|
|
6789
6982
|
isMultistream: this.isMultistream,
|
|
6790
|
-
retriedWithTurnServer: this.retriedWithTurnServer,
|
|
6983
|
+
retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,
|
|
6791
6984
|
isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry
|
|
6792
|
-
}, reachabilityStats))
|
|
6985
|
+
}, reachabilityStats), iceCandidateErrors), {}, {
|
|
6986
|
+
iceCandidatesCount: this.iceCandidatesCount
|
|
6987
|
+
}));
|
|
6793
6988
|
// @ts-ignore
|
|
6794
6989
|
this.webex.internal.newMetrics.submitClientEvent({
|
|
6795
6990
|
name: 'client.media-engine.ready',
|
|
@@ -6801,11 +6996,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6801
6996
|
|
|
6802
6997
|
// We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
|
|
6803
6998
|
(_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
|
|
6804
|
-
_context32.next =
|
|
6999
|
+
_context32.next = 68;
|
|
6805
7000
|
break;
|
|
6806
7001
|
case 50:
|
|
6807
7002
|
_context32.prev = 50;
|
|
6808
|
-
_context32.t0 = _context32["catch"](
|
|
7003
|
+
_context32.t0 = _context32["catch"](18);
|
|
6809
7004
|
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context32.t0);
|
|
6810
7005
|
|
|
6811
7006
|
// @ts-ignore
|
|
@@ -6819,7 +7014,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6819
7014
|
_yield$this$mediaProp2 = _context32.sent;
|
|
6820
7015
|
_selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
|
|
6821
7016
|
_numTransports = _yield$this$mediaProp2.numTransports;
|
|
6822
|
-
|
|
7017
|
+
_iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
|
|
7018
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
|
|
6823
7019
|
correlation_id: this.correlationId,
|
|
6824
7020
|
locus_id: this.locusUrl.split('/').pop(),
|
|
6825
7021
|
reason: _context32.t0.message,
|
|
@@ -6829,16 +7025,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6829
7025
|
numTransports: _numTransports,
|
|
6830
7026
|
turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
|
|
6831
7027
|
turnServerUsed: this.turnServerUsed,
|
|
6832
|
-
retriedWithTurnServer: this.retriedWithTurnServer,
|
|
7028
|
+
retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,
|
|
6833
7029
|
isMultistream: this.isMultistream,
|
|
6834
7030
|
isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,
|
|
6835
|
-
signalingState: ((_this$
|
|
6836
|
-
connectionState: ((_this$
|
|
6837
|
-
iceConnectionState: ((_this$
|
|
6838
|
-
}, reachabilityMetrics))
|
|
6839
|
-
|
|
7031
|
+
signalingState: ((_this$mediaProperties13 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties13 === void 0 ? void 0 : (_this$mediaProperties14 = _this$mediaProperties13.multistreamConnection) === null || _this$mediaProperties14 === void 0 ? void 0 : (_this$mediaProperties15 = _this$mediaProperties14.pc) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.pc) === null || _this$mediaProperties16 === void 0 ? void 0 : _this$mediaProperties16.signalingState) || ((_this$mediaProperties17 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties17 === void 0 ? void 0 : (_this$mediaProperties18 = _this$mediaProperties17.mediaConnection) === null || _this$mediaProperties18 === void 0 ? void 0 : (_this$mediaProperties19 = _this$mediaProperties18.pc) === null || _this$mediaProperties19 === void 0 ? void 0 : _this$mediaProperties19.signalingState) || 'unknown',
|
|
7032
|
+
connectionState: ((_this$mediaProperties20 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties20 === void 0 ? void 0 : (_this$mediaProperties21 = _this$mediaProperties20.multistreamConnection) === null || _this$mediaProperties21 === void 0 ? void 0 : (_this$mediaProperties22 = _this$mediaProperties21.pc) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.pc) === null || _this$mediaProperties23 === void 0 ? void 0 : _this$mediaProperties23.connectionState) || ((_this$mediaProperties24 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.mediaConnection) === null || _this$mediaProperties25 === void 0 ? void 0 : (_this$mediaProperties26 = _this$mediaProperties25.pc) === null || _this$mediaProperties26 === void 0 ? void 0 : _this$mediaProperties26.connectionState) || 'unknown',
|
|
7033
|
+
iceConnectionState: ((_this$mediaProperties27 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.multistreamConnection) === null || _this$mediaProperties28 === void 0 ? void 0 : (_this$mediaProperties29 = _this$mediaProperties28.pc) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.pc) === null || _this$mediaProperties30 === void 0 ? void 0 : _this$mediaProperties30.iceConnectionState) || ((_this$mediaProperties31 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.mediaConnection) === null || _this$mediaProperties32 === void 0 ? void 0 : (_this$mediaProperties33 = _this$mediaProperties32.pc) === null || _this$mediaProperties33 === void 0 ? void 0 : _this$mediaProperties33.iceConnectionState) || 'unknown'
|
|
7034
|
+
}, reachabilityMetrics), _iceCandidateErrors), {}, {
|
|
7035
|
+
iceCandidatesCount: this.iceCandidatesCount
|
|
7036
|
+
}));
|
|
7037
|
+
_context32.next = 65;
|
|
6840
7038
|
return this.cleanUpOnAddMediaFailure();
|
|
6841
|
-
case
|
|
7039
|
+
case 65:
|
|
6842
7040
|
// Upload logs on error while adding media
|
|
6843
7041
|
_triggerProxy.default.trigger(this, {
|
|
6844
7042
|
file: 'meeting/index',
|
|
@@ -6850,16 +7048,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6850
7048
|
});
|
|
6851
7049
|
}
|
|
6852
7050
|
throw _context32.t0;
|
|
6853
|
-
case
|
|
7051
|
+
case 68:
|
|
7052
|
+
_context32.prev = 68;
|
|
7053
|
+
this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
|
|
7054
|
+
return _context32.finish(68);
|
|
7055
|
+
case 71:
|
|
6854
7056
|
case "end":
|
|
6855
7057
|
return _context32.stop();
|
|
6856
7058
|
}
|
|
6857
|
-
}, _callee32, this, [[
|
|
7059
|
+
}, _callee32, this, [[18, 50, 68, 71]]);
|
|
6858
7060
|
}));
|
|
6859
|
-
function
|
|
6860
|
-
return
|
|
7061
|
+
function addMediaInternal(_x32, _x33, _x34) {
|
|
7062
|
+
return _addMediaInternal.apply(this, arguments);
|
|
6861
7063
|
}
|
|
6862
|
-
return
|
|
7064
|
+
return addMediaInternal;
|
|
6863
7065
|
}()
|
|
6864
7066
|
/**
|
|
6865
7067
|
* Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
|
|
@@ -6886,7 +7088,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6886
7088
|
* @memberof Meeting
|
|
6887
7089
|
*/
|
|
6888
7090
|
function enqueueMediaUpdate(mediaUpdateType) {
|
|
6889
|
-
var
|
|
7091
|
+
var _this41 = this;
|
|
6890
7092
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
6891
7093
|
var canUpdateMediaNow = this.canUpdateMedia();
|
|
6892
7094
|
return new _promise.default(function (resolve, reject) {
|
|
@@ -6897,9 +7099,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6897
7099
|
options: options
|
|
6898
7100
|
};
|
|
6899
7101
|
_loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
|
|
6900
|
-
|
|
7102
|
+
_this41.queuedMediaUpdates.push(queueItem);
|
|
6901
7103
|
if (canUpdateMediaNow) {
|
|
6902
|
-
|
|
7104
|
+
_this41.processNextQueuedMediaUpdate();
|
|
6903
7105
|
}
|
|
6904
7106
|
});
|
|
6905
7107
|
}
|
|
@@ -6988,7 +7190,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6988
7190
|
}
|
|
6989
7191
|
}, _callee33, this);
|
|
6990
7192
|
}));
|
|
6991
|
-
function updateMedia(
|
|
7193
|
+
function updateMedia(_x35) {
|
|
6992
7194
|
return _updateMedia.apply(this, arguments);
|
|
6993
7195
|
}
|
|
6994
7196
|
return updateMedia;
|
|
@@ -7004,7 +7206,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7004
7206
|
}, {
|
|
7005
7207
|
key: "acknowledge",
|
|
7006
7208
|
value: function acknowledge(type) {
|
|
7007
|
-
var
|
|
7209
|
+
var _this42 = this;
|
|
7008
7210
|
if (!type) {
|
|
7009
7211
|
return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
|
|
7010
7212
|
}
|
|
@@ -7016,12 +7218,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7016
7218
|
}).then(function (response) {
|
|
7017
7219
|
return _promise.default.resolve(response);
|
|
7018
7220
|
}).then(function (response) {
|
|
7019
|
-
|
|
7221
|
+
_this42.meetingFiniteStateMachine.ring(type);
|
|
7020
7222
|
// @ts-ignore
|
|
7021
|
-
|
|
7223
|
+
_this42.webex.internal.newMetrics.submitClientEvent({
|
|
7022
7224
|
name: 'client.alert.displayed',
|
|
7023
7225
|
options: {
|
|
7024
|
-
meetingId:
|
|
7226
|
+
meetingId: _this42.id
|
|
7025
7227
|
}
|
|
7026
7228
|
});
|
|
7027
7229
|
return _promise.default.resolve({
|
|
@@ -7046,12 +7248,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7046
7248
|
}, {
|
|
7047
7249
|
key: "decline",
|
|
7048
7250
|
value: function decline(reason) {
|
|
7049
|
-
var
|
|
7251
|
+
var _this43 = this;
|
|
7050
7252
|
return _util2.default.declineMeeting(this, reason).then(function (decline) {
|
|
7051
|
-
|
|
7253
|
+
_this43.meetingFiniteStateMachine.decline();
|
|
7052
7254
|
return _promise.default.resolve(decline);
|
|
7053
7255
|
}).catch(function (error) {
|
|
7054
|
-
|
|
7256
|
+
_this43.meetingFiniteStateMachine.fail(error);
|
|
7055
7257
|
return _promise.default.reject(error);
|
|
7056
7258
|
});
|
|
7057
7259
|
}
|
|
@@ -7102,7 +7304,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7102
7304
|
}, {
|
|
7103
7305
|
key: "leave",
|
|
7104
7306
|
value: function leave() {
|
|
7105
|
-
var
|
|
7307
|
+
var _this44 = this;
|
|
7106
7308
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
7107
7309
|
var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
|
|
7108
7310
|
|
|
@@ -7114,7 +7316,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7114
7316
|
var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
7115
7317
|
return (
|
|
7116
7318
|
// @ts-ignore
|
|
7117
|
-
|
|
7319
|
+
_this44.webex.internal.newMetrics.submitClientEvent({
|
|
7118
7320
|
name: 'client.call.leave',
|
|
7119
7321
|
payload: _objectSpread({
|
|
7120
7322
|
trigger: 'user-interaction',
|
|
@@ -7122,7 +7324,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7122
7324
|
leaveReason: options.clientEventLeaveReason
|
|
7123
7325
|
}, payload),
|
|
7124
7326
|
options: {
|
|
7125
|
-
meetingId:
|
|
7327
|
+
meetingId: _this44.id
|
|
7126
7328
|
}
|
|
7127
7329
|
})
|
|
7128
7330
|
);
|
|
@@ -7131,24 +7333,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7131
7333
|
return _util2.default.leaveMeeting(this, options).then(function (leave) {
|
|
7132
7334
|
// CA team recommends submitting this *after* locus /leave
|
|
7133
7335
|
submitLeaveMetric();
|
|
7134
|
-
|
|
7135
|
-
|
|
7336
|
+
_this44.meetingFiniteStateMachine.leave();
|
|
7337
|
+
_this44.clearMeetingData();
|
|
7136
7338
|
|
|
7137
7339
|
// upload logs on leave irrespective of meeting delete
|
|
7138
|
-
_triggerProxy.default.trigger(
|
|
7340
|
+
_triggerProxy.default.trigger(_this44, {
|
|
7139
7341
|
file: 'meeting/index',
|
|
7140
7342
|
function: 'leave'
|
|
7141
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
7343
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
|
|
7142
7344
|
|
|
7143
7345
|
// TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
|
|
7144
|
-
if (
|
|
7346
|
+
if (_this44.wirelessShare || _this44.guest) {
|
|
7145
7347
|
// If screen sharing clean the meeting object
|
|
7146
|
-
_triggerProxy.default.trigger(
|
|
7348
|
+
_triggerProxy.default.trigger(_this44, {
|
|
7147
7349
|
file: 'meeting/index',
|
|
7148
7350
|
function: 'leave'
|
|
7149
7351
|
}, _constants.EVENTS.DESTROY_MEETING, {
|
|
7150
7352
|
reason: options.reason,
|
|
7151
|
-
meetingId:
|
|
7353
|
+
meetingId: _this44.id
|
|
7152
7354
|
});
|
|
7153
7355
|
}
|
|
7154
7356
|
_loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
|
|
@@ -7165,16 +7367,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7165
7367
|
shownToUser: false
|
|
7166
7368
|
}]
|
|
7167
7369
|
});
|
|
7168
|
-
|
|
7370
|
+
_this44.meetingFiniteStateMachine.fail(error);
|
|
7169
7371
|
_loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
|
|
7170
7372
|
// upload logs on leave irrespective of meeting delete
|
|
7171
|
-
_triggerProxy.default.trigger(
|
|
7373
|
+
_triggerProxy.default.trigger(_this44, {
|
|
7172
7374
|
file: 'meeting/index',
|
|
7173
7375
|
function: 'leave'
|
|
7174
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
7376
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this44);
|
|
7175
7377
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
|
|
7176
|
-
correlation_id:
|
|
7177
|
-
locus_id:
|
|
7378
|
+
correlation_id: _this44.correlationId,
|
|
7379
|
+
locus_id: _this44.locusUrl.split('/').pop(),
|
|
7178
7380
|
reason: error.message,
|
|
7179
7381
|
stack: error.stack,
|
|
7180
7382
|
code: error.code
|
|
@@ -7194,7 +7396,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7194
7396
|
}, {
|
|
7195
7397
|
key: "startWhiteboardShare",
|
|
7196
7398
|
value: function startWhiteboardShare(channelUrl, resourceToken) {
|
|
7197
|
-
var
|
|
7399
|
+
var _this45 = this;
|
|
7198
7400
|
var whiteboard = this.locusInfo.mediaShares.find(function (element) {
|
|
7199
7401
|
return element.name === 'whiteboard';
|
|
7200
7402
|
});
|
|
@@ -7223,13 +7425,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7223
7425
|
body.resourceToken = resourceToken;
|
|
7224
7426
|
}
|
|
7225
7427
|
return this.meetingRequest.changeMeetingFloor(body).then(function () {
|
|
7226
|
-
|
|
7428
|
+
_this45.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
|
|
7227
7429
|
return _promise.default.resolve();
|
|
7228
7430
|
}).catch(function (error) {
|
|
7229
7431
|
_loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
|
|
7230
7432
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
|
|
7231
|
-
correlation_id:
|
|
7232
|
-
locus_id:
|
|
7433
|
+
correlation_id: _this45.correlationId,
|
|
7434
|
+
locus_id: _this45.locusUrl.split('/').pop(),
|
|
7233
7435
|
reason: error.message,
|
|
7234
7436
|
stack: error.stack,
|
|
7235
7437
|
board: {
|
|
@@ -7252,7 +7454,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7252
7454
|
}, {
|
|
7253
7455
|
key: "stopWhiteboardShare",
|
|
7254
7456
|
value: function stopWhiteboardShare(channelUrl) {
|
|
7255
|
-
var
|
|
7457
|
+
var _this46 = this;
|
|
7256
7458
|
var whiteboard = this.locusInfo.mediaShares.find(function (element) {
|
|
7257
7459
|
return element.name === 'whiteboard';
|
|
7258
7460
|
});
|
|
@@ -7275,8 +7477,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7275
7477
|
}).catch(function (error) {
|
|
7276
7478
|
_loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
|
|
7277
7479
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
|
|
7278
|
-
correlation_id:
|
|
7279
|
-
locus_id:
|
|
7480
|
+
correlation_id: _this46.correlationId,
|
|
7481
|
+
locus_id: _this46.locusUrl.split('/').pop(),
|
|
7280
7482
|
reason: error.message,
|
|
7281
7483
|
stack: error.stack,
|
|
7282
7484
|
board: {
|
|
@@ -7298,7 +7500,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7298
7500
|
}, {
|
|
7299
7501
|
key: "requestScreenShareFloor",
|
|
7300
7502
|
value: function requestScreenShareFloor() {
|
|
7301
|
-
var
|
|
7503
|
+
var _this47 = this;
|
|
7302
7504
|
if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
|
|
7303
7505
|
_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, ")"));
|
|
7304
7506
|
this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
|
|
@@ -7329,34 +7531,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7329
7531
|
resourceUrl: this.resourceUrl,
|
|
7330
7532
|
shareInstanceId: this.localShareInstanceId
|
|
7331
7533
|
}).then(function () {
|
|
7332
|
-
|
|
7534
|
+
_this47.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
|
|
7333
7535
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
|
|
7334
|
-
correlation_id:
|
|
7335
|
-
locus_id:
|
|
7536
|
+
correlation_id: _this47.correlationId,
|
|
7537
|
+
locus_id: _this47.locusUrl.split('/').pop()
|
|
7336
7538
|
});
|
|
7337
7539
|
return _promise.default.resolve();
|
|
7338
7540
|
}).catch(function (error) {
|
|
7339
7541
|
_loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
|
|
7340
7542
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
|
|
7341
|
-
correlation_id:
|
|
7342
|
-
locus_id:
|
|
7543
|
+
correlation_id: _this47.correlationId,
|
|
7544
|
+
locus_id: _this47.locusUrl.split('/').pop(),
|
|
7343
7545
|
reason: error.message,
|
|
7344
7546
|
stack: error.stack
|
|
7345
7547
|
});
|
|
7346
7548
|
|
|
7347
7549
|
// @ts-ignore
|
|
7348
|
-
|
|
7550
|
+
_this47.webex.internal.newMetrics.submitClientEvent({
|
|
7349
7551
|
name: 'client.share.floor-granted.local',
|
|
7350
7552
|
payload: {
|
|
7351
7553
|
mediaType: 'share',
|
|
7352
7554
|
errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
|
|
7353
|
-
shareInstanceId:
|
|
7555
|
+
shareInstanceId: _this47.localShareInstanceId
|
|
7354
7556
|
},
|
|
7355
7557
|
options: {
|
|
7356
|
-
meetingId:
|
|
7558
|
+
meetingId: _this47.id
|
|
7357
7559
|
}
|
|
7358
7560
|
});
|
|
7359
|
-
|
|
7561
|
+
_this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
|
|
7360
7562
|
return _promise.default.reject(error);
|
|
7361
7563
|
});
|
|
7362
7564
|
}
|
|
@@ -7379,10 +7581,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7379
7581
|
}, {
|
|
7380
7582
|
key: "requestScreenShareFloorIfPending",
|
|
7381
7583
|
value: function requestScreenShareFloorIfPending() {
|
|
7382
|
-
var
|
|
7584
|
+
var _this48 = this;
|
|
7383
7585
|
if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
|
|
7384
7586
|
this.requestScreenShareFloor().then(function () {
|
|
7385
|
-
|
|
7587
|
+
_this48.floorGrantPending = false;
|
|
7386
7588
|
});
|
|
7387
7589
|
}
|
|
7388
7590
|
}
|
|
@@ -7396,7 +7598,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7396
7598
|
}, {
|
|
7397
7599
|
key: "releaseScreenShareFloor",
|
|
7398
7600
|
value: function releaseScreenShareFloor() {
|
|
7399
|
-
var
|
|
7601
|
+
var _this49 = this;
|
|
7400
7602
|
var content = this.locusInfo.mediaShares.find(function (element) {
|
|
7401
7603
|
return element.name === _constants.CONTENT;
|
|
7402
7604
|
});
|
|
@@ -7431,8 +7633,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7431
7633
|
}).catch(function (error) {
|
|
7432
7634
|
_loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
|
|
7433
7635
|
_metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
|
|
7434
|
-
correlation_id:
|
|
7435
|
-
locus_id:
|
|
7636
|
+
correlation_id: _this49.correlationId,
|
|
7637
|
+
locus_id: _this49.locusUrl.split('/').pop(),
|
|
7436
7638
|
reason: error.message,
|
|
7437
7639
|
stack: error.stack
|
|
7438
7640
|
});
|
|
@@ -7611,14 +7813,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7611
7813
|
}, {
|
|
7612
7814
|
key: "changeVideoLayout",
|
|
7613
7815
|
value: function changeVideoLayout(layoutType) {
|
|
7614
|
-
var
|
|
7816
|
+
var _this50 = this;
|
|
7615
7817
|
var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
7616
7818
|
var main = renderInfo.main,
|
|
7617
7819
|
content = renderInfo.content;
|
|
7618
|
-
var _this$
|
|
7619
|
-
mediaDirection = _this$
|
|
7620
|
-
remoteShareStream = _this$
|
|
7621
|
-
remoteVideoStream = _this$
|
|
7820
|
+
var _this$mediaProperties34 = this.mediaProperties,
|
|
7821
|
+
mediaDirection = _this$mediaProperties34.mediaDirection,
|
|
7822
|
+
remoteShareStream = _this$mediaProperties34.remoteShareStream,
|
|
7823
|
+
remoteVideoStream = _this$mediaProperties34.remoteVideoStream;
|
|
7622
7824
|
var layoutInfo = (0, _lodash.cloneDeep)(this.lastVideoLayoutInfo);
|
|
7623
7825
|
|
|
7624
7826
|
// TODO: We need a real time value for Audio, Video and Share send indicator
|
|
@@ -7665,7 +7867,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7665
7867
|
}
|
|
7666
7868
|
this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
|
|
7667
7869
|
this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
|
|
7668
|
-
_triggerProxy.default.trigger(
|
|
7870
|
+
_triggerProxy.default.trigger(_this50, {
|
|
7669
7871
|
file: 'meeting/index',
|
|
7670
7872
|
function: 'changeVideoLayout'
|
|
7671
7873
|
}, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
|
|
@@ -7781,7 +7983,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7781
7983
|
}, {
|
|
7782
7984
|
key: "endMeetingForAll",
|
|
7783
7985
|
value: function endMeetingForAll() {
|
|
7784
|
-
var
|
|
7986
|
+
var _this51 = this;
|
|
7785
7987
|
// @ts-ignore
|
|
7786
7988
|
this.webex.internal.newMetrics.submitClientEvent({
|
|
7787
7989
|
name: 'client.call.leave',
|
|
@@ -7799,25 +8001,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7799
8001
|
locus_id: this.locusId
|
|
7800
8002
|
});
|
|
7801
8003
|
return _util2.default.endMeetingForAll(this).then(function (end) {
|
|
7802
|
-
|
|
7803
|
-
|
|
8004
|
+
_this51.meetingFiniteStateMachine.end();
|
|
8005
|
+
_this51.clearMeetingData();
|
|
7804
8006
|
// upload logs on leave irrespective of meeting delete
|
|
7805
|
-
_triggerProxy.default.trigger(
|
|
8007
|
+
_triggerProxy.default.trigger(_this51, {
|
|
7806
8008
|
file: 'meeting/index',
|
|
7807
8009
|
function: 'endMeetingForAll'
|
|
7808
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
8010
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
|
|
7809
8011
|
return end;
|
|
7810
8012
|
}).catch(function (error) {
|
|
7811
|
-
|
|
8013
|
+
_this51.meetingFiniteStateMachine.fail(error);
|
|
7812
8014
|
_loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
|
|
7813
8015
|
// upload logs on leave irrespective of meeting delete
|
|
7814
|
-
_triggerProxy.default.trigger(
|
|
8016
|
+
_triggerProxy.default.trigger(_this51, {
|
|
7815
8017
|
file: 'meeting/index',
|
|
7816
8018
|
function: 'endMeetingForAll'
|
|
7817
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
8019
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this51);
|
|
7818
8020
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
|
|
7819
|
-
correlation_id:
|
|
7820
|
-
locus_id:
|
|
8021
|
+
correlation_id: _this51.correlationId,
|
|
8022
|
+
locus_id: _this51.locusUrl.split('/').pop(),
|
|
7821
8023
|
reason: error.message,
|
|
7822
8024
|
stack: error.stack,
|
|
7823
8025
|
code: error.code
|
|
@@ -7890,8 +8092,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7890
8092
|
}, {
|
|
7891
8093
|
key: "checkMediaConnection",
|
|
7892
8094
|
value: function checkMediaConnection() {
|
|
7893
|
-
var _this$
|
|
7894
|
-
if ((_this$
|
|
8095
|
+
var _this$mediaProperties35;
|
|
8096
|
+
if ((_this$mediaProperties35 = this.mediaProperties) !== null && _this$mediaProperties35 !== void 0 && _this$mediaProperties35.webrtcMediaConnection) {
|
|
7895
8097
|
return;
|
|
7896
8098
|
}
|
|
7897
8099
|
throw new _webexErrors.NoMediaEstablishedYetError();
|
|
@@ -7938,7 +8140,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7938
8140
|
}
|
|
7939
8141
|
}, _callee34, this);
|
|
7940
8142
|
}));
|
|
7941
|
-
function enableMusicMode(
|
|
8143
|
+
function enableMusicMode(_x36) {
|
|
7942
8144
|
return _enableMusicMode.apply(this, arguments);
|
|
7943
8145
|
}
|
|
7944
8146
|
return enableMusicMode;
|
|
@@ -7951,15 +8153,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7951
8153
|
}, {
|
|
7952
8154
|
key: "updateTranscodedMediaConnection",
|
|
7953
8155
|
value: function updateTranscodedMediaConnection() {
|
|
7954
|
-
var _this$
|
|
7955
|
-
_this$
|
|
7956
|
-
_this$
|
|
7957
|
-
_this$
|
|
7958
|
-
_this$
|
|
7959
|
-
_this$
|
|
7960
|
-
_this$
|
|
7961
|
-
_this$
|
|
7962
|
-
|
|
8156
|
+
var _this$mediaProperties36,
|
|
8157
|
+
_this$mediaProperties37,
|
|
8158
|
+
_this$mediaProperties38,
|
|
8159
|
+
_this$mediaProperties39,
|
|
8160
|
+
_this$mediaProperties40,
|
|
8161
|
+
_this$mediaProperties41,
|
|
8162
|
+
_this$mediaProperties42,
|
|
8163
|
+
_this$mediaProperties43,
|
|
8164
|
+
_this52 = this;
|
|
7963
8165
|
var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
|
|
7964
8166
|
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
|
|
7965
8167
|
if (!this.canUpdateMedia()) {
|
|
@@ -7968,10 +8170,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7968
8170
|
return this.mediaProperties.webrtcMediaConnection.update({
|
|
7969
8171
|
// TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now
|
|
7970
8172
|
localTracks: {
|
|
7971
|
-
audio: ((_this$
|
|
7972
|
-
video: ((_this$
|
|
7973
|
-
screenShareVideo: ((_this$
|
|
7974
|
-
screenShareAudio: ((_this$
|
|
8173
|
+
audio: ((_this$mediaProperties36 = this.mediaProperties.audioStream) === null || _this$mediaProperties36 === void 0 ? void 0 : (_this$mediaProperties37 = _this$mediaProperties36.outputStream) === null || _this$mediaProperties37 === void 0 ? void 0 : _this$mediaProperties37.getTracks()[0]) || null,
|
|
8174
|
+
video: ((_this$mediaProperties38 = this.mediaProperties.videoStream) === null || _this$mediaProperties38 === void 0 ? void 0 : (_this$mediaProperties39 = _this$mediaProperties38.outputStream) === null || _this$mediaProperties39 === void 0 ? void 0 : _this$mediaProperties39.getTracks()[0]) || null,
|
|
8175
|
+
screenShareVideo: ((_this$mediaProperties40 = this.mediaProperties.shareVideoStream) === null || _this$mediaProperties40 === void 0 ? void 0 : (_this$mediaProperties41 = _this$mediaProperties40.outputStream) === null || _this$mediaProperties41 === void 0 ? void 0 : _this$mediaProperties41.getTracks()[0]) || null,
|
|
8176
|
+
screenShareAudio: ((_this$mediaProperties42 = this.mediaProperties.shareAudioStream) === null || _this$mediaProperties42 === void 0 ? void 0 : (_this$mediaProperties43 = _this$mediaProperties42.outputStream) === null || _this$mediaProperties43 === void 0 ? void 0 : _this$mediaProperties43.getTracks()[0]) || null
|
|
7975
8177
|
},
|
|
7976
8178
|
direction: {
|
|
7977
8179
|
audio: _media.default.getDirection(true, this.mediaProperties.mediaDirection.receiveAudio, this.mediaProperties.mediaDirection.sendAudio),
|
|
@@ -7984,8 +8186,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7984
8186
|
}).catch(function (error) {
|
|
7985
8187
|
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
|
|
7986
8188
|
_metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
|
|
7987
|
-
correlation_id:
|
|
7988
|
-
locus_id:
|
|
8189
|
+
correlation_id: _this52.correlationId,
|
|
8190
|
+
locus_id: _this52.locusUrl.split('/').pop(),
|
|
7989
8191
|
reason: error.message,
|
|
7990
8192
|
stack: error.stack
|
|
7991
8193
|
});
|
|
@@ -8062,7 +8264,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8062
8264
|
}
|
|
8063
8265
|
}, _callee35, this);
|
|
8064
8266
|
}));
|
|
8065
|
-
function publishStream(
|
|
8267
|
+
function publishStream(_x37, _x38) {
|
|
8066
8268
|
return _publishStream.apply(this, arguments);
|
|
8067
8269
|
}
|
|
8068
8270
|
return publishStream;
|
|
@@ -8107,7 +8309,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8107
8309
|
}
|
|
8108
8310
|
}, _callee36, this);
|
|
8109
8311
|
}));
|
|
8110
|
-
function unpublishStream(
|
|
8312
|
+
function unpublishStream(_x39, _x40) {
|
|
8111
8313
|
return _unpublishStream.apply(this, arguments);
|
|
8112
8314
|
}
|
|
8113
8315
|
return unpublishStream;
|
|
@@ -8214,7 +8416,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8214
8416
|
}
|
|
8215
8417
|
}, _callee37, this);
|
|
8216
8418
|
}));
|
|
8217
|
-
function publishStreams(
|
|
8419
|
+
function publishStreams(_x41) {
|
|
8218
8420
|
return _publishStreams.apply(this, arguments);
|
|
8219
8421
|
}
|
|
8220
8422
|
return publishStreams;
|
|
@@ -8288,7 +8490,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8288
8490
|
}
|
|
8289
8491
|
}, _callee38, this);
|
|
8290
8492
|
}));
|
|
8291
|
-
function unpublishStreams(
|
|
8493
|
+
function unpublishStreams(_x42) {
|
|
8292
8494
|
return _unpublishStreams.apply(this, arguments);
|
|
8293
8495
|
}
|
|
8294
8496
|
return unpublishStreams;
|