@webex/plugin-meetings 3.7.0-next.33 → 3.7.0-next.35
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 +1 -1
- package/dist/common/errors/multistream-not-supported-error.js +53 -0
- package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +242 -164
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +9 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meetings/util.js +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/roap/index.js +10 -8
- package/dist/roap/index.js.map +1 -1
- package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
- package/dist/types/constants.d.ts +5 -0
- package/dist/types/meeting/index.d.ts +11 -2
- package/dist/types/meeting/locusMediaRequest.d.ts +4 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +21 -21
- package/src/common/errors/multistream-not-supported-error.ts +30 -0
- package/src/constants.ts +5 -0
- package/src/meeting/index.ts +92 -26
- package/src/meeting/locusMediaRequest.ts +7 -0
- package/src/meetings/util.ts +2 -1
- package/src/roap/index.ts +10 -8
- package/test/unit/spec/meeting/index.js +303 -21
- package/test/unit/spec/meetings/utils.js +10 -0
- package/test/unit/spec/roap/index.ts +47 -0
package/dist/meeting/index.js
CHANGED
|
@@ -88,6 +88,7 @@ var _permission = _interopRequireDefault(require("../common/errors/permission"))
|
|
|
88
88
|
var _locusMediaRequest = require("./locusMediaRequest");
|
|
89
89
|
var _connectionStateHandler = require("./connectionStateHandler");
|
|
90
90
|
var _joinWebinarError = _interopRequireDefault(require("../common/errors/join-webinar-error"));
|
|
91
|
+
var _multistreamNotSupportedError = _interopRequireDefault(require("../common/errors/multistream-not-supported-error"));
|
|
91
92
|
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; } } }; }
|
|
92
93
|
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); }
|
|
93
94
|
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; }
|
|
@@ -680,6 +681,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
680
681
|
*/
|
|
681
682
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "roapMessageReceived", function (roapMessage) {
|
|
682
683
|
var mediaServer = _util3.default.getMediaServer(roapMessage.sdp);
|
|
684
|
+
if (_this.isMultistream && mediaServer !== 'homer') {
|
|
685
|
+
throw new _multistreamNotSupportedError.default("Client asked for multistream backend (Homer), but got ".concat(mediaServer, " instead"));
|
|
686
|
+
}
|
|
683
687
|
_this.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);
|
|
684
688
|
if (mediaServer) {
|
|
685
689
|
_this.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;
|
|
@@ -774,15 +778,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
774
778
|
}), {
|
|
775
779
|
logText: "".concat(LOG_HEADER, " Roap Offer")
|
|
776
780
|
}).catch(function (error) {
|
|
781
|
+
var multistreamNotSupported = error instanceof _multistreamNotSupportedError.default;
|
|
782
|
+
|
|
777
783
|
// @ts-ignore
|
|
778
784
|
_this.webex.internal.newMetrics.submitClientEvent({
|
|
779
785
|
name: 'client.media-engine.remote-sdp-received',
|
|
780
786
|
payload: {
|
|
781
|
-
canProceed:
|
|
787
|
+
canProceed: multistreamNotSupported,
|
|
782
788
|
errors: [
|
|
783
789
|
// @ts-ignore
|
|
784
790
|
_this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
|
|
785
|
-
clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
|
|
791
|
+
clientErrorCode: multistreamNotSupported ? _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE : _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
|
|
786
792
|
})]
|
|
787
793
|
},
|
|
788
794
|
options: {
|
|
@@ -790,7 +796,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
790
796
|
rawError: error
|
|
791
797
|
}
|
|
792
798
|
});
|
|
793
|
-
_this.deferSDPAnswer.reject(
|
|
799
|
+
_this.deferSDPAnswer.reject(error);
|
|
794
800
|
clearTimeout(_this.sdpResponseTimer);
|
|
795
801
|
_this.sdpResponseTimer = undefined;
|
|
796
802
|
});
|
|
@@ -1385,10 +1391,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1385
1391
|
_loggerProxy.default.logger.warn('Meeting:index#startKeepAlive --> keepAlive not started: keepAliveSecs <= 1');
|
|
1386
1392
|
return;
|
|
1387
1393
|
}
|
|
1388
|
-
var keepAliveUrl = _this.joinedWith.keepAliveUrl;
|
|
1389
1394
|
var keepAliveInterval = (_this.joinedWith.keepAliveSecs - 1) * 750; // taken from UCF
|
|
1390
1395
|
|
|
1391
1396
|
_this.keepAliveTimerId = setInterval(function () {
|
|
1397
|
+
var keepAliveUrl = _this.joinedWith.keepAliveUrl;
|
|
1392
1398
|
_this.meetingRequest.keepAlive({
|
|
1393
1399
|
keepAliveUrl: keepAliveUrl
|
|
1394
1400
|
}).catch(function (error) {
|
|
@@ -5072,6 +5078,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5072
5078
|
* Close the peer connections and remove them from the class.
|
|
5073
5079
|
* Cleanup any media connection related things.
|
|
5074
5080
|
*
|
|
5081
|
+
* @param {boolean} resetMuteStates whether to also reset the audio/video mute state information
|
|
5075
5082
|
* @returns {Promise}
|
|
5076
5083
|
* @public
|
|
5077
5084
|
* @memberof Meeting
|
|
@@ -5079,6 +5086,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5079
5086
|
}, {
|
|
5080
5087
|
key: "closePeerConnections",
|
|
5081
5088
|
value: function closePeerConnections() {
|
|
5089
|
+
var resetMuteStates = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
5082
5090
|
if (this.mediaProperties.webrtcMediaConnection) {
|
|
5083
5091
|
if (this.remoteMediaManager) {
|
|
5084
5092
|
this.remoteMediaManager.stop();
|
|
@@ -5092,8 +5100,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5092
5100
|
this.sendSlotManager.reset();
|
|
5093
5101
|
this.setNetworkStatus(undefined);
|
|
5094
5102
|
}
|
|
5095
|
-
|
|
5096
|
-
|
|
5103
|
+
if (resetMuteStates) {
|
|
5104
|
+
this.audio = null;
|
|
5105
|
+
this.video = null;
|
|
5106
|
+
}
|
|
5097
5107
|
return _promise.default.resolve();
|
|
5098
5108
|
}
|
|
5099
5109
|
|
|
@@ -5357,7 +5367,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5357
5367
|
* @param {Object} options - options to join with media
|
|
5358
5368
|
* @param {JoinOptions} [options.joinOptions] - see #join()
|
|
5359
5369
|
* @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()
|
|
5360
|
-
* @returns {Promise} -- {join: see join(), media: see addMedia()}
|
|
5370
|
+
* @returns {Promise} -- {join: see join(), media: see addMedia(), multistreamEnabled: flag to indicate if we managed to join in multistream mode}
|
|
5361
5371
|
* @public
|
|
5362
5372
|
* @memberof Meeting
|
|
5363
5373
|
* @example
|
|
@@ -5465,32 +5475,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5465
5475
|
};
|
|
5466
5476
|
return _context16.abrupt("return", {
|
|
5467
5477
|
join: joinResponse,
|
|
5468
|
-
media: mediaResponse
|
|
5478
|
+
media: mediaResponse,
|
|
5479
|
+
multistreamEnabled: this.isMultistream
|
|
5469
5480
|
});
|
|
5470
5481
|
case 42:
|
|
5471
5482
|
_context16.prev = 42;
|
|
5472
5483
|
_context16.t0 = _context16["catch"](9);
|
|
5473
5484
|
_loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> ', _context16.t0);
|
|
5474
5485
|
this.roap.abortTurnDiscovery();
|
|
5475
|
-
|
|
5476
|
-
|
|
5486
|
+
|
|
5487
|
+
// if this was the first attempt, let's do a retry
|
|
5488
|
+
shouldRetry = !isRetry;
|
|
5489
|
+
if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_context16.t0)) {
|
|
5490
|
+
// errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,
|
|
5491
|
+
// so there is no point doing a retry
|
|
5492
|
+
shouldRetry = false;
|
|
5493
|
+
}
|
|
5494
|
+
|
|
5495
|
+
// we only want to call leave if join was successful and this was a retry or we won't be doing any more retries
|
|
5496
|
+
if (!(joined && (isRetry || !shouldRetry))) {
|
|
5497
|
+
_context16.next = 58;
|
|
5477
5498
|
break;
|
|
5478
5499
|
}
|
|
5479
|
-
_context16.prev =
|
|
5480
|
-
_context16.next =
|
|
5500
|
+
_context16.prev = 49;
|
|
5501
|
+
_context16.next = 52;
|
|
5481
5502
|
return this.leave({
|
|
5482
5503
|
resourceId: joinOptions === null || joinOptions === void 0 ? void 0 : joinOptions.resourceId,
|
|
5483
5504
|
reason: 'joinWithMedia failure'
|
|
5484
5505
|
});
|
|
5485
|
-
case 50:
|
|
5486
|
-
_context16.next = 56;
|
|
5487
|
-
break;
|
|
5488
5506
|
case 52:
|
|
5489
|
-
_context16.
|
|
5490
|
-
|
|
5507
|
+
_context16.next = 58;
|
|
5508
|
+
break;
|
|
5509
|
+
case 54:
|
|
5510
|
+
_context16.prev = 54;
|
|
5511
|
+
_context16.t1 = _context16["catch"](49);
|
|
5491
5512
|
_loggerProxy.default.logger.error('Meeting:index#joinWithMedia --> leave error', _context16.t1);
|
|
5492
5513
|
leaveError = _context16.t1;
|
|
5493
|
-
case
|
|
5514
|
+
case 58:
|
|
5494
5515
|
_metrics.default.sendBehavioralMetric(_constants2.default.JOIN_WITH_MEDIA_FAILURE, {
|
|
5495
5516
|
correlation_id: this.correlationId,
|
|
5496
5517
|
locus_id: (_this$locusUrl = this.locusUrl) === null || _this$locusUrl === void 0 ? void 0 : _this$locusUrl.split('/').pop(),
|
|
@@ -5502,14 +5523,6 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5502
5523
|
}, {
|
|
5503
5524
|
type: _context16.t0.name
|
|
5504
5525
|
});
|
|
5505
|
-
|
|
5506
|
-
// if this was the first attempt, let's do a retry
|
|
5507
|
-
shouldRetry = !isRetry;
|
|
5508
|
-
if (_internalPluginMetrics.CallDiagnosticUtils.isSdpOfferCreationError(_context16.t0)) {
|
|
5509
|
-
// errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,
|
|
5510
|
-
// so there is no point doing a retry
|
|
5511
|
-
shouldRetry = false;
|
|
5512
|
-
}
|
|
5513
5526
|
if (!shouldRetry) {
|
|
5514
5527
|
_context16.next = 64;
|
|
5515
5528
|
break;
|
|
@@ -5528,7 +5541,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5528
5541
|
case "end":
|
|
5529
5542
|
return _context16.stop();
|
|
5530
5543
|
}
|
|
5531
|
-
}, _callee16, this, [[9, 42], [
|
|
5544
|
+
}, _callee16, this, [[9, 42], [49, 54]]);
|
|
5532
5545
|
}));
|
|
5533
5546
|
function joinWithMedia() {
|
|
5534
5547
|
return _joinWithMedia.apply(this, arguments);
|
|
@@ -6975,7 +6988,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6975
6988
|
return this.createMediaConnection(turnServerInfo, bundlePolicy);
|
|
6976
6989
|
case 11:
|
|
6977
6990
|
mc = _context30.sent;
|
|
6978
|
-
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created"));
|
|
6991
|
+
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created this.isMultistream=").concat(this.isMultistream));
|
|
6979
6992
|
if (!this.isMultistream) {
|
|
6980
6993
|
_context30.next = 21;
|
|
6981
6994
|
break;
|
|
@@ -7070,6 +7083,49 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7070
7083
|
}
|
|
7071
7084
|
return cleanUpOnAddMediaFailure;
|
|
7072
7085
|
}()
|
|
7086
|
+
/**
|
|
7087
|
+
* Cleans up stats analyzer, peer connection and other things before
|
|
7088
|
+
* we can create a new transcoded media connection
|
|
7089
|
+
*
|
|
7090
|
+
* @private
|
|
7091
|
+
* @returns {Promise<void>}
|
|
7092
|
+
*/
|
|
7093
|
+
)
|
|
7094
|
+
}, {
|
|
7095
|
+
key: "downgradeFromMultistreamToTranscoded",
|
|
7096
|
+
value: (function () {
|
|
7097
|
+
var _downgradeFromMultistreamToTranscoded = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32() {
|
|
7098
|
+
var _this$locusMediaReque2;
|
|
7099
|
+
return _regenerator.default.wrap(function _callee32$(_context32) {
|
|
7100
|
+
while (1) switch (_context32.prev = _context32.next) {
|
|
7101
|
+
case 0:
|
|
7102
|
+
if (!this.statsAnalyzer) {
|
|
7103
|
+
_context32.next = 3;
|
|
7104
|
+
break;
|
|
7105
|
+
}
|
|
7106
|
+
_context32.next = 3;
|
|
7107
|
+
return this.statsAnalyzer.stopAnalyzer();
|
|
7108
|
+
case 3:
|
|
7109
|
+
this.statsAnalyzer = null;
|
|
7110
|
+
this.isMultistream = false;
|
|
7111
|
+
if (this.mediaProperties.webrtcMediaConnection) {
|
|
7112
|
+
// close peer connection, but don't reset mute state information, because we will want to use it on the retry
|
|
7113
|
+
this.closePeerConnections(false);
|
|
7114
|
+
this.mediaProperties.unsetPeerConnection();
|
|
7115
|
+
}
|
|
7116
|
+
(_this$locusMediaReque2 = this.locusMediaRequest) === null || _this$locusMediaReque2 === void 0 ? void 0 : _this$locusMediaReque2.downgradeFromMultistreamToTranscoded();
|
|
7117
|
+
this.createStatsAnalyzer();
|
|
7118
|
+
case 8:
|
|
7119
|
+
case "end":
|
|
7120
|
+
return _context32.stop();
|
|
7121
|
+
}
|
|
7122
|
+
}, _callee32, this);
|
|
7123
|
+
}));
|
|
7124
|
+
function downgradeFromMultistreamToTranscoded() {
|
|
7125
|
+
return _downgradeFromMultistreamToTranscoded.apply(this, arguments);
|
|
7126
|
+
}
|
|
7127
|
+
return downgradeFromMultistreamToTranscoded;
|
|
7128
|
+
}()
|
|
7073
7129
|
/**
|
|
7074
7130
|
* Sends stats report, closes peer connection and cleans up any media connection
|
|
7075
7131
|
* related things before trying to establish media connection again with turn server
|
|
@@ -7081,11 +7137,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7081
7137
|
}, {
|
|
7082
7138
|
key: "cleanUpBeforeRetryWithTurnServer",
|
|
7083
7139
|
value: (function () {
|
|
7084
|
-
var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
7085
|
-
return _regenerator.default.wrap(function
|
|
7086
|
-
while (1) switch (
|
|
7140
|
+
var _cleanUpBeforeRetryWithTurnServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33() {
|
|
7141
|
+
return _regenerator.default.wrap(function _callee33$(_context33) {
|
|
7142
|
+
while (1) switch (_context33.prev = _context33.next) {
|
|
7087
7143
|
case 0:
|
|
7088
|
-
|
|
7144
|
+
_context33.next = 2;
|
|
7089
7145
|
return this.forceSendStatsReport({
|
|
7090
7146
|
callFrom: 'cleanUpBeforeRetryWithTurnServer'
|
|
7091
7147
|
});
|
|
@@ -7105,9 +7161,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7105
7161
|
}
|
|
7106
7162
|
case 3:
|
|
7107
7163
|
case "end":
|
|
7108
|
-
return
|
|
7164
|
+
return _context33.stop();
|
|
7109
7165
|
}
|
|
7110
|
-
},
|
|
7166
|
+
}, _callee33, this);
|
|
7111
7167
|
}));
|
|
7112
7168
|
function cleanUpBeforeRetryWithTurnServer() {
|
|
7113
7169
|
return _cleanUpBeforeRetryWithTurnServer.apply(this, arguments);
|
|
@@ -7117,34 +7173,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7117
7173
|
}, {
|
|
7118
7174
|
key: "cleanUpBeforeReconnection",
|
|
7119
7175
|
value: function () {
|
|
7120
|
-
var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
7121
|
-
return _regenerator.default.wrap(function
|
|
7122
|
-
while (1) switch (
|
|
7176
|
+
var _cleanUpBeforeReconnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34() {
|
|
7177
|
+
return _regenerator.default.wrap(function _callee34$(_context34) {
|
|
7178
|
+
while (1) switch (_context34.prev = _context34.next) {
|
|
7123
7179
|
case 0:
|
|
7124
|
-
|
|
7125
|
-
|
|
7180
|
+
_context34.prev = 0;
|
|
7181
|
+
_context34.next = 3;
|
|
7126
7182
|
return this.forceSendStatsReport({
|
|
7127
7183
|
callFrom: 'cleanUpBeforeReconnection'
|
|
7128
7184
|
});
|
|
7129
7185
|
case 3:
|
|
7130
7186
|
if (!this.statsAnalyzer) {
|
|
7131
|
-
|
|
7187
|
+
_context34.next = 6;
|
|
7132
7188
|
break;
|
|
7133
7189
|
}
|
|
7134
|
-
|
|
7190
|
+
_context34.next = 6;
|
|
7135
7191
|
return this.statsAnalyzer.stopAnalyzer();
|
|
7136
7192
|
case 6:
|
|
7137
|
-
|
|
7193
|
+
_context34.next = 11;
|
|
7138
7194
|
break;
|
|
7139
7195
|
case 8:
|
|
7140
|
-
|
|
7141
|
-
|
|
7142
|
-
_loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ',
|
|
7196
|
+
_context34.prev = 8;
|
|
7197
|
+
_context34.t0 = _context34["catch"](0);
|
|
7198
|
+
_loggerProxy.default.logger.error('Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ', _context34.t0);
|
|
7143
7199
|
case 11:
|
|
7144
7200
|
case "end":
|
|
7145
|
-
return
|
|
7201
|
+
return _context34.stop();
|
|
7146
7202
|
}
|
|
7147
|
-
},
|
|
7203
|
+
}, _callee34, this, [[0, 8]]);
|
|
7148
7204
|
}));
|
|
7149
7205
|
function cleanUpBeforeReconnection() {
|
|
7150
7206
|
return _cleanUpBeforeReconnection.apply(this, arguments);
|
|
@@ -7212,7 +7268,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7212
7268
|
}, {
|
|
7213
7269
|
key: "addMediaInternal",
|
|
7214
7270
|
value: (function () {
|
|
7215
|
-
var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
7271
|
+
var _addMediaInternal = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(icePhaseCallback, turnServerInfo, forceTurnDiscovery) {
|
|
7216
7272
|
var options,
|
|
7217
7273
|
LOG_HEADER,
|
|
7218
7274
|
localStreams,
|
|
@@ -7260,24 +7316,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7260
7316
|
_selectedCandidatePairChanges,
|
|
7261
7317
|
_numTransports,
|
|
7262
7318
|
_iceCandidateErrors,
|
|
7263
|
-
|
|
7264
|
-
return _regenerator.default.wrap(function
|
|
7265
|
-
while (1) switch (
|
|
7319
|
+
_args35 = arguments;
|
|
7320
|
+
return _regenerator.default.wrap(function _callee35$(_context35) {
|
|
7321
|
+
while (1) switch (_context35.prev = _context35.next) {
|
|
7266
7322
|
case 0:
|
|
7267
|
-
options =
|
|
7323
|
+
options = _args35.length > 3 && _args35[3] !== undefined ? _args35[3] : {};
|
|
7268
7324
|
this.addMediaData.retriedWithTurnServer = false;
|
|
7269
7325
|
this.addMediaData.icePhaseCallback = icePhaseCallback;
|
|
7270
7326
|
this.hasMediaConnectionConnectedAtLeastOnce = false;
|
|
7271
7327
|
LOG_HEADER = 'Meeting:index#addMedia -->';
|
|
7272
7328
|
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " called with: options=").concat((0, _stringify.default)(options), ", turnServerInfo=").concat((0, _stringify.default)(turnServerInfo), ", forceTurnDiscovery=").concat(forceTurnDiscovery));
|
|
7273
7329
|
if (!(options.allowMediaInLobby !== true && this.meetingState !== _constants.FULL_STATE.ACTIVE)) {
|
|
7274
|
-
|
|
7330
|
+
_context35.next = 8;
|
|
7275
7331
|
break;
|
|
7276
7332
|
}
|
|
7277
7333
|
throw new _webexErrors.MeetingNotActiveError();
|
|
7278
7334
|
case 8:
|
|
7279
7335
|
if (!_util2.default.isUserInLeftState(this.locusInfo)) {
|
|
7280
|
-
|
|
7336
|
+
_context35.next = 10;
|
|
7281
7337
|
break;
|
|
7282
7338
|
}
|
|
7283
7339
|
throw new _webexErrors.UserNotJoinedError();
|
|
@@ -7288,7 +7344,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7288
7344
|
// If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
|
|
7289
7345
|
// @ts-ignore - isUserUnadmitted coming from SelfUtil
|
|
7290
7346
|
if (!(this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby)) {
|
|
7291
|
-
|
|
7347
|
+
_context35.next = 14;
|
|
7292
7348
|
break;
|
|
7293
7349
|
}
|
|
7294
7350
|
throw new _webexErrors.UserInLobbyError();
|
|
@@ -7331,33 +7387,55 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7331
7387
|
});
|
|
7332
7388
|
this.audio = (0, _muteState.createMuteState)(_constants.AUDIO, this, audioEnabled);
|
|
7333
7389
|
this.video = (0, _muteState.createMuteState)(_constants.VIDEO, this, videoEnabled);
|
|
7334
|
-
|
|
7335
|
-
|
|
7390
|
+
_context35.prev = 18;
|
|
7391
|
+
_context35.next = 21;
|
|
7336
7392
|
return this.setUpLocalStreamReferences(localStreams);
|
|
7337
7393
|
case 21:
|
|
7338
7394
|
this.setMercuryListener();
|
|
7339
7395
|
this.createStatsAnalyzer();
|
|
7340
|
-
|
|
7396
|
+
_context35.prev = 23;
|
|
7397
|
+
_context35.next = 26;
|
|
7341
7398
|
return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, forceTurnDiscovery, turnServerInfo);
|
|
7342
|
-
case
|
|
7399
|
+
case 26:
|
|
7400
|
+
_context35.next = 39;
|
|
7401
|
+
break;
|
|
7402
|
+
case 28:
|
|
7403
|
+
_context35.prev = 28;
|
|
7404
|
+
_context35.t0 = _context35["catch"](23);
|
|
7405
|
+
if (!(_context35.t0 instanceof _multistreamNotSupportedError.default)) {
|
|
7406
|
+
_context35.next = 38;
|
|
7407
|
+
break;
|
|
7408
|
+
}
|
|
7409
|
+
_loggerProxy.default.logger.warn("".concat(LOG_HEADER, " we asked for multistream backend (Homer), but got transcoded backend, recreating media connection..."));
|
|
7410
|
+
_context35.next = 34;
|
|
7411
|
+
return this.downgradeFromMultistreamToTranscoded();
|
|
7412
|
+
case 34:
|
|
7413
|
+
_context35.next = 36;
|
|
7414
|
+
return this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true, undefined);
|
|
7415
|
+
case 36:
|
|
7416
|
+
_context35.next = 39;
|
|
7417
|
+
break;
|
|
7418
|
+
case 38:
|
|
7419
|
+
throw _context35.t0;
|
|
7420
|
+
case 39:
|
|
7343
7421
|
if (!this.mediaProperties.hasLocalShareStream()) {
|
|
7344
|
-
|
|
7422
|
+
_context35.next = 42;
|
|
7345
7423
|
break;
|
|
7346
7424
|
}
|
|
7347
|
-
|
|
7425
|
+
_context35.next = 42;
|
|
7348
7426
|
return this.enqueueScreenShareFloorRequest();
|
|
7349
|
-
case
|
|
7350
|
-
|
|
7427
|
+
case 42:
|
|
7428
|
+
_context35.next = 44;
|
|
7351
7429
|
return this.mediaProperties.getCurrentConnectionInfo();
|
|
7352
|
-
case
|
|
7353
|
-
_yield$this$mediaProp =
|
|
7430
|
+
case 44:
|
|
7431
|
+
_yield$this$mediaProp = _context35.sent;
|
|
7354
7432
|
connectionType = _yield$this$mediaProp.connectionType;
|
|
7355
7433
|
selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
|
|
7356
7434
|
numTransports = _yield$this$mediaProp.numTransports;
|
|
7357
|
-
|
|
7435
|
+
_context35.next = 50;
|
|
7358
7436
|
return this.webex.meetings.reachability.getReachabilityMetrics();
|
|
7359
|
-
case
|
|
7360
|
-
reachabilityStats =
|
|
7437
|
+
case 50:
|
|
7438
|
+
reachabilityStats = _context35.sent;
|
|
7361
7439
|
iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
|
|
7362
7440
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
|
|
7363
7441
|
correlation_id: this.correlationId,
|
|
@@ -7383,31 +7461,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7383
7461
|
// We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
|
|
7384
7462
|
(_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
|
|
7385
7463
|
this.startPeriodicLogUpload();
|
|
7386
|
-
|
|
7464
|
+
_context35.next = 77;
|
|
7387
7465
|
break;
|
|
7388
|
-
case
|
|
7389
|
-
|
|
7390
|
-
|
|
7391
|
-
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "),
|
|
7466
|
+
case 59:
|
|
7467
|
+
_context35.prev = 59;
|
|
7468
|
+
_context35.t1 = _context35["catch"](18);
|
|
7469
|
+
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context35.t1);
|
|
7392
7470
|
|
|
7393
7471
|
// @ts-ignore
|
|
7394
|
-
|
|
7472
|
+
_context35.next = 64;
|
|
7395
7473
|
return this.webex.meetings.reachability.getReachabilityMetrics();
|
|
7396
|
-
case
|
|
7397
|
-
reachabilityMetrics =
|
|
7398
|
-
|
|
7474
|
+
case 64:
|
|
7475
|
+
reachabilityMetrics = _context35.sent;
|
|
7476
|
+
_context35.next = 67;
|
|
7399
7477
|
return this.mediaProperties.getCurrentConnectionInfo();
|
|
7400
|
-
case
|
|
7401
|
-
_yield$this$mediaProp2 =
|
|
7478
|
+
case 67:
|
|
7479
|
+
_yield$this$mediaProp2 = _context35.sent;
|
|
7402
7480
|
_selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
|
|
7403
7481
|
_numTransports = _yield$this$mediaProp2.numTransports;
|
|
7404
7482
|
_iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
|
|
7405
7483
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, _objectSpread(_objectSpread(_objectSpread({
|
|
7406
7484
|
correlation_id: this.correlationId,
|
|
7407
7485
|
locus_id: this.locusUrl.split('/').pop(),
|
|
7408
|
-
reason:
|
|
7409
|
-
stack:
|
|
7410
|
-
code:
|
|
7486
|
+
reason: _context35.t1.message,
|
|
7487
|
+
stack: _context35.t1.stack,
|
|
7488
|
+
code: _context35.t1.code,
|
|
7411
7489
|
selectedCandidatePairChanges: _selectedCandidatePairChanges,
|
|
7412
7490
|
numTransports: _numTransports,
|
|
7413
7491
|
turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,
|
|
@@ -7421,29 +7499,29 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7421
7499
|
}, reachabilityMetrics), _iceCandidateErrors), {}, {
|
|
7422
7500
|
iceCandidatesCount: this.iceCandidatesCount
|
|
7423
7501
|
}));
|
|
7424
|
-
|
|
7502
|
+
_context35.next = 74;
|
|
7425
7503
|
return this.cleanUpOnAddMediaFailure();
|
|
7426
|
-
case
|
|
7504
|
+
case 74:
|
|
7427
7505
|
// Upload logs on error while adding media
|
|
7428
7506
|
_triggerProxy.default.trigger(this, {
|
|
7429
7507
|
file: 'meeting/index',
|
|
7430
7508
|
function: 'addMedia'
|
|
7431
7509
|
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
|
|
7432
|
-
if (
|
|
7510
|
+
if (_context35.t1 instanceof _internalMediaCore.Errors.SdpError) {
|
|
7433
7511
|
this.leave({
|
|
7434
7512
|
reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
|
|
7435
7513
|
});
|
|
7436
7514
|
}
|
|
7437
|
-
throw
|
|
7438
|
-
case
|
|
7439
|
-
|
|
7515
|
+
throw _context35.t1;
|
|
7516
|
+
case 77:
|
|
7517
|
+
_context35.prev = 77;
|
|
7440
7518
|
this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
|
|
7441
|
-
return
|
|
7442
|
-
case
|
|
7519
|
+
return _context35.finish(77);
|
|
7520
|
+
case 80:
|
|
7443
7521
|
case "end":
|
|
7444
|
-
return
|
|
7522
|
+
return _context35.stop();
|
|
7445
7523
|
}
|
|
7446
|
-
},
|
|
7524
|
+
}, _callee35, this, [[18, 59, 77, 80], [23, 28]]);
|
|
7447
7525
|
}));
|
|
7448
7526
|
function addMediaInternal(_x33, _x34, _x35) {
|
|
7449
7527
|
return _addMediaInternal.apply(this, arguments);
|
|
@@ -7511,35 +7589,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7511
7589
|
* @memberof Meeting
|
|
7512
7590
|
*/
|
|
7513
7591
|
function () {
|
|
7514
|
-
var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
7592
|
+
var _updateMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(options) {
|
|
7515
7593
|
var audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled, _this$audio3, _this$video3;
|
|
7516
|
-
return _regenerator.default.wrap(function
|
|
7517
|
-
while (1) switch (
|
|
7594
|
+
return _regenerator.default.wrap(function _callee36$(_context36) {
|
|
7595
|
+
while (1) switch (_context36.prev = _context36.next) {
|
|
7518
7596
|
case 0:
|
|
7519
7597
|
this.checkMediaConnection();
|
|
7520
7598
|
audioEnabled = options.audioEnabled, videoEnabled = options.videoEnabled, shareAudioEnabled = options.shareAudioEnabled, shareVideoEnabled = options.shareVideoEnabled;
|
|
7521
7599
|
_loggerProxy.default.logger.log("Meeting:index#updateMedia --> called with options=".concat((0, _stringify.default)(options)));
|
|
7522
7600
|
if (this.canUpdateMedia()) {
|
|
7523
|
-
|
|
7601
|
+
_context36.next = 5;
|
|
7524
7602
|
break;
|
|
7525
7603
|
}
|
|
7526
|
-
return
|
|
7604
|
+
return _context36.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options));
|
|
7527
7605
|
case 5:
|
|
7528
7606
|
if (!this.isMultistream) {
|
|
7529
|
-
|
|
7607
|
+
_context36.next = 10;
|
|
7530
7608
|
break;
|
|
7531
7609
|
}
|
|
7532
7610
|
if (!(shareAudioEnabled !== undefined || shareVideoEnabled !== undefined)) {
|
|
7533
|
-
|
|
7611
|
+
_context36.next = 8;
|
|
7534
7612
|
break;
|
|
7535
7613
|
}
|
|
7536
7614
|
throw new Error('toggling shareAudioEnabled or shareVideoEnabled in a multistream meeting is not supported, to control receiving screen share call meeting.remoteMediaManager.setLayout() with appropriate layout');
|
|
7537
7615
|
case 8:
|
|
7538
|
-
|
|
7616
|
+
_context36.next = 12;
|
|
7539
7617
|
break;
|
|
7540
7618
|
case 10:
|
|
7541
7619
|
if (!(shareAudioEnabled !== undefined)) {
|
|
7542
|
-
|
|
7620
|
+
_context36.next = 12;
|
|
7543
7621
|
break;
|
|
7544
7622
|
}
|
|
7545
7623
|
throw new Error('toggling shareAudioEnabled in a transcoded meeting is not supported as of now');
|
|
@@ -7564,18 +7642,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7564
7642
|
this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);
|
|
7565
7643
|
}
|
|
7566
7644
|
if (this.isMultistream) {
|
|
7567
|
-
|
|
7645
|
+
_context36.next = 18;
|
|
7568
7646
|
break;
|
|
7569
7647
|
}
|
|
7570
|
-
|
|
7648
|
+
_context36.next = 18;
|
|
7571
7649
|
return this.updateTranscodedMediaConnection();
|
|
7572
7650
|
case 18:
|
|
7573
|
-
return
|
|
7651
|
+
return _context36.abrupt("return", undefined);
|
|
7574
7652
|
case 19:
|
|
7575
7653
|
case "end":
|
|
7576
|
-
return
|
|
7654
|
+
return _context36.stop();
|
|
7577
7655
|
}
|
|
7578
|
-
},
|
|
7656
|
+
}, _callee36, this);
|
|
7579
7657
|
}));
|
|
7580
7658
|
function updateMedia(_x36) {
|
|
7581
7659
|
return _updateMedia.apply(this, arguments);
|
|
@@ -8217,7 +8295,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8217
8295
|
}
|
|
8218
8296
|
if (layoutType) {
|
|
8219
8297
|
if (!_constants.LAYOUT_TYPES.includes(layoutType)) {
|
|
8220
|
-
return this.rejectWithErrorLog(
|
|
8298
|
+
return this.rejectWithErrorLog("Meeting:index#changeVideoLayout --> cannot change video layout, invalid layoutType \"".concat(layoutType, "\" received."));
|
|
8221
8299
|
}
|
|
8222
8300
|
layoutInfo.layoutType = layoutType;
|
|
8223
8301
|
}
|
|
@@ -8496,37 +8574,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8496
8574
|
}, {
|
|
8497
8575
|
key: "enableMusicMode",
|
|
8498
8576
|
value: (function () {
|
|
8499
|
-
var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
8500
|
-
return _regenerator.default.wrap(function
|
|
8501
|
-
while (1) switch (
|
|
8577
|
+
var _enableMusicMode = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(shouldEnableMusicMode) {
|
|
8578
|
+
return _regenerator.default.wrap(function _callee37$(_context37) {
|
|
8579
|
+
while (1) switch (_context37.prev = _context37.next) {
|
|
8502
8580
|
case 0:
|
|
8503
8581
|
this.checkMediaConnection();
|
|
8504
8582
|
if (this.isMultistream) {
|
|
8505
|
-
|
|
8583
|
+
_context37.next = 3;
|
|
8506
8584
|
break;
|
|
8507
8585
|
}
|
|
8508
8586
|
throw new Error('enableMusicMode() only supported with multistream');
|
|
8509
8587
|
case 3:
|
|
8510
8588
|
if (!shouldEnableMusicMode) {
|
|
8511
|
-
|
|
8589
|
+
_context37.next = 8;
|
|
8512
8590
|
break;
|
|
8513
8591
|
}
|
|
8514
|
-
|
|
8592
|
+
_context37.next = 6;
|
|
8515
8593
|
return this.sendSlotManager.setCodecParameters(_internalMediaCore.MediaType.AudioMain, {
|
|
8516
8594
|
maxaveragebitrate: '64000',
|
|
8517
8595
|
maxplaybackrate: '48000'
|
|
8518
8596
|
});
|
|
8519
8597
|
case 6:
|
|
8520
|
-
|
|
8598
|
+
_context37.next = 10;
|
|
8521
8599
|
break;
|
|
8522
8600
|
case 8:
|
|
8523
|
-
|
|
8601
|
+
_context37.next = 10;
|
|
8524
8602
|
return this.sendSlotManager.deleteCodecParameters(_internalMediaCore.MediaType.AudioMain, ['maxaveragebitrate', 'maxplaybackrate']);
|
|
8525
8603
|
case 10:
|
|
8526
8604
|
case "end":
|
|
8527
|
-
return
|
|
8605
|
+
return _context37.stop();
|
|
8528
8606
|
}
|
|
8529
|
-
},
|
|
8607
|
+
}, _callee37, this);
|
|
8530
8608
|
}));
|
|
8531
8609
|
function enableMusicMode(_x37) {
|
|
8532
8610
|
return _enableMusicMode.apply(this, arguments);
|
|
@@ -8619,25 +8697,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8619
8697
|
}, {
|
|
8620
8698
|
key: "publishStream",
|
|
8621
8699
|
value: (function () {
|
|
8622
|
-
var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
8623
|
-
return _regenerator.default.wrap(function
|
|
8624
|
-
while (1) switch (
|
|
8700
|
+
var _publishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(mediaType, stream) {
|
|
8701
|
+
return _regenerator.default.wrap(function _callee38$(_context38) {
|
|
8702
|
+
while (1) switch (_context38.prev = _context38.next) {
|
|
8625
8703
|
case 0:
|
|
8626
8704
|
if (stream) {
|
|
8627
|
-
|
|
8705
|
+
_context38.next = 2;
|
|
8628
8706
|
break;
|
|
8629
8707
|
}
|
|
8630
|
-
return
|
|
8708
|
+
return _context38.abrupt("return");
|
|
8631
8709
|
case 2:
|
|
8632
8710
|
if (!this.mediaProperties.webrtcMediaConnection) {
|
|
8633
|
-
|
|
8711
|
+
_context38.next = 7;
|
|
8634
8712
|
break;
|
|
8635
8713
|
}
|
|
8636
8714
|
if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
|
|
8637
|
-
|
|
8715
|
+
_context38.next = 6;
|
|
8638
8716
|
break;
|
|
8639
8717
|
}
|
|
8640
|
-
|
|
8718
|
+
_context38.next = 6;
|
|
8641
8719
|
return this.sendSlotManager.publishStream(mediaType, stream);
|
|
8642
8720
|
case 6:
|
|
8643
8721
|
this.emitPublishStateChangeEvent({
|
|
@@ -8648,9 +8726,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8648
8726
|
});
|
|
8649
8727
|
case 7:
|
|
8650
8728
|
case "end":
|
|
8651
|
-
return
|
|
8729
|
+
return _context38.stop();
|
|
8652
8730
|
}
|
|
8653
|
-
},
|
|
8731
|
+
}, _callee38, this);
|
|
8654
8732
|
}));
|
|
8655
8733
|
function publishStream(_x38, _x39) {
|
|
8656
8734
|
return _publishStream.apply(this, arguments);
|
|
@@ -8668,21 +8746,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8668
8746
|
}, {
|
|
8669
8747
|
key: "unpublishStream",
|
|
8670
8748
|
value: (function () {
|
|
8671
|
-
var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
8672
|
-
return _regenerator.default.wrap(function
|
|
8673
|
-
while (1) switch (
|
|
8749
|
+
var _unpublishStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(mediaType, stream) {
|
|
8750
|
+
return _regenerator.default.wrap(function _callee39$(_context39) {
|
|
8751
|
+
while (1) switch (_context39.prev = _context39.next) {
|
|
8674
8752
|
case 0:
|
|
8675
8753
|
if (stream) {
|
|
8676
|
-
|
|
8754
|
+
_context39.next = 2;
|
|
8677
8755
|
break;
|
|
8678
8756
|
}
|
|
8679
|
-
return
|
|
8757
|
+
return _context39.abrupt("return");
|
|
8680
8758
|
case 2:
|
|
8681
8759
|
if (!(this.isMultistream && this.mediaProperties.webrtcMediaConnection)) {
|
|
8682
|
-
|
|
8760
|
+
_context39.next = 5;
|
|
8683
8761
|
break;
|
|
8684
8762
|
}
|
|
8685
|
-
|
|
8763
|
+
_context39.next = 5;
|
|
8686
8764
|
return this.sendSlotManager.unpublishStream(mediaType);
|
|
8687
8765
|
case 5:
|
|
8688
8766
|
this.emitPublishStateChangeEvent({
|
|
@@ -8693,9 +8771,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8693
8771
|
});
|
|
8694
8772
|
case 6:
|
|
8695
8773
|
case "end":
|
|
8696
|
-
return
|
|
8774
|
+
return _context39.stop();
|
|
8697
8775
|
}
|
|
8698
|
-
},
|
|
8776
|
+
}, _callee39, this);
|
|
8699
8777
|
}));
|
|
8700
8778
|
function unpublishStream(_x40, _x41) {
|
|
8701
8779
|
return _unpublishStream.apply(this, arguments);
|
|
@@ -8712,19 +8790,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8712
8790
|
}, {
|
|
8713
8791
|
key: "publishStreams",
|
|
8714
8792
|
value: (function () {
|
|
8715
|
-
var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
8793
|
+
var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40(streams) {
|
|
8716
8794
|
var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
|
|
8717
8795
|
var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
|
|
8718
|
-
return _regenerator.default.wrap(function
|
|
8719
|
-
while (1) switch (
|
|
8796
|
+
return _regenerator.default.wrap(function _callee40$(_context40) {
|
|
8797
|
+
while (1) switch (_context40.prev = _context40.next) {
|
|
8720
8798
|
case 0:
|
|
8721
8799
|
_loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
|
|
8722
8800
|
this.checkMediaConnection();
|
|
8723
8801
|
if (!(!streams.microphone && !streams.camera && !((_streams$screenShare = streams.screenShare) !== null && _streams$screenShare !== void 0 && _streams$screenShare.audio) && !((_streams$screenShare2 = streams.screenShare) !== null && _streams$screenShare2 !== void 0 && _streams$screenShare2.video))) {
|
|
8724
|
-
|
|
8802
|
+
_context40.next = 4;
|
|
8725
8803
|
break;
|
|
8726
8804
|
}
|
|
8727
|
-
return
|
|
8805
|
+
return _context40.abrupt("return");
|
|
8728
8806
|
case 4:
|
|
8729
8807
|
streamChecks = [{
|
|
8730
8808
|
stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
|
|
@@ -8742,62 +8820,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8742
8820
|
_i = 0, _streamChecks = streamChecks;
|
|
8743
8821
|
case 6:
|
|
8744
8822
|
if (!(_i < _streamChecks.length)) {
|
|
8745
|
-
|
|
8823
|
+
_context40.next = 13;
|
|
8746
8824
|
break;
|
|
8747
8825
|
}
|
|
8748
8826
|
_streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
|
|
8749
8827
|
if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
|
|
8750
|
-
|
|
8828
|
+
_context40.next = 10;
|
|
8751
8829
|
break;
|
|
8752
8830
|
}
|
|
8753
8831
|
throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
|
|
8754
8832
|
case 10:
|
|
8755
8833
|
_i++;
|
|
8756
|
-
|
|
8834
|
+
_context40.next = 6;
|
|
8757
8835
|
break;
|
|
8758
8836
|
case 13:
|
|
8759
8837
|
floorRequestNeeded = false; // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting
|
|
8760
8838
|
if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
|
|
8761
|
-
|
|
8839
|
+
_context40.next = 18;
|
|
8762
8840
|
break;
|
|
8763
8841
|
}
|
|
8764
|
-
|
|
8842
|
+
_context40.next = 17;
|
|
8765
8843
|
return this.setLocalShareAudioStream(streams.screenShare.audio);
|
|
8766
8844
|
case 17:
|
|
8767
8845
|
floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
|
|
8768
8846
|
case 18:
|
|
8769
8847
|
if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
|
|
8770
|
-
|
|
8848
|
+
_context40.next = 22;
|
|
8771
8849
|
break;
|
|
8772
8850
|
}
|
|
8773
|
-
|
|
8851
|
+
_context40.next = 21;
|
|
8774
8852
|
return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
|
|
8775
8853
|
case 21:
|
|
8776
8854
|
floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
|
|
8777
8855
|
case 22:
|
|
8778
8856
|
if (!streams.microphone) {
|
|
8779
|
-
|
|
8857
|
+
_context40.next = 25;
|
|
8780
8858
|
break;
|
|
8781
8859
|
}
|
|
8782
|
-
|
|
8860
|
+
_context40.next = 25;
|
|
8783
8861
|
return this.setLocalAudioStream(streams.microphone);
|
|
8784
8862
|
case 25:
|
|
8785
8863
|
if (!streams.camera) {
|
|
8786
|
-
|
|
8864
|
+
_context40.next = 28;
|
|
8787
8865
|
break;
|
|
8788
8866
|
}
|
|
8789
|
-
|
|
8867
|
+
_context40.next = 28;
|
|
8790
8868
|
return this.setLocalVideoStream(streams.camera);
|
|
8791
8869
|
case 28:
|
|
8792
8870
|
if (this.isMultistream) {
|
|
8793
|
-
|
|
8871
|
+
_context40.next = 31;
|
|
8794
8872
|
break;
|
|
8795
8873
|
}
|
|
8796
|
-
|
|
8874
|
+
_context40.next = 31;
|
|
8797
8875
|
return this.updateTranscodedMediaConnection();
|
|
8798
8876
|
case 31:
|
|
8799
8877
|
if (!floorRequestNeeded) {
|
|
8800
|
-
|
|
8878
|
+
_context40.next = 37;
|
|
8801
8879
|
break;
|
|
8802
8880
|
}
|
|
8803
8881
|
this.localShareInstanceId = _uuid.default.v4();
|
|
@@ -8821,13 +8899,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8821
8899
|
// we're sending the http request to Locus to request the screen share floor
|
|
8822
8900
|
// only after the SDP update, because that's how it's always been done for transcoded meetings
|
|
8823
8901
|
// and also if sharing from the start, we need confluence to have been created
|
|
8824
|
-
|
|
8902
|
+
_context40.next = 37;
|
|
8825
8903
|
return this.enqueueScreenShareFloorRequest();
|
|
8826
8904
|
case 37:
|
|
8827
8905
|
case "end":
|
|
8828
|
-
return
|
|
8906
|
+
return _context40.stop();
|
|
8829
8907
|
}
|
|
8830
|
-
},
|
|
8908
|
+
}, _callee40, this);
|
|
8831
8909
|
}));
|
|
8832
8910
|
function publishStreams(_x42) {
|
|
8833
8911
|
return _publishStreams.apply(this, arguments);
|
|
@@ -8844,10 +8922,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8844
8922
|
}, {
|
|
8845
8923
|
key: "unpublishStreams",
|
|
8846
8924
|
value: (function () {
|
|
8847
|
-
var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
8925
|
+
var _unpublishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee41(streams) {
|
|
8848
8926
|
var promises, _iterator, _step, stream;
|
|
8849
|
-
return _regenerator.default.wrap(function
|
|
8850
|
-
while (1) switch (
|
|
8927
|
+
return _regenerator.default.wrap(function _callee41$(_context41) {
|
|
8928
|
+
while (1) switch (_context41.prev = _context41.next) {
|
|
8851
8929
|
case 0:
|
|
8852
8930
|
_loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
|
|
8853
8931
|
this.checkMediaConnection();
|
|
@@ -8879,7 +8957,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8879
8957
|
if (!this.isMultistream) {
|
|
8880
8958
|
promises.push(this.updateTranscodedMediaConnection());
|
|
8881
8959
|
}
|
|
8882
|
-
|
|
8960
|
+
_context41.next = 8;
|
|
8883
8961
|
return _promise.default.all(promises);
|
|
8884
8962
|
case 8:
|
|
8885
8963
|
// we're allowing for the SDK to support just audio share as well
|
|
@@ -8900,9 +8978,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
8900
8978
|
}
|
|
8901
8979
|
case 9:
|
|
8902
8980
|
case "end":
|
|
8903
|
-
return
|
|
8981
|
+
return _context41.stop();
|
|
8904
8982
|
}
|
|
8905
|
-
},
|
|
8983
|
+
}, _callee41, this);
|
|
8906
8984
|
}));
|
|
8907
8985
|
function unpublishStreams(_x43) {
|
|
8908
8986
|
return _unpublishStreams.apply(this, arguments);
|