@webex/plugin-meetings 3.0.0-beta.0 → 3.0.0-beta.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/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +7 -0
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +8 -0
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +8 -0
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +7 -0
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +7 -0
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +7 -0
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +7 -0
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +7 -0
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +5 -29
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +3 -0
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +15 -74
- package/dist/constants.js.map +1 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +43 -5
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +4 -0
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +12 -3
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +71 -210
- package/dist/media/index.js.map +1 -1
- package/dist/media/internal-media-core-wrapper.js +22 -0
- package/dist/media/internal-media-core-wrapper.js.map +1 -0
- package/dist/media/properties.js +32 -25
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +0 -27
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +8 -1
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/index.js +1130 -647
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +6 -0
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +55 -24
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +5 -44
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +4 -1
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +5 -0
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +14 -2
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -0
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +4 -1
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +136 -25
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +4 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +24 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +30 -7
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +2 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +82 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +19 -9
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +8 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +133 -0
- package/dist/multistream/mediaRequestManager.js.map +1 -0
- package/dist/multistream/multistreamMedia.js +116 -0
- package/dist/multistream/multistreamMedia.js.map +1 -0
- package/dist/multistream/receiveSlot.js +209 -0
- package/dist/multistream/receiveSlot.js.map +1 -0
- package/dist/multistream/receiveSlotManager.js +195 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -0
- package/dist/multistream/remoteMedia.js +289 -0
- package/dist/multistream/remoteMedia.js.map +1 -0
- package/dist/multistream/remoteMediaGroup.js +243 -0
- package/dist/multistream/remoteMediaGroup.js.map +1 -0
- package/dist/multistream/remoteMediaManager.js +1113 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +10 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +11 -0
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -1
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +17 -7
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +1 -0
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +130 -132
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +58 -231
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +7 -116
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +20 -6
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +2 -0
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +58 -37
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +9 -3
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +10 -3
- package/dist/transcription/index.js.map +1 -1
- package/package.json +21 -20
- package/src/common/{browser-detection.js → browser-detection.ts} +1 -1
- package/src/common/collection.ts +6 -6
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +5 -1
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +6 -1
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +6 -1
- package/src/common/errors/{media.js → media.ts} +5 -1
- package/src/common/errors/parameter.ts +3 -2
- package/src/common/errors/{password-error.js → password-error.ts} +5 -1
- package/src/common/errors/{permission.js → permission.ts} +5 -1
- package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +5 -1
- package/src/common/errors/{stats.js → stats.ts} +5 -1
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +1 -20
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +3 -1
- package/src/common/events/{events-scope.js → events-scope.ts} +1 -1
- package/src/common/events/{events.js → events.ts} +0 -0
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +1 -2
- package/src/common/events/{util.js → util.ts} +1 -1
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/{logger-proxy.js → logger-proxy.ts} +1 -1
- package/src/common/logs/{request.js → request.ts} +12 -2
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +2 -0
- package/src/constants.ts +139 -179
- package/src/locus-info/{controlsUtils.js → controlsUtils.ts} +4 -4
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +1 -1
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +5 -5
- package/src/locus-info/{index.js → index.ts} +67 -32
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +7 -4
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +13 -13
- package/src/locus-info/{parser.js → parser.ts} +22 -12
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +17 -19
- package/src/media/{index.js → index.ts} +130 -205
- package/src/media/internal-media-core-wrapper.ts +9 -0
- package/src/media/{properties.js → properties.ts} +35 -29
- package/src/media/util.ts +16 -0
- package/src/mediaQualityMetrics/{config.js → config.ts} +1 -1
- package/src/meeting/{effectsState.js → effectsState.ts} +12 -6
- package/src/meeting/{index.js → index.ts} +1016 -550
- package/src/meeting/{muteState.js → muteState.ts} +16 -11
- package/src/meeting/{request.js → request.ts} +125 -36
- package/src/meeting/{state.js → state.ts} +6 -6
- package/src/meeting/{util.js → util.ts} +9 -51
- package/src/meeting-info/{collection.js → collection.ts} +4 -1
- package/src/meeting-info/{index.js → index.ts} +10 -6
- package/src/meeting-info/{meeting-info-v2.js → meeting-info-v2.ts} +28 -10
- package/src/meeting-info/{request.js → request.ts} +6 -2
- package/src/meeting-info/{util.js → util.ts} +6 -5
- package/src/meeting-info/{utilv2.js → utilv2.ts} +8 -7
- package/src/meetings/{collection.js → collection.ts} +5 -2
- package/src/meetings/{index.js → index.ts} +118 -22
- package/src/meetings/{request.js → request.ts} +6 -1
- package/src/meetings/{util.js → util.ts} +28 -5
- package/src/member/{index.js → index.ts} +46 -15
- package/src/member/{util.js → util.ts} +17 -16
- package/src/members/{collection.js → collection.ts} +2 -1
- package/src/members/{index.js → index.ts} +94 -26
- package/src/members/{request.js → request.ts} +16 -5
- package/src/members/{util.js → util.ts} +7 -7
- package/src/metrics/{config.js → config.ts} +0 -2
- package/src/metrics/{constants.js → constants.ts} +0 -0
- package/src/metrics/{index.js → index.ts} +27 -8
- package/src/multistream/mediaRequestManager.ts +166 -0
- package/src/multistream/multistreamMedia.ts +92 -0
- package/src/multistream/receiveSlot.ts +141 -0
- package/src/multistream/receiveSlotManager.ts +142 -0
- package/src/multistream/remoteMedia.ts +228 -0
- package/src/multistream/remoteMediaGroup.ts +224 -0
- package/src/multistream/remoteMediaManager.ts +911 -0
- package/src/networkQualityMonitor/{index.js → index.ts} +18 -3
- package/src/personal-meeting-room/{index.js → index.ts} +17 -4
- package/src/personal-meeting-room/{request.js → request.ts} +3 -1
- package/src/personal-meeting-room/{util.js → util.ts} +1 -1
- package/src/reachability/{index.js → index.ts} +28 -17
- package/src/reachability/request.ts +4 -2
- package/src/reconnection-manager/{index.js → index.ts} +81 -65
- package/src/roap/index.ts +229 -0
- package/src/roap/{request.js → request.ts} +15 -74
- package/src/roap/turnDiscovery.ts +26 -11
- package/src/statsAnalyzer/{global.js → global.ts} +2 -0
- package/src/statsAnalyzer/{index.js → index.ts} +66 -61
- package/src/statsAnalyzer/{mqaUtil.js → mqaUtil.ts} +6 -1
- package/src/transcription/{index.js → index.ts} +16 -11
- package/test/integration/spec/journey.js +1 -1
- package/test/integration/spec/space-meeting.js +1 -2
- package/test/unit/spec/locus-info/infoUtils.js +17 -1
- package/test/unit/spec/media/index.ts +207 -0
- package/test/unit/spec/media/properties.ts +73 -82
- package/test/unit/spec/meeting/effectsState.js +1 -3
- package/test/unit/spec/meeting/index.js +585 -245
- package/test/unit/spec/meeting/muteState.js +7 -0
- package/test/unit/spec/meeting/utils.js +63 -2
- package/test/unit/spec/meetings/index.js +0 -4
- package/test/unit/spec/members/index.js +164 -2
- package/test/unit/spec/multistream/mediaRequestManager.ts +515 -0
- package/test/unit/spec/multistream/receiveSlot.ts +104 -0
- package/test/unit/spec/multistream/receiveSlotManager.ts +173 -0
- package/test/unit/spec/multistream/remoteMedia.ts +225 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +396 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +1309 -0
- package/test/unit/spec/reconnection-manager/index.js +68 -2
- package/test/unit/spec/roap/index.ts +63 -35
- package/test/unit/spec/stats-analyzer/index.js +19 -22
- package/dist/peer-connection-manager/index.js +0 -794
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/roap/collection.js +0 -73
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -337
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/state.js +0 -164
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/util.js +0 -102
- package/dist/roap/util.js.map +0 -1
- package/src/media/util.js +0 -38
- package/src/peer-connection-manager/index.js +0 -723
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/collection.js +0 -63
- package/src/roap/handler.js +0 -252
- package/src/roap/index.js +0 -380
- package/src/roap/state.js +0 -149
- package/src/roap/util.js +0 -93
- package/test/unit/spec/peerconnection-manager/index.js +0 -188
- package/test/unit/spec/peerconnection-manager/utils.js +0 -48
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- package/test/unit/spec/roap/util.js +0 -30
package/dist/meeting/index.js
CHANGED
|
@@ -12,11 +12,11 @@ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/
|
|
|
12
12
|
|
|
13
13
|
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
14
14
|
|
|
15
|
-
var _Object$
|
|
15
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
16
16
|
|
|
17
17
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
18
18
|
|
|
19
|
-
_Object$
|
|
19
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
20
20
|
value: true
|
|
21
21
|
});
|
|
22
22
|
|
|
@@ -28,10 +28,10 @@ var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/objec
|
|
|
28
28
|
|
|
29
29
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
30
30
|
|
|
31
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
|
|
32
|
-
|
|
33
31
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
34
32
|
|
|
33
|
+
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
34
|
+
|
|
35
35
|
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
|
|
36
36
|
|
|
37
37
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
@@ -52,7 +52,9 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
|
|
|
52
52
|
|
|
53
53
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
54
54
|
|
|
55
|
-
var
|
|
55
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
56
|
+
|
|
57
|
+
var _defer2 = _interopRequireDefault(require("lodash/defer"));
|
|
56
58
|
|
|
57
59
|
var _isString2 = _interopRequireDefault(require("lodash/isString"));
|
|
58
60
|
|
|
@@ -92,8 +94,6 @@ var _effectsState = _interopRequireDefault(require("../meeting/effectsState"));
|
|
|
92
94
|
|
|
93
95
|
var _locusInfo = _interopRequireDefault(require("../locus-info"));
|
|
94
96
|
|
|
95
|
-
var _peerConnectionManager = _interopRequireDefault(require("../peer-connection-manager"));
|
|
96
|
-
|
|
97
97
|
var _metrics = _interopRequireDefault(require("../metrics"));
|
|
98
98
|
|
|
99
99
|
var _config = require("../metrics/config");
|
|
@@ -130,13 +130,19 @@ var _meetingInfoV = require("../meeting-info/meeting-info-v2");
|
|
|
130
130
|
|
|
131
131
|
var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
|
|
132
132
|
|
|
133
|
-
var
|
|
133
|
+
var _receiveSlotManager = require("../multistream/receiveSlotManager");
|
|
134
|
+
|
|
135
|
+
var _mediaRequestManager = require("../multistream/mediaRequestManager");
|
|
136
|
+
|
|
137
|
+
var _remoteMediaManager = require("../multistream/remoteMediaManager");
|
|
138
|
+
|
|
139
|
+
var _multistreamMedia = require("../multistream/multistreamMedia");
|
|
134
140
|
|
|
135
141
|
var _inMeetingActions = _interopRequireDefault(require("./in-meeting-actions"));
|
|
136
142
|
|
|
137
143
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
138
144
|
|
|
139
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,
|
|
145
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
140
146
|
|
|
141
147
|
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); }; }
|
|
142
148
|
|
|
@@ -211,6 +217,7 @@ var MEDIA_UPDATE_TYPE = {
|
|
|
211
217
|
* @property {String} [meetingQuality.local]
|
|
212
218
|
* @property {String} [meetingQuality.remote]
|
|
213
219
|
* @property {Boolean} [rejoin]
|
|
220
|
+
* @property {Boolean} [enableMultistream]
|
|
214
221
|
*/
|
|
215
222
|
|
|
216
223
|
/**
|
|
@@ -485,8 +492,90 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
485
492
|
* @memberof Meeting
|
|
486
493
|
*/
|
|
487
494
|
|
|
488
|
-
(0,
|
|
489
|
-
(0,
|
|
495
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "attrs", void 0);
|
|
496
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "audio", void 0);
|
|
497
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "conversationUrl", void 0);
|
|
498
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "correlationId", void 0);
|
|
499
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "destination", void 0);
|
|
500
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "destinationType", void 0);
|
|
501
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deviceUrl", void 0);
|
|
502
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "effects", void 0);
|
|
503
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hostId", void 0);
|
|
504
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "id", void 0);
|
|
505
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isMultistream", void 0);
|
|
506
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "locusUrl", void 0);
|
|
507
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaConnections", void 0);
|
|
508
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaId", void 0);
|
|
509
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingFiniteStateMachine", void 0);
|
|
510
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingInfo", void 0);
|
|
511
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingRequest", void 0);
|
|
512
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "members", void 0);
|
|
513
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "options", void 0);
|
|
514
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "orgId", void 0);
|
|
515
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "owner", void 0);
|
|
516
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "partner", void 0);
|
|
517
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "policy", void 0);
|
|
518
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "reconnectionManager", void 0);
|
|
519
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resource", void 0);
|
|
520
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "roap", void 0);
|
|
521
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "roapSeq", void 0);
|
|
522
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sipUri", void 0);
|
|
523
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", void 0);
|
|
524
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "userId", void 0);
|
|
525
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "video", void 0);
|
|
526
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "callEvents", void 0);
|
|
527
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deferJoin", void 0);
|
|
528
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dialInDeviceStatus", void 0);
|
|
529
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dialInUrl", void 0);
|
|
530
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dialOutDeviceStatus", void 0);
|
|
531
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dialOutUrl", void 0);
|
|
532
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fetchMeetingInfoTimeoutId", void 0);
|
|
533
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "floorGrantPending", void 0);
|
|
534
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasJoinedOnce", void 0);
|
|
535
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasWebsocketConnected", void 0);
|
|
536
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "inMeetingActions", void 0);
|
|
537
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isLocalShareLive", void 0);
|
|
538
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isRoapInProgress", void 0);
|
|
539
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isSharing", void 0);
|
|
540
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "keepAliveTimerId", void 0);
|
|
541
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastVideoLayoutInfo", void 0);
|
|
542
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "locusInfo", void 0);
|
|
543
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "media", void 0);
|
|
544
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaProperties", void 0);
|
|
545
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaRequestManagers", void 0);
|
|
546
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingInfoFailureReason", void 0);
|
|
547
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "networkQualityMonitor", void 0);
|
|
548
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "networkStatus", void 0);
|
|
549
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "passwordStatus", void 0);
|
|
550
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "queuedMediaUpdates", void 0);
|
|
551
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "recording", void 0);
|
|
552
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "remoteMediaManager", void 0);
|
|
553
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "requiredCaptcha", void 0);
|
|
554
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receiveSlotManager", void 0);
|
|
555
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "shareStatus", void 0);
|
|
556
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "statsAnalyzer", void 0);
|
|
557
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "transcription", void 0);
|
|
558
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateMediaConnections", void 0);
|
|
559
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "endCallInitiateJoinReq", void 0);
|
|
560
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "endJoinReqResp", void 0);
|
|
561
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "endLocalSDPGenRemoteSDPRecvDelay", void 0);
|
|
562
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "joinedWith", void 0);
|
|
563
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "locusId", void 0);
|
|
564
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "startCallInitiateJoinReq", void 0);
|
|
565
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "startJoinReqResp", void 0);
|
|
566
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "startLocalSDPGenRemoteSDPRecvDelay", void 0);
|
|
567
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "wirelessShare", void 0);
|
|
568
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "guest", void 0);
|
|
569
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingJoinUrl", void 0);
|
|
570
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingNumber", void 0);
|
|
571
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingState", void 0);
|
|
572
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "permissionToken", void 0);
|
|
573
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resourceId", void 0);
|
|
574
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resourceUrl", void 0);
|
|
575
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "selfId", void 0);
|
|
576
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", void 0);
|
|
577
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
|
|
578
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getMediaStreams", function (mediaDirection) {
|
|
490
579
|
var audioVideo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.VIDEO_RESOLUTIONS[_this.mediaProperties.localQualityLevel];
|
|
491
580
|
var sharePreferences = arguments.length > 2 ? arguments[2] : undefined;
|
|
492
581
|
|
|
@@ -551,7 +640,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
551
640
|
sendAudio: devicePermissions.sendAudio,
|
|
552
641
|
sendVideo: devicePermissions.sendVideo,
|
|
553
642
|
isSharing: _this.shareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE
|
|
554
|
-
}), audioVideo, sharePreferences,
|
|
643
|
+
}), audioVideo, sharePreferences, // @ts-ignore - config coming from registerPlugin
|
|
644
|
+
_this.config).catch(function (error) {
|
|
555
645
|
var _this$locusUrl;
|
|
556
646
|
|
|
557
647
|
// Whenever there is a failure when trying to access a user's device
|
|
@@ -578,7 +668,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
578
668
|
|
|
579
669
|
return _promise.default.reject(new _media2.default('At least one of the mediaDirection value should be true'));
|
|
580
670
|
});
|
|
581
|
-
(0,
|
|
671
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getSupportedDevices", function (_ref3) {
|
|
582
672
|
var _ref3$sendAudio = _ref3.sendAudio,
|
|
583
673
|
sendAudio = _ref3$sendAudio === void 0 ? true : _ref3$sendAudio,
|
|
584
674
|
_ref3$sendVideo = _ref3.sendVideo,
|
|
@@ -588,15 +678,349 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
588
678
|
sendVideo: sendVideo
|
|
589
679
|
});
|
|
590
680
|
});
|
|
591
|
-
(0,
|
|
681
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getDevices", function () {
|
|
592
682
|
return _media.default.getDevices();
|
|
593
683
|
});
|
|
594
|
-
(0,
|
|
684
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleRoapFailure", function (error) {
|
|
685
|
+
var sendBehavioralMetric = function sendBehavioralMetric(metricName, error, correlationId) {
|
|
686
|
+
var _error$cause;
|
|
687
|
+
|
|
688
|
+
var data = {
|
|
689
|
+
code: error.code,
|
|
690
|
+
correlation_id: correlationId,
|
|
691
|
+
reason: error.message,
|
|
692
|
+
stack: error.stack
|
|
693
|
+
};
|
|
694
|
+
var metadata = {
|
|
695
|
+
type: ((_error$cause = error.cause) === null || _error$cause === void 0 ? void 0 : _error$cause.name) || error.name
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
_metrics.default.sendBehavioralMetric(metricName, data, metadata);
|
|
699
|
+
};
|
|
700
|
+
|
|
701
|
+
if (error instanceof _internalMediaCore.MediaConnection.Errors.SdpOfferCreationError) {
|
|
702
|
+
sendBehavioralMetric(_constants2.default.PEERCONNECTION_FAILURE, error, _this.id);
|
|
703
|
+
|
|
704
|
+
_metrics.default.postEvent({
|
|
705
|
+
event: _config.eventType.LOCAL_SDP_GENERATED,
|
|
706
|
+
meetingId: _this.id,
|
|
707
|
+
data: {
|
|
708
|
+
canProceed: false,
|
|
709
|
+
errors: [_metrics.default.generateErrorPayload(2001, true, _config.error.name.MEDIA_ENGINE, undefined)]
|
|
710
|
+
}
|
|
711
|
+
});
|
|
712
|
+
} else if (error instanceof _internalMediaCore.MediaConnection.Errors.SdpOfferHandlingError || error instanceof _internalMediaCore.MediaConnection.Errors.SdpAnswerHandlingError) {
|
|
713
|
+
sendBehavioralMetric(_constants2.default.PEERCONNECTION_FAILURE, error, _this.id);
|
|
714
|
+
|
|
715
|
+
_metrics.default.postEvent({
|
|
716
|
+
event: _config.eventType.REMOTE_SDP_RECEIVED,
|
|
717
|
+
meetingId: _this.id,
|
|
718
|
+
data: {
|
|
719
|
+
canProceed: false,
|
|
720
|
+
errors: [_metrics.default.generateErrorPayload(2001, true, _config.error.name.MEDIA_ENGINE, undefined)]
|
|
721
|
+
}
|
|
722
|
+
});
|
|
723
|
+
} else if (error instanceof _internalMediaCore.MediaConnection.Errors.SdpError) {
|
|
724
|
+
// this covers also the case of MC.Errors.IceGatheringError which extends MC.Errors.SdpError
|
|
725
|
+
sendBehavioralMetric(_constants2.default.INVALID_ICE_CANDIDATE, error, _this.id);
|
|
726
|
+
|
|
727
|
+
_metrics.default.postEvent({
|
|
728
|
+
event: _config.eventType.LOCAL_SDP_GENERATED,
|
|
729
|
+
meetingId: _this.id,
|
|
730
|
+
data: {
|
|
731
|
+
canProceed: false,
|
|
732
|
+
errors: [_metrics.default.generateErrorPayload(2001, true, _config.error.name.MEDIA_ENGINE, undefined)]
|
|
733
|
+
}
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
});
|
|
737
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setupMediaConnectionListeners", function () {
|
|
738
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.ROAP_STARTED, function () {
|
|
739
|
+
_this.isRoapInProgress = true;
|
|
740
|
+
});
|
|
741
|
+
|
|
742
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.ROAP_DONE, function () {
|
|
743
|
+
_this.mediaNegotiatedEvent();
|
|
744
|
+
|
|
745
|
+
_this.isRoapInProgress = false;
|
|
746
|
+
|
|
747
|
+
_this.processNextQueuedMediaUpdate();
|
|
748
|
+
});
|
|
749
|
+
|
|
750
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.ROAP_FAILURE, _this.handleRoapFailure);
|
|
751
|
+
|
|
752
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.ROAP_MESSAGE_TO_SEND, function (event) {
|
|
753
|
+
var LOG_HEADER = 'Meeting:index#setupMediaConnectionListeners.ROAP_MESSAGE_TO_SEND -->';
|
|
754
|
+
|
|
755
|
+
switch (event.roapMessage.messageType) {
|
|
756
|
+
case 'OK':
|
|
757
|
+
_metrics.default.postEvent({
|
|
758
|
+
event: _config.eventType.REMOTE_SDP_RECEIVED,
|
|
759
|
+
meetingId: _this.id
|
|
760
|
+
});
|
|
761
|
+
|
|
762
|
+
logRequest(_this.roap.sendRoapOK({
|
|
763
|
+
seq: event.roapMessage.seq,
|
|
764
|
+
mediaId: _this.mediaId,
|
|
765
|
+
correlationId: _this.correlationId
|
|
766
|
+
}), {
|
|
767
|
+
header: "".concat(LOG_HEADER, " Send Roap OK"),
|
|
768
|
+
success: "".concat(LOG_HEADER, " Successfully send roap OK"),
|
|
769
|
+
failure: "".concat(LOG_HEADER, " Error joining the call on send roap OK, ")
|
|
770
|
+
});
|
|
771
|
+
break;
|
|
772
|
+
|
|
773
|
+
case 'OFFER':
|
|
774
|
+
_metrics.default.postEvent({
|
|
775
|
+
event: _config.eventType.LOCAL_SDP_GENERATED,
|
|
776
|
+
meetingId: _this.id
|
|
777
|
+
});
|
|
778
|
+
|
|
779
|
+
logRequest(_this.roap.sendRoapMediaRequest({
|
|
780
|
+
sdp: event.roapMessage.sdp,
|
|
781
|
+
seq: event.roapMessage.seq,
|
|
782
|
+
tieBreaker: event.roapMessage.tieBreaker,
|
|
783
|
+
meeting: (0, _assertThisInitialized2.default)(_this),
|
|
784
|
+
// or can pass meeting ID
|
|
785
|
+
reconnect: _this.reconnectionManager.isReconnectInProgress()
|
|
786
|
+
}), {
|
|
787
|
+
header: "".concat(LOG_HEADER, " Send Roap Offer"),
|
|
788
|
+
success: "".concat(LOG_HEADER, " Successfully send roap offer"),
|
|
789
|
+
failure: "".concat(LOG_HEADER, " Error joining the call on send roap offer, ")
|
|
790
|
+
});
|
|
791
|
+
break;
|
|
792
|
+
|
|
793
|
+
case 'ANSWER':
|
|
794
|
+
_metrics.default.postEvent({
|
|
795
|
+
event: _config.eventType.REMOTE_SDP_RECEIVED,
|
|
796
|
+
meetingId: _this.id
|
|
797
|
+
});
|
|
798
|
+
|
|
799
|
+
logRequest(_this.roap.sendRoapAnswer({
|
|
800
|
+
sdp: event.roapMessage.sdp,
|
|
801
|
+
seq: event.roapMessage.seq,
|
|
802
|
+
mediaId: _this.mediaId,
|
|
803
|
+
correlationId: _this.correlationId
|
|
804
|
+
}), {
|
|
805
|
+
header: "".concat(LOG_HEADER, " Send Roap Answer."),
|
|
806
|
+
success: "".concat(LOG_HEADER, " Successfully send roap answer"),
|
|
807
|
+
failure: "".concat(LOG_HEADER, " Error joining the call on send roap answer, ")
|
|
808
|
+
}).catch(function (error) {
|
|
809
|
+
var metricName = _constants2.default.ROAP_ANSWER_FAILURE;
|
|
810
|
+
var data = {
|
|
811
|
+
correlation_id: _this.correlationId,
|
|
812
|
+
locus_id: _this.locusUrl.split('/').pop(),
|
|
813
|
+
reason: error.message,
|
|
814
|
+
stack: error.stack
|
|
815
|
+
};
|
|
816
|
+
var metadata = {
|
|
817
|
+
type: error.name
|
|
818
|
+
};
|
|
819
|
+
|
|
820
|
+
_metrics.default.sendBehavioralMetric(metricName, data, metadata);
|
|
821
|
+
});
|
|
822
|
+
break;
|
|
823
|
+
|
|
824
|
+
case 'ERROR':
|
|
825
|
+
if (event.roapMessage.errorType === _internalMediaCore.MediaConnection.ErrorType.CONFLICT || event.roapMessage.errorType === _internalMediaCore.MediaConnection.ErrorType.DOUBLECONFLICT) {
|
|
826
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.ROAP_GLARE_CONDITION, {
|
|
827
|
+
correlation_id: _this.correlationId,
|
|
828
|
+
locus_id: _this.locusUrl.split('/').pop(),
|
|
829
|
+
sequence: event.roapMessage.seq
|
|
830
|
+
});
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
logRequest(_this.roap.sendRoapError({
|
|
834
|
+
seq: event.roapMessage.seq,
|
|
835
|
+
errorType: event.roapMessage.errorType,
|
|
836
|
+
mediaId: _this.mediaId,
|
|
837
|
+
correlationId: _this.correlationId
|
|
838
|
+
}), {
|
|
839
|
+
header: "".concat(LOG_HEADER, " Send Roap Error."),
|
|
840
|
+
success: "".concat(LOG_HEADER, " Successfully send roap error"),
|
|
841
|
+
failure: "".concat(LOG_HEADER, " Failed to send roap error, ")
|
|
842
|
+
});
|
|
843
|
+
break;
|
|
844
|
+
|
|
845
|
+
default:
|
|
846
|
+
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " Unsupported message type: ").concat(event.roapMessage.messageType));
|
|
847
|
+
|
|
848
|
+
break;
|
|
849
|
+
}
|
|
850
|
+
}); // eslint-disable-next-line no-param-reassign
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.REMOTE_TRACK_ADDED, function (event) {
|
|
854
|
+
_loggerProxy.default.logger.log("Meeting:index#setupMediaConnectionListeners --> REMOTE_TRACK_ADDED event received for webrtcMediaConnection: ".concat((0, _stringify.default)(event)));
|
|
855
|
+
|
|
856
|
+
var mediaTrack = event.track;
|
|
857
|
+
var eventType;
|
|
858
|
+
|
|
859
|
+
switch (event.type) {
|
|
860
|
+
case _internalMediaCore.MediaConnection.RemoteTrackType.AUDIO:
|
|
861
|
+
eventType = _constants.EVENT_TYPES.REMOTE_AUDIO;
|
|
862
|
+
|
|
863
|
+
_this.mediaProperties.setRemoteAudioTrack(event.track);
|
|
864
|
+
|
|
865
|
+
break;
|
|
866
|
+
|
|
867
|
+
case _internalMediaCore.MediaConnection.RemoteTrackType.VIDEO:
|
|
868
|
+
eventType = _constants.EVENT_TYPES.REMOTE_VIDEO;
|
|
869
|
+
|
|
870
|
+
_this.mediaProperties.setRemoteVideoTrack(event.track);
|
|
871
|
+
|
|
872
|
+
break;
|
|
873
|
+
|
|
874
|
+
case _internalMediaCore.MediaConnection.RemoteTrackType.SCREENSHARE_VIDEO:
|
|
875
|
+
if (event.track) {
|
|
876
|
+
eventType = _constants.EVENT_TYPES.REMOTE_SHARE;
|
|
877
|
+
|
|
878
|
+
_this.mediaProperties.setRemoteShare(event.track);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
break;
|
|
882
|
+
|
|
883
|
+
default:
|
|
884
|
+
{
|
|
885
|
+
_loggerProxy.default.logger.log('Meeting:index#setupMediaConnectionListeners --> unexpected track');
|
|
886
|
+
}
|
|
887
|
+
} // start stats here the stats are coming null if you dont receive streams
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
_this.statsAnalyzer.startAnalyzer(_this.mediaProperties.webrtcMediaConnection);
|
|
891
|
+
|
|
892
|
+
if (eventType && mediaTrack) {
|
|
893
|
+
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
894
|
+
file: 'meeting/index',
|
|
895
|
+
function: 'setupRemoteTrackListener:Event.REMOTE_TRACK_ADDED'
|
|
896
|
+
}, _constants.EVENT_TRIGGERS.MEDIA_READY, {
|
|
897
|
+
type: eventType,
|
|
898
|
+
stream: _util2.default.createMediaStream([mediaTrack])
|
|
899
|
+
});
|
|
900
|
+
}
|
|
901
|
+
});
|
|
902
|
+
|
|
903
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.CONNECTION_STATE_CHANGED, function (event) {
|
|
904
|
+
var connectionFailed = function connectionFailed() {
|
|
905
|
+
// we know the media connection failed and browser will not attempt to recover it any more
|
|
906
|
+
// so reset the timer as it's not needed anymore, we want to reconnect immediately
|
|
907
|
+
_this.reconnectionManager.resetReconnectionTimer();
|
|
908
|
+
|
|
909
|
+
_this.reconnect({
|
|
910
|
+
networkDisconnect: true
|
|
911
|
+
});
|
|
912
|
+
|
|
913
|
+
_metrics.default.postEvent({
|
|
914
|
+
event: _config.eventType.ICE_END,
|
|
915
|
+
meeting: (0, _assertThisInitialized2.default)(_this),
|
|
916
|
+
data: {
|
|
917
|
+
canProceed: false,
|
|
918
|
+
errors: [_metrics.default.generateErrorPayload(2004, false, _config.error.name.MEDIA_ENGINE, undefined)]
|
|
919
|
+
}
|
|
920
|
+
});
|
|
921
|
+
|
|
922
|
+
_this.uploadLogs({
|
|
923
|
+
file: 'peer-connection-manager/index',
|
|
924
|
+
function: 'connectionFailed'
|
|
925
|
+
});
|
|
926
|
+
|
|
927
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.CONNECTION_FAILURE, {
|
|
928
|
+
correlation_id: _this.correlationId,
|
|
929
|
+
locus_id: _this.locusId
|
|
930
|
+
});
|
|
931
|
+
};
|
|
932
|
+
|
|
933
|
+
_loggerProxy.default.logger.info("Meeting:index#setupMediaConnectionListeners --> connection state changed to ".concat(event.state));
|
|
934
|
+
|
|
935
|
+
switch (event.state) {
|
|
936
|
+
case _internalMediaCore.MediaConnection.ConnectionState.Connecting:
|
|
937
|
+
_metrics.default.postEvent({
|
|
938
|
+
event: _config.eventType.ICE_START,
|
|
939
|
+
meeting: (0, _assertThisInitialized2.default)(_this)
|
|
940
|
+
});
|
|
941
|
+
|
|
942
|
+
break;
|
|
943
|
+
|
|
944
|
+
case _internalMediaCore.MediaConnection.ConnectionState.Connected:
|
|
945
|
+
_metrics.default.postEvent({
|
|
946
|
+
event: _config.eventType.ICE_END,
|
|
947
|
+
meeting: (0, _assertThisInitialized2.default)(_this)
|
|
948
|
+
});
|
|
949
|
+
|
|
950
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.CONNECTION_SUCCESS, {
|
|
951
|
+
correlation_id: _this.correlationId,
|
|
952
|
+
locus_id: _this.locusId
|
|
953
|
+
});
|
|
954
|
+
|
|
955
|
+
_this.setNetworkStatus(_constants.NETWORK_STATUS.CONNECTED);
|
|
956
|
+
|
|
957
|
+
_this.reconnectionManager.iceReconnected();
|
|
958
|
+
|
|
959
|
+
break;
|
|
960
|
+
|
|
961
|
+
case _internalMediaCore.MediaConnection.ConnectionState.Disconnected:
|
|
962
|
+
_this.setNetworkStatus(_constants.NETWORK_STATUS.DISCONNECTED);
|
|
963
|
+
|
|
964
|
+
_this.reconnectionManager.waitForIceReconnect().catch(function () {
|
|
965
|
+
_loggerProxy.default.logger.info('Meeting:index#setupMediaConnectionListeners --> state DISCONNECTED, automatic reconnection timed out.');
|
|
966
|
+
|
|
967
|
+
connectionFailed();
|
|
968
|
+
});
|
|
969
|
+
|
|
970
|
+
break;
|
|
971
|
+
|
|
972
|
+
case _internalMediaCore.MediaConnection.ConnectionState.Failed:
|
|
973
|
+
connectionFailed();
|
|
974
|
+
break;
|
|
975
|
+
|
|
976
|
+
default:
|
|
977
|
+
break;
|
|
978
|
+
}
|
|
979
|
+
});
|
|
980
|
+
|
|
981
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.ACTIVE_SPEAKERS_CHANGED, function (msg) {
|
|
982
|
+
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
983
|
+
file: 'meeting/index',
|
|
984
|
+
function: 'setupMediaConnectionListeners'
|
|
985
|
+
}, _constants.EVENT_TRIGGERS.ACTIVE_SPEAKER_CHANGED, {
|
|
986
|
+
seqNum: msg.seqNum,
|
|
987
|
+
memberIds: msg.csis.map(function (csi) {
|
|
988
|
+
var _this$members$findMem;
|
|
989
|
+
|
|
990
|
+
return (_this$members$findMem = _this.members.findMemberByCsi(csi)) === null || _this$members$findMem === void 0 ? void 0 : _this$members$findMem.id;
|
|
991
|
+
}).filter(function (item) {
|
|
992
|
+
return item !== undefined;
|
|
993
|
+
})
|
|
994
|
+
});
|
|
995
|
+
});
|
|
996
|
+
|
|
997
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.VIDEO_SOURCES_COUNT_CHANGED, function (numTotalSources, numLiveSources) {
|
|
998
|
+
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
999
|
+
file: 'meeting/index',
|
|
1000
|
+
function: 'setupMediaConnectionListeners'
|
|
1001
|
+
}, _constants.EVENT_TRIGGERS.REMOTE_VIDEO_SOURCE_COUNT_CHANGED, {
|
|
1002
|
+
numTotalSources: numTotalSources,
|
|
1003
|
+
numLiveSources: numLiveSources
|
|
1004
|
+
});
|
|
1005
|
+
});
|
|
1006
|
+
|
|
1007
|
+
_this.mediaProperties.webrtcMediaConnection.on(_internalMediaCore.MediaConnection.Event.AUDIO_SOURCES_COUNT_CHANGED, function (numTotalSources, numLiveSources) {
|
|
1008
|
+
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
|
1009
|
+
file: 'meeting/index',
|
|
1010
|
+
function: 'setupMediaConnectionListeners'
|
|
1011
|
+
}, _constants.EVENT_TRIGGERS.REMOTE_AUDIO_SOURCE_COUNT_CHANGED, {
|
|
1012
|
+
numTotalSources: numTotalSources,
|
|
1013
|
+
numLiveSources: numLiveSources
|
|
1014
|
+
});
|
|
1015
|
+
});
|
|
1016
|
+
});
|
|
1017
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setupStatsAnalyzerEventHandlers", function () {
|
|
595
1018
|
_this.statsAnalyzer.on(_statsAnalyzer.EVENTS.MEDIA_QUALITY, function (options) {
|
|
596
1019
|
var _this$webex$meetings$;
|
|
597
1020
|
|
|
598
1021
|
// TODO: might have to send the same event to the developer
|
|
599
1022
|
// Add ip address info if geo hint is present
|
|
1023
|
+
// @ts-ignore fix type
|
|
600
1024
|
options.data.intervalMetadata.peerReflexiveIP = ((_this$webex$meetings$ = _this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$ === void 0 ? void 0 : _this$webex$meetings$.clientAddress) || options.data.intervalMetadata.peerReflexiveIP || _constants.MQA_STATS.DEFAULT_IP;
|
|
601
1025
|
|
|
602
1026
|
_metrics.default.postEvent({
|
|
@@ -659,7 +1083,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
659
1083
|
});
|
|
660
1084
|
});
|
|
661
1085
|
});
|
|
662
|
-
(0,
|
|
1086
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaNegotiatedEvent", function () {
|
|
1087
|
+
// @ts-ignore - config coming from registerPlugin
|
|
663
1088
|
if (_this.config.experimental.enableMediaNegotiatedEvent) {
|
|
664
1089
|
_loggerProxy.default.logger.info('Meeting:mediaNegotiatedEvent --> Media server negotiated');
|
|
665
1090
|
|
|
@@ -669,7 +1094,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
669
1094
|
}, _constants.EVENT_TRIGGERS.MEDIA_NEGOTIATED);
|
|
670
1095
|
}
|
|
671
1096
|
});
|
|
672
|
-
(0,
|
|
1097
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "processNextQueuedMediaUpdate", function () {
|
|
673
1098
|
if (_this.canUpdateMedia() && _this.queuedMediaUpdates.length > 0) {
|
|
674
1099
|
var _this$queuedMediaUpda = _this.queuedMediaUpdates.shift(),
|
|
675
1100
|
pendingPromiseResolve = _this$queuedMediaUpda.pendingPromiseResolve,
|
|
@@ -707,7 +1132,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
707
1132
|
}
|
|
708
1133
|
}
|
|
709
1134
|
});
|
|
710
|
-
(0,
|
|
1135
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "clearMeetingData", function () {
|
|
711
1136
|
_this.audio = null;
|
|
712
1137
|
_this.video = null;
|
|
713
1138
|
_this.isSharing = false;
|
|
@@ -726,7 +1151,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
726
1151
|
_this.transcription = undefined;
|
|
727
1152
|
}
|
|
728
1153
|
});
|
|
729
|
-
(0,
|
|
1154
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "startKeepAlive", function () {
|
|
730
1155
|
var _this$joinedWith, _this$joinedWith2;
|
|
731
1156
|
|
|
732
1157
|
if (_this.keepAliveTimerId) {
|
|
@@ -766,7 +1191,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
766
1191
|
});
|
|
767
1192
|
}, keepAliveInterval);
|
|
768
1193
|
});
|
|
769
|
-
(0,
|
|
1194
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "stopKeepAlive", function () {
|
|
770
1195
|
if (!_this.keepAliveTimerId) {
|
|
771
1196
|
return;
|
|
772
1197
|
}
|
|
@@ -840,16 +1265,6 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
840
1265
|
*/
|
|
841
1266
|
|
|
842
1267
|
_this.deviceUrl = attrs.deviceUrl;
|
|
843
|
-
/**
|
|
844
|
-
* @description set you -1 as default values is 0 (used to idenfify if 1st roap request was sent)
|
|
845
|
-
* @instance
|
|
846
|
-
* @type {Number}
|
|
847
|
-
* @readonly
|
|
848
|
-
* @private
|
|
849
|
-
* @memberof Meeting
|
|
850
|
-
*/
|
|
851
|
-
|
|
852
|
-
_this.roapSeq = _constants.ROAP_SEQ_PRE;
|
|
853
1268
|
/**
|
|
854
1269
|
* @instance
|
|
855
1270
|
* @type {Object}
|
|
@@ -860,6 +1275,36 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
860
1275
|
// TODO: needs to be defined as a class
|
|
861
1276
|
|
|
862
1277
|
_this.meetingInfo = {};
|
|
1278
|
+
/**
|
|
1279
|
+
* helper class for managing receive slots (for multistream media connections)
|
|
1280
|
+
*/
|
|
1281
|
+
|
|
1282
|
+
_this.receiveSlotManager = new _receiveSlotManager.ReceiveSlotManager((0, _assertThisInitialized2.default)(_this));
|
|
1283
|
+
/**
|
|
1284
|
+
* Helper class for managing media requests for main video (for multistream media connections)
|
|
1285
|
+
* All media requests sent out for main video for this meeting have to go through it.
|
|
1286
|
+
*/
|
|
1287
|
+
|
|
1288
|
+
_this.mediaRequestManagers = {
|
|
1289
|
+
audio: new _mediaRequestManager.MediaRequestManager(function (mediaRequests) {
|
|
1290
|
+
if (!_this.mediaProperties.webrtcMediaConnection) {
|
|
1291
|
+
_loggerProxy.default.logger.warn('Meeting:index#mediaRequestManager --> trying to send audio media request before media connection was created');
|
|
1292
|
+
|
|
1293
|
+
return;
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
_this.mediaProperties.webrtcMediaConnection.requestMedia(_internalMediaCore.MediaConnection.MediaType.AudioMain, mediaRequests);
|
|
1297
|
+
}),
|
|
1298
|
+
video: new _mediaRequestManager.MediaRequestManager(function (mediaRequests) {
|
|
1299
|
+
if (!_this.mediaProperties.webrtcMediaConnection) {
|
|
1300
|
+
_loggerProxy.default.logger.warn('Meeting:index#mediaRequestManager --> trying to send video media request before media connection was created');
|
|
1301
|
+
|
|
1302
|
+
return;
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
_this.mediaProperties.webrtcMediaConnection.requestMedia(_internalMediaCore.MediaConnection.MediaType.VideoMain, mediaRequests);
|
|
1306
|
+
})
|
|
1307
|
+
};
|
|
863
1308
|
/**
|
|
864
1309
|
* @instance
|
|
865
1310
|
* @type {Members}
|
|
@@ -868,7 +1313,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
868
1313
|
*/
|
|
869
1314
|
|
|
870
1315
|
_this.members = new _index2.default({
|
|
871
|
-
locusUrl: attrs.locus && attrs.locus.url
|
|
1316
|
+
locusUrl: attrs.locus && attrs.locus.url,
|
|
1317
|
+
receiveSlotManager: _this.receiveSlotManager,
|
|
1318
|
+
mediaRequestManagers: _this.mediaRequestManagers // @ts-ignore - Fix type
|
|
1319
|
+
|
|
872
1320
|
}, {
|
|
873
1321
|
parent: _this.webex
|
|
874
1322
|
});
|
|
@@ -879,10 +1327,22 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
879
1327
|
* @private
|
|
880
1328
|
* @memberof Meeting
|
|
881
1329
|
*/
|
|
1330
|
+
// @ts-ignore - Fix type
|
|
882
1331
|
|
|
883
1332
|
_this.roap = new _index.default({}, {
|
|
884
1333
|
parent: _this.webex
|
|
885
1334
|
});
|
|
1335
|
+
/**
|
|
1336
|
+
* indicates if an SDP exchange is happening
|
|
1337
|
+
*
|
|
1338
|
+
* @instance
|
|
1339
|
+
* @type {Boolean}
|
|
1340
|
+
* @readonly
|
|
1341
|
+
* @private
|
|
1342
|
+
* @memberof Meeting
|
|
1343
|
+
*/
|
|
1344
|
+
|
|
1345
|
+
_this.isRoapInProgress = false;
|
|
886
1346
|
/**
|
|
887
1347
|
* created later
|
|
888
1348
|
* @instance
|
|
@@ -1036,6 +1496,12 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1036
1496
|
*/
|
|
1037
1497
|
|
|
1038
1498
|
_this.mediaConnections = null;
|
|
1499
|
+
/**
|
|
1500
|
+
* If true, then media is sent over multiple separate streams.
|
|
1501
|
+
* If false, then media is transcoded by the server into a single stream.
|
|
1502
|
+
*/
|
|
1503
|
+
|
|
1504
|
+
_this.isMultistream = false;
|
|
1039
1505
|
/**
|
|
1040
1506
|
* Fetching meeting info can be done randomly 2-5 mins before meeting start
|
|
1041
1507
|
* In case it is done before the timer expires, this timeout id is reset to cancel the timer.
|
|
@@ -1092,39 +1558,13 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1092
1558
|
_this.isSharing = false;
|
|
1093
1559
|
/**
|
|
1094
1560
|
* @instance
|
|
1095
|
-
* @type {
|
|
1561
|
+
* @type {string}
|
|
1096
1562
|
* @readonly
|
|
1097
1563
|
* @public
|
|
1098
1564
|
* @memberof Meeting
|
|
1099
1565
|
*/
|
|
1100
1566
|
|
|
1101
1567
|
_this.shareStatus = _constants.SHARE_STATUS.NO_SHARE;
|
|
1102
|
-
/**
|
|
1103
|
-
* @instance
|
|
1104
|
-
* @type {Boolean}
|
|
1105
|
-
* @readonly
|
|
1106
|
-
* @private
|
|
1107
|
-
* @memberof Meeting
|
|
1108
|
-
*/
|
|
1109
|
-
|
|
1110
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'isLocalShareLive', {
|
|
1111
|
-
get: function get() {
|
|
1112
|
-
var _shareTransceiver$sen, _shareTransceiver$sen2;
|
|
1113
|
-
|
|
1114
|
-
var shareTransceiver = _this.mediaProperties.peerConnection.shareTransceiver;
|
|
1115
|
-
var shareDirection = shareTransceiver === null || shareTransceiver === void 0 ? void 0 : shareTransceiver.direction;
|
|
1116
|
-
var trackReadyState = shareTransceiver === null || shareTransceiver === void 0 ? void 0 : (_shareTransceiver$sen = shareTransceiver.sender) === null || _shareTransceiver$sen === void 0 ? void 0 : (_shareTransceiver$sen2 = _shareTransceiver$sen.track) === null || _shareTransceiver$sen2 === void 0 ? void 0 : _shareTransceiver$sen2.readyState;
|
|
1117
|
-
var activeShare = trackReadyState === _constants.LIVE;
|
|
1118
|
-
var offersToSendData = shareDirection === _constants.SENDRECV;
|
|
1119
|
-
|
|
1120
|
-
if (activeShare && offersToSendData) {
|
|
1121
|
-
return true;
|
|
1122
|
-
}
|
|
1123
|
-
|
|
1124
|
-
return false;
|
|
1125
|
-
},
|
|
1126
|
-
configurable: true
|
|
1127
|
-
});
|
|
1128
1568
|
/**
|
|
1129
1569
|
* @instance
|
|
1130
1570
|
* @type {Array}
|
|
@@ -1137,7 +1577,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1137
1577
|
/**
|
|
1138
1578
|
* There is a pending floor requested by the user
|
|
1139
1579
|
* @instance
|
|
1140
|
-
* @type {
|
|
1580
|
+
* @type {boolean}
|
|
1141
1581
|
* @private
|
|
1142
1582
|
* @memberof Meeting
|
|
1143
1583
|
*/
|
|
@@ -1213,6 +1653,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1213
1653
|
* @private
|
|
1214
1654
|
* @memberof Meeting
|
|
1215
1655
|
*/
|
|
1656
|
+
// @ts-ignore - Fix type
|
|
1216
1657
|
|
|
1217
1658
|
_this.locusInfo = new _locusInfo.default(_this.updateMeetingObject.bind((0, _assertThisInitialized2.default)(_this)), _this.webex, _this.id); // We had to add listeners first before setting up the locus instance
|
|
1218
1659
|
|
|
@@ -1241,6 +1682,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1241
1682
|
* @private
|
|
1242
1683
|
* @memberof Meeting
|
|
1243
1684
|
*/
|
|
1685
|
+
// @ts-ignore - Fix type
|
|
1244
1686
|
|
|
1245
1687
|
_this.hasWebsocketConnected = _this.webex.internal.mercury.connected;
|
|
1246
1688
|
/**
|
|
@@ -1323,6 +1765,12 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1323
1765
|
_this.locusInfo.init(attrs.locus ? attrs.locus : {});
|
|
1324
1766
|
|
|
1325
1767
|
_this.hasJoinedOnce = false;
|
|
1768
|
+
_this.media = new _multistreamMedia.MultistreamMedia((0, _assertThisInitialized2.default)(_this));
|
|
1769
|
+
/**
|
|
1770
|
+
* helper class for managing remote streams
|
|
1771
|
+
*/
|
|
1772
|
+
|
|
1773
|
+
_this.remoteMediaManager = null;
|
|
1326
1774
|
return _this;
|
|
1327
1775
|
}
|
|
1328
1776
|
/**
|
|
@@ -1407,6 +1855,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1407
1855
|
break;
|
|
1408
1856
|
}
|
|
1409
1857
|
|
|
1858
|
+
// @ts-ignore
|
|
1410
1859
|
_loggerProxy.default.logger.info("Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - password required (code=").concat(_context.t0 === null || _context.t0 === void 0 ? void 0 : (_err$body = _context.t0.body) === null || _err$body === void 0 ? void 0 : _err$body.code, ").")); // when wbxappapi requires password it still populates partial meeting info in the response
|
|
1411
1860
|
|
|
1412
1861
|
|
|
@@ -1435,6 +1884,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1435
1884
|
break;
|
|
1436
1885
|
}
|
|
1437
1886
|
|
|
1887
|
+
// @ts-ignore
|
|
1438
1888
|
_loggerProxy.default.logger.info("Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ".concat(this.destination, " - captcha required (code=").concat(_context.t0 === null || _context.t0 === void 0 ? void 0 : (_err$body2 = _context.t0.body) === null || _err$body2 === void 0 ? void 0 : _err$body2.code, ")."));
|
|
1439
1889
|
|
|
1440
1890
|
this.meetingInfoFailureReason = this.requiredCaptcha ? _constants.MEETING_INFO_FAILURE_REASON.WRONG_CAPTCHA : _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
|
|
@@ -1592,7 +2042,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1592
2042
|
function: 'setUpLocusInfoMediaInactiveListener'
|
|
1593
2043
|
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this4);
|
|
1594
2044
|
|
|
1595
|
-
_loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMediaInactiveListener --> Meeting disconnected due to inactivity: ".concat(res.reason));
|
|
2045
|
+
_loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMediaInactiveListener --> Meeting disconnected due to inactivity: ".concat(res.reason)); // @ts-ignore - config coming from registerPlugin
|
|
2046
|
+
|
|
1596
2047
|
|
|
1597
2048
|
if (_this4.config.reconnection.autoRejoin) {
|
|
1598
2049
|
_this4.reconnect();
|
|
@@ -1671,7 +2122,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1671
2122
|
if (options) {
|
|
1672
2123
|
var event = options.event,
|
|
1673
2124
|
trackingId = options.trackingId,
|
|
1674
|
-
|
|
2125
|
+
_mediaConnections = options.mediaConnections;
|
|
1675
2126
|
|
|
1676
2127
|
if (!event) {
|
|
1677
2128
|
_loggerProxy.default.logger.error('Meeting:index#getAnalyzerMetricsPrePayload --> Error [Call Analyzer Event', event || '', "]: invalid identifers or event type! ".concat(this.correlationId));
|
|
@@ -1684,6 +2135,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1684
2135
|
userId: this.userId,
|
|
1685
2136
|
deviceId: this.deviceUrl,
|
|
1686
2137
|
orgId: this.orgId,
|
|
2138
|
+
// @ts-ignore fix type
|
|
1687
2139
|
locusUrl: this.webex.internal.services.get('locus')
|
|
1688
2140
|
};
|
|
1689
2141
|
|
|
@@ -1694,10 +2146,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1694
2146
|
} // Check if mediaConnections has been passed in or else use this.mediaConnections
|
|
1695
2147
|
|
|
1696
2148
|
|
|
1697
|
-
if (
|
|
1698
|
-
identifiers.mediaAgentAlias =
|
|
1699
|
-
identifiers.mediaAgentGroupId =
|
|
1700
|
-
identifiers.mediaAgentCluster =
|
|
2149
|
+
if (_mediaConnections) {
|
|
2150
|
+
identifiers.mediaAgentAlias = _mediaConnections === null || _mediaConnections === void 0 ? void 0 : _mediaConnections[0].mediaAgentAlias;
|
|
2151
|
+
identifiers.mediaAgentGroupId = _mediaConnections === null || _mediaConnections === void 0 ? void 0 : _mediaConnections[0].mediaAgentGroupId;
|
|
2152
|
+
identifiers.mediaAgentCluster = _mediaConnections === null || _mediaConnections === void 0 ? void 0 : _mediaConnections[0].mediaAgentCluster;
|
|
1701
2153
|
} else if (this.mediaConnections) {
|
|
1702
2154
|
var _this$mediaConnection, _this$mediaConnection2, _this$mediaConnection3;
|
|
1703
2155
|
|
|
@@ -1801,7 +2253,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1801
2253
|
}, {
|
|
1802
2254
|
key: "sendCallAnalyzerMetrics",
|
|
1803
2255
|
value: function sendCallAnalyzerMetrics(options) {
|
|
1804
|
-
var payload = this.getAnalyzerMetricsPrePayload(_objectSpread(_objectSpread({}, (0, _pick2.default)(this.config.metrics, ['clientType', 'subClientType'])), options));
|
|
2256
|
+
var payload = this.getAnalyzerMetricsPrePayload(_objectSpread(_objectSpread({}, (0, _pick2.default)(this.config.metrics, ['clientType', 'subClientType'])), options)); // @ts-ignore - fix type
|
|
2257
|
+
|
|
1805
2258
|
return this.webex.internal.metrics.submitCallDiagnosticEvents(payload);
|
|
1806
2259
|
}
|
|
1807
2260
|
/**
|
|
@@ -1820,7 +2273,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1820
2273
|
value: function sendMediaQualityAnalyzerMetrics(options) {
|
|
1821
2274
|
var payload = this.getAnalyzerMetricsPrePayload(_objectSpread(_objectSpread({
|
|
1822
2275
|
type: _constants.MQA_STATS.CA_TYPE
|
|
1823
|
-
}, (0, _pick2.default)(this.config.metrics, ['clientType', 'subClientType'])), options));
|
|
2276
|
+
}, (0, _pick2.default)(this.config.metrics, ['clientType', 'subClientType'])), options)); // @ts-ignore
|
|
2277
|
+
|
|
1824
2278
|
return this.webex.internal.metrics.submitCallDiagnosticEvents(payload);
|
|
1825
2279
|
}
|
|
1826
2280
|
/**
|
|
@@ -1869,7 +2323,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1869
2323
|
|
|
1870
2324
|
|
|
1871
2325
|
if (_this7.floorGrantPending && payload.newSelf.state === _constants.MEETING_STATE.STATES.JOINED) {
|
|
1872
|
-
_this7.
|
|
2326
|
+
_this7.requestScreenShareFloor().then(function () {
|
|
1873
2327
|
_this7.floorGrantPending = false;
|
|
1874
2328
|
});
|
|
1875
2329
|
}
|
|
@@ -2052,6 +2506,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2052
2506
|
var caption = _ref7.caption,
|
|
2053
2507
|
transcribing = _ref7.transcribing;
|
|
2054
2508
|
|
|
2509
|
+
// @ts-ignore - config coming from registerPlugin
|
|
2055
2510
|
if (transcribing && _this11.transcription && _this11.config.receiveTranscription) {
|
|
2056
2511
|
_this11.receiveTranscription();
|
|
2057
2512
|
} else if (!transcribing && _this11.transcription) {
|
|
@@ -2152,7 +2607,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2152
2607
|
case _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE:
|
|
2153
2608
|
_triggerProxy.default.trigger(_this12, {
|
|
2154
2609
|
file: 'meeting/index',
|
|
2155
|
-
function: '
|
|
2610
|
+
function: 'localShare'
|
|
2156
2611
|
}, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
|
|
2157
2612
|
reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
|
|
2158
2613
|
});
|
|
@@ -2360,9 +2815,30 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2360
2815
|
function: 'setUpLocusInfoMeetingInfoListener'
|
|
2361
2816
|
}, _constants.EVENT_TRIGGERS.MEETING_ACTIONS_UPDATE, _this14.inMeetingActions.get());
|
|
2362
2817
|
}
|
|
2818
|
+
|
|
2819
|
+
_this14.handleDataChannelUrlChange(payload.info.datachannelUrl);
|
|
2363
2820
|
}
|
|
2364
2821
|
});
|
|
2365
2822
|
}
|
|
2823
|
+
/**
|
|
2824
|
+
* Handles a data channel URL change
|
|
2825
|
+
* @param {String} datachannelUrl
|
|
2826
|
+
* @returns {void}
|
|
2827
|
+
*/
|
|
2828
|
+
|
|
2829
|
+
}, {
|
|
2830
|
+
key: "handleDataChannelUrlChange",
|
|
2831
|
+
value: function handleDataChannelUrlChange(datachannelUrl) {
|
|
2832
|
+
var _this15 = this;
|
|
2833
|
+
|
|
2834
|
+
if (datachannelUrl && this.config.enableAutomaticLLM) {
|
|
2835
|
+
// Defer this as updateLLMConnection relies upon this.locusInfo.url which is only set
|
|
2836
|
+
// after the MEETING_INFO_UPDATED callback finishes
|
|
2837
|
+
(0, _defer2.default)(function () {
|
|
2838
|
+
_this15.updateLLMConnection();
|
|
2839
|
+
});
|
|
2840
|
+
}
|
|
2841
|
+
}
|
|
2366
2842
|
/**
|
|
2367
2843
|
* Set up the locus info embedded apps listener
|
|
2368
2844
|
* @returns {undefined}
|
|
@@ -2373,11 +2849,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2373
2849
|
}, {
|
|
2374
2850
|
key: "setUpLocusEmbeddedAppsListener",
|
|
2375
2851
|
value: function setUpLocusEmbeddedAppsListener() {
|
|
2376
|
-
var
|
|
2852
|
+
var _this16 = this;
|
|
2377
2853
|
|
|
2378
2854
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, function (embeddedApps) {
|
|
2379
2855
|
if (embeddedApps) {
|
|
2380
|
-
_triggerProxy.default.trigger(
|
|
2856
|
+
_triggerProxy.default.trigger(_this16, {
|
|
2381
2857
|
file: 'meeting/index',
|
|
2382
2858
|
function: 'setUpLocusEmbeddedAppsListener'
|
|
2383
2859
|
}, _constants.EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE, embeddedApps);
|
|
@@ -2394,13 +2870,13 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2394
2870
|
}, {
|
|
2395
2871
|
key: "setUpLocusInfoSelfListener",
|
|
2396
2872
|
value: function setUpLocusInfoSelfListener() {
|
|
2397
|
-
var
|
|
2873
|
+
var _this17 = this;
|
|
2398
2874
|
|
|
2399
2875
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, function (payload) {
|
|
2400
|
-
if (
|
|
2401
|
-
|
|
2876
|
+
if (_this17.audio) {
|
|
2877
|
+
_this17.audio.handleServerLocalUnmuteRequired(_this17);
|
|
2402
2878
|
|
|
2403
|
-
_triggerProxy.default.trigger(
|
|
2879
|
+
_triggerProxy.default.trigger(_this17, {
|
|
2404
2880
|
file: 'meeting/index',
|
|
2405
2881
|
function: 'setUpLocusInfoSelfListener'
|
|
2406
2882
|
}, _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
|
|
@@ -2410,17 +2886,17 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2410
2886
|
});
|
|
2411
2887
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, function (payload) {
|
|
2412
2888
|
if (payload) {
|
|
2413
|
-
var
|
|
2889
|
+
var _this17$audio;
|
|
2414
2890
|
|
|
2415
|
-
if (
|
|
2416
|
-
|
|
2891
|
+
if (_this17.audio) {
|
|
2892
|
+
_this17.audio.handleServerRemoteMuteUpdate(payload.muted, payload.unmuteAllowed);
|
|
2417
2893
|
} // with "mute on entry" server will send us remote mute even if we don't have media configured,
|
|
2418
2894
|
// so if being muted by others, always send the notification,
|
|
2419
2895
|
// but if being unmuted, only send it if we are also locally unmuted
|
|
2420
2896
|
|
|
2421
2897
|
|
|
2422
|
-
if (payload.muted || !((
|
|
2423
|
-
_triggerProxy.default.trigger(
|
|
2898
|
+
if (payload.muted || !((_this17$audio = _this17.audio) !== null && _this17$audio !== void 0 && _this17$audio.isMuted())) {
|
|
2899
|
+
_triggerProxy.default.trigger(_this17, {
|
|
2424
2900
|
file: 'meeting/index',
|
|
2425
2901
|
function: 'setUpLocusInfoSelfListener'
|
|
2426
2902
|
}, payload.muted ? _constants.EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS : _constants.EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS, {
|
|
@@ -2430,7 +2906,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2430
2906
|
}
|
|
2431
2907
|
});
|
|
2432
2908
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, function (payload) {
|
|
2433
|
-
_triggerProxy.default.trigger(
|
|
2909
|
+
_triggerProxy.default.trigger(_this17, {
|
|
2434
2910
|
file: 'meeting/index',
|
|
2435
2911
|
function: 'setUpLocusInfoSelfListener'
|
|
2436
2912
|
}, _constants.EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE, {
|
|
@@ -2439,9 +2915,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2439
2915
|
});
|
|
2440
2916
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, function (payload) {
|
|
2441
2917
|
if (payload) {
|
|
2442
|
-
|
|
2918
|
+
_this17.startKeepAlive();
|
|
2443
2919
|
|
|
2444
|
-
_triggerProxy.default.trigger(
|
|
2920
|
+
_triggerProxy.default.trigger(_this17, {
|
|
2445
2921
|
file: 'meeting/index',
|
|
2446
2922
|
function: 'setUpLocusInfoSelfListener'
|
|
2447
2923
|
}, _constants.EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING, {
|
|
@@ -2450,15 +2926,15 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2450
2926
|
|
|
2451
2927
|
_metrics.default.postEvent({
|
|
2452
2928
|
event: _config.eventType.LOBBY_ENTERED,
|
|
2453
|
-
meeting:
|
|
2929
|
+
meeting: _this17
|
|
2454
2930
|
});
|
|
2455
2931
|
}
|
|
2456
2932
|
});
|
|
2457
2933
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, function (payload) {
|
|
2458
|
-
|
|
2934
|
+
_this17.stopKeepAlive();
|
|
2459
2935
|
|
|
2460
2936
|
if (payload) {
|
|
2461
|
-
_triggerProxy.default.trigger(
|
|
2937
|
+
_triggerProxy.default.trigger(_this17, {
|
|
2462
2938
|
file: 'meeting/index',
|
|
2463
2939
|
function: 'setUpLocusInfoSelfListener'
|
|
2464
2940
|
}, _constants.EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED, {
|
|
@@ -2467,41 +2943,42 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2467
2943
|
|
|
2468
2944
|
_metrics.default.postEvent({
|
|
2469
2945
|
event: _config.eventType.LOBBY_EXITED,
|
|
2470
|
-
meeting:
|
|
2946
|
+
meeting: _this17
|
|
2471
2947
|
});
|
|
2472
2948
|
}
|
|
2473
|
-
});
|
|
2949
|
+
}); // @ts-ignore - check if MEDIA_INACTIVITY exists
|
|
2950
|
+
|
|
2474
2951
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, function () {
|
|
2475
2952
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_MEDIA_INACTIVE, {
|
|
2476
|
-
correlation_id:
|
|
2477
|
-
locus_id:
|
|
2953
|
+
correlation_id: _this17.correlationId,
|
|
2954
|
+
locus_id: _this17.locusId
|
|
2478
2955
|
});
|
|
2479
2956
|
|
|
2480
|
-
|
|
2957
|
+
_this17.reconnect();
|
|
2481
2958
|
}); // There is two stats for mute one is the actual media being sent or received
|
|
2482
2959
|
// The second on is if the audio is muted, we need to tell the statsAnalyzer when
|
|
2483
2960
|
// the audio is muted or the user is not willing to send media
|
|
2484
2961
|
|
|
2485
2962
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE, function (status) {
|
|
2486
|
-
if (
|
|
2487
|
-
var
|
|
2963
|
+
if (_this17.statsAnalyzer) {
|
|
2964
|
+
var _this17$mediaProperti, _this17$audio2, _this17$mediaProperti2, _this17$video, _this17$mediaProperti3, _this17$mediaProperti4, _this17$mediaProperti5, _this17$mediaProperti6;
|
|
2488
2965
|
|
|
2489
|
-
|
|
2966
|
+
_this17.statsAnalyzer.updateMediaStatus({
|
|
2490
2967
|
actual: status,
|
|
2491
2968
|
expected: {
|
|
2492
2969
|
// We need to check what should be the actual direction of media
|
|
2493
|
-
sendAudio: ((
|
|
2494
|
-
sendVideo: ((
|
|
2495
|
-
sendShare: (
|
|
2496
|
-
receiveAudio: (
|
|
2497
|
-
receiveVideo: (
|
|
2498
|
-
receiveShare: (
|
|
2970
|
+
sendAudio: ((_this17$mediaProperti = _this17.mediaProperties.mediaDirection) === null || _this17$mediaProperti === void 0 ? void 0 : _this17$mediaProperti.sendAudio) && !((_this17$audio2 = _this17.audio) !== null && _this17$audio2 !== void 0 && _this17$audio2.isMuted()),
|
|
2971
|
+
sendVideo: ((_this17$mediaProperti2 = _this17.mediaProperties.mediaDirection) === null || _this17$mediaProperti2 === void 0 ? void 0 : _this17$mediaProperti2.sendVideo) && !((_this17$video = _this17.video) !== null && _this17$video !== void 0 && _this17$video.isMuted()),
|
|
2972
|
+
sendShare: (_this17$mediaProperti3 = _this17.mediaProperties.mediaDirection) === null || _this17$mediaProperti3 === void 0 ? void 0 : _this17$mediaProperti3.sendShare,
|
|
2973
|
+
receiveAudio: (_this17$mediaProperti4 = _this17.mediaProperties.mediaDirection) === null || _this17$mediaProperti4 === void 0 ? void 0 : _this17$mediaProperti4.receiveAudio,
|
|
2974
|
+
receiveVideo: (_this17$mediaProperti5 = _this17.mediaProperties.mediaDirection) === null || _this17$mediaProperti5 === void 0 ? void 0 : _this17$mediaProperti5.receiveVideo,
|
|
2975
|
+
receiveShare: (_this17$mediaProperti6 = _this17.mediaProperties.mediaDirection) === null || _this17$mediaProperti6 === void 0 ? void 0 : _this17$mediaProperti6.receiveShare
|
|
2499
2976
|
}
|
|
2500
2977
|
});
|
|
2501
2978
|
}
|
|
2502
2979
|
});
|
|
2503
2980
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, function (payload) {
|
|
2504
|
-
_triggerProxy.default.trigger(
|
|
2981
|
+
_triggerProxy.default.trigger(_this17, {
|
|
2505
2982
|
file: 'meeting/index',
|
|
2506
2983
|
function: 'setUpLocusInfoSelfListener'
|
|
2507
2984
|
}, _constants.EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST, {
|
|
@@ -2509,7 +2986,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2509
2986
|
});
|
|
2510
2987
|
});
|
|
2511
2988
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, function (payload) {
|
|
2512
|
-
_triggerProxy.default.trigger(
|
|
2989
|
+
_triggerProxy.default.trigger(_this17, {
|
|
2513
2990
|
file: 'meeting/index',
|
|
2514
2991
|
function: 'setUpLocusInfoSelfListener'
|
|
2515
2992
|
}, _constants.EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED, {
|
|
@@ -2527,29 +3004,30 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2527
3004
|
}, {
|
|
2528
3005
|
key: "setUpLocusInfoMeetingListener",
|
|
2529
3006
|
value: function setUpLocusInfoMeetingListener() {
|
|
2530
|
-
var
|
|
3007
|
+
var _this18 = this;
|
|
2531
3008
|
|
|
2532
3009
|
this.locusInfo.on(_constants.EVENTS.REMOTE_RESPONSE, function (payload) {
|
|
2533
|
-
|
|
3010
|
+
_this18.meetingFiniteStateMachine.remote(payload);
|
|
2534
3011
|
|
|
2535
3012
|
if (payload.remoteDeclined) {
|
|
2536
|
-
|
|
3013
|
+
_this18.leave({
|
|
2537
3014
|
reason: payload.reason
|
|
2538
3015
|
}).then(function () {
|
|
2539
3016
|
_loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.');
|
|
2540
3017
|
}).catch(function (error) {
|
|
2541
|
-
|
|
3018
|
+
// @ts-ignore
|
|
3019
|
+
_loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ".concat(_this18.meeting, ", error: ").concat(error));
|
|
2542
3020
|
});
|
|
2543
3021
|
}
|
|
2544
3022
|
});
|
|
2545
3023
|
this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, function (payload) {
|
|
2546
3024
|
// if self state is NOT left
|
|
2547
3025
|
// TODO: Handle sharing and wireless sharing when meeting end
|
|
2548
|
-
if (
|
|
2549
|
-
if (
|
|
2550
|
-
|
|
3026
|
+
if (_this18.wirelessShare) {
|
|
3027
|
+
if (_this18.mediaProperties.shareTrack) {
|
|
3028
|
+
_this18.mediaProperties.shareTrack.onended = null;
|
|
2551
3029
|
|
|
2552
|
-
|
|
3030
|
+
_this18.mediaProperties.shareTrack.stop();
|
|
2553
3031
|
}
|
|
2554
3032
|
} // when multiple WEB deviceType join with same user
|
|
2555
3033
|
// and some of the devices are joined and some are left
|
|
@@ -2563,24 +3041,25 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2563
3041
|
|
|
2564
3042
|
if (payload.shouldLeave) {
|
|
2565
3043
|
// TODO: We should do cleaning of meeting object if the shouldLeave: false because there might be meeting object which we are not cleaning
|
|
2566
|
-
|
|
3044
|
+
_this18.leave({
|
|
2567
3045
|
reason: payload.reason
|
|
2568
3046
|
}).then(function () {
|
|
2569
3047
|
_loggerProxy.default.logger.warn('Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. The meeting has been left, but has not been destroyed, you should see a later event for leave.');
|
|
2570
3048
|
}).catch(function (error) {
|
|
2571
|
-
|
|
3049
|
+
// @ts-ignore
|
|
3050
|
+
_loggerProxy.default.logger.error("Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ".concat(_this18.meeting, ", error: ").concat(error));
|
|
2572
3051
|
});
|
|
2573
3052
|
} else {
|
|
2574
3053
|
_loggerProxy.default.logger.info('Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON', payload.reason);
|
|
2575
3054
|
|
|
2576
|
-
_util.default.cleanUp(
|
|
3055
|
+
_util.default.cleanUp(_this18);
|
|
2577
3056
|
|
|
2578
|
-
_triggerProxy.default.trigger(
|
|
3057
|
+
_triggerProxy.default.trigger(_this18, {
|
|
2579
3058
|
file: 'meeting/index',
|
|
2580
3059
|
function: 'setUpLocusInfoMeetingListener'
|
|
2581
3060
|
}, _constants.EVENTS.DESTROY_MEETING, {
|
|
2582
3061
|
reason: payload.reason,
|
|
2583
|
-
meetingId:
|
|
3062
|
+
meetingId: _this18.id
|
|
2584
3063
|
});
|
|
2585
3064
|
}
|
|
2586
3065
|
});
|
|
@@ -2597,14 +3076,14 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2597
3076
|
}, {
|
|
2598
3077
|
key: "updateMeetingObject",
|
|
2599
3078
|
value: function updateMeetingObject(object) {
|
|
2600
|
-
var
|
|
3079
|
+
var _this19 = this;
|
|
2601
3080
|
|
|
2602
3081
|
// Validate if these are valid meeting object property
|
|
2603
3082
|
// TODO: add a check to make sure the value passed in the constructor
|
|
2604
3083
|
// is not changed by any delta event
|
|
2605
3084
|
if (object && (0, _keys.default)(object).length) {
|
|
2606
3085
|
(0, _keys.default)(object).forEach(function (key) {
|
|
2607
|
-
|
|
3086
|
+
_this19[key] = object[key];
|
|
2608
3087
|
});
|
|
2609
3088
|
}
|
|
2610
3089
|
}
|
|
@@ -2812,8 +3291,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2812
3291
|
var _locusMeetingObject, _locusMeetingObject2, _locusMeetingObject3, _locusMeetingObject4, _locusMeetingObject6;
|
|
2813
3292
|
|
|
2814
3293
|
this.conversationUrl = ((_locusMeetingObject = locusMeetingObject) === null || _locusMeetingObject === void 0 ? void 0 : _locusMeetingObject.conversationUrl) || (webexMeetingInfo === null || webexMeetingInfo === void 0 ? void 0 : webexMeetingInfo.conversationUrl) || this.conversationUrl;
|
|
2815
|
-
this.locusUrl = ((_locusMeetingObject2 = locusMeetingObject) === null || _locusMeetingObject2 === void 0 ? void 0 : _locusMeetingObject2.url) || (webexMeetingInfo === null || webexMeetingInfo === void 0 ? void 0 : webexMeetingInfo.locusUrl) || this.locusUrl;
|
|
2816
|
-
|
|
3294
|
+
this.locusUrl = ((_locusMeetingObject2 = locusMeetingObject) === null || _locusMeetingObject2 === void 0 ? void 0 : _locusMeetingObject2.url) || (webexMeetingInfo === null || webexMeetingInfo === void 0 ? void 0 : webexMeetingInfo.locusUrl) || this.locusUrl; // @ts-ignore - config coming from registerPlugin
|
|
3295
|
+
|
|
3296
|
+
this.setSipUri(this.config.experimental.enableUnifiedMeetings ? ((_locusMeetingObject3 = locusMeetingObject) === null || _locusMeetingObject3 === void 0 ? void 0 : _locusMeetingObject3.info.sipUri) || (webexMeetingInfo === null || webexMeetingInfo === void 0 ? void 0 : webexMeetingInfo.sipUrl) : ((_locusMeetingObject4 = locusMeetingObject) === null || _locusMeetingObject4 === void 0 ? void 0 : _locusMeetingObject4.info.sipUri) || (webexMeetingInfo === null || webexMeetingInfo === void 0 ? void 0 : webexMeetingInfo.sipMeetingUri) || this.sipUri); // @ts-ignore - config coming from registerPlugin
|
|
2817
3297
|
|
|
2818
3298
|
if (this.config.experimental.enableUnifiedMeetings) {
|
|
2819
3299
|
var _locusMeetingObject5;
|
|
@@ -2871,21 +3351,6 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2871
3351
|
// This can be tel no, device id or a sip uri, user Id
|
|
2872
3352
|
this.sipUri = sipUri;
|
|
2873
3353
|
}
|
|
2874
|
-
/**
|
|
2875
|
-
* Set the roap seq on the class instance
|
|
2876
|
-
* @param {Number} seq
|
|
2877
|
-
* @returns {undefined}
|
|
2878
|
-
* @private
|
|
2879
|
-
* @memberof Meeting
|
|
2880
|
-
*/
|
|
2881
|
-
|
|
2882
|
-
}, {
|
|
2883
|
-
key: "setRoapSeq",
|
|
2884
|
-
value: function setRoapSeq(seq) {
|
|
2885
|
-
if (seq >= 0) {
|
|
2886
|
-
this.roapSeq = seq;
|
|
2887
|
-
}
|
|
2888
|
-
}
|
|
2889
3354
|
/**
|
|
2890
3355
|
* Set the locus info the class instance
|
|
2891
3356
|
* @param {Object} locus
|
|
@@ -2914,111 +3379,6 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
2914
3379
|
this.hostId = mtgLocus.host ? mtgLocus.host.id : this.hostId;
|
|
2915
3380
|
this.locusInfo.initialSetup(mtgLocus);
|
|
2916
3381
|
}
|
|
2917
|
-
/**
|
|
2918
|
-
* Sets the remote stream on the class instance and emits and
|
|
2919
|
-
* event to developers
|
|
2920
|
-
* @param {Object} pc The remote stream peer connection
|
|
2921
|
-
* @returns {undefined}
|
|
2922
|
-
* @public
|
|
2923
|
-
* @memberof Meeting
|
|
2924
|
-
*/
|
|
2925
|
-
|
|
2926
|
-
}, {
|
|
2927
|
-
key: "setRemoteStream",
|
|
2928
|
-
value: function setRemoteStream(pc) {
|
|
2929
|
-
var _this19 = this;
|
|
2930
|
-
|
|
2931
|
-
if (!pc) {
|
|
2932
|
-
return;
|
|
2933
|
-
} // eslint-disable-next-line no-param-reassign
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
pc.ontrack = function (event) {
|
|
2937
|
-
// eslint-disable-next-line no-warning-comments
|
|
2938
|
-
// TODO: It's possible for media to not be present
|
|
2939
|
-
// so we might need to either
|
|
2940
|
-
// A) wait until we have media flowing
|
|
2941
|
-
// B) trigger a second event when video is flowing
|
|
2942
|
-
_loggerProxy.default.logger.log("Meeting:index#setRemoteStream --> ontrack event received for peerConnection: ".concat(event));
|
|
2943
|
-
|
|
2944
|
-
var MEDIA_ID = {
|
|
2945
|
-
AUDIO_TRACK: '0',
|
|
2946
|
-
VIDEO_TRACK: '1',
|
|
2947
|
-
SHARE_TRACK: '2'
|
|
2948
|
-
};
|
|
2949
|
-
var eventType = null;
|
|
2950
|
-
var mediaTrack = event.track;
|
|
2951
|
-
var trackMediaID = null; // In case of safari some time the transceiver is not present for specific os version
|
|
2952
|
-
// sdk tries to determine the transceive using the track id present
|
|
2953
|
-
|
|
2954
|
-
if (event.transceiver && event.transceiver.mid) {
|
|
2955
|
-
trackMediaID = event.transceiver.mid;
|
|
2956
|
-
} else {
|
|
2957
|
-
var _event$target = event.target,
|
|
2958
|
-
audioTransceiver = _event$target.audioTransceiver,
|
|
2959
|
-
videoTransceiver = _event$target.videoTransceiver,
|
|
2960
|
-
shareTransceiver = _event$target.shareTransceiver; // audio kind indicates its a audio stream
|
|
2961
|
-
|
|
2962
|
-
if (mediaTrack.id === audioTransceiver.receiver.track.id) {
|
|
2963
|
-
trackMediaID = '0';
|
|
2964
|
-
} else if (mediaTrack.id === videoTransceiver.receiver.track.id) {
|
|
2965
|
-
trackMediaID = '1';
|
|
2966
|
-
} else if (mediaTrack.id === shareTransceiver.receiver.track.id) {
|
|
2967
|
-
trackMediaID = '2';
|
|
2968
|
-
} else {
|
|
2969
|
-
trackMediaID = null;
|
|
2970
|
-
|
|
2971
|
-
_metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
|
|
2972
|
-
correlation_id: _this19.correlationId,
|
|
2973
|
-
locus_id: _this19.locusUrl.split('/').pop()
|
|
2974
|
-
});
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
|
-
|
|
2978
|
-
switch (trackMediaID) {
|
|
2979
|
-
case MEDIA_ID.AUDIO_TRACK:
|
|
2980
|
-
eventType = _constants.EVENT_TYPES.REMOTE_AUDIO;
|
|
2981
|
-
|
|
2982
|
-
_this19.mediaProperties.setRemoteAudioTrack(mediaTrack);
|
|
2983
|
-
|
|
2984
|
-
break;
|
|
2985
|
-
|
|
2986
|
-
case MEDIA_ID.VIDEO_TRACK:
|
|
2987
|
-
eventType = _constants.EVENT_TYPES.REMOTE_VIDEO;
|
|
2988
|
-
|
|
2989
|
-
_this19.mediaProperties.setRemoteVideoTrack(mediaTrack);
|
|
2990
|
-
|
|
2991
|
-
break;
|
|
2992
|
-
|
|
2993
|
-
case MEDIA_ID.SHARE_TRACK:
|
|
2994
|
-
if (event.track) {
|
|
2995
|
-
eventType = _constants.EVENT_TYPES.REMOTE_SHARE;
|
|
2996
|
-
|
|
2997
|
-
_this19.mediaProperties.setRemoteShare(mediaTrack);
|
|
2998
|
-
}
|
|
2999
|
-
|
|
3000
|
-
break;
|
|
3001
|
-
|
|
3002
|
-
default:
|
|
3003
|
-
{
|
|
3004
|
-
_loggerProxy.default.logger.log('Meeting:index#setRemoteStream --> no matching media track id');
|
|
3005
|
-
}
|
|
3006
|
-
} // start stats here the stats are coming null if you dont receive streams
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
_this19.statsAnalyzer.startAnalyzer(_this19.mediaProperties.peerConnection);
|
|
3010
|
-
|
|
3011
|
-
if (eventType && mediaTrack) {
|
|
3012
|
-
_triggerProxy.default.trigger(_this19, {
|
|
3013
|
-
file: 'meeting/index',
|
|
3014
|
-
function: 'setRemoteStream:pc.ontrack'
|
|
3015
|
-
}, _constants.EVENT_TRIGGERS.MEDIA_READY, {
|
|
3016
|
-
type: eventType,
|
|
3017
|
-
stream: _util2.default.createMediaStream([mediaTrack])
|
|
3018
|
-
});
|
|
3019
|
-
}
|
|
3020
|
-
};
|
|
3021
|
-
}
|
|
3022
3382
|
/**
|
|
3023
3383
|
* Upload logs for the current meeting
|
|
3024
3384
|
* @param {object} options file name and function name
|
|
@@ -3257,7 +3617,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3257
3617
|
}
|
|
3258
3618
|
/**
|
|
3259
3619
|
* Sets the local media stream on the class and emits an event to the developer
|
|
3260
|
-
* @param {
|
|
3620
|
+
* @param {MediaStream} localShare the local media stream
|
|
3261
3621
|
* @returns {undefined}
|
|
3262
3622
|
* @public
|
|
3263
3623
|
* @memberof Meeting
|
|
@@ -3401,6 +3761,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3401
3761
|
|
|
3402
3762
|
// Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
|
|
3403
3763
|
// if the meeting has active peer connections, it should try to reconnect.
|
|
3764
|
+
// @ts-ignore
|
|
3404
3765
|
this.webex.internal.mercury.on(_constants.ONLINE, function () {
|
|
3405
3766
|
_loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online'); // Only send restore event when it was disconnected before and for connected later
|
|
3406
3767
|
|
|
@@ -3417,7 +3778,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3417
3778
|
}
|
|
3418
3779
|
|
|
3419
3780
|
_this24.hasWebsocketConnected = true;
|
|
3420
|
-
});
|
|
3781
|
+
}); // @ts-ignore
|
|
3782
|
+
|
|
3421
3783
|
this.webex.internal.mercury.on(_constants.OFFLINE, function () {
|
|
3422
3784
|
_loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
|
|
3423
3785
|
|
|
@@ -3432,9 +3794,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3432
3794
|
});
|
|
3433
3795
|
}
|
|
3434
3796
|
/**
|
|
3435
|
-
* Close the peer connections and remove them from the class.
|
|
3436
|
-
*
|
|
3437
|
-
*
|
|
3797
|
+
* Close the peer connections and remove them from the class.
|
|
3798
|
+
* Cleanup any media connection related things.
|
|
3799
|
+
*
|
|
3800
|
+
* @returns {Promise}
|
|
3438
3801
|
* @public
|
|
3439
3802
|
* @memberof Meeting
|
|
3440
3803
|
*/
|
|
@@ -3442,12 +3805,24 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3442
3805
|
}, {
|
|
3443
3806
|
key: "closePeerConnections",
|
|
3444
3807
|
value: function closePeerConnections() {
|
|
3445
|
-
|
|
3808
|
+
if (this.mediaProperties.webrtcMediaConnection) {
|
|
3809
|
+
if (this.remoteMediaManager) {
|
|
3810
|
+
this.remoteMediaManager.stop();
|
|
3811
|
+
this.remoteMediaManager = null;
|
|
3812
|
+
}
|
|
3813
|
+
|
|
3814
|
+
(0, _values.default)(this.mediaRequestManagers).forEach(function (mediaRequestManager) {
|
|
3815
|
+
return mediaRequestManager.reset();
|
|
3816
|
+
});
|
|
3817
|
+
this.receiveSlotManager.reset();
|
|
3818
|
+
this.mediaProperties.webrtcMediaConnection.close();
|
|
3819
|
+
}
|
|
3820
|
+
|
|
3821
|
+
return _promise.default.resolve();
|
|
3446
3822
|
}
|
|
3447
3823
|
/**
|
|
3448
3824
|
* Unsets the peer connections on the class
|
|
3449
3825
|
* warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST
|
|
3450
|
-
* @param {PeerConnection} peerConnection
|
|
3451
3826
|
* @returns {undefined}
|
|
3452
3827
|
* @public
|
|
3453
3828
|
* @memberof Meeting
|
|
@@ -3456,9 +3831,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3456
3831
|
}, {
|
|
3457
3832
|
key: "unsetPeerConnections",
|
|
3458
3833
|
value: function unsetPeerConnections() {
|
|
3459
|
-
this.mediaProperties.unsetPeerConnection();
|
|
3834
|
+
this.mediaProperties.unsetPeerConnection(); // @ts-ignore - config coming from registerPlugin
|
|
3460
3835
|
|
|
3461
3836
|
if (this.config.reconnection.detection) {
|
|
3837
|
+
// @ts-ignore
|
|
3462
3838
|
this.webex.internal.mercury.off(_constants.ONLINE);
|
|
3463
3839
|
}
|
|
3464
3840
|
}
|
|
@@ -3489,7 +3865,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3489
3865
|
|
|
3490
3866
|
if (!_util.default.isUserInJoinedState(this.locusInfo)) {
|
|
3491
3867
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
|
3492
|
-
}
|
|
3868
|
+
} // @ts-ignore
|
|
3869
|
+
|
|
3493
3870
|
|
|
3494
3871
|
if (!this.mediaId) {
|
|
3495
3872
|
// Happens when addMedia and mute are triggered in succession
|
|
@@ -3542,7 +3919,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3542
3919
|
|
|
3543
3920
|
if (!_util.default.isUserInJoinedState(this.locusInfo)) {
|
|
3544
3921
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
|
3545
|
-
}
|
|
3922
|
+
} // @ts-ignore
|
|
3923
|
+
|
|
3546
3924
|
|
|
3547
3925
|
if (!this.mediaId) {
|
|
3548
3926
|
// Happens when addMedia and mute are triggered in succession
|
|
@@ -3595,7 +3973,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3595
3973
|
|
|
3596
3974
|
if (!_util.default.isUserInJoinedState(this.locusInfo)) {
|
|
3597
3975
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
|
3598
|
-
}
|
|
3976
|
+
} // @ts-ignore
|
|
3977
|
+
|
|
3599
3978
|
|
|
3600
3979
|
if (!this.mediaId) {
|
|
3601
3980
|
// Happens when addMedia and mute are triggered in succession
|
|
@@ -3647,7 +4026,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3647
4026
|
|
|
3648
4027
|
if (!_util.default.isUserInJoinedState(this.locusInfo)) {
|
|
3649
4028
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
|
3650
|
-
}
|
|
4029
|
+
} // @ts-ignore
|
|
4030
|
+
|
|
3651
4031
|
|
|
3652
4032
|
if (!this.mediaId) {
|
|
3653
4033
|
// Happens when addMedia and mute are triggered in succession
|
|
@@ -3772,14 +4152,16 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3772
4152
|
|
|
3773
4153
|
if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
|
|
3774
4154
|
return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
|
|
3775
|
-
}
|
|
4155
|
+
} // @ts-ignore - currentMediaStatus coming from SelfUtil
|
|
4156
|
+
|
|
3776
4157
|
|
|
3777
4158
|
if (!_util.default.isMediaEstablished(this.currentMediaStatus)) {
|
|
3778
4159
|
return _promise.default.reject(new _parameter.default('Cannot reconnect, Media has not established to reconnect'));
|
|
3779
4160
|
}
|
|
3780
4161
|
|
|
3781
4162
|
try {
|
|
3782
|
-
_loggerProxy.default.logger.info('Meeting:index#reconnect --> Validating reconnect ability.');
|
|
4163
|
+
_loggerProxy.default.logger.info('Meeting:index#reconnect --> Validating reconnect ability.'); // @ts-ignore
|
|
4164
|
+
|
|
3783
4165
|
|
|
3784
4166
|
this.reconnectionManager.validate();
|
|
3785
4167
|
} catch (error) {
|
|
@@ -3900,7 +4282,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3900
4282
|
_loggerProxy.default.logger.info("Meeting:index#receiveTranscription -->\n Attempting to generate a web socket url.");
|
|
3901
4283
|
|
|
3902
4284
|
_context2.prev = 1;
|
|
3903
|
-
datachannelUrl = this.locusInfo.info.datachannelUrl;
|
|
4285
|
+
datachannelUrl = this.locusInfo.info.datachannelUrl; // @ts-ignore - fix type
|
|
4286
|
+
|
|
3904
4287
|
_context2.next = 5;
|
|
3905
4288
|
return this.request({
|
|
3906
4289
|
method: _constants.HTTP_VERBS.POST,
|
|
@@ -3916,7 +4299,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3916
4299
|
|
|
3917
4300
|
_loggerProxy.default.logger.info("Meeting:index#receiveTranscription -->\n Generated web socket url succesfully.");
|
|
3918
4301
|
|
|
3919
|
-
this.transcription = new _transcription.default(webSocketUrl,
|
|
4302
|
+
this.transcription = new _transcription.default(webSocketUrl, // @ts-ignore - fix type
|
|
4303
|
+
this.webex.sessionId, this.members);
|
|
3920
4304
|
|
|
3921
4305
|
_loggerProxy.default.logger.info("Meeting:index#receiveTranscription -->\n opened LLM web socket connection successfully."); // retrieve and pass the payload
|
|
3922
4306
|
|
|
@@ -3927,7 +4311,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
3927
4311
|
function: 'join'
|
|
3928
4312
|
}, _constants.EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION, payload);
|
|
3929
4313
|
});
|
|
3930
|
-
this.monitorTranscriptionSocketConnection();
|
|
4314
|
+
this.monitorTranscriptionSocketConnection(); // @ts-ignore - fix type
|
|
4315
|
+
|
|
3931
4316
|
this.transcription.connect(this.webex.credentials.supertoken.access_token);
|
|
3932
4317
|
_context2.next = 19;
|
|
3933
4318
|
break;
|
|
@@ -4008,6 +4393,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4008
4393
|
|
|
4009
4394
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
4010
4395
|
|
|
4396
|
+
// @ts-ignore - fix type
|
|
4011
4397
|
if (!this.webex.meetings.registered) {
|
|
4012
4398
|
var errorMessage = 'Meeting:index#join --> Device not registered';
|
|
4013
4399
|
var error = new Error(errorMessage);
|
|
@@ -4113,6 +4499,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4113
4499
|
}
|
|
4114
4500
|
}
|
|
4115
4501
|
|
|
4502
|
+
this.isMultistream = !!options.enableMultistream;
|
|
4116
4503
|
return _util.default.joinMeetingOptions(this, options).then(function (join) {
|
|
4117
4504
|
_this33.meetingFiniteStateMachine.join();
|
|
4118
4505
|
|
|
@@ -4133,48 +4520,76 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4133
4520
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
4134
4521
|
while (1) {
|
|
4135
4522
|
switch (_context3.prev = _context3.next) {
|
|
4523
|
+
case 0:
|
|
4524
|
+
if (!_this33.config.enableAutomaticLLM) {
|
|
4525
|
+
_context3.next = 3;
|
|
4526
|
+
break;
|
|
4527
|
+
}
|
|
4528
|
+
|
|
4529
|
+
_context3.next = 3;
|
|
4530
|
+
return _this33.updateLLMConnection();
|
|
4531
|
+
|
|
4532
|
+
case 3:
|
|
4533
|
+
return _context3.abrupt("return", join);
|
|
4534
|
+
|
|
4535
|
+
case 4:
|
|
4536
|
+
case "end":
|
|
4537
|
+
return _context3.stop();
|
|
4538
|
+
}
|
|
4539
|
+
}
|
|
4540
|
+
}, _callee3);
|
|
4541
|
+
}));
|
|
4542
|
+
|
|
4543
|
+
return function (_x2) {
|
|
4544
|
+
return _ref11.apply(this, arguments);
|
|
4545
|
+
};
|
|
4546
|
+
}()).then( /*#__PURE__*/function () {
|
|
4547
|
+
var _ref12 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(join) {
|
|
4548
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
4549
|
+
while (1) {
|
|
4550
|
+
switch (_context4.prev = _context4.next) {
|
|
4136
4551
|
case 0:
|
|
4137
4552
|
if (!isBrowser) {
|
|
4138
|
-
|
|
4553
|
+
_context4.next = 8;
|
|
4139
4554
|
break;
|
|
4140
4555
|
}
|
|
4141
4556
|
|
|
4142
4557
|
if (!(_this33.config.receiveTranscription || options.receiveTranscription)) {
|
|
4143
|
-
|
|
4558
|
+
_context4.next = 6;
|
|
4144
4559
|
break;
|
|
4145
4560
|
}
|
|
4146
4561
|
|
|
4147
4562
|
if (!_this33.isTranscriptionSupported()) {
|
|
4148
|
-
|
|
4563
|
+
_context4.next = 6;
|
|
4149
4564
|
break;
|
|
4150
4565
|
}
|
|
4151
4566
|
|
|
4152
|
-
|
|
4567
|
+
_context4.next = 5;
|
|
4153
4568
|
return _this33.receiveTranscription();
|
|
4154
4569
|
|
|
4155
4570
|
case 5:
|
|
4156
4571
|
_loggerProxy.default.logger.info('Meeting:index#join --> enabled to recieve transcription!');
|
|
4157
4572
|
|
|
4158
4573
|
case 6:
|
|
4159
|
-
|
|
4574
|
+
_context4.next = 9;
|
|
4160
4575
|
break;
|
|
4161
4576
|
|
|
4162
4577
|
case 8:
|
|
4163
4578
|
_loggerProxy.default.logger.error('Meeting:index#join --> Receving transcription is not supported on this platform');
|
|
4164
4579
|
|
|
4165
4580
|
case 9:
|
|
4166
|
-
return
|
|
4581
|
+
return _context4.abrupt("return", join);
|
|
4167
4582
|
|
|
4168
4583
|
case 10:
|
|
4169
4584
|
case "end":
|
|
4170
|
-
return
|
|
4585
|
+
return _context4.stop();
|
|
4171
4586
|
}
|
|
4172
4587
|
}
|
|
4173
|
-
},
|
|
4588
|
+
}, _callee4);
|
|
4174
4589
|
}));
|
|
4175
4590
|
|
|
4176
|
-
return function (
|
|
4177
|
-
return
|
|
4591
|
+
return function (_x3) {
|
|
4592
|
+
return _ref12.apply(this, arguments);
|
|
4178
4593
|
};
|
|
4179
4594
|
}()).catch(function (error) {
|
|
4180
4595
|
var _error$error;
|
|
@@ -4210,6 +4625,69 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4210
4625
|
return _promise.default.reject(error);
|
|
4211
4626
|
});
|
|
4212
4627
|
}
|
|
4628
|
+
/**
|
|
4629
|
+
* Connects to low latency mercury and reconnects if the address has changed
|
|
4630
|
+
* It will also disconnect if called when the meeting has ended
|
|
4631
|
+
* @param {String} datachannelUrl
|
|
4632
|
+
* @returns {Promise}
|
|
4633
|
+
*/
|
|
4634
|
+
|
|
4635
|
+
}, {
|
|
4636
|
+
key: "updateLLMConnection",
|
|
4637
|
+
value: function () {
|
|
4638
|
+
var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
4639
|
+
var _this$locusInfo, url, _this$locusInfo$info, datachannelUrl, isJoined;
|
|
4640
|
+
|
|
4641
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
4642
|
+
while (1) {
|
|
4643
|
+
switch (_context5.prev = _context5.next) {
|
|
4644
|
+
case 0:
|
|
4645
|
+
_this$locusInfo = this.locusInfo, url = _this$locusInfo.url, _this$locusInfo$info = _this$locusInfo.info;
|
|
4646
|
+
_this$locusInfo$info = _this$locusInfo$info === void 0 ? {} : _this$locusInfo$info;
|
|
4647
|
+
datachannelUrl = _this$locusInfo$info.datachannelUrl;
|
|
4648
|
+
isJoined = this.joinedWith && this.joinedWith.state === 'JOINED';
|
|
4649
|
+
|
|
4650
|
+
if (!this.webex.internal.llm.isConnected()) {
|
|
4651
|
+
_context5.next = 9;
|
|
4652
|
+
break;
|
|
4653
|
+
}
|
|
4654
|
+
|
|
4655
|
+
if (!(url === this.webex.internal.llm.getLocusUrl() && isJoined)) {
|
|
4656
|
+
_context5.next = 7;
|
|
4657
|
+
break;
|
|
4658
|
+
}
|
|
4659
|
+
|
|
4660
|
+
return _context5.abrupt("return", undefined);
|
|
4661
|
+
|
|
4662
|
+
case 7:
|
|
4663
|
+
_context5.next = 9;
|
|
4664
|
+
return this.webex.internal.llm.disconnectLLM();
|
|
4665
|
+
|
|
4666
|
+
case 9:
|
|
4667
|
+
if (isJoined) {
|
|
4668
|
+
_context5.next = 11;
|
|
4669
|
+
break;
|
|
4670
|
+
}
|
|
4671
|
+
|
|
4672
|
+
return _context5.abrupt("return", undefined);
|
|
4673
|
+
|
|
4674
|
+
case 11:
|
|
4675
|
+
return _context5.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl));
|
|
4676
|
+
|
|
4677
|
+
case 12:
|
|
4678
|
+
case "end":
|
|
4679
|
+
return _context5.stop();
|
|
4680
|
+
}
|
|
4681
|
+
}
|
|
4682
|
+
}, _callee5, this);
|
|
4683
|
+
}));
|
|
4684
|
+
|
|
4685
|
+
function updateLLMConnection() {
|
|
4686
|
+
return _updateLLMConnection.apply(this, arguments);
|
|
4687
|
+
}
|
|
4688
|
+
|
|
4689
|
+
return updateLLMConnection;
|
|
4690
|
+
}()
|
|
4213
4691
|
/**
|
|
4214
4692
|
* Use phone for meeting audio
|
|
4215
4693
|
* @param {String} phoneNumber If provided, it will dial-out using this number. If not provided, dial-in will be used
|
|
@@ -4378,21 +4856,21 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4378
4856
|
meeting: this
|
|
4379
4857
|
});
|
|
4380
4858
|
|
|
4381
|
-
this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
4859
|
+
this.locusInfo.once(_constants.LOCUSINFO.EVENTS.SELF_OBSERVING, /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
|
|
4382
4860
|
var mediaSettings;
|
|
4383
|
-
return _regenerator.default.wrap(function
|
|
4861
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
4384
4862
|
while (1) {
|
|
4385
|
-
switch (
|
|
4863
|
+
switch (_context6.prev = _context6.next) {
|
|
4386
4864
|
case 0:
|
|
4387
|
-
|
|
4865
|
+
_context6.prev = 0;
|
|
4388
4866
|
|
|
4389
4867
|
if (!_this36.isSharing) {
|
|
4390
|
-
|
|
4868
|
+
_context6.next = 4;
|
|
4391
4869
|
break;
|
|
4392
4870
|
}
|
|
4393
4871
|
|
|
4394
|
-
|
|
4395
|
-
return _this36.
|
|
4872
|
+
_context6.next = 4;
|
|
4873
|
+
return _this36.releaseScreenShareFloor();
|
|
4396
4874
|
|
|
4397
4875
|
case 4:
|
|
4398
4876
|
mediaSettings = {
|
|
@@ -4409,46 +4887,47 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4409
4887
|
_this36.mediaProperties.setMediaDirection(mediaSettings.mediaDirection); // close the existing local tracks
|
|
4410
4888
|
|
|
4411
4889
|
|
|
4412
|
-
|
|
4890
|
+
_context6.next = 8;
|
|
4413
4891
|
return _this36.closeLocalStream();
|
|
4414
4892
|
|
|
4415
4893
|
case 8:
|
|
4416
|
-
|
|
4894
|
+
_context6.next = 10;
|
|
4417
4895
|
return _this36.closeLocalShare();
|
|
4418
4896
|
|
|
4419
4897
|
case 10:
|
|
4420
4898
|
_this36.mediaProperties.unsetMediaTracks(); // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the DX answers the meeting
|
|
4421
4899
|
// once the DX answers we establish connection back the media server with only receiveShare enabled
|
|
4900
|
+
// @ts-ignore - reconnectMedia does not accept any argument
|
|
4422
4901
|
|
|
4423
4902
|
|
|
4424
|
-
|
|
4903
|
+
_context6.next = 13;
|
|
4425
4904
|
return _this36.reconnectionManager.reconnectMedia(mediaSettings).then(function () {
|
|
4426
4905
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
|
|
4427
4906
|
});
|
|
4428
4907
|
|
|
4429
4908
|
case 13:
|
|
4430
|
-
|
|
4909
|
+
_context6.next = 19;
|
|
4431
4910
|
break;
|
|
4432
4911
|
|
|
4433
4912
|
case 15:
|
|
4434
|
-
|
|
4435
|
-
|
|
4913
|
+
_context6.prev = 15;
|
|
4914
|
+
_context6.t0 = _context6["catch"](0);
|
|
4436
4915
|
|
|
4437
|
-
_loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId',
|
|
4916
|
+
_loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context6.t0);
|
|
4438
4917
|
|
|
4439
4918
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
|
|
4440
4919
|
correlation_id: _this36.correlationId,
|
|
4441
4920
|
locus_id: _this36.locusUrl.split('/').pop(),
|
|
4442
|
-
reason:
|
|
4443
|
-
stack:
|
|
4921
|
+
reason: _context6.t0.message,
|
|
4922
|
+
stack: _context6.t0.stack
|
|
4444
4923
|
});
|
|
4445
4924
|
|
|
4446
4925
|
case 19:
|
|
4447
4926
|
case "end":
|
|
4448
|
-
return
|
|
4927
|
+
return _context6.stop();
|
|
4449
4928
|
}
|
|
4450
4929
|
}
|
|
4451
|
-
},
|
|
4930
|
+
}, _callee6, null, [[0, 15]]);
|
|
4452
4931
|
})));
|
|
4453
4932
|
|
|
4454
4933
|
_loggerProxy.default.logger.info('Meeting:index#moveTo --> Initated moved to using resourceId', resourceId);
|
|
@@ -4525,6 +5004,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4525
5004
|
}
|
|
4526
5005
|
/**
|
|
4527
5006
|
* Get local media streams based on options passed
|
|
5007
|
+
*
|
|
5008
|
+
* NOTE: this method can only be used with transcoded meetings, not with multistream meetings
|
|
5009
|
+
*
|
|
4528
5010
|
* @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
|
|
4529
5011
|
* @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
|
|
4530
5012
|
* @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
|
|
@@ -4535,8 +5017,49 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4535
5017
|
*/
|
|
4536
5018
|
|
|
4537
5019
|
}, {
|
|
4538
|
-
key: "
|
|
4539
|
-
value:
|
|
5020
|
+
key: "getMediaConnectionDebugId",
|
|
5021
|
+
value: function getMediaConnectionDebugId() {
|
|
5022
|
+
return "MC-".concat(this.id.substring(0, 4));
|
|
5023
|
+
}
|
|
5024
|
+
}, {
|
|
5025
|
+
key: "createMediaConnection",
|
|
5026
|
+
value: function createMediaConnection(turnServerInfo) {
|
|
5027
|
+
var mc = _media.default.createMediaConnection(this.isMultistream, this.getMediaConnectionDebugId(), {
|
|
5028
|
+
mediaProperties: this.mediaProperties,
|
|
5029
|
+
remoteQualityLevel: this.mediaProperties.remoteQualityLevel,
|
|
5030
|
+
// @ts-ignore - config coming from registerPlugin
|
|
5031
|
+
enableRtx: this.config.enableRtx,
|
|
5032
|
+
// @ts-ignore - config coming from registerPlugin
|
|
5033
|
+
enableExtmap: this.config.enableExtmap,
|
|
5034
|
+
turnServerInfo: turnServerInfo
|
|
5035
|
+
});
|
|
5036
|
+
|
|
5037
|
+
this.mediaProperties.setMediaPeerConnection(mc);
|
|
5038
|
+
this.setupMediaConnectionListeners();
|
|
5039
|
+
return mc;
|
|
5040
|
+
}
|
|
5041
|
+
/**
|
|
5042
|
+
* Listens for an event emitted by eventEmitter and emits it from the meeting object
|
|
5043
|
+
*
|
|
5044
|
+
* @private
|
|
5045
|
+
* @param {*} eventEmitter object from which to forward the event
|
|
5046
|
+
* @param {*} eventTypeToForward which event type to listen on and to forward
|
|
5047
|
+
* @param {string} meetingEventType event type to be used in the event emitted from the meeting object
|
|
5048
|
+
* @returns {void}
|
|
5049
|
+
*/
|
|
5050
|
+
|
|
5051
|
+
}, {
|
|
5052
|
+
key: "forwardEvent",
|
|
5053
|
+
value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
|
|
5054
|
+
var _this38 = this;
|
|
5055
|
+
|
|
5056
|
+
eventEmitter.on(eventTypeToForward, function (data) {
|
|
5057
|
+
return _triggerProxy.default.trigger(_this38, {
|
|
5058
|
+
file: 'meetings',
|
|
5059
|
+
function: 'addMedia'
|
|
5060
|
+
}, meetingEventType, data);
|
|
5061
|
+
});
|
|
5062
|
+
}
|
|
4540
5063
|
/**
|
|
4541
5064
|
* Specify joining via audio (option: pstn), video, screenshare
|
|
4542
5065
|
* @param {Object} options A configurable options object for joining a meeting
|
|
@@ -4544,12 +5067,16 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4544
5067
|
* @param {MediaDirection} options.mediaSettings pass media options
|
|
4545
5068
|
* @param {MediaStream} options.localStream
|
|
4546
5069
|
* @param {MediaStream} options.localShare
|
|
5070
|
+
* @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
|
|
4547
5071
|
* @returns {Promise}
|
|
4548
5072
|
* @public
|
|
4549
5073
|
* @memberof Meeting
|
|
4550
5074
|
*/
|
|
4551
|
-
|
|
4552
|
-
|
|
5075
|
+
|
|
5076
|
+
}, {
|
|
5077
|
+
key: "addMedia",
|
|
5078
|
+
value: function addMedia() {
|
|
5079
|
+
var _this39 = this;
|
|
4553
5080
|
|
|
4554
5081
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
4555
5082
|
var LOG_HEADER = 'Meeting:index#addMedia -->';
|
|
@@ -4563,6 +5090,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4563
5090
|
if (_util.default.isUserInLeftState(this.locusInfo)) {
|
|
4564
5091
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
|
4565
5092
|
} // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia
|
|
5093
|
+
// @ts-ignore - isUserUnadmitted coming from SelfUtil
|
|
4566
5094
|
|
|
4567
5095
|
|
|
4568
5096
|
if (this.isUserUnadmitted && !this.wirelessShare) {
|
|
@@ -4571,7 +5099,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4571
5099
|
|
|
4572
5100
|
var localStream = options.localStream,
|
|
4573
5101
|
localShare = options.localShare,
|
|
4574
|
-
mediaSettings = options.mediaSettings
|
|
5102
|
+
mediaSettings = options.mediaSettings,
|
|
5103
|
+
remoteMediaManagerConfig = options.remoteMediaManagerConfig;
|
|
4575
5104
|
|
|
4576
5105
|
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " Adding Media."));
|
|
4577
5106
|
|
|
@@ -4599,158 +5128,122 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4599
5128
|
});
|
|
4600
5129
|
|
|
4601
5130
|
return _util.default.validateOptions(options).then(function () {
|
|
4602
|
-
return
|
|
5131
|
+
return _this39.roap.doTurnDiscovery(_this39, false);
|
|
4603
5132
|
}).then(function (turnDiscoveryObject) {
|
|
4604
5133
|
turnDiscoverySkippedReason = turnDiscoveryObject.turnDiscoverySkippedReason;
|
|
4605
5134
|
turnServerUsed = !turnDiscoverySkippedReason;
|
|
4606
5135
|
var turnServerInfo = turnDiscoveryObject.turnServerInfo;
|
|
4607
5136
|
|
|
4608
|
-
|
|
5137
|
+
_this39.preMedia(localStream, localShare, mediaSettings);
|
|
4609
5138
|
|
|
4610
|
-
|
|
5139
|
+
var mc = _this39.createMediaConnection(turnServerInfo);
|
|
4611
5140
|
|
|
4612
|
-
|
|
5141
|
+
if (_this39.isMultistream) {
|
|
5142
|
+
_this39.remoteMediaManager = new _remoteMediaManager.RemoteMediaManager(_this39.receiveSlotManager, _this39.mediaRequestManagers, remoteMediaManagerConfig);
|
|
4613
5143
|
|
|
4614
|
-
|
|
4615
|
-
}).then(function () {
|
|
4616
|
-
return _media.default.attachMedia(_this38.mediaProperties, {
|
|
4617
|
-
meetingId: _this38.id,
|
|
4618
|
-
remoteQualityLevel: _this38.mediaProperties.remoteQualityLevel,
|
|
4619
|
-
enableRtx: _this38.config.enableRtx,
|
|
4620
|
-
enableExtmap: _this38.config.enableExtmap,
|
|
4621
|
-
setStartLocalSDPGenRemoteSDPRecvDelay: _this38.setStartLocalSDPGenRemoteSDPRecvDelay.bind(_this38)
|
|
4622
|
-
}).then(function (peerConnection) {
|
|
4623
|
-
return _this38.getDevices().then(function (devices) {
|
|
4624
|
-
_util.default.handleDeviceLogging(devices);
|
|
4625
|
-
|
|
4626
|
-
return peerConnection;
|
|
4627
|
-
});
|
|
4628
|
-
}).then(function (peerConnection) {
|
|
4629
|
-
_this38.handleMediaLogging(_this38.mediaProperties);
|
|
4630
|
-
|
|
4631
|
-
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " PeerConnection Received from attachMedia "));
|
|
4632
|
-
|
|
4633
|
-
_this38.setRemoteStream(peerConnection);
|
|
4634
|
-
|
|
4635
|
-
if (_this38.config.stats.enableStatsAnalyzer) {
|
|
4636
|
-
// TODO: ** Dont re create StatsAnalyzer on reconnect or rejoin
|
|
4637
|
-
_this38.networkQualityMonitor = new _networkQualityMonitor.default(_this38.config.stats);
|
|
4638
|
-
_this38.statsAnalyzer = new _statsAnalyzer.StatsAnalyzer(_this38.config.stats, _this38.networkQualityMonitor);
|
|
5144
|
+
_this39.forwardEvent(_this39.remoteMediaManager, _remoteMediaManager.Event.AudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_AUDIO_CREATED);
|
|
4639
5145
|
|
|
4640
|
-
|
|
5146
|
+
_this39.forwardEvent(_this39.remoteMediaManager, _remoteMediaManager.Event.ScreenShareAudioCreated, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED);
|
|
4641
5147
|
|
|
4642
|
-
|
|
4643
|
-
}
|
|
4644
|
-
}).catch(function (error) {
|
|
4645
|
-
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error adding media , setting up peerconnection, "), error);
|
|
5148
|
+
_this39.forwardEvent(_this39.remoteMediaManager, _remoteMediaManager.Event.VideoLayoutChanged, _constants.EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED);
|
|
4646
5149
|
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
locus_id: _this38.locusUrl.split('/').pop(),
|
|
4650
|
-
reason: error.message,
|
|
4651
|
-
stack: error.stack,
|
|
4652
|
-
turnDiscoverySkippedReason: turnDiscoverySkippedReason,
|
|
4653
|
-
turnServerUsed: turnServerUsed
|
|
5150
|
+
return _this39.remoteMediaManager.start().then(function () {
|
|
5151
|
+
return mc.initiateOffer();
|
|
4654
5152
|
});
|
|
5153
|
+
}
|
|
4655
5154
|
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
4660
|
-
|
|
5155
|
+
return mc.initiateOffer();
|
|
5156
|
+
}).then(function () {
|
|
5157
|
+
_this39.setMercuryListener();
|
|
5158
|
+
}).then(function () {
|
|
5159
|
+
return _this39.getDevices().then(function (devices) {
|
|
5160
|
+
_util.default.handleDeviceLogging(devices);
|
|
5161
|
+
});
|
|
5162
|
+
}).then(function () {
|
|
5163
|
+
_this39.handleMediaLogging(_this39.mediaProperties);
|
|
4661
5164
|
|
|
4662
|
-
|
|
4663
|
-
resolve();
|
|
4664
|
-
}
|
|
5165
|
+
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " media connection created")); // @ts-ignore - config coming from registerPlugin
|
|
4665
5166
|
|
|
4666
|
-
var joiningTimer = setInterval(function () {
|
|
4667
|
-
timerCount += 1;
|
|
4668
5167
|
|
|
4669
|
-
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
}
|
|
5168
|
+
if (_this39.config.stats.enableStatsAnalyzer) {
|
|
5169
|
+
// @ts-ignore - config coming from registerPlugin
|
|
5170
|
+
_this39.networkQualityMonitor = new _networkQualityMonitor.default(_this39.config.stats); // @ts-ignore - config coming from registerPlugin
|
|
4673
5171
|
|
|
4674
|
-
|
|
4675
|
-
clearInterval(joiningTimer);
|
|
4676
|
-
reject(new Error('Meeting is still not active '));
|
|
4677
|
-
}
|
|
4678
|
-
}, 1000);
|
|
4679
|
-
});
|
|
4680
|
-
}).then(function () {
|
|
4681
|
-
return logRequest(_this38.roap.sendRoapMediaRequest({
|
|
4682
|
-
sdp: _this38.mediaProperties.peerConnection.sdp,
|
|
4683
|
-
roapSeq: _this38.roapSeq,
|
|
4684
|
-
meeting: _this38 // or can pass meeting ID
|
|
4685
|
-
|
|
4686
|
-
}), {
|
|
4687
|
-
header: "".concat(LOG_HEADER, " Send Roap Media Request."),
|
|
4688
|
-
success: "".concat(LOG_HEADER, " Successfully send roap media request"),
|
|
4689
|
-
failure: "".concat(LOG_HEADER, " Error joining the call on send roap media request, ")
|
|
4690
|
-
});
|
|
4691
|
-
}).then(function () {
|
|
4692
|
-
var peerConnection = _this38.mediaProperties.peerConnection;
|
|
4693
|
-
return new _promise.default(function (resolve, reject) {
|
|
4694
|
-
if (peerConnection.connectionState === _constants.CONNECTION_STATE.CONNECTED) {
|
|
4695
|
-
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " PeerConnection CONNECTED"));
|
|
5172
|
+
_this39.statsAnalyzer = new _statsAnalyzer.StatsAnalyzer(_this39.config.stats, _this39.networkQualityMonitor);
|
|
4696
5173
|
|
|
4697
|
-
|
|
4698
|
-
return;
|
|
4699
|
-
} // Check if Peer Connection is STABLE (connected)
|
|
5174
|
+
_this39.setupStatsAnalyzerEventHandlers();
|
|
4700
5175
|
|
|
5176
|
+
_this39.networkQualityMonitor.on(_constants.EVENT_TRIGGERS.NETWORK_QUALITY, _this39.sendNetworkQualityEvent.bind(_this39));
|
|
5177
|
+
}
|
|
5178
|
+
}).catch(function (error) {
|
|
5179
|
+
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error adding media , setting up peerconnection, "), error);
|
|
4701
5180
|
|
|
4702
|
-
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " PeerConnection CONNECTED"));
|
|
5181
|
+
throw error;
|
|
5182
|
+
}).then(function () {
|
|
5183
|
+
return new _promise.default(function (resolve, reject) {
|
|
5184
|
+
var timerCount = 0; // eslint-disable-next-line func-names
|
|
5185
|
+
// eslint-disable-next-line prefer-arrow-callback
|
|
4708
5186
|
|
|
4709
|
-
|
|
4710
|
-
|
|
4711
|
-
|
|
5187
|
+
if (_this39.type === _constants._CALL_) {
|
|
5188
|
+
resolve();
|
|
5189
|
+
}
|
|
4712
5190
|
|
|
4713
|
-
|
|
4714
|
-
|
|
5191
|
+
var joiningTimer = setInterval(function () {
|
|
5192
|
+
timerCount += 1;
|
|
4715
5193
|
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
}
|
|
5194
|
+
if (_this39.meetingState === _constants.FULL_STATE.ACTIVE) {
|
|
5195
|
+
clearInterval(joiningTimer);
|
|
5196
|
+
resolve();
|
|
5197
|
+
}
|
|
5198
|
+
|
|
5199
|
+
if (timerCount === 4) {
|
|
5200
|
+
clearInterval(joiningTimer);
|
|
5201
|
+
reject(new Error('Meeting is still not active '));
|
|
5202
|
+
}
|
|
5203
|
+
}, 1000);
|
|
5204
|
+
});
|
|
5205
|
+
}).then(function () {
|
|
5206
|
+
return _this39.mediaProperties.waitForMediaConnectionConnected().catch(function () {
|
|
5207
|
+
throw (0, _webexErrors.createMeetingsError)(30202, 'Meeting connection failed');
|
|
5208
|
+
});
|
|
5209
|
+
}).then(function () {
|
|
5210
|
+
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " PeerConnection CONNECTED"));
|
|
4725
5211
|
|
|
5212
|
+
if (mediaSettings && mediaSettings.sendShare && localShare) {
|
|
5213
|
+
if (_this39.state === _constants.MEETING_STATE.STATES.JOINED) {
|
|
5214
|
+
return _this39.requestScreenShareFloor();
|
|
5215
|
+
} // When the self state changes to JOINED then request the floor
|
|
4726
5216
|
|
|
4727
|
-
_this38.floorGrantPending = true;
|
|
4728
|
-
}
|
|
4729
5217
|
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
locus_id: _this38.locusUrl.split('/').pop()
|
|
4733
|
-
});
|
|
5218
|
+
_this39.floorGrantPending = true;
|
|
5219
|
+
}
|
|
4734
5220
|
|
|
4735
|
-
|
|
5221
|
+
return {};
|
|
5222
|
+
}).then(function () {
|
|
5223
|
+
return _this39.mediaProperties.getCurrentConnectionType();
|
|
5224
|
+
}).then(function (connectionType) {
|
|
5225
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, {
|
|
5226
|
+
correlation_id: _this39.correlationId,
|
|
5227
|
+
locus_id: _this39.locusUrl.split('/').pop(),
|
|
5228
|
+
connectionType: connectionType
|
|
4736
5229
|
});
|
|
4737
5230
|
}).catch(function (error) {
|
|
4738
5231
|
// Clean up stats analyzer, peer connection, and turn off listeners
|
|
4739
|
-
var stopStatsAnalyzer =
|
|
4740
|
-
stopStatsAnalyzer.then(function () {
|
|
4741
|
-
|
|
5232
|
+
var stopStatsAnalyzer = _this39.statsAnalyzer ? _this39.statsAnalyzer.stopAnalyzer() : _promise.default.resolve();
|
|
5233
|
+
return stopStatsAnalyzer.then(function () {
|
|
5234
|
+
_this39.statsAnalyzer = null;
|
|
4742
5235
|
|
|
4743
|
-
if (
|
|
4744
|
-
|
|
5236
|
+
if (_this39.mediaProperties.webrtcMediaConnection) {
|
|
5237
|
+
_this39.closePeerConnections();
|
|
4745
5238
|
|
|
4746
|
-
|
|
5239
|
+
_this39.unsetPeerConnections();
|
|
4747
5240
|
}
|
|
4748
5241
|
|
|
4749
5242
|
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error adding media failed to initiate PC and send request, "), error);
|
|
4750
5243
|
|
|
4751
5244
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_FAILURE, {
|
|
4752
|
-
correlation_id:
|
|
4753
|
-
locus_id:
|
|
5245
|
+
correlation_id: _this39.correlationId,
|
|
5246
|
+
locus_id: _this39.locusUrl.split('/').pop(),
|
|
4754
5247
|
reason: error.message,
|
|
4755
5248
|
stack: error.stack,
|
|
4756
5249
|
code: error.code,
|
|
@@ -4759,16 +5252,13 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4759
5252
|
}); // Upload logs on error while adding media
|
|
4760
5253
|
|
|
4761
5254
|
|
|
4762
|
-
_triggerProxy.default.trigger(
|
|
5255
|
+
_triggerProxy.default.trigger(_this39, {
|
|
4763
5256
|
file: 'meeting/index',
|
|
4764
5257
|
function: 'addMedia'
|
|
4765
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
4766
|
-
// leave the meeting with reson connection failed as meeting anyways will end
|
|
4767
|
-
// and cannot be connected unless network condition is checked for firewall
|
|
4768
|
-
|
|
5258
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this39);
|
|
4769
5259
|
|
|
4770
|
-
if (error
|
|
4771
|
-
|
|
5260
|
+
if (error instanceof _internalMediaCore.MediaConnection.Errors.SdpError) {
|
|
5261
|
+
_this39.leave({
|
|
4772
5262
|
reason: _constants.MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED
|
|
4773
5263
|
});
|
|
4774
5264
|
}
|
|
@@ -4785,7 +5275,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4785
5275
|
}, {
|
|
4786
5276
|
key: "canUpdateMedia",
|
|
4787
5277
|
value: function canUpdateMedia() {
|
|
4788
|
-
|
|
5278
|
+
// in theory we shouldn't need this as RoapMediaConnection handles multiple updates, glare, etc,
|
|
5279
|
+
// but there are some server issues, like https://jira-eng-gpk2.cisco.com/jira/browse/WEBEX-248394
|
|
5280
|
+
// so for now it's better to keep queuing any media updates at SDK meeting level
|
|
5281
|
+
return !this.isRoapInProgress;
|
|
4789
5282
|
}
|
|
4790
5283
|
/**
|
|
4791
5284
|
* Enqueues a media update operation.
|
|
@@ -4799,7 +5292,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4799
5292
|
}, {
|
|
4800
5293
|
key: "enqueueMediaUpdate",
|
|
4801
5294
|
value: function enqueueMediaUpdate(mediaUpdateType, options) {
|
|
4802
|
-
var
|
|
5295
|
+
var _this40 = this;
|
|
4803
5296
|
|
|
4804
5297
|
return new _promise.default(function (resolve, reject) {
|
|
4805
5298
|
var queueItem = {
|
|
@@ -4811,7 +5304,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4811
5304
|
|
|
4812
5305
|
_loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
|
|
4813
5306
|
|
|
4814
|
-
|
|
5307
|
+
_this40.queuedMediaUpdates.push(queueItem);
|
|
4815
5308
|
});
|
|
4816
5309
|
}
|
|
4817
5310
|
/**
|
|
@@ -4832,12 +5325,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4832
5325
|
* @param {MediaStream} options.localShare
|
|
4833
5326
|
* @param {MediaDirection} options.mediaSettings
|
|
4834
5327
|
* @returns {Promise}
|
|
4835
|
-
* @todo fix setRemoteStream for updateMedia
|
|
4836
5328
|
* @public
|
|
4837
5329
|
* @memberof Meeting
|
|
4838
5330
|
*/
|
|
4839
5331
|
function updateMedia() {
|
|
4840
|
-
var
|
|
5332
|
+
var _this41 = this;
|
|
4841
5333
|
|
|
4842
5334
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
4843
5335
|
var LOG_HEADER = 'Meeting:index#updateMedia -->';
|
|
@@ -4850,52 +5342,51 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4850
5342
|
localShare = options.localShare,
|
|
4851
5343
|
mediaSettings = options.mediaSettings;
|
|
4852
5344
|
var previousSendShareStatus = this.mediaProperties.mediaDirection.sendShare;
|
|
5345
|
+
|
|
5346
|
+
if (!this.mediaProperties.webrtcMediaConnection) {
|
|
5347
|
+
return _promise.default.reject(new Error('media connection not established, call addMedia() first'));
|
|
5348
|
+
}
|
|
5349
|
+
|
|
4853
5350
|
return _util.default.validateOptions(options).then(function () {
|
|
4854
|
-
return
|
|
5351
|
+
return _this41.preMedia(localStream, localShare, mediaSettings);
|
|
4855
5352
|
}).then(function () {
|
|
4856
|
-
return
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
_peerConnectionManager.default.setContentSlides(peerConnection);
|
|
5353
|
+
return _this41.mediaProperties.webrtcMediaConnection.updateSendReceiveOptions({
|
|
5354
|
+
send: {
|
|
5355
|
+
audio: _this41.mediaProperties.mediaDirection.sendAudio ? _this41.mediaProperties.audioTrack : null,
|
|
5356
|
+
video: _this41.mediaProperties.mediaDirection.sendVideo ? _this41.mediaProperties.videoTrack : null,
|
|
5357
|
+
screenShareVideo: _this41.mediaProperties.mediaDirection.sendShare ? _this41.mediaProperties.shareTrack : null
|
|
5358
|
+
},
|
|
5359
|
+
receive: {
|
|
5360
|
+
audio: _this41.mediaProperties.mediaDirection.receiveAudio,
|
|
5361
|
+
video: _this41.mediaProperties.mediaDirection.receiveVideo,
|
|
5362
|
+
screenShareVideo: _this41.mediaProperties.mediaDirection.receiveShare,
|
|
5363
|
+
remoteQualityLevel: _this41.mediaProperties.remoteQualityLevel
|
|
4868
5364
|
}
|
|
5365
|
+
}).then(function () {
|
|
5366
|
+
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " webrtcMediaConnection.updateSendReceiveOptions done"));
|
|
4869
5367
|
}).catch(function (error) {
|
|
4870
5368
|
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error updatedMedia, "), error);
|
|
4871
5369
|
|
|
4872
5370
|
_metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
|
|
4873
|
-
correlation_id:
|
|
4874
|
-
locus_id:
|
|
5371
|
+
correlation_id: _this41.correlationId,
|
|
5372
|
+
locus_id: _this41.locusUrl.split('/').pop(),
|
|
4875
5373
|
reason: error.message,
|
|
4876
5374
|
stack: error.stack
|
|
4877
5375
|
});
|
|
4878
5376
|
|
|
4879
5377
|
throw error;
|
|
4880
|
-
})
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
}), {
|
|
4887
|
-
header: "".concat(LOG_HEADER, " sendRoapMediaRequest being sent"),
|
|
4888
|
-
success: "".concat(LOG_HEADER, " sendRoadMediaRequest successful"),
|
|
4889
|
-
failure: "".concat(LOG_HEADER, " Error updateMedia on send roap media request, ")
|
|
4890
|
-
});
|
|
4891
|
-
}).then(function () {
|
|
4892
|
-
return _this40.checkForStopShare(mediaSettings.sendShare, previousSendShareStatus);
|
|
5378
|
+
}) // todo: the following code used to be called always after sending the roap message with the new SDP
|
|
5379
|
+
// now it's called independently from the roap message (so might be before it), check if that's OK
|
|
5380
|
+
// if not, ensure it's called after (now it's called after roap message is sent out, but we're not
|
|
5381
|
+
// waiting for sendRoapMediaRequest() to be resolved)
|
|
5382
|
+
.then(function () {
|
|
5383
|
+
return _this41.checkForStopShare(mediaSettings.sendShare, previousSendShareStatus);
|
|
4893
5384
|
}).then(function (startShare) {
|
|
4894
5385
|
// This is a special case if we do an /floor grant followed by /media
|
|
4895
5386
|
// we actually get a OFFER from the server and a GLAR condition happens
|
|
4896
5387
|
if (startShare) {
|
|
4897
5388
|
// We are assuming that the clients are connected when doing an update
|
|
4898
|
-
return
|
|
5389
|
+
return _this41.requestScreenShareFloor();
|
|
4899
5390
|
}
|
|
4900
5391
|
|
|
4901
5392
|
return _promise.default.resolve();
|
|
@@ -4904,6 +5395,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4904
5395
|
}
|
|
4905
5396
|
/**
|
|
4906
5397
|
* Update the main audio track with new parameters
|
|
5398
|
+
*
|
|
5399
|
+
* NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
|
|
5400
|
+
*
|
|
4907
5401
|
* @param {Object} options
|
|
4908
5402
|
* @param {boolean} options.sendAudio
|
|
4909
5403
|
* @param {boolean} options.receiveAudio
|
|
@@ -4916,103 +5410,98 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
4916
5410
|
}, {
|
|
4917
5411
|
key: "updateAudio",
|
|
4918
5412
|
value: function () {
|
|
4919
|
-
var _updateAudio = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
4920
|
-
var
|
|
5413
|
+
var _updateAudio = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(options) {
|
|
5414
|
+
var _this42 = this;
|
|
4921
5415
|
|
|
4922
|
-
var sendAudio, receiveAudio, stream,
|
|
4923
|
-
return _regenerator.default.wrap(function
|
|
5416
|
+
var sendAudio, receiveAudio, stream, track, bnrEnabled;
|
|
5417
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
4924
5418
|
while (1) {
|
|
4925
|
-
switch (
|
|
5419
|
+
switch (_context7.prev = _context7.next) {
|
|
4926
5420
|
case 0:
|
|
4927
5421
|
if (this.canUpdateMedia()) {
|
|
4928
|
-
|
|
5422
|
+
_context7.next = 2;
|
|
4929
5423
|
break;
|
|
4930
5424
|
}
|
|
4931
5425
|
|
|
4932
|
-
return
|
|
5426
|
+
return _context7.abrupt("return", this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.AUDIO, options));
|
|
4933
5427
|
|
|
4934
5428
|
case 2:
|
|
4935
5429
|
sendAudio = options.sendAudio, receiveAudio = options.receiveAudio, stream = options.stream;
|
|
4936
|
-
audioTransceiver = this.mediaProperties.peerConnection.audioTransceiver;
|
|
4937
5430
|
track = _util.default.getTrack(stream).audioTrack;
|
|
4938
5431
|
|
|
4939
5432
|
if (!(typeof sendAudio !== 'boolean' || typeof receiveAudio !== 'boolean')) {
|
|
4940
|
-
|
|
5433
|
+
_context7.next = 6;
|
|
4941
5434
|
break;
|
|
4942
5435
|
}
|
|
4943
5436
|
|
|
4944
|
-
return
|
|
5437
|
+
return _context7.abrupt("return", _promise.default.reject(new _parameter.default('Pass sendAudio and receiveAudio parameter')));
|
|
4945
5438
|
|
|
4946
|
-
case
|
|
5439
|
+
case 6:
|
|
5440
|
+
if (this.mediaProperties.webrtcMediaConnection) {
|
|
5441
|
+
_context7.next = 8;
|
|
5442
|
+
break;
|
|
5443
|
+
}
|
|
5444
|
+
|
|
5445
|
+
return _context7.abrupt("return", _promise.default.reject(new Error('media connection not established, call addMedia() first')));
|
|
5446
|
+
|
|
5447
|
+
case 8:
|
|
4947
5448
|
if (!(this.effects && this.effects.state)) {
|
|
4948
|
-
|
|
5449
|
+
_context7.next = 16;
|
|
4949
5450
|
break;
|
|
4950
5451
|
}
|
|
4951
5452
|
|
|
4952
5453
|
bnrEnabled = this.effects.state.bnr.enabled;
|
|
4953
5454
|
|
|
4954
5455
|
if (!(sendAudio && !this.isAudioMuted() && (bnrEnabled === _constants.BNR_STATUS.ENABLED || bnrEnabled === _constants.BNR_STATUS.SHOULD_ENABLE))) {
|
|
4955
|
-
|
|
5456
|
+
_context7.next = 16;
|
|
4956
5457
|
break;
|
|
4957
5458
|
}
|
|
4958
5459
|
|
|
4959
5460
|
_loggerProxy.default.logger.info('Meeting:index#updateAudio. Calling WebRTC enable bnr method');
|
|
4960
5461
|
|
|
4961
|
-
|
|
5462
|
+
_context7.next = 14;
|
|
4962
5463
|
return this.internal_enableBNR(track);
|
|
4963
5464
|
|
|
4964
|
-
case
|
|
4965
|
-
track =
|
|
5465
|
+
case 14:
|
|
5466
|
+
track = _context7.sent;
|
|
4966
5467
|
|
|
4967
5468
|
_loggerProxy.default.logger.info('Meeting:index#updateAudio. WebRTC enable bnr request completed');
|
|
4968
5469
|
|
|
4969
|
-
case
|
|
4970
|
-
return
|
|
5470
|
+
case 16:
|
|
5471
|
+
return _context7.abrupt("return", _util.default.validateOptions({
|
|
4971
5472
|
sendAudio: sendAudio,
|
|
4972
5473
|
localStream: stream
|
|
4973
5474
|
}).then(function () {
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
return _util.default.updateTransceiver({
|
|
4986
|
-
type: 'audio',
|
|
4987
|
-
sendTrack: options.sendAudio,
|
|
4988
|
-
receiveTrack: options.receiveAudio,
|
|
4989
|
-
track: track,
|
|
4990
|
-
transceiver: audioTransceiver,
|
|
4991
|
-
peerConnection: _this41.mediaProperties.peerConnection,
|
|
4992
|
-
previousMediaDirection: previousMediaDirection
|
|
4993
|
-
}, {
|
|
4994
|
-
mediaProperties: _this41.mediaProperties,
|
|
4995
|
-
meeting: _this41,
|
|
4996
|
-
id: _this41.id
|
|
5475
|
+
return _this42.mediaProperties.webrtcMediaConnection.updateSendReceiveOptions({
|
|
5476
|
+
send: {
|
|
5477
|
+
audio: track
|
|
5478
|
+
},
|
|
5479
|
+
receive: {
|
|
5480
|
+
audio: options.receiveAudio,
|
|
5481
|
+
video: _this42.mediaProperties.mediaDirection.receiveVideo,
|
|
5482
|
+
screenShareVideo: _this42.mediaProperties.mediaDirection.receiveShare,
|
|
5483
|
+
remoteQualityLevel: _this42.mediaProperties.remoteQualityLevel
|
|
5484
|
+
}
|
|
4997
5485
|
});
|
|
4998
5486
|
}).then(function () {
|
|
4999
|
-
|
|
5487
|
+
_this42.setLocalAudioTrack(track); // todo: maybe this.mediaProperties.mediaDirection could be removed? it's duplicating stuff from webrtcMediaConnection
|
|
5000
5488
|
|
|
5001
|
-
_this41.mediaProperties.mediaDirection.sendAudio = sendAudio;
|
|
5002
|
-
_this41.mediaProperties.mediaDirection.receiveAudio = receiveAudio; // audio state could be undefined if you have not sent audio before
|
|
5003
5489
|
|
|
5004
|
-
|
|
5490
|
+
_this42.mediaProperties.mediaDirection.sendAudio = sendAudio;
|
|
5491
|
+
_this42.mediaProperties.mediaDirection.receiveAudio = receiveAudio; // audio state could be undefined if you have not sent audio before
|
|
5492
|
+
|
|
5493
|
+
_this42.audio = _this42.audio || (0, _muteState.default)(_constants.AUDIO, _this42, _this42.mediaProperties.mediaDirection);
|
|
5005
5494
|
}));
|
|
5006
5495
|
|
|
5007
|
-
case
|
|
5496
|
+
case 17:
|
|
5008
5497
|
case "end":
|
|
5009
|
-
return
|
|
5498
|
+
return _context7.stop();
|
|
5010
5499
|
}
|
|
5011
5500
|
}
|
|
5012
|
-
},
|
|
5501
|
+
}, _callee7, this);
|
|
5013
5502
|
}));
|
|
5014
5503
|
|
|
5015
|
-
function updateAudio(
|
|
5504
|
+
function updateAudio(_x4) {
|
|
5016
5505
|
return _updateAudio.apply(this, arguments);
|
|
5017
5506
|
}
|
|
5018
5507
|
|
|
@@ -5020,6 +5509,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5020
5509
|
}()
|
|
5021
5510
|
/**
|
|
5022
5511
|
* Update the main video track with new parameters
|
|
5512
|
+
*
|
|
5513
|
+
* NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
|
|
5514
|
+
*
|
|
5023
5515
|
* @param {Object} options
|
|
5024
5516
|
* @param {boolean} options.sendVideo
|
|
5025
5517
|
* @param {boolean} options.receiveVideo
|
|
@@ -5032,7 +5524,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5032
5524
|
}, {
|
|
5033
5525
|
key: "updateVideo",
|
|
5034
5526
|
value: function updateVideo(options) {
|
|
5035
|
-
var
|
|
5527
|
+
var _this43 = this;
|
|
5036
5528
|
|
|
5037
5529
|
if (!this.canUpdateMedia()) {
|
|
5038
5530
|
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.VIDEO, options);
|
|
@@ -5041,7 +5533,6 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5041
5533
|
var sendVideo = options.sendVideo,
|
|
5042
5534
|
receiveVideo = options.receiveVideo,
|
|
5043
5535
|
stream = options.stream;
|
|
5044
|
-
var videoTransceiver = this.mediaProperties.peerConnection.videoTransceiver;
|
|
5045
5536
|
|
|
5046
5537
|
var track = _util.default.getTrack(stream).videoTrack;
|
|
5047
5538
|
|
|
@@ -5049,33 +5540,32 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5049
5540
|
return _promise.default.reject(new _parameter.default('Pass sendVideo and receiveVideo parameter'));
|
|
5050
5541
|
}
|
|
5051
5542
|
|
|
5543
|
+
if (!this.mediaProperties.webrtcMediaConnection) {
|
|
5544
|
+
return _promise.default.reject(new Error('media connection not established, call addMedia() first'));
|
|
5545
|
+
}
|
|
5546
|
+
|
|
5052
5547
|
return _util.default.validateOptions({
|
|
5053
5548
|
sendVideo: sendVideo,
|
|
5054
5549
|
localStream: stream
|
|
5055
5550
|
}).then(function () {
|
|
5056
|
-
return
|
|
5057
|
-
|
|
5058
|
-
|
|
5059
|
-
|
|
5060
|
-
|
|
5061
|
-
|
|
5062
|
-
|
|
5063
|
-
|
|
5064
|
-
|
|
5065
|
-
receiveTrack: _this42.mediaProperties.mediaDirection.receiveVideo
|
|
5551
|
+
return _this43.mediaProperties.webrtcMediaConnection.updateSendReceiveOptions({
|
|
5552
|
+
send: {
|
|
5553
|
+
video: track
|
|
5554
|
+
},
|
|
5555
|
+
receive: {
|
|
5556
|
+
audio: _this43.mediaProperties.mediaDirection.receiveAudio,
|
|
5557
|
+
video: options.receiveVideo,
|
|
5558
|
+
screenShareVideo: _this43.mediaProperties.mediaDirection.receiveShare,
|
|
5559
|
+
remoteQualityLevel: _this43.mediaProperties.remoteQualityLevel
|
|
5066
5560
|
}
|
|
5067
|
-
}, {
|
|
5068
|
-
mediaProperties: _this42.mediaProperties,
|
|
5069
|
-
meeting: _this42,
|
|
5070
|
-
id: _this42.id
|
|
5071
5561
|
});
|
|
5072
5562
|
}).then(function () {
|
|
5073
|
-
|
|
5563
|
+
_this43.setLocalVideoTrack(track);
|
|
5074
5564
|
|
|
5075
|
-
|
|
5076
|
-
|
|
5565
|
+
_this43.mediaProperties.mediaDirection.sendVideo = sendVideo;
|
|
5566
|
+
_this43.mediaProperties.mediaDirection.receiveVideo = receiveVideo; // video state could be undefined if you have not sent video before
|
|
5077
5567
|
|
|
5078
|
-
|
|
5568
|
+
_this43.video = _this43.video || (0, _muteState.default)(_constants.VIDEO, _this43, _this43.mediaProperties.mediaDirection);
|
|
5079
5569
|
});
|
|
5080
5570
|
}
|
|
5081
5571
|
/**
|
|
@@ -5097,7 +5587,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5097
5587
|
|
|
5098
5588
|
if (!sendShare && previousShareStatus) {
|
|
5099
5589
|
// When user stops sharing
|
|
5100
|
-
return this.
|
|
5590
|
+
return this.releaseScreenShareFloor().then(function () {
|
|
5101
5591
|
return _promise.default.resolve(false);
|
|
5102
5592
|
});
|
|
5103
5593
|
}
|
|
@@ -5106,6 +5596,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5106
5596
|
}
|
|
5107
5597
|
/**
|
|
5108
5598
|
* Update the share streams, can be used to start sharing
|
|
5599
|
+
*
|
|
5600
|
+
* NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
|
|
5601
|
+
*
|
|
5109
5602
|
* @param {Object} options
|
|
5110
5603
|
* @param {boolean} options.sendShare
|
|
5111
5604
|
* @param {boolean} options.receiveShare
|
|
@@ -5117,7 +5610,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5117
5610
|
}, {
|
|
5118
5611
|
key: "updateShare",
|
|
5119
5612
|
value: function updateShare(options) {
|
|
5120
|
-
var
|
|
5613
|
+
var _this44 = this;
|
|
5121
5614
|
|
|
5122
5615
|
if (!options.skipSignalingCheck && !this.canUpdateMedia()) {
|
|
5123
5616
|
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.SHARE, options);
|
|
@@ -5126,7 +5619,6 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5126
5619
|
var sendShare = options.sendShare,
|
|
5127
5620
|
receiveShare = options.receiveShare,
|
|
5128
5621
|
stream = options.stream;
|
|
5129
|
-
var shareTransceiver = this.mediaProperties.peerConnection.shareTransceiver;
|
|
5130
5622
|
|
|
5131
5623
|
var track = _util.default.getTrack(stream).videoTrack;
|
|
5132
5624
|
|
|
@@ -5134,57 +5626,42 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5134
5626
|
return _promise.default.reject(new _parameter.default('Pass sendShare and receiveShare parameter'));
|
|
5135
5627
|
}
|
|
5136
5628
|
|
|
5629
|
+
if (!this.mediaProperties.webrtcMediaConnection) {
|
|
5630
|
+
return _promise.default.reject(new Error('media connection not established, call addMedia() first'));
|
|
5631
|
+
}
|
|
5632
|
+
|
|
5137
5633
|
var previousSendShareStatus = this.mediaProperties.mediaDirection.sendShare;
|
|
5138
5634
|
this.setLocalShareTrack(stream);
|
|
5139
5635
|
return _util.default.validateOptions({
|
|
5140
5636
|
sendShare: sendShare,
|
|
5141
5637
|
localShare: stream
|
|
5142
5638
|
}).then(function () {
|
|
5143
|
-
return
|
|
5639
|
+
return _this44.checkForStopShare(sendShare, previousSendShareStatus);
|
|
5144
5640
|
}).then(function (startShare) {
|
|
5145
|
-
return
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
|
|
5149
|
-
|
|
5150
|
-
|
|
5151
|
-
|
|
5152
|
-
|
|
5153
|
-
|
|
5154
|
-
receiveTrack: _this43.mediaProperties.mediaDirection.receiveShare
|
|
5641
|
+
return _this44.mediaProperties.webrtcMediaConnection.updateSendReceiveOptions({
|
|
5642
|
+
send: {
|
|
5643
|
+
screenShareVideo: track
|
|
5644
|
+
},
|
|
5645
|
+
receive: {
|
|
5646
|
+
audio: _this44.mediaProperties.mediaDirection.receiveAudio,
|
|
5647
|
+
video: _this44.mediaProperties.mediaDirection.receiveVideo,
|
|
5648
|
+
screenShareVideo: options.receiveShare,
|
|
5649
|
+
remoteQualityLevel: _this44.mediaProperties.remoteQualityLevel
|
|
5155
5650
|
}
|
|
5156
|
-
}, {
|
|
5157
|
-
mediaProperties: _this43.mediaProperties,
|
|
5158
|
-
meeting: _this43,
|
|
5159
|
-
id: _this43.id
|
|
5160
5651
|
}).then(function () {
|
|
5161
5652
|
if (startShare) {
|
|
5162
|
-
return
|
|
5653
|
+
return _this44.requestScreenShareFloor();
|
|
5163
5654
|
}
|
|
5164
5655
|
|
|
5165
5656
|
return _promise.default.resolve();
|
|
5166
5657
|
});
|
|
5167
5658
|
}).then(function () {
|
|
5168
|
-
|
|
5169
|
-
|
|
5659
|
+
_this44.mediaProperties.mediaDirection.sendShare = sendShare;
|
|
5660
|
+
_this44.mediaProperties.mediaDirection.receiveShare = receiveShare;
|
|
5170
5661
|
}).catch(function (error) {
|
|
5171
|
-
|
|
5662
|
+
_this44.unsetLocalShareTrack();
|
|
5172
5663
|
|
|
5173
5664
|
throw error;
|
|
5174
|
-
}).finally(function () {
|
|
5175
|
-
var delay = 1e3; // Check to see if share was stopped natively before onended was assigned.
|
|
5176
|
-
|
|
5177
|
-
var sharingModeIsActive = _this43.mediaProperties.peerConnection.shareTransceiver.direction === _constants.SENDRECV;
|
|
5178
|
-
var isSharingOutOfSync = sharingModeIsActive && !_this43.isLocalShareLive;
|
|
5179
|
-
|
|
5180
|
-
if (isSharingOutOfSync) {
|
|
5181
|
-
// Adding a delay to avoid a 409 from server
|
|
5182
|
-
// which results in user still appearing as if sharing.
|
|
5183
|
-
// Also delay give time for changes to peerConnection.
|
|
5184
|
-
setTimeout(function () {
|
|
5185
|
-
return _this43.handleShareTrackEnded(stream);
|
|
5186
|
-
}, delay);
|
|
5187
|
-
}
|
|
5188
5665
|
});
|
|
5189
5666
|
}
|
|
5190
5667
|
/**
|
|
@@ -5202,6 +5679,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5202
5679
|
value: function preMedia(localStream, localShare, mediaSettings) {
|
|
5203
5680
|
// eslint-disable-next-line no-warning-comments
|
|
5204
5681
|
// TODO wire into default config. There's currently an issue with the stateless plugin or how we register
|
|
5682
|
+
// @ts-ignore - config coming from registerPlugin
|
|
5205
5683
|
this.mediaProperties.setMediaDirection((0, _assign.default)(this.config.mediaSettings, mediaSettings)); // add a setup a function move the create and setup media in future
|
|
5206
5684
|
// TODO: delete old audio and video if stale
|
|
5207
5685
|
|
|
@@ -5222,7 +5700,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5222
5700
|
}, {
|
|
5223
5701
|
key: "acknowledge",
|
|
5224
5702
|
value: function acknowledge(type) {
|
|
5225
|
-
var
|
|
5703
|
+
var _this45 = this;
|
|
5226
5704
|
|
|
5227
5705
|
if (!type) {
|
|
5228
5706
|
return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
|
|
@@ -5236,11 +5714,11 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5236
5714
|
}).then(function (response) {
|
|
5237
5715
|
return _promise.default.resolve(response);
|
|
5238
5716
|
}).then(function (response) {
|
|
5239
|
-
|
|
5717
|
+
_this45.meetingFiniteStateMachine.ring(type);
|
|
5240
5718
|
|
|
5241
5719
|
_metrics.default.postEvent({
|
|
5242
5720
|
event: _config.eventType.ALERT_DISPLAYED,
|
|
5243
|
-
meeting:
|
|
5721
|
+
meeting: _this45
|
|
5244
5722
|
});
|
|
5245
5723
|
|
|
5246
5724
|
return _promise.default.resolve({
|
|
@@ -5265,14 +5743,14 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5265
5743
|
}, {
|
|
5266
5744
|
key: "decline",
|
|
5267
5745
|
value: function decline(reason) {
|
|
5268
|
-
var
|
|
5746
|
+
var _this46 = this;
|
|
5269
5747
|
|
|
5270
5748
|
return _util.default.declineMeeting(this, reason).then(function (decline) {
|
|
5271
|
-
|
|
5749
|
+
_this46.meetingFiniteStateMachine.decline();
|
|
5272
5750
|
|
|
5273
5751
|
return _promise.default.resolve(decline);
|
|
5274
5752
|
}).catch(function (error) {
|
|
5275
|
-
|
|
5753
|
+
_this46.meetingFiniteStateMachine.fail(error);
|
|
5276
5754
|
|
|
5277
5755
|
return _promise.default.reject(error);
|
|
5278
5756
|
});
|
|
@@ -5289,7 +5767,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5289
5767
|
}, {
|
|
5290
5768
|
key: "leave",
|
|
5291
5769
|
value: function leave() {
|
|
5292
|
-
var
|
|
5770
|
+
var _this47 = this;
|
|
5293
5771
|
|
|
5294
5772
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
5295
5773
|
|
|
@@ -5307,25 +5785,25 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5307
5785
|
_loggerProxy.default.logger.log('Meeting:index#leave --> Leaving a meeting');
|
|
5308
5786
|
|
|
5309
5787
|
return _util.default.leaveMeeting(this, options).then(function (leave) {
|
|
5310
|
-
|
|
5788
|
+
_this47.meetingFiniteStateMachine.leave();
|
|
5311
5789
|
|
|
5312
|
-
|
|
5790
|
+
_this47.clearMeetingData(); // upload logs on leave irrespective of meeting delete
|
|
5313
5791
|
|
|
5314
5792
|
|
|
5315
|
-
_triggerProxy.default.trigger(
|
|
5793
|
+
_triggerProxy.default.trigger(_this47, {
|
|
5316
5794
|
file: 'meeting/index',
|
|
5317
5795
|
function: 'leave'
|
|
5318
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
5796
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this47); // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
|
|
5319
5797
|
|
|
5320
5798
|
|
|
5321
|
-
if (
|
|
5799
|
+
if (_this47.wirelessShare || _this47.guest) {
|
|
5322
5800
|
// If screen sharing clean the meeting object
|
|
5323
|
-
_triggerProxy.default.trigger(
|
|
5801
|
+
_triggerProxy.default.trigger(_this47, {
|
|
5324
5802
|
file: 'meeting/index',
|
|
5325
5803
|
function: 'leave'
|
|
5326
5804
|
}, _constants.EVENTS.DESTROY_MEETING, {
|
|
5327
5805
|
reason: options.reason,
|
|
5328
|
-
meetingId:
|
|
5806
|
+
meetingId: _this47.id
|
|
5329
5807
|
});
|
|
5330
5808
|
}
|
|
5331
5809
|
|
|
@@ -5333,19 +5811,19 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5333
5811
|
|
|
5334
5812
|
return leave;
|
|
5335
5813
|
}).catch(function (error) {
|
|
5336
|
-
|
|
5814
|
+
_this47.meetingFiniteStateMachine.fail(error);
|
|
5337
5815
|
|
|
5338
5816
|
_loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error); // upload logs on leave irrespective of meeting delete
|
|
5339
5817
|
|
|
5340
5818
|
|
|
5341
|
-
_triggerProxy.default.trigger(
|
|
5819
|
+
_triggerProxy.default.trigger(_this47, {
|
|
5342
5820
|
file: 'meeting/index',
|
|
5343
5821
|
function: 'leave'
|
|
5344
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
5822
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this47);
|
|
5345
5823
|
|
|
5346
5824
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
|
|
5347
|
-
correlation_id:
|
|
5348
|
-
locus_id:
|
|
5825
|
+
correlation_id: _this47.correlationId,
|
|
5826
|
+
locus_id: _this47.locusUrl.split('/').pop(),
|
|
5349
5827
|
reason: error.message,
|
|
5350
5828
|
stack: error.stack,
|
|
5351
5829
|
code: error.code
|
|
@@ -5366,7 +5844,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5366
5844
|
}, {
|
|
5367
5845
|
key: "startWhiteboardShare",
|
|
5368
5846
|
value: function startWhiteboardShare(channelUrl, resourceToken) {
|
|
5369
|
-
var
|
|
5847
|
+
var _this48 = this;
|
|
5370
5848
|
|
|
5371
5849
|
var whiteboard = this.locusInfo.mediaShares.find(function (element) {
|
|
5372
5850
|
return element.name === 'whiteboard';
|
|
@@ -5395,14 +5873,14 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5395
5873
|
}
|
|
5396
5874
|
|
|
5397
5875
|
return this.meetingRequest.changeMeetingFloor(body).then(function () {
|
|
5398
|
-
|
|
5876
|
+
_this48.isSharing = false;
|
|
5399
5877
|
return _promise.default.resolve();
|
|
5400
5878
|
}).catch(function (error) {
|
|
5401
5879
|
_loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
|
|
5402
5880
|
|
|
5403
5881
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
|
|
5404
|
-
correlation_id:
|
|
5405
|
-
locus_id:
|
|
5882
|
+
correlation_id: _this48.correlationId,
|
|
5883
|
+
locus_id: _this48.locusUrl.split('/').pop(),
|
|
5406
5884
|
reason: error.message,
|
|
5407
5885
|
stack: error.stack,
|
|
5408
5886
|
board: {
|
|
@@ -5427,7 +5905,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5427
5905
|
}, {
|
|
5428
5906
|
key: "stopWhiteboardShare",
|
|
5429
5907
|
value: function stopWhiteboardShare(channelUrl) {
|
|
5430
|
-
var
|
|
5908
|
+
var _this49 = this;
|
|
5431
5909
|
|
|
5432
5910
|
var whiteboard = this.locusInfo.mediaShares.find(function (element) {
|
|
5433
5911
|
return element.name === 'whiteboard';
|
|
@@ -5447,9 +5925,10 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5447
5925
|
}).catch(function (error) {
|
|
5448
5926
|
_loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
|
|
5449
5927
|
|
|
5450
|
-
_metrics.default.sendBehavioralMetric(
|
|
5451
|
-
|
|
5452
|
-
|
|
5928
|
+
_metrics.default.sendBehavioralMetric( // @ts-ignore - check if STOP_WHITEBOARD_SHARE_FAILURE exists
|
|
5929
|
+
_constants2.default.STOP_WHITEBOARD_SHARE_FAILURE, {
|
|
5930
|
+
correlation_id: _this49.correlationId,
|
|
5931
|
+
locus_id: _this49.locusUrl.split('/').pop(),
|
|
5453
5932
|
reason: error.message,
|
|
5454
5933
|
stack: error.stack,
|
|
5455
5934
|
board: {
|
|
@@ -5464,16 +5943,16 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5464
5943
|
return _promise.default.reject(new _parameter.default('Cannot stop share without whiteboard.'));
|
|
5465
5944
|
}
|
|
5466
5945
|
/**
|
|
5467
|
-
*
|
|
5946
|
+
* Sends a request to Locus to obtain the screen share floor
|
|
5468
5947
|
* @returns {Promise} see #meetingRequest.changeMeetingFloor
|
|
5469
5948
|
* @private
|
|
5470
5949
|
* @memberof Meeting
|
|
5471
5950
|
*/
|
|
5472
5951
|
|
|
5473
5952
|
}, {
|
|
5474
|
-
key: "
|
|
5475
|
-
value: function
|
|
5476
|
-
var
|
|
5953
|
+
key: "requestScreenShareFloor",
|
|
5954
|
+
value: function requestScreenShareFloor() {
|
|
5955
|
+
var _this50 = this;
|
|
5477
5956
|
|
|
5478
5957
|
var content = this.locusInfo.mediaShares.find(function (element) {
|
|
5479
5958
|
return element.name === _constants.CONTENT;
|
|
@@ -5492,14 +5971,14 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5492
5971
|
uri: content.url,
|
|
5493
5972
|
resourceUrl: this.resourceUrl
|
|
5494
5973
|
}).then(function () {
|
|
5495
|
-
|
|
5974
|
+
_this50.isSharing = true;
|
|
5496
5975
|
return _promise.default.resolve();
|
|
5497
5976
|
}).catch(function (error) {
|
|
5498
5977
|
_loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
|
|
5499
5978
|
|
|
5500
5979
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
|
|
5501
|
-
correlation_id:
|
|
5502
|
-
locus_id:
|
|
5980
|
+
correlation_id: _this50.correlationId,
|
|
5981
|
+
locus_id: _this50.locusUrl.split('/').pop(),
|
|
5503
5982
|
reason: error.message,
|
|
5504
5983
|
stack: error.stack
|
|
5505
5984
|
});
|
|
@@ -5529,16 +6008,16 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5529
6008
|
}, options));
|
|
5530
6009
|
}
|
|
5531
6010
|
/**
|
|
5532
|
-
*
|
|
6011
|
+
* Sends a request to Locus to release the screen share floor.
|
|
5533
6012
|
* @returns {Promise} see #meetingRequest.changeMeetingFloor
|
|
5534
6013
|
* @private
|
|
5535
6014
|
* @memberof Meeting
|
|
5536
6015
|
*/
|
|
5537
6016
|
|
|
5538
6017
|
}, {
|
|
5539
|
-
key: "
|
|
5540
|
-
value: function
|
|
5541
|
-
var
|
|
6018
|
+
key: "releaseScreenShareFloor",
|
|
6019
|
+
value: function releaseScreenShareFloor() {
|
|
6020
|
+
var _this51 = this;
|
|
5542
6021
|
|
|
5543
6022
|
var content = this.locusInfo.mediaShares.find(function (element) {
|
|
5544
6023
|
return element.name === _constants.CONTENT;
|
|
@@ -5565,18 +6044,18 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5565
6044
|
uri: content.url,
|
|
5566
6045
|
resourceUrl: this.resourceUrl
|
|
5567
6046
|
}).catch(function (error) {
|
|
5568
|
-
_loggerProxy.default.logger.error('Meeting:index#
|
|
6047
|
+
_loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
|
|
5569
6048
|
|
|
5570
6049
|
_metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
|
|
5571
|
-
correlation_id:
|
|
5572
|
-
locus_id:
|
|
6050
|
+
correlation_id: _this51.correlationId,
|
|
6051
|
+
locus_id: _this51.locusUrl.split('/').pop(),
|
|
5573
6052
|
reason: error.message,
|
|
5574
6053
|
stack: error.stack
|
|
5575
6054
|
});
|
|
5576
6055
|
|
|
5577
6056
|
return _promise.default.reject(error);
|
|
5578
6057
|
}).finally(function () {
|
|
5579
|
-
|
|
6058
|
+
_this51.isSharing = false;
|
|
5580
6059
|
});
|
|
5581
6060
|
}
|
|
5582
6061
|
|
|
@@ -5712,7 +6191,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5712
6191
|
}, {
|
|
5713
6192
|
key: "changeVideoLayout",
|
|
5714
6193
|
value: function changeVideoLayout(layoutType) {
|
|
5715
|
-
var
|
|
6194
|
+
var _this52 = this;
|
|
5716
6195
|
|
|
5717
6196
|
var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
5718
6197
|
var main = renderInfo.main,
|
|
@@ -5770,7 +6249,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5770
6249
|
|
|
5771
6250
|
this.lastVideoLayoutInfo = (0, _cloneDeep2.default)(layoutInfo);
|
|
5772
6251
|
this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
|
|
5773
|
-
_triggerProxy.default.trigger(
|
|
6252
|
+
_triggerProxy.default.trigger(_this52, {
|
|
5774
6253
|
file: 'meeting/index',
|
|
5775
6254
|
function: 'changeVideoLayout'
|
|
5776
6255
|
}, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
|
|
@@ -5785,7 +6264,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5785
6264
|
content: layoutInfo.content
|
|
5786
6265
|
}).then(function (response) {
|
|
5787
6266
|
if (response && response.body && response.body.locus) {
|
|
5788
|
-
|
|
6267
|
+
_this52.locusInfo.onFullLocus(response.body.locus);
|
|
5789
6268
|
}
|
|
5790
6269
|
}).catch(function (error) {
|
|
5791
6270
|
_loggerProxy.default.logger.error('Meeting:index#changeVideoLayout --> Error ', error);
|
|
@@ -5802,7 +6281,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5802
6281
|
}, {
|
|
5803
6282
|
key: "setLocalVideoQuality",
|
|
5804
6283
|
value: function setLocalVideoQuality(level) {
|
|
5805
|
-
var
|
|
6284
|
+
var _this53 = this;
|
|
5806
6285
|
|
|
5807
6286
|
_loggerProxy.default.logger.log("Meeting:index#setLocalVideoQuality --> Setting quality to ".concat(level));
|
|
5808
6287
|
|
|
@@ -5834,34 +6313,34 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5834
6313
|
|
|
5835
6314
|
if (isBrowser('chrome') && this.mediaProperties.videoTrack) _media.default.stopTracks(this.mediaProperties.videoTrack);
|
|
5836
6315
|
return this.getMediaStreams(mediaDirection, _constants.VIDEO_RESOLUTIONS[level]).then( /*#__PURE__*/function () {
|
|
5837
|
-
var
|
|
5838
|
-
var
|
|
6316
|
+
var _ref15 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(_ref14) {
|
|
6317
|
+
var _ref16, localStream;
|
|
5839
6318
|
|
|
5840
|
-
return _regenerator.default.wrap(function
|
|
6319
|
+
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
5841
6320
|
while (1) {
|
|
5842
|
-
switch (
|
|
6321
|
+
switch (_context8.prev = _context8.next) {
|
|
5843
6322
|
case 0:
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
return
|
|
6323
|
+
_ref16 = (0, _slicedToArray2.default)(_ref14, 1), localStream = _ref16[0];
|
|
6324
|
+
_context8.next = 3;
|
|
6325
|
+
return _this53.updateVideo({
|
|
5847
6326
|
sendVideo: true,
|
|
5848
6327
|
receiveVideo: true,
|
|
5849
6328
|
stream: localStream
|
|
5850
6329
|
});
|
|
5851
6330
|
|
|
5852
6331
|
case 3:
|
|
5853
|
-
return
|
|
6332
|
+
return _context8.abrupt("return", localStream);
|
|
5854
6333
|
|
|
5855
6334
|
case 4:
|
|
5856
6335
|
case "end":
|
|
5857
|
-
return
|
|
6336
|
+
return _context8.stop();
|
|
5858
6337
|
}
|
|
5859
6338
|
}
|
|
5860
|
-
},
|
|
6339
|
+
}, _callee8);
|
|
5861
6340
|
}));
|
|
5862
6341
|
|
|
5863
|
-
return function (
|
|
5864
|
-
return
|
|
6342
|
+
return function (_x5) {
|
|
6343
|
+
return _ref15.apply(this, arguments);
|
|
5865
6344
|
};
|
|
5866
6345
|
}());
|
|
5867
6346
|
}
|
|
@@ -5907,7 +6386,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5907
6386
|
}, {
|
|
5908
6387
|
key: "setMeetingQuality",
|
|
5909
6388
|
value: function setMeetingQuality(level) {
|
|
5910
|
-
var
|
|
6389
|
+
var _this54 = this;
|
|
5911
6390
|
|
|
5912
6391
|
_loggerProxy.default.logger.log("Meeting:index#setMeetingQuality --> Setting quality to ".concat(level));
|
|
5913
6392
|
|
|
@@ -5932,18 +6411,18 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5932
6411
|
receiveVideo = _this$mediaProperties4.receiveVideo,
|
|
5933
6412
|
sendVideo = _this$mediaProperties4.sendVideo;
|
|
5934
6413
|
return (sendVideo ? this.setLocalVideoQuality(level) : _promise.default.resolve()).then(function () {
|
|
5935
|
-
return receiveAudio || receiveVideo ?
|
|
6414
|
+
return receiveAudio || receiveVideo ? _this54.setRemoteQualityLevel(level) : _promise.default.resolve();
|
|
5936
6415
|
}).catch(function (error) {
|
|
5937
6416
|
// From troubleshooting it seems that the stream itself doesn't change the max-fs if the peer connection isn't stable
|
|
5938
|
-
|
|
6417
|
+
_this54.mediaProperties.setLocalQualityLevel(previousLevel.local);
|
|
5939
6418
|
|
|
5940
|
-
|
|
6419
|
+
_this54.mediaProperties.setRemoteQualityLevel(previousLevel.remote);
|
|
5941
6420
|
|
|
5942
6421
|
_loggerProxy.default.logger.error("Meeting:index#setMeetingQuality --> ".concat(error.message));
|
|
5943
6422
|
|
|
5944
6423
|
_metrics.default.sendBehavioralMetric(_constants2.default.SET_MEETING_QUALITY_FAILURE, {
|
|
5945
|
-
correlation_id:
|
|
5946
|
-
locus_id:
|
|
6424
|
+
correlation_id: _this54.correlationId,
|
|
6425
|
+
locus_id: _this54.locusUrl.split('/').pop(),
|
|
5947
6426
|
reason: error.message,
|
|
5948
6427
|
stack: error.stack
|
|
5949
6428
|
}, {
|
|
@@ -5954,6 +6433,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5954
6433
|
});
|
|
5955
6434
|
}
|
|
5956
6435
|
/**
|
|
6436
|
+
*
|
|
6437
|
+
* NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
|
|
6438
|
+
*
|
|
5957
6439
|
* @param {Object} options parameter
|
|
5958
6440
|
* @param {Boolean} options.sendAudio send audio from the display share
|
|
5959
6441
|
* @param {Boolean} options.sendShare send video from the display share
|
|
@@ -5967,7 +6449,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5967
6449
|
}, {
|
|
5968
6450
|
key: "shareScreen",
|
|
5969
6451
|
value: function shareScreen() {
|
|
5970
|
-
var
|
|
6452
|
+
var _this55 = this;
|
|
5971
6453
|
|
|
5972
6454
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
5973
6455
|
|
|
@@ -5976,12 +6458,13 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5976
6458
|
var shareConstraints = _objectSpread({
|
|
5977
6459
|
sendShare: true,
|
|
5978
6460
|
sendAudio: false
|
|
5979
|
-
}, options);
|
|
6461
|
+
}, options); // @ts-ignore - config coming from registerPlugin
|
|
6462
|
+
|
|
5980
6463
|
|
|
5981
6464
|
return _media.default.getDisplayMedia(shareConstraints, this.config).then(function (shareStream) {
|
|
5982
|
-
return
|
|
6465
|
+
return _this55.updateShare({
|
|
5983
6466
|
sendShare: true,
|
|
5984
|
-
receiveShare:
|
|
6467
|
+
receiveShare: _this55.mediaProperties.mediaDirection.receiveShare,
|
|
5985
6468
|
stream: shareStream
|
|
5986
6469
|
});
|
|
5987
6470
|
}).catch(function (error) {
|
|
@@ -5993,8 +6476,8 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
5993
6476
|
// TODO: The getDisplayMedia errors need to be moved inside `media.getDisplayMedia`
|
|
5994
6477
|
var metricName = _constants2.default.GET_DISPLAY_MEDIA_FAILURE;
|
|
5995
6478
|
var data = {
|
|
5996
|
-
correlation_id:
|
|
5997
|
-
locus_id:
|
|
6479
|
+
correlation_id: _this55.correlationId,
|
|
6480
|
+
locus_id: _this55.locusUrl.split('/').pop(),
|
|
5998
6481
|
reason: error.message,
|
|
5999
6482
|
stack: error.stack
|
|
6000
6483
|
};
|
|
@@ -6073,9 +6556,9 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6073
6556
|
|
|
6074
6557
|
}, {
|
|
6075
6558
|
key: "handleMediaLogging",
|
|
6076
|
-
value: function handleMediaLogging(
|
|
6077
|
-
var audioTrack =
|
|
6078
|
-
videoTrack =
|
|
6559
|
+
value: function handleMediaLogging(_ref17) {
|
|
6560
|
+
var audioTrack = _ref17.audioTrack,
|
|
6561
|
+
videoTrack = _ref17.videoTrack;
|
|
6079
6562
|
|
|
6080
6563
|
_util.default.handleVideoLogging(videoTrack);
|
|
6081
6564
|
|
|
@@ -6290,7 +6773,7 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6290
6773
|
}, {
|
|
6291
6774
|
key: "endMeetingForAll",
|
|
6292
6775
|
value: function endMeetingForAll() {
|
|
6293
|
-
var
|
|
6776
|
+
var _this56 = this;
|
|
6294
6777
|
|
|
6295
6778
|
_metrics.default.postEvent({
|
|
6296
6779
|
event: _config.eventType.LEAVE,
|
|
@@ -6309,31 +6792,31 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6309
6792
|
});
|
|
6310
6793
|
|
|
6311
6794
|
return _util.default.endMeetingForAll(this).then(function (end) {
|
|
6312
|
-
|
|
6795
|
+
_this56.meetingFiniteStateMachine.end();
|
|
6313
6796
|
|
|
6314
|
-
|
|
6797
|
+
_this56.clearMeetingData(); // upload logs on leave irrespective of meeting delete
|
|
6315
6798
|
|
|
6316
6799
|
|
|
6317
|
-
_triggerProxy.default.trigger(
|
|
6800
|
+
_triggerProxy.default.trigger(_this56, {
|
|
6318
6801
|
file: 'meeting/index',
|
|
6319
6802
|
function: 'endMeetingForAll'
|
|
6320
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
6803
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
|
|
6321
6804
|
|
|
6322
6805
|
return end;
|
|
6323
6806
|
}).catch(function (error) {
|
|
6324
|
-
|
|
6807
|
+
_this56.meetingFiniteStateMachine.fail(error);
|
|
6325
6808
|
|
|
6326
6809
|
_loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error); // upload logs on leave irrespective of meeting delete
|
|
6327
6810
|
|
|
6328
6811
|
|
|
6329
|
-
_triggerProxy.default.trigger(
|
|
6812
|
+
_triggerProxy.default.trigger(_this56, {
|
|
6330
6813
|
file: 'meeting/index',
|
|
6331
6814
|
function: 'endMeetingForAll'
|
|
6332
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
|
6815
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this56);
|
|
6333
6816
|
|
|
6334
6817
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
|
|
6335
|
-
correlation_id:
|
|
6336
|
-
locus_id:
|
|
6818
|
+
correlation_id: _this56.correlationId,
|
|
6819
|
+
locus_id: _this56.locusUrl.split('/').pop(),
|
|
6337
6820
|
reason: error.message,
|
|
6338
6821
|
stack: error.stack,
|
|
6339
6822
|
code: error.code
|
|
@@ -6372,43 +6855,43 @@ var Meeting = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6372
6855
|
}, {
|
|
6373
6856
|
key: "internal_enableBNR",
|
|
6374
6857
|
value: function () {
|
|
6375
|
-
var _internal_enableBNR = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
6858
|
+
var _internal_enableBNR = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(audioTrack) {
|
|
6376
6859
|
var bnrAudioTrack;
|
|
6377
|
-
return _regenerator.default.wrap(function
|
|
6860
|
+
return _regenerator.default.wrap(function _callee9$(_context9) {
|
|
6378
6861
|
while (1) {
|
|
6379
|
-
switch (
|
|
6862
|
+
switch (_context9.prev = _context9.next) {
|
|
6380
6863
|
case 0:
|
|
6381
|
-
|
|
6864
|
+
_context9.prev = 0;
|
|
6382
6865
|
|
|
6383
6866
|
_loggerProxy.default.logger.info('Meeting:index#internal_enableBNR. Internal enable BNR called');
|
|
6384
6867
|
|
|
6385
|
-
|
|
6868
|
+
_context9.next = 4;
|
|
6386
6869
|
return _internalMediaCore.Media.Effects.BNR.enableBNR(audioTrack);
|
|
6387
6870
|
|
|
6388
6871
|
case 4:
|
|
6389
|
-
bnrAudioTrack =
|
|
6872
|
+
bnrAudioTrack = _context9.sent;
|
|
6390
6873
|
|
|
6391
6874
|
_loggerProxy.default.logger.info('Meeting:index#internal_enableBNR. BNR enabled track obtained from WebRTC & returned as stream');
|
|
6392
6875
|
|
|
6393
|
-
return
|
|
6876
|
+
return _context9.abrupt("return", bnrAudioTrack);
|
|
6394
6877
|
|
|
6395
6878
|
case 9:
|
|
6396
|
-
|
|
6397
|
-
|
|
6879
|
+
_context9.prev = 9;
|
|
6880
|
+
_context9.t0 = _context9["catch"](0);
|
|
6398
6881
|
|
|
6399
|
-
_loggerProxy.default.logger.error('Meeting:index#internal_enableBNR.',
|
|
6882
|
+
_loggerProxy.default.logger.error('Meeting:index#internal_enableBNR.', _context9.t0);
|
|
6400
6883
|
|
|
6401
|
-
throw
|
|
6884
|
+
throw _context9.t0;
|
|
6402
6885
|
|
|
6403
6886
|
case 13:
|
|
6404
6887
|
case "end":
|
|
6405
|
-
return
|
|
6888
|
+
return _context9.stop();
|
|
6406
6889
|
}
|
|
6407
6890
|
}
|
|
6408
|
-
},
|
|
6891
|
+
}, _callee9, null, [[0, 9]]);
|
|
6409
6892
|
}));
|
|
6410
6893
|
|
|
6411
|
-
function internal_enableBNR(
|
|
6894
|
+
function internal_enableBNR(_x6) {
|
|
6412
6895
|
return _internal_enableBNR.apply(this, arguments);
|
|
6413
6896
|
}
|
|
6414
6897
|
|