@webex/plugin-meetings 3.8.0-next.8 → 3.8.0-next.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +70 -6
- package/dist/breakouts/index.js.map +1 -1
- package/dist/common/errors/webex-errors.js +12 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +20 -123
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +2 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +52 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +28 -10
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +62 -12
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +432 -418
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +17 -17
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +94 -6
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +6 -0
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +17 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +570 -302
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +0 -17
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +0 -2
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +13 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +373 -68
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +5 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.js +136 -1
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +14 -0
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +330 -353
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +42 -0
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +38 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +36 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +9 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/reachability/clusterReachability.js +63 -27
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +112 -47
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +14 -0
- package/dist/reachability/reachability.types.js.map +1 -1
- package/dist/reachability/request.js +19 -3
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/turnDiscovery.js +45 -27
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/types.js +17 -0
- package/dist/roap/types.js.map +1 -0
- package/dist/types/common/errors/webex-errors.d.ts +7 -1
- package/dist/types/config.d.ts +3 -0
- package/dist/types/constants.d.ts +13 -85
- package/dist/types/controls-options-manager/enums.d.ts +3 -1
- package/dist/types/controls-options-manager/types.d.ts +7 -1
- package/dist/types/locus-info/index.d.ts +3 -3
- package/dist/types/locus-info/selfUtils.d.ts +216 -1
- package/dist/types/media/properties.d.ts +15 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +16 -0
- package/dist/types/meeting/index.d.ts +43 -1
- package/dist/types/meeting/muteState.d.ts +0 -1
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +3 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +82 -1
- package/dist/types/meetings/index.d.ts +57 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/util.d.ts +159 -1
- package/dist/types/members/index.d.ts +15 -0
- package/dist/types/members/request.d.ts +26 -0
- package/dist/types/members/util.d.ts +27 -0
- package/dist/types/metrics/constants.d.ts +9 -0
- package/dist/types/reachability/clusterReachability.d.ts +15 -7
- package/dist/types/reachability/index.d.ts +10 -1
- package/dist/types/reachability/reachability.types.d.ts +5 -0
- package/dist/types/roap/index.d.ts +3 -2
- package/dist/types/roap/turnDiscovery.d.ts +5 -17
- package/dist/types/roap/types.d.ts +16 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +24 -23
- package/src/breakouts/index.ts +69 -0
- package/src/common/errors/webex-errors.ts +8 -1
- package/src/config.ts +3 -0
- package/src/constants.ts +20 -90
- package/src/controls-options-manager/enums.ts +2 -0
- package/src/controls-options-manager/types.ts +11 -1
- package/src/controls-options-manager/util.ts +62 -0
- package/src/locus-info/controlsUtils.ts +44 -14
- package/src/locus-info/index.ts +56 -13
- package/src/locus-info/selfUtils.ts +496 -442
- package/src/media/index.ts +23 -21
- package/src/media/properties.ts +96 -0
- package/src/meeting/brbState.ts +7 -0
- package/src/meeting/in-meeting-actions.ts +32 -0
- package/src/meeting/index.ts +382 -93
- package/src/meeting/locusMediaRequest.ts +0 -18
- package/src/meeting/muteState.ts +0 -2
- package/src/meeting/request.ts +36 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +11 -2
- package/src/meeting-info/meeting-info-v2.ts +254 -8
- package/src/meeting-info/utilv2.ts +5 -0
- package/src/meetings/index.ts +148 -1
- package/src/meetings/util.ts +18 -0
- package/src/member/index.ts +13 -2
- package/src/member/util.ts +351 -348
- package/src/members/index.ts +47 -0
- package/src/members/request.ts +44 -0
- package/src/members/util.ts +43 -1
- package/src/metrics/constants.ts +9 -0
- package/src/reachability/clusterReachability.ts +73 -26
- package/src/reachability/index.ts +70 -1
- package/src/reachability/reachability.types.ts +6 -0
- package/src/reachability/request.ts +7 -0
- package/src/reconnection-manager/index.ts +2 -2
- package/src/roap/index.ts +3 -7
- package/src/roap/turnDiscovery.ts +34 -39
- package/src/roap/types.ts +23 -0
- package/test/unit/spec/breakouts/index.ts +167 -95
- package/test/unit/spec/controls-options-manager/util.js +120 -0
- package/test/unit/spec/locus-info/controlsUtils.js +103 -9
- package/test/unit/spec/locus-info/index.js +167 -73
- package/test/unit/spec/locus-info/selfUtils.js +98 -24
- package/test/unit/spec/media/index.ts +150 -18
- package/test/unit/spec/media/properties.ts +130 -0
- package/test/unit/spec/meeting/brbState.ts +19 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +19 -4
- package/test/unit/spec/meeting/index.js +557 -35
- package/test/unit/spec/meeting/locusMediaRequest.ts +0 -30
- package/test/unit/spec/meeting/muteState.js +0 -2
- package/test/unit/spec/meeting/request.js +32 -1
- package/test/unit/spec/meeting/utils.js +119 -18
- package/test/unit/spec/meeting-info/meetinginfov2.js +484 -114
- package/test/unit/spec/meeting-info/utilv2.js +19 -0
- package/test/unit/spec/meetings/index.js +146 -2
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/members/index.js +140 -26
- package/test/unit/spec/members/request.js +68 -22
- package/test/unit/spec/members/utils.js +75 -0
- package/test/unit/spec/reachability/clusterReachability.ts +88 -56
- package/test/unit/spec/reachability/index.ts +101 -0
- package/test/unit/spec/reachability/request.js +47 -2
- package/test/unit/spec/reconnection-manager/index.js +4 -4
- package/test/unit/spec/roap/turnDiscovery.ts +110 -28
package/dist/meeting/index.js
CHANGED
@@ -21,6 +21,7 @@ var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/
|
|
21
21
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
22
22
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
23
23
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
24
|
+
var _isNan = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-nan"));
|
24
25
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
25
26
|
var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
|
26
27
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
|
@@ -506,6 +507,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
506
507
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "allowMediaInLobby", void 0);
|
507
508
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "localShareInstanceId", void 0);
|
508
509
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "remoteShareInstanceId", void 0);
|
510
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "shareCAEventSentStatus", void 0);
|
509
511
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "turnDiscoverySkippedReason", void 0);
|
510
512
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "turnServerUsed", void 0);
|
511
513
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "areVoiceaEventsSetup", false);
|
@@ -560,6 +562,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
560
562
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "rtcMetrics", void 0);
|
561
563
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "uploadLogsTimer", void 0);
|
562
564
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "logUploadIntervalIndex", void 0);
|
565
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaServerIp", void 0);
|
563
566
|
/**
|
564
567
|
* Callback called when a relay event is received from meeting LLM Connection
|
565
568
|
* @param {RelayEvent} e Event object coming from LLM Connection
|
@@ -646,7 +649,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
646
649
|
rawError: error
|
647
650
|
}
|
648
651
|
});
|
649
|
-
} else if (error instanceof _internalMediaCore.Errors.SdpOfferHandlingError
|
652
|
+
} else if (error instanceof _internalMediaCore.Errors.SdpOfferHandlingError) {
|
650
653
|
sendBehavioralMetric(_constants2.default.PEERCONNECTION_FAILURE, error, _this.correlationId);
|
651
654
|
|
652
655
|
// @ts-ignore
|
@@ -660,6 +663,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
660
663
|
rawError: error
|
661
664
|
}
|
662
665
|
});
|
666
|
+
} else if (error instanceof _internalMediaCore.Errors.SdpAnswerHandlingError) {
|
667
|
+
sendBehavioralMetric(_constants2.default.PEERCONNECTION_FAILURE, error, _this.correlationId);
|
668
|
+
|
669
|
+
// @ts-ignore
|
670
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
671
|
+
name: 'client.media-engine.remote-sdp-received',
|
672
|
+
payload: {
|
673
|
+
canProceed: false
|
674
|
+
},
|
675
|
+
options: {
|
676
|
+
meetingId: _this.id,
|
677
|
+
rawError: error
|
678
|
+
}
|
679
|
+
});
|
680
|
+
if (_this.deferSDPAnswer) {
|
681
|
+
clearTimeout(_this.sdpResponseTimer);
|
682
|
+
_this.sdpResponseTimer = undefined;
|
683
|
+
_this.deferSDPAnswer.reject();
|
684
|
+
}
|
663
685
|
} else if (error instanceof _internalMediaCore.Errors.SdpError) {
|
664
686
|
// this covers also the case of Errors.IceGatheringError which extends Errors.SdpError
|
665
687
|
sendBehavioralMetric(_constants2.default.INVALID_ICE_CANDIDATE, error, _this.correlationId);
|
@@ -685,6 +707,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
685
707
|
*/
|
686
708
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "roapMessageReceived", function (roapMessage) {
|
687
709
|
var mediaServer = roapMessage.messageType === 'ANSWER' ? _util3.default.getMediaServer(roapMessage.sdp) : undefined;
|
710
|
+
var mediaServerIp = roapMessage.messageType === 'ANSWER' ? _util3.default.getMediaServerIp(roapMessage.sdp) : undefined;
|
688
711
|
if (_this.isMultistream && mediaServer && mediaServer !== 'homer') {
|
689
712
|
throw new _multistreamNotSupportedError.default("Client asked for multistream backend (Homer), but got ".concat(mediaServer, " instead"));
|
690
713
|
}
|
@@ -692,6 +715,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
692
715
|
if (mediaServer) {
|
693
716
|
_this.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;
|
694
717
|
}
|
718
|
+
if (_this.isMultistream && mediaServerIp) {
|
719
|
+
_this.mediaServerIp = mediaServerIp;
|
720
|
+
}
|
695
721
|
});
|
696
722
|
/**
|
697
723
|
* This function makes sure we send the right metrics when local and remote SDPs are processed/generated
|
@@ -1034,18 +1060,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
1034
1060
|
* @memberof Meetings
|
1035
1061
|
*/
|
1036
1062
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "setupStatsAnalyzerEventHandlers", function () {
|
1037
|
-
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.MEDIA_QUALITY, function (
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1063
|
+
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.MEDIA_QUALITY, function (event) {
|
1064
|
+
// Add IP address from geoHintInfo if missing.
|
1065
|
+
if (event.data.intervalMetadata.maskedPeerReflexiveIP === '0.0.0.0') {
|
1066
|
+
var _this$webex$meetings$;
|
1067
|
+
// @ts-ignore fix type
|
1068
|
+
var clientAddressFromGeoHint = (_this$webex$meetings$ = _this.webex.meetings.geoHintInfo) === null || _this$webex$meetings$ === void 0 ? void 0 : _this$webex$meetings$.clientAddress;
|
1069
|
+
if (clientAddressFromGeoHint) {
|
1070
|
+
event.data.intervalMetadata.maskedPeerReflexiveIP = _internalPluginMetrics.CallDiagnosticUtils.anonymizeIPAddress(clientAddressFromGeoHint);
|
1071
|
+
}
|
1072
|
+
}
|
1046
1073
|
|
1047
|
-
// Count members that are in the meeting
|
1048
|
-
|
1074
|
+
// Count members that are in the meeting.
|
1075
|
+
var members = _this.getMembers().membersCollection.members;
|
1076
|
+
event.data.intervalMetadata.meetingUserCount = (0, _values.default)(members).filter(function (member) {
|
1049
1077
|
return member.isInMeeting;
|
1050
1078
|
}).length;
|
1051
1079
|
|
@@ -1054,10 +1082,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
1054
1082
|
name: 'client.mediaquality.event',
|
1055
1083
|
options: {
|
1056
1084
|
meetingId: _this.id,
|
1057
|
-
networkType:
|
1085
|
+
networkType: _this.statsAnalyzer.getNetworkType()
|
1058
1086
|
},
|
1059
1087
|
payload: {
|
1060
|
-
intervals: [
|
1088
|
+
intervals: [event.data]
|
1061
1089
|
}
|
1062
1090
|
});
|
1063
1091
|
});
|
@@ -1066,85 +1094,101 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
1066
1094
|
file: 'meeting/index',
|
1067
1095
|
function: 'addMedia'
|
1068
1096
|
}, _constants.EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED, data);
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1097
|
+
if (data.mediaType !== 'share' || !_this.shareCAEventSentStatus.transmitStart) {
|
1098
|
+
// @ts-ignore
|
1099
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
1100
|
+
name: 'client.media.tx.start',
|
1101
|
+
payload: {
|
1102
|
+
mediaType: data.mediaType,
|
1103
|
+
shareInstanceId: data.mediaType === 'share' ? _this.localShareInstanceId : undefined
|
1104
|
+
},
|
1105
|
+
options: {
|
1106
|
+
meetingId: _this.id
|
1107
|
+
}
|
1108
|
+
});
|
1109
|
+
if (data.mediaType === 'share') {
|
1110
|
+
_this.shareCAEventSentStatus.transmitStart = true;
|
1078
1111
|
}
|
1079
|
-
}
|
1112
|
+
}
|
1080
1113
|
});
|
1081
1114
|
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.LOCAL_MEDIA_STOPPED, function (data) {
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1115
|
+
if (data.mediaType !== 'share' || !_this.shareCAEventSentStatus.transmitStop) {
|
1116
|
+
// @ts-ignore
|
1117
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
1118
|
+
name: 'client.media.tx.stop',
|
1119
|
+
payload: {
|
1120
|
+
mediaType: data.mediaType,
|
1121
|
+
shareInstanceId: data.mediaType === 'share' ? _this.localShareInstanceId : undefined
|
1122
|
+
},
|
1123
|
+
options: {
|
1124
|
+
meetingId: _this.id
|
1125
|
+
}
|
1126
|
+
});
|
1127
|
+
if (data.mediaType === 'share') {
|
1128
|
+
_this.shareCAEventSentStatus.transmitStop = true;
|
1091
1129
|
}
|
1092
|
-
}
|
1130
|
+
}
|
1093
1131
|
});
|
1094
1132
|
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.REMOTE_MEDIA_STARTED, function (data) {
|
1095
1133
|
_triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
|
1096
1134
|
file: 'meeting/index',
|
1097
1135
|
function: 'addMedia'
|
1098
1136
|
}, _constants.EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED, data);
|
1099
|
-
|
1100
|
-
_this.webex.internal.newMetrics.submitClientEvent({
|
1101
|
-
name: 'client.media.rx.start',
|
1102
|
-
payload: {
|
1103
|
-
mediaType: data.mediaType,
|
1104
|
-
shareInstanceId: data.mediaType === 'share' ? _this.remoteShareInstanceId : undefined
|
1105
|
-
},
|
1106
|
-
options: {
|
1107
|
-
meetingId: _this.id
|
1108
|
-
}
|
1109
|
-
});
|
1110
|
-
if (data.mediaType === 'share') {
|
1137
|
+
if (data.mediaType !== 'share' || !_this.shareCAEventSentStatus.receiveStart) {
|
1111
1138
|
// @ts-ignore
|
1112
1139
|
_this.webex.internal.newMetrics.submitClientEvent({
|
1113
|
-
name: 'client.media.
|
1140
|
+
name: 'client.media.rx.start',
|
1114
1141
|
payload: {
|
1115
|
-
mediaType:
|
1116
|
-
shareInstanceId: _this.remoteShareInstanceId
|
1142
|
+
mediaType: data.mediaType,
|
1143
|
+
shareInstanceId: data.mediaType === 'share' ? _this.remoteShareInstanceId : undefined
|
1117
1144
|
},
|
1118
1145
|
options: {
|
1119
1146
|
meetingId: _this.id
|
1120
1147
|
}
|
1121
1148
|
});
|
1149
|
+
if (data.mediaType === 'share') {
|
1150
|
+
// @ts-ignore
|
1151
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
1152
|
+
name: 'client.media.render.start',
|
1153
|
+
payload: {
|
1154
|
+
mediaType: 'share',
|
1155
|
+
shareInstanceId: _this.remoteShareInstanceId
|
1156
|
+
},
|
1157
|
+
options: {
|
1158
|
+
meetingId: _this.id
|
1159
|
+
}
|
1160
|
+
});
|
1161
|
+
_this.shareCAEventSentStatus.receiveStart = true;
|
1162
|
+
}
|
1122
1163
|
}
|
1123
1164
|
});
|
1124
1165
|
_this.statsAnalyzer.on(_internalMediaCore.StatsAnalyzerEventNames.REMOTE_MEDIA_STOPPED, function (data) {
|
1125
|
-
|
1126
|
-
_this.webex.internal.newMetrics.submitClientEvent({
|
1127
|
-
name: 'client.media.rx.stop',
|
1128
|
-
payload: {
|
1129
|
-
mediaType: data.mediaType,
|
1130
|
-
shareInstanceId: data.mediaType === 'share' ? _this.remoteShareInstanceId : undefined
|
1131
|
-
},
|
1132
|
-
options: {
|
1133
|
-
meetingId: _this.id
|
1134
|
-
}
|
1135
|
-
});
|
1136
|
-
if (data.mediaType === 'share') {
|
1166
|
+
if (data.mediaType !== 'share' || !_this.shareCAEventSentStatus.receiveStop) {
|
1137
1167
|
// @ts-ignore
|
1138
1168
|
_this.webex.internal.newMetrics.submitClientEvent({
|
1139
|
-
name: 'client.media.
|
1169
|
+
name: 'client.media.rx.stop',
|
1140
1170
|
payload: {
|
1141
|
-
mediaType:
|
1142
|
-
shareInstanceId: _this.remoteShareInstanceId
|
1171
|
+
mediaType: data.mediaType,
|
1172
|
+
shareInstanceId: data.mediaType === 'share' ? _this.remoteShareInstanceId : undefined
|
1143
1173
|
},
|
1144
1174
|
options: {
|
1145
1175
|
meetingId: _this.id
|
1146
1176
|
}
|
1147
1177
|
});
|
1178
|
+
if (data.mediaType === 'share') {
|
1179
|
+
// @ts-ignore
|
1180
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
1181
|
+
name: 'client.media.render.stop',
|
1182
|
+
payload: {
|
1183
|
+
mediaType: 'share',
|
1184
|
+
shareInstanceId: _this.remoteShareInstanceId
|
1185
|
+
},
|
1186
|
+
options: {
|
1187
|
+
meetingId: _this.id
|
1188
|
+
}
|
1189
|
+
});
|
1190
|
+
_this.shareCAEventSentStatus.receiveStop = true;
|
1191
|
+
}
|
1148
1192
|
}
|
1149
1193
|
});
|
1150
1194
|
});
|
@@ -1282,8 +1326,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
1282
1326
|
* @returns {undefined}
|
1283
1327
|
*/
|
1284
1328
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "handleShareVideoStreamMuteStateChange", function (muted) {
|
1285
|
-
var _this$
|
1329
|
+
var _this$mediaProperties3, _this$mediaProperties4, _this$statsAnalyzer;
|
1286
1330
|
_loggerProxy.default.logger.log("Meeting:index#handleShareVideoStreamMuteStateChange --> Share video stream mute state changed to muted ".concat(muted));
|
1331
|
+
var shareVideoStreamSettings = (_this$mediaProperties3 = _this.mediaProperties) === null || _this$mediaProperties3 === void 0 ? void 0 : (_this$mediaProperties4 = _this$mediaProperties3.shareVideoStream) === null || _this$mediaProperties4 === void 0 ? void 0 : _this$mediaProperties4.getSettings();
|
1287
1332
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE, {
|
1288
1333
|
correlationId: _this.correlationId,
|
1289
1334
|
muted: muted,
|
@@ -1292,8 +1337,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
1292
1337
|
// SDK to TypeScript 5, which may affect other packages, use bracket notation for now, since
|
1293
1338
|
// all we're doing here is adding metrics.
|
1294
1339
|
// eslint-disable-next-line dot-notation
|
1295
|
-
displaySurface:
|
1296
|
-
isMultistream: _this.isMultistream
|
1340
|
+
displaySurface: shareVideoStreamSettings === null || shareVideoStreamSettings === void 0 ? void 0 : shareVideoStreamSettings['displaySurface'],
|
1341
|
+
isMultistream: _this.isMultistream,
|
1342
|
+
frameRate: shareVideoStreamSettings === null || shareVideoStreamSettings === void 0 ? void 0 : shareVideoStreamSettings.frameRate
|
1297
1343
|
});
|
1298
1344
|
});
|
1299
1345
|
/**
|
@@ -2084,6 +2130,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
2084
2130
|
*/
|
2085
2131
|
_this.remoteShareInstanceId = null;
|
2086
2132
|
|
2133
|
+
/**
|
2134
|
+
* Status used for ensuring we do not oversend metrics
|
2135
|
+
* @instance
|
2136
|
+
* @private
|
2137
|
+
* @memberof Meeting
|
2138
|
+
*/
|
2139
|
+
_this.shareCAEventSentStatus = {
|
2140
|
+
transmitStart: false,
|
2141
|
+
transmitStop: false,
|
2142
|
+
receiveStart: false,
|
2143
|
+
receiveStop: false
|
2144
|
+
};
|
2145
|
+
|
2087
2146
|
/**
|
2088
2147
|
* The class that helps to control recording functions: start, stop, pause, resume, etc
|
2089
2148
|
* @instance
|
@@ -2245,6 +2304,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
2245
2304
|
* @memberof Meeting
|
2246
2305
|
*/
|
2247
2306
|
(0, _classPrivateFieldSet2.default)((0, _assertThisInitialized2.default)(_this), _isoLocalClientMeetingJoinTime, undefined);
|
2307
|
+
|
2308
|
+
// We clear the error cache of CA events on every new meeting instance
|
2309
|
+
// @ts-ignore - Fix type
|
2310
|
+
_this.webex.internal.newMetrics.callDiagnosticMetrics.clearErrorCache();
|
2311
|
+
|
2312
|
+
/**
|
2313
|
+
* IP Address of the remote media server
|
2314
|
+
* @instance
|
2315
|
+
* @type {string}
|
2316
|
+
* @private
|
2317
|
+
* @memberof Meeting
|
2318
|
+
*/
|
2319
|
+
_this.mediaServerIp = undefined;
|
2248
2320
|
return _this;
|
2249
2321
|
}
|
2250
2322
|
|
@@ -2370,6 +2442,31 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
2370
2442
|
return (0, _classPrivateFieldGet2.default)(this, _isoLocalClientMeetingJoinTime);
|
2371
2443
|
}
|
2372
2444
|
|
2445
|
+
/**
|
2446
|
+
* Setter - sets isoLocalClientMeetingJoinTime
|
2447
|
+
* This will be set once on meeting join, and not updated again
|
2448
|
+
* this will always produce an ISO string
|
2449
|
+
* If the iso string is invalid, it will fallback to the current system time
|
2450
|
+
* @param {string | undefined} time
|
2451
|
+
*/,
|
2452
|
+
set: function set(time) {
|
2453
|
+
var fallback = new Date().toISOString();
|
2454
|
+
if (!time) {
|
2455
|
+
(0, _classPrivateFieldSet2.default)(this, _isoLocalClientMeetingJoinTime, fallback);
|
2456
|
+
} else {
|
2457
|
+
var date = new Date(time);
|
2458
|
+
|
2459
|
+
// Check if the date is valid
|
2460
|
+
if ((0, _isNan.default)(date.getTime())) {
|
2461
|
+
_loggerProxy.default.logger.info( // @ts-ignore
|
2462
|
+
"Meeting:index#isoLocalClientMeetingJoinTime --> Invalid date provided: ".concat(time, ". Falling back to system clock."));
|
2463
|
+
(0, _classPrivateFieldSet2.default)(this, _isoLocalClientMeetingJoinTime, fallback);
|
2464
|
+
} else {
|
2465
|
+
(0, _classPrivateFieldSet2.default)(this, _isoLocalClientMeetingJoinTime, date.toISOString());
|
2466
|
+
}
|
2467
|
+
}
|
2468
|
+
}
|
2469
|
+
|
2373
2470
|
/**
|
2374
2471
|
* Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
|
2375
2472
|
* @param {any} info
|
@@ -3209,6 +3306,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3209
3306
|
this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS, function (payload) {
|
3210
3307
|
_this13.members.locusParticipantsUpdate(payload);
|
3211
3308
|
});
|
3309
|
+
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.PARTICIPANT_REASON_CHANGED, function (payload) {
|
3310
|
+
_triggerProxy.default.trigger(_this13, {
|
3311
|
+
file: 'meeting/index',
|
3312
|
+
function: 'setUpLocusParticipantsListener'
|
3313
|
+
}, _constants.EVENT_TRIGGERS.MEETING_PARTICIPANT_REASON_CHANGED, {
|
3314
|
+
payload: payload
|
3315
|
+
});
|
3316
|
+
});
|
3212
3317
|
}
|
3213
3318
|
|
3214
3319
|
/**
|
@@ -3429,6 +3534,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3429
3534
|
state: state
|
3430
3535
|
});
|
3431
3536
|
});
|
3537
|
+
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, function (_ref27) {
|
3538
|
+
var state = _ref27.state;
|
3539
|
+
_triggerProxy.default.trigger(_this14, {
|
3540
|
+
file: 'meeting/index',
|
3541
|
+
function: 'setupLocusControlsListener'
|
3542
|
+
}, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_ANNOTATION_UPDATED, {
|
3543
|
+
state: state
|
3544
|
+
});
|
3545
|
+
});
|
3546
|
+
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, function (_ref28) {
|
3547
|
+
var state = _ref28.state;
|
3548
|
+
_triggerProxy.default.trigger(_this14, {
|
3549
|
+
file: 'meeting/index',
|
3550
|
+
function: 'setupLocusControlsListener'
|
3551
|
+
}, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED, {
|
3552
|
+
state: state
|
3553
|
+
});
|
3554
|
+
});
|
3432
3555
|
}
|
3433
3556
|
|
3434
3557
|
/**
|
@@ -3468,7 +3591,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3468
3591
|
var _this15 = this;
|
3469
3592
|
// Will get triggered on local and remote share
|
3470
3593
|
this.locusInfo.on(_constants.EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, /*#__PURE__*/function () {
|
3471
|
-
var
|
3594
|
+
var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(payload) {
|
3472
3595
|
var _payload$previous, _payload$previous2;
|
3473
3596
|
var _payload$current, contentShare, whiteboardShare, previousContentShare, previousWhiteboardShare, newShareStatus, _this15$locusInfo, _this15$locusInfo$inf, _this15$webinar, oldShareStatus, sendStartedSharingRemote, _this15$mediaProperti;
|
3474
3597
|
return _regenerator.default.wrap(function _callee8$(_context8) {
|
@@ -3554,6 +3677,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3554
3677
|
case 26:
|
3555
3678
|
sendStartedSharingRemote = function sendStartedSharingRemote() {
|
3556
3679
|
_this15.remoteShareInstanceId = contentShare.shareInstanceId;
|
3680
|
+
_this15.shareCAEventSentStatus.receiveStart = false;
|
3681
|
+
_this15.shareCAEventSentStatus.receiveStop = false;
|
3557
3682
|
_triggerProxy.default.trigger(_this15, {
|
3558
3683
|
file: 'meetings/index',
|
3559
3684
|
function: 'remoteShare'
|
@@ -3627,6 +3752,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3627
3752
|
// if we got here, then some remote participant has stolen
|
3628
3753
|
// the presentation from another remote participant
|
3629
3754
|
_this15.remoteShareInstanceId = contentShare.shareInstanceId;
|
3755
|
+
_this15.shareCAEventSentStatus.receiveStart = false;
|
3756
|
+
_this15.shareCAEventSentStatus.receiveStop = false;
|
3630
3757
|
_triggerProxy.default.trigger(_this15, {
|
3631
3758
|
file: 'meetings/index',
|
3632
3759
|
function: 'remoteShare'
|
@@ -3667,7 +3794,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3667
3794
|
}, _callee8, null, [[27,, 31, 34]]);
|
3668
3795
|
}));
|
3669
3796
|
return function (_x8) {
|
3670
|
-
return
|
3797
|
+
return _ref29.apply(this, arguments);
|
3671
3798
|
};
|
3672
3799
|
}());
|
3673
3800
|
}
|
@@ -3781,8 +3908,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3781
3908
|
});
|
3782
3909
|
}
|
3783
3910
|
});
|
3784
|
-
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (
|
3785
|
-
var isInitializing =
|
3911
|
+
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, function (_ref30) {
|
3912
|
+
var isInitializing = _ref30.isInitializing;
|
3786
3913
|
_this19.updateMeetingActions();
|
3787
3914
|
_this19.recordingController.setDisplayHints(_this19.userDisplayHints);
|
3788
3915
|
_this19.recordingController.setUserPolicy(_this19.selfUserPolicies);
|
@@ -3920,7 +4047,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3920
4047
|
_this21.updateLLMConnection();
|
3921
4048
|
});
|
3922
4049
|
this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
|
3923
|
-
var
|
4050
|
+
var _ref31 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(payload) {
|
3924
4051
|
var _this21$rtcMetrics;
|
3925
4052
|
return _regenerator.default.wrap(function _callee9$(_context9) {
|
3926
4053
|
while (1) switch (_context9.prev = _context9.next) {
|
@@ -3954,7 +4081,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
3954
4081
|
}, _callee9);
|
3955
4082
|
}));
|
3956
4083
|
return function (_x9) {
|
3957
|
-
return
|
4084
|
+
return _ref31.apply(this, arguments);
|
3958
4085
|
};
|
3959
4086
|
}());
|
3960
4087
|
|
@@ -4073,7 +4200,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4073
4200
|
}
|
4074
4201
|
});
|
4075
4202
|
this.locusInfo.on(_constants.EVENTS.DESTROY_MEETING, /*#__PURE__*/function () {
|
4076
|
-
var
|
4203
|
+
var _ref32 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(payload) {
|
4077
4204
|
return _regenerator.default.wrap(function _callee10$(_context10) {
|
4078
4205
|
while (1) switch (_context10.prev = _context10.next) {
|
4079
4206
|
case 0:
|
@@ -4133,7 +4260,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4133
4260
|
}, _callee10, null, [[8, 14]]);
|
4134
4261
|
}));
|
4135
4262
|
return function (_x10) {
|
4136
|
-
return
|
4263
|
+
return _ref32.apply(this, arguments);
|
4137
4264
|
};
|
4138
4265
|
}());
|
4139
4266
|
}
|
@@ -4192,6 +4319,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4192
4319
|
return this.members.cancelPhoneInvite(invitee);
|
4193
4320
|
}
|
4194
4321
|
|
4322
|
+
/**
|
4323
|
+
* Cancel an SIP call invitation made during a meeting
|
4324
|
+
* @param {Object} invitee
|
4325
|
+
* @param {String} invitee.memberId
|
4326
|
+
* @returns {Promise} see #members.cancelSIPInvite
|
4327
|
+
* @public
|
4328
|
+
* @memberof Meeting
|
4329
|
+
*/
|
4330
|
+
}, {
|
4331
|
+
key: "cancelSIPInvite",
|
4332
|
+
value: function cancelSIPInvite(invitee) {
|
4333
|
+
return this.members.cancelSIPInvite(invitee);
|
4334
|
+
}
|
4335
|
+
|
4195
4336
|
/**
|
4196
4337
|
* Admit the guest(s) to the call once they are waiting.
|
4197
4338
|
* If the host/cohost is in a breakout session, the locus url
|
@@ -4235,6 +4376,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4235
4376
|
key: "beRightBack",
|
4236
4377
|
value: (function () {
|
4237
4378
|
var _beRightBack = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(enabled) {
|
4379
|
+
var _this24 = this;
|
4238
4380
|
var errorMessage, error, _errorMessage, _error;
|
4239
4381
|
return _regenerator.default.wrap(function _callee11$(_context11) {
|
4240
4382
|
while (1) switch (_context11.prev = _context11.next) {
|
@@ -4257,7 +4399,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4257
4399
|
_loggerProxy.default.logger.error(_error);
|
4258
4400
|
return _context11.abrupt("return", _promise.default.reject(_error));
|
4259
4401
|
case 10:
|
4260
|
-
return _context11.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager))
|
4402
|
+
return _context11.abrupt("return", this.brbState.enable(enabled, this.sendSlotManager).then(function () {
|
4403
|
+
if (_this24.audio && enabled) {
|
4404
|
+
// locus mutes the participant with brb enabled request,
|
4405
|
+
// so we need to explicitly update remote mute for correct logic flow
|
4406
|
+
_this24.audio.handleServerRemoteMuteUpdate(_this24, enabled);
|
4407
|
+
}
|
4408
|
+
}));
|
4261
4409
|
case 11:
|
4262
4410
|
case "end":
|
4263
4411
|
return _context11.stop();
|
@@ -4443,7 +4591,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4443
4591
|
canAdmitParticipant: _util2.default.canAdmitParticipant(this.userDisplayHints),
|
4444
4592
|
canLock: _util2.default.canUserLock(this.userDisplayHints),
|
4445
4593
|
canUnlock: _util2.default.canUserUnlock(this.userDisplayHints),
|
4446
|
-
canShareWhiteBoard: _util2.default.canShareWhiteBoard(this.userDisplayHints),
|
4594
|
+
canShareWhiteBoard: _util2.default.canShareWhiteBoard(this.userDisplayHints, this.selfUserPolicies),
|
4447
4595
|
canSetDisallowUnmute: _util5.default.canSetDisallowUnmute(this.userDisplayHints),
|
4448
4596
|
canUnsetDisallowUnmute: _util5.default.canUnsetDisallowUnmute(this.userDisplayHints),
|
4449
4597
|
canSetMuteOnEntry: _util5.default.canSetMuteOnEntry(this.userDisplayHints),
|
@@ -4473,6 +4621,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4473
4621
|
canSelectSpokenLanguages: _util2.default.canSelectSpokenLanguages(this.userDisplayHints),
|
4474
4622
|
waitingForOthersToJoin: _util2.default.waitingForOthersToJoin(this.userDisplayHints),
|
4475
4623
|
canSendReactions: _util2.default.canSendReactions(this.inMeetingActions.canSendReactions, this.userDisplayHints),
|
4624
|
+
requiresPostMeetingDataConsentPrompt: _util2.default.requiresPostMeetingDataConsentPrompt(this.userDisplayHints),
|
4476
4625
|
canManageBreakout: _util2.default.canManageBreakout(this.userDisplayHints),
|
4477
4626
|
canStartBreakout: _util2.default.canStartBreakout(this.userDisplayHints),
|
4478
4627
|
canBroadcastMessageToBreakout: _util2.default.canBroadcastMessageToBreakout(this.userDisplayHints, this.selfUserPolicies),
|
@@ -4481,6 +4630,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4481
4630
|
canUserAskForHelp: _util2.default.canUserAskForHelp(this.userDisplayHints),
|
4482
4631
|
canUserRenameSelfAndObserved: _util2.default.canUserRenameSelfAndObserved(this.userDisplayHints),
|
4483
4632
|
canUserRenameOthers: _util2.default.canUserRenameOthers(this.userDisplayHints),
|
4633
|
+
canMoveToLobby: _util2.default.canMoveToLobby(this.userDisplayHints),
|
4484
4634
|
canMuteAll: _util5.default.hasHints({
|
4485
4635
|
requiredHints: [_constants.DISPLAY_HINTS.MUTE_ALL],
|
4486
4636
|
displayHints: this.userDisplayHints
|
@@ -4612,6 +4762,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4612
4762
|
requiredPolicies: [_constants.SELF_POLICY.SUPPORT_FILE_TRANSFER],
|
4613
4763
|
policies: this.selfUserPolicies
|
4614
4764
|
}),
|
4765
|
+
canRealtimeCloseCaption: _util5.default.hasPolicies({
|
4766
|
+
requiredPolicies: [_constants.SELF_POLICY.SUPPORT_REALTIME_CLOSE_CAPTION],
|
4767
|
+
policies: this.selfUserPolicies
|
4768
|
+
}),
|
4769
|
+
canRealtimeCloseCaptionManual: _util5.default.hasPolicies({
|
4770
|
+
requiredPolicies: [_constants.SELF_POLICY.SUPPORT_REALTIME_CLOSE_CAPTION_MANUAL],
|
4771
|
+
policies: this.selfUserPolicies
|
4772
|
+
}),
|
4615
4773
|
canChat: _util5.default.hasPolicies({
|
4616
4774
|
requiredPolicies: [_constants.SELF_POLICY.SUPPORT_CHAT],
|
4617
4775
|
policies: this.selfUserPolicies
|
@@ -4648,6 +4806,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4648
4806
|
canAnnotate: _util5.default.hasPolicies({
|
4649
4807
|
requiredPolicies: [_constants.SELF_POLICY.SUPPORT_ANNOTATION],
|
4650
4808
|
policies: this.selfUserPolicies
|
4809
|
+
}),
|
4810
|
+
canEnableAnnotation: _util5.default.hasHints({
|
4811
|
+
requiredHints: [_constants.DISPLAY_HINTS.ENABLE_ANNOTATION_MEETING_OPTION],
|
4812
|
+
displayHints: this.userDisplayHints
|
4813
|
+
}),
|
4814
|
+
canDisableAnnotation: _util5.default.hasHints({
|
4815
|
+
requiredHints: [_constants.DISPLAY_HINTS.DISABLE_ANNOTATION_MEETING_OPTION],
|
4816
|
+
displayHints: this.userDisplayHints
|
4817
|
+
}),
|
4818
|
+
canEnableRemoteDesktopControl: _util5.default.hasHints({
|
4819
|
+
requiredHints: [_constants.DISPLAY_HINTS.ENABLE_RDC_MEETING_OPTION],
|
4820
|
+
displayHints: this.userDisplayHints
|
4821
|
+
}),
|
4822
|
+
canDisableRemoteDesktopControl: _util5.default.hasHints({
|
4823
|
+
requiredHints: [_constants.DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION],
|
4824
|
+
displayHints: this.userDisplayHints
|
4651
4825
|
})
|
4652
4826
|
}) || changed;
|
4653
4827
|
}
|
@@ -4752,7 +4926,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4752
4926
|
}, {
|
4753
4927
|
key: "setLogUploadTimer",
|
4754
4928
|
value: function setLogUploadTimer() {
|
4755
|
-
var
|
4929
|
+
var _this25 = this;
|
4756
4930
|
// start with short timeouts and increase them later on so in case users have very long multi-hour meetings we don't get too fragmented logs
|
4757
4931
|
var LOG_UPLOAD_INTERVALS = [0.1, 15, 30, 60]; // in minutes
|
4758
4932
|
|
@@ -4763,15 +4937,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4763
4937
|
this.logUploadIntervalIndex += 1;
|
4764
4938
|
}
|
4765
4939
|
this.uploadLogsTimer = (0, _commonTimers.safeSetTimeout)(function () {
|
4766
|
-
|
4767
|
-
|
4940
|
+
_this25.uploadLogsTimer = undefined;
|
4941
|
+
_this25.uploadLogs();
|
4768
4942
|
|
4769
4943
|
// just as an extra precaution, to avoid uploading logs forever in case something goes wrong
|
4770
4944
|
// and the page remains opened, we stop it if there is no media connection
|
4771
|
-
if (!
|
4945
|
+
if (!_this25.mediaProperties.webrtcMediaConnection) {
|
4772
4946
|
return;
|
4773
4947
|
}
|
4774
|
-
|
4948
|
+
_this25.setLogUploadTimer();
|
4775
4949
|
}, delay);
|
4776
4950
|
}
|
4777
4951
|
|
@@ -4838,7 +5012,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4838
5012
|
}, {
|
4839
5013
|
key: "closeRemoteStreams",
|
4840
5014
|
value: function closeRemoteStreams() {
|
4841
|
-
var
|
5015
|
+
var _this26 = this;
|
4842
5016
|
var _this$mediaProperties6 = this.mediaProperties,
|
4843
5017
|
remoteAudioStream = _this$mediaProperties6.remoteAudioStream,
|
4844
5018
|
remoteVideoStream = _this$mediaProperties6.remoteVideoStream,
|
@@ -4852,7 +5026,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4852
5026
|
*/
|
4853
5027
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
4854
5028
|
var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
|
4855
|
-
_triggerProxy.default.trigger(
|
5029
|
+
_triggerProxy.default.trigger(_this26, {
|
4856
5030
|
file: 'meeting/index',
|
4857
5031
|
function: 'closeRemoteStreams'
|
4858
5032
|
}, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
|
@@ -5160,7 +5334,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5160
5334
|
}, {
|
5161
5335
|
key: "setMercuryListener",
|
5162
5336
|
value: function setMercuryListener() {
|
5163
|
-
var
|
5337
|
+
var _this27 = this;
|
5164
5338
|
// Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
|
5165
5339
|
// if the meeting has active peer connections, it should try to reconnect.
|
5166
5340
|
// @ts-ignore
|
@@ -5168,33 +5342,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5168
5342
|
_loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
|
5169
5343
|
|
5170
5344
|
// Only send restore event when it was disconnected before and for connected later
|
5171
|
-
if (!
|
5345
|
+
if (!_this27.hasWebsocketConnected) {
|
5172
5346
|
// @ts-ignore
|
5173
|
-
|
5347
|
+
_this27.webex.internal.newMetrics.submitClientEvent({
|
5174
5348
|
name: 'client.mercury.connection.restored',
|
5175
5349
|
options: {
|
5176
|
-
meetingId:
|
5350
|
+
meetingId: _this27.id
|
5177
5351
|
}
|
5178
5352
|
});
|
5179
5353
|
_metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
|
5180
|
-
correlation_id:
|
5354
|
+
correlation_id: _this27.correlationId
|
5181
5355
|
});
|
5182
5356
|
}
|
5183
|
-
|
5357
|
+
_this27.hasWebsocketConnected = true;
|
5184
5358
|
});
|
5185
5359
|
|
5186
5360
|
// @ts-ignore
|
5187
5361
|
this.webex.internal.mercury.on(_constants.OFFLINE, function () {
|
5188
5362
|
_loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
|
5189
5363
|
// @ts-ignore
|
5190
|
-
|
5364
|
+
_this27.webex.internal.newMetrics.submitClientEvent({
|
5191
5365
|
name: 'client.mercury.connection.lost',
|
5192
5366
|
options: {
|
5193
|
-
meetingId:
|
5367
|
+
meetingId: _this27.id
|
5194
5368
|
}
|
5195
5369
|
});
|
5196
5370
|
_metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
|
5197
|
-
correlation_id:
|
5371
|
+
correlation_id: _this27.correlationId
|
5198
5372
|
});
|
5199
5373
|
});
|
5200
5374
|
}
|
@@ -5301,7 +5475,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5301
5475
|
}, {
|
5302
5476
|
key: "muteAudio",
|
5303
5477
|
value: function muteAudio() {
|
5304
|
-
var
|
5478
|
+
var _this28 = this;
|
5305
5479
|
if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
|
5306
5480
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
5307
5481
|
}
|
@@ -5317,22 +5491,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5317
5491
|
|
5318
5492
|
// First, stop sending the local audio media
|
5319
5493
|
return logRequest(this.audio.handleClientRequest(this, true).then(function () {
|
5320
|
-
_util2.default.handleAudioLogging(
|
5494
|
+
_util2.default.handleAudioLogging(_this28.mediaProperties.audioStream);
|
5321
5495
|
// @ts-ignore
|
5322
|
-
|
5496
|
+
_this28.webex.internal.newMetrics.submitClientEvent({
|
5323
5497
|
name: 'client.muted',
|
5324
5498
|
payload: {
|
5325
5499
|
trigger: 'user-interaction',
|
5326
5500
|
mediaType: 'audio'
|
5327
5501
|
},
|
5328
5502
|
options: {
|
5329
|
-
meetingId:
|
5503
|
+
meetingId: _this28.id
|
5330
5504
|
}
|
5331
5505
|
});
|
5332
5506
|
}).catch(function (error) {
|
5333
5507
|
_metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
|
5334
|
-
correlation_id:
|
5335
|
-
locus_id:
|
5508
|
+
correlation_id: _this28.correlationId,
|
5509
|
+
locus_id: _this28.locusUrl.split('/').pop(),
|
5336
5510
|
reason: error.message,
|
5337
5511
|
stack: error.stack
|
5338
5512
|
});
|
@@ -5351,7 +5525,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5351
5525
|
}, {
|
5352
5526
|
key: "unmuteAudio",
|
5353
5527
|
value: function unmuteAudio() {
|
5354
|
-
var
|
5528
|
+
var _this29 = this;
|
5355
5529
|
if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
|
5356
5530
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
5357
5531
|
}
|
@@ -5367,22 +5541,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5367
5541
|
|
5368
5542
|
// First, send the control to unmute the participant on the server
|
5369
5543
|
return logRequest(this.audio.handleClientRequest(this, false).then(function () {
|
5370
|
-
_util2.default.handleAudioLogging(
|
5544
|
+
_util2.default.handleAudioLogging(_this29.mediaProperties.audioStream);
|
5371
5545
|
// @ts-ignore
|
5372
|
-
|
5546
|
+
_this29.webex.internal.newMetrics.submitClientEvent({
|
5373
5547
|
name: 'client.unmuted',
|
5374
5548
|
payload: {
|
5375
5549
|
trigger: 'user-interaction',
|
5376
5550
|
mediaType: 'audio'
|
5377
5551
|
},
|
5378
5552
|
options: {
|
5379
|
-
meetingId:
|
5553
|
+
meetingId: _this29.id
|
5380
5554
|
}
|
5381
5555
|
});
|
5382
5556
|
}).catch(function (error) {
|
5383
5557
|
_metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
|
5384
|
-
correlation_id:
|
5385
|
-
locus_id:
|
5558
|
+
correlation_id: _this29.correlationId,
|
5559
|
+
locus_id: _this29.locusUrl.split('/').pop(),
|
5386
5560
|
reason: error.message,
|
5387
5561
|
stack: error.stack
|
5388
5562
|
});
|
@@ -5401,7 +5575,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5401
5575
|
}, {
|
5402
5576
|
key: "muteVideo",
|
5403
5577
|
value: function muteVideo() {
|
5404
|
-
var
|
5578
|
+
var _this30 = this;
|
5405
5579
|
if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
|
5406
5580
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
5407
5581
|
}
|
@@ -5415,22 +5589,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5415
5589
|
return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
|
5416
5590
|
}
|
5417
5591
|
return logRequest(this.video.handleClientRequest(this, true).then(function () {
|
5418
|
-
_util2.default.handleVideoLogging(
|
5592
|
+
_util2.default.handleVideoLogging(_this30.mediaProperties.videoStream);
|
5419
5593
|
// @ts-ignore
|
5420
|
-
|
5594
|
+
_this30.webex.internal.newMetrics.submitClientEvent({
|
5421
5595
|
name: 'client.muted',
|
5422
5596
|
payload: {
|
5423
5597
|
trigger: 'user-interaction',
|
5424
5598
|
mediaType: 'video'
|
5425
5599
|
},
|
5426
5600
|
options: {
|
5427
|
-
meetingId:
|
5601
|
+
meetingId: _this30.id
|
5428
5602
|
}
|
5429
5603
|
});
|
5430
5604
|
}).catch(function (error) {
|
5431
5605
|
_metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
|
5432
|
-
correlation_id:
|
5433
|
-
locus_id:
|
5606
|
+
correlation_id: _this30.correlationId,
|
5607
|
+
locus_id: _this30.locusUrl.split('/').pop(),
|
5434
5608
|
reason: error.message,
|
5435
5609
|
stack: error.stack
|
5436
5610
|
});
|
@@ -5449,7 +5623,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5449
5623
|
}, {
|
5450
5624
|
key: "unmuteVideo",
|
5451
5625
|
value: function unmuteVideo() {
|
5452
|
-
var
|
5626
|
+
var _this31 = this;
|
5453
5627
|
if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
|
5454
5628
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
5455
5629
|
}
|
@@ -5463,22 +5637,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5463
5637
|
return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
|
5464
5638
|
}
|
5465
5639
|
return logRequest(this.video.handleClientRequest(this, false).then(function () {
|
5466
|
-
_util2.default.handleVideoLogging(
|
5640
|
+
_util2.default.handleVideoLogging(_this31.mediaProperties.videoStream);
|
5467
5641
|
// @ts-ignore
|
5468
|
-
|
5642
|
+
_this31.webex.internal.newMetrics.submitClientEvent({
|
5469
5643
|
name: 'client.unmuted',
|
5470
5644
|
payload: {
|
5471
5645
|
trigger: 'user-interaction',
|
5472
5646
|
mediaType: 'video'
|
5473
5647
|
},
|
5474
5648
|
options: {
|
5475
|
-
meetingId:
|
5649
|
+
meetingId: _this31.id
|
5476
5650
|
}
|
5477
5651
|
});
|
5478
5652
|
}).catch(function (error) {
|
5479
5653
|
_metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
|
5480
|
-
correlation_id:
|
5481
|
-
locus_id:
|
5654
|
+
correlation_id: _this31.correlationId,
|
5655
|
+
locus_id: _this31.locusUrl.split('/').pop(),
|
5482
5656
|
reason: error.message,
|
5483
5657
|
stack: error.stack
|
5484
5658
|
});
|
@@ -5508,7 +5682,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5508
5682
|
key: "joinWithMedia",
|
5509
5683
|
value: (function () {
|
5510
5684
|
var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
|
5511
|
-
var
|
5685
|
+
var _this32 = this;
|
5512
5686
|
var options,
|
5513
5687
|
mediaOptions,
|
5514
5688
|
_options$joinOptions,
|
@@ -5591,7 +5765,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5591
5765
|
case 35:
|
5592
5766
|
_context16.next = 37;
|
5593
5767
|
return this.addMediaInternal(function () {
|
5594
|
-
return
|
5768
|
+
return _this32.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
|
5595
5769
|
}, turnServerInfo, forceTurnDiscovery, mediaOptions);
|
5596
5770
|
case 37:
|
5597
5771
|
mediaResponse = _context16.sent;
|
@@ -5686,7 +5860,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5686
5860
|
}, {
|
5687
5861
|
key: "reconnect",
|
5688
5862
|
value: function reconnect(options) {
|
5689
|
-
var
|
5863
|
+
var _this33 = this;
|
5690
5864
|
_loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
|
5691
5865
|
if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
|
5692
5866
|
return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
|
@@ -5702,10 +5876,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5702
5876
|
while (1) switch (_context17.prev = _context17.next) {
|
5703
5877
|
case 0:
|
5704
5878
|
_context17.next = 2;
|
5705
|
-
return
|
5879
|
+
return _this33.waitForRemoteSDPAnswer();
|
5706
5880
|
case 2:
|
5707
5881
|
_context17.next = 4;
|
5708
|
-
return
|
5882
|
+
return _this33.waitForMediaConnectionConnected();
|
5709
5883
|
case 4:
|
5710
5884
|
case "end":
|
5711
5885
|
return _context17.stop();
|
@@ -5719,7 +5893,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5719
5893
|
return _promise.default.resolve();
|
5720
5894
|
}
|
5721
5895
|
_loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
|
5722
|
-
|
5896
|
+
_this33.uploadLogs({
|
5723
5897
|
file: 'meeting/index',
|
5724
5898
|
function: 'reconnect'
|
5725
5899
|
});
|
@@ -5766,19 +5940,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5766
5940
|
}, {
|
5767
5941
|
key: "setCaptionLanguage",
|
5768
5942
|
value: function setCaptionLanguage(language) {
|
5769
|
-
var
|
5943
|
+
var _this34 = this;
|
5770
5944
|
return new _promise.default(function (resolve, reject) {
|
5771
|
-
if (!
|
5945
|
+
if (!_this34.isTranscriptionSupported()) {
|
5772
5946
|
_loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
|
5773
5947
|
reject(new Error('Webex Assistant is not enabled/supported'));
|
5774
5948
|
}
|
5775
5949
|
try {
|
5776
5950
|
var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
|
5777
5951
|
// @ts-ignore
|
5778
|
-
|
5952
|
+
_this34.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
|
5779
5953
|
var statusCode = payload.statusCode;
|
5780
5954
|
if (statusCode === 200) {
|
5781
|
-
|
5955
|
+
_this34.transcription.languageOptions = _objectSpread(_objectSpread({}, _this34.transcription.languageOptions), {}, {
|
5782
5956
|
currentCaptionLanguage: language
|
5783
5957
|
});
|
5784
5958
|
resolve(language);
|
@@ -5787,9 +5961,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5787
5961
|
}
|
5788
5962
|
};
|
5789
5963
|
// @ts-ignore
|
5790
|
-
|
5964
|
+
_this34.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
|
5791
5965
|
// @ts-ignore
|
5792
|
-
|
5966
|
+
_this34.webex.internal.voicea.requestLanguage(language);
|
5793
5967
|
} catch (error) {
|
5794
5968
|
_loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
|
5795
5969
|
reject(error);
|
@@ -5805,23 +5979,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5805
5979
|
}, {
|
5806
5980
|
key: "setSpokenLanguage",
|
5807
5981
|
value: function setSpokenLanguage(language) {
|
5808
|
-
var
|
5982
|
+
var _this35 = this;
|
5809
5983
|
return new _promise.default(function (resolve, reject) {
|
5810
|
-
if (!
|
5984
|
+
if (!_this35.isTranscriptionSupported()) {
|
5811
5985
|
_loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
|
5812
5986
|
reject(new Error('Webex Assistant is not enabled/supported'));
|
5813
5987
|
}
|
5814
|
-
if (
|
5988
|
+
if (_this35.getCurUserType() !== 'host') {
|
5815
5989
|
_loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
|
5816
5990
|
reject(new Error('Only host can set spoken language'));
|
5817
5991
|
}
|
5818
5992
|
try {
|
5819
5993
|
var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
|
5820
5994
|
// @ts-ignore
|
5821
|
-
|
5995
|
+
_this35.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
|
5822
5996
|
var languageCode = payload.languageCode;
|
5823
5997
|
if (languageCode) {
|
5824
|
-
|
5998
|
+
_this35.transcription.languageOptions = _objectSpread(_objectSpread({}, _this35.transcription.languageOptions), {}, {
|
5825
5999
|
currentSpokenLanguage: languageCode
|
5826
6000
|
});
|
5827
6001
|
resolve(languageCode);
|
@@ -5831,10 +6005,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5831
6005
|
};
|
5832
6006
|
|
5833
6007
|
// @ts-ignore
|
5834
|
-
|
6008
|
+
_this35.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
|
5835
6009
|
|
5836
6010
|
// @ts-ignore
|
5837
|
-
|
6011
|
+
_this35.webex.internal.voicea.setSpokenLanguage(language);
|
5838
6012
|
} catch (error) {
|
5839
6013
|
_loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
|
5840
6014
|
reject(error);
|
@@ -5957,7 +6131,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
5957
6131
|
*/
|
5958
6132
|
function () {
|
5959
6133
|
var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
|
5960
|
-
var
|
6134
|
+
var _this36 = this;
|
5961
6135
|
var options,
|
5962
6136
|
errorMessage,
|
5963
6137
|
error,
|
@@ -6106,62 +6280,61 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6106
6280
|
return _context19.abrupt("return", _promise.default.reject(_context19.t0));
|
6107
6281
|
case 51:
|
6108
6282
|
return _context19.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
|
6109
|
-
|
6110
|
-
|
6283
|
+
_this36.meetingFiniteStateMachine.join();
|
6284
|
+
_this36.setupLocusMediaRequest();
|
6111
6285
|
|
6112
6286
|
// @ts-ignore
|
6113
|
-
|
6114
|
-
(0, _classPrivateFieldSet2.default)(_this35, _isoLocalClientMeetingJoinTime, new Date().toISOString());
|
6287
|
+
_this36.webex.internal.device.meetingStarted();
|
6115
6288
|
_loggerProxy.default.logger.log('Meeting:index#join --> Success');
|
6116
6289
|
_metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
|
6117
|
-
correlation_id:
|
6290
|
+
correlation_id: _this36.correlationId
|
6118
6291
|
});
|
6119
6292
|
joinSuccess(join);
|
6120
|
-
|
6293
|
+
_this36.deferJoin = undefined;
|
6121
6294
|
return join;
|
6122
6295
|
}).catch(function (error) {
|
6123
|
-
var
|
6124
|
-
|
6296
|
+
var _this36$meetingInfo, _error$error;
|
6297
|
+
_this36.meetingFiniteStateMachine.fail(error);
|
6125
6298
|
_loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
|
6126
6299
|
|
6127
6300
|
// @ts-ignore
|
6128
|
-
|
6301
|
+
_this36.webex.internal.newMetrics.submitClientEvent({
|
6129
6302
|
name: 'client.locus.join.response',
|
6130
6303
|
payload: {
|
6131
6304
|
identifiers: {
|
6132
|
-
meetingLookupUrl: (
|
6305
|
+
meetingLookupUrl: (_this36$meetingInfo = _this36.meetingInfo) === null || _this36$meetingInfo === void 0 ? void 0 : _this36$meetingInfo.meetingLookupUrl
|
6133
6306
|
}
|
6134
6307
|
},
|
6135
6308
|
options: {
|
6136
|
-
meetingId:
|
6309
|
+
meetingId: _this36.id,
|
6137
6310
|
rawError: error
|
6138
6311
|
}
|
6139
6312
|
});
|
6140
6313
|
|
6141
6314
|
// TODO: change this to error codes and pre defined dictionary
|
6142
6315
|
_metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
|
6143
|
-
correlation_id:
|
6316
|
+
correlation_id: _this36.correlationId,
|
6144
6317
|
reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
|
6145
6318
|
stack: error.stack
|
6146
6319
|
});
|
6147
6320
|
|
6148
6321
|
// Upload logs on join Failure
|
6149
|
-
_triggerProxy.default.trigger(
|
6322
|
+
_triggerProxy.default.trigger(_this36, {
|
6150
6323
|
file: 'meeting/index',
|
6151
6324
|
function: 'join'
|
6152
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
6325
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this36);
|
6153
6326
|
joinFailed(error);
|
6154
|
-
|
6327
|
+
_this36.deferJoin = undefined;
|
6155
6328
|
return _promise.default.reject(error);
|
6156
6329
|
}).then(function (join) {
|
6157
6330
|
// @ts-ignore - config coming from registerPlugin
|
6158
|
-
if (
|
6331
|
+
if (_this36.config.enableAutomaticLLM) {
|
6159
6332
|
// @ts-ignore
|
6160
|
-
|
6161
|
-
|
6333
|
+
_this36.webex.internal.llm.on('online', _this36.handleLLMOnline);
|
6334
|
+
_this36.updateLLMConnection().catch(function (error) {
|
6162
6335
|
_loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
|
6163
6336
|
_metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
|
6164
|
-
correlation_id:
|
6337
|
+
correlation_id: _this36.correlationId,
|
6165
6338
|
reason: error === null || error === void 0 ? void 0 : error.message,
|
6166
6339
|
stack: error.stack
|
6167
6340
|
});
|
@@ -6193,7 +6366,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6193
6366
|
key: "updateLLMConnection",
|
6194
6367
|
value: (function () {
|
6195
6368
|
var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20() {
|
6196
|
-
var
|
6369
|
+
var _this37 = this;
|
6197
6370
|
var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, practiceSessionDatachannelUrl, isJoined, dataChannelUrl;
|
6198
6371
|
return _regenerator.default.wrap(function _callee20$(_context20) {
|
6199
6372
|
while (1) switch (_context20.prev = _context20.next) {
|
@@ -6233,9 +6406,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6233
6406
|
case 11:
|
6234
6407
|
return _context20.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl).then(function (registerAndConnectResult) {
|
6235
6408
|
// @ts-ignore - Fix type
|
6236
|
-
|
6409
|
+
_this37.webex.internal.llm.off('event:relay.event', _this37.processRelayEvent);
|
6237
6410
|
// @ts-ignore - Fix type
|
6238
|
-
|
6411
|
+
_this37.webex.internal.llm.on('event:relay.event', _this37.processRelayEvent);
|
6239
6412
|
_loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
|
6240
6413
|
return _promise.default.resolve(registerAndConnectResult);
|
6241
6414
|
}));
|
@@ -6289,7 +6462,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6289
6462
|
}, {
|
6290
6463
|
key: "dialInPstn",
|
6291
6464
|
value: function dialInPstn() {
|
6292
|
-
var
|
6465
|
+
var _this38 = this;
|
6293
6466
|
if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
|
6294
6467
|
|
6295
6468
|
var correlationId = this.correlationId,
|
@@ -6305,10 +6478,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6305
6478
|
}).catch(function (error) {
|
6306
6479
|
var _error$error2;
|
6307
6480
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
|
6308
|
-
correlation_id:
|
6309
|
-
dial_in_url:
|
6481
|
+
correlation_id: _this38.correlationId,
|
6482
|
+
dial_in_url: _this38.dialInUrl,
|
6310
6483
|
locus_id: locusUrl.split('/').pop(),
|
6311
|
-
client_url:
|
6484
|
+
client_url: _this38.deviceUrl,
|
6312
6485
|
reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
|
6313
6486
|
stack: error.stack
|
6314
6487
|
});
|
@@ -6326,7 +6499,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6326
6499
|
}, {
|
6327
6500
|
key: "dialOutPstn",
|
6328
6501
|
value: function dialOutPstn(phoneNumber) {
|
6329
|
-
var
|
6502
|
+
var _this39 = this;
|
6330
6503
|
if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
|
6331
6504
|
|
6332
6505
|
var correlationId = this.correlationId,
|
@@ -6343,10 +6516,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6343
6516
|
}).catch(function (error) {
|
6344
6517
|
var _error$error3;
|
6345
6518
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
|
6346
|
-
correlation_id:
|
6347
|
-
dial_out_url:
|
6519
|
+
correlation_id: _this39.correlationId,
|
6520
|
+
dial_out_url: _this39.dialOutUrl,
|
6348
6521
|
locus_id: locusUrl.split('/').pop(),
|
6349
|
-
client_url:
|
6522
|
+
client_url: _this39.deviceUrl,
|
6350
6523
|
reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
|
6351
6524
|
stack: error.stack
|
6352
6525
|
});
|
@@ -6377,7 +6550,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6377
6550
|
}, {
|
6378
6551
|
key: "moveTo",
|
6379
6552
|
value: function moveTo(resourceId) {
|
6380
|
-
var
|
6553
|
+
var _this40 = this;
|
6381
6554
|
if (!resourceId) {
|
6382
6555
|
throw new _parameter.default('Cannot move call without a resourceId.');
|
6383
6556
|
}
|
@@ -6421,12 +6594,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6421
6594
|
while (1) switch (_context21.prev = _context21.next) {
|
6422
6595
|
case 0:
|
6423
6596
|
_context21.prev = 0;
|
6424
|
-
if (!(
|
6597
|
+
if (!(_this40.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
|
6425
6598
|
_context21.next = 4;
|
6426
6599
|
break;
|
6427
6600
|
}
|
6428
6601
|
_context21.next = 4;
|
6429
|
-
return
|
6602
|
+
return _this40.releaseScreenShareFloor();
|
6430
6603
|
case 4:
|
6431
6604
|
mediaSettings = {
|
6432
6605
|
mediaDirection: {
|
@@ -6438,37 +6611,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6438
6611
|
receiveShare: true
|
6439
6612
|
}
|
6440
6613
|
};
|
6441
|
-
|
6442
|
-
|
6614
|
+
_this40.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
|
6615
|
+
_this40.mediaProperties.unsetRemoteMedia();
|
6443
6616
|
|
6444
6617
|
// when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
|
6445
6618
|
// once the device answers we close the old connection and create new media server connection with only share enabled
|
6446
|
-
if (!
|
6619
|
+
if (!_this40.statsAnalyzer) {
|
6447
6620
|
_context21.next = 10;
|
6448
6621
|
break;
|
6449
6622
|
}
|
6450
6623
|
_context21.next = 10;
|
6451
|
-
return
|
6624
|
+
return _this40.statsAnalyzer.stopAnalyzer();
|
6452
6625
|
case 10:
|
6453
6626
|
_context21.next = 12;
|
6454
|
-
return
|
6627
|
+
return _this40.closeRemoteStreams();
|
6455
6628
|
case 12:
|
6456
6629
|
_context21.next = 14;
|
6457
|
-
return
|
6630
|
+
return _this40.closePeerConnections();
|
6458
6631
|
case 14:
|
6459
|
-
|
6460
|
-
|
6461
|
-
|
6462
|
-
|
6632
|
+
_this40.cleanupLocalStreams();
|
6633
|
+
_this40.unsetRemoteStreams();
|
6634
|
+
_this40.unsetPeerConnections();
|
6635
|
+
_this40.reconnectionManager.cleanUp();
|
6463
6636
|
_context21.next = 20;
|
6464
|
-
return
|
6637
|
+
return _this40.addMedia({
|
6465
6638
|
audioEnabled: false,
|
6466
6639
|
videoEnabled: false,
|
6467
6640
|
shareVideoEnabled: true
|
6468
6641
|
});
|
6469
6642
|
case 20:
|
6470
6643
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
|
6471
|
-
|
6644
|
+
_this40.isMoveToInProgress = false;
|
6472
6645
|
_context21.next = 29;
|
6473
6646
|
break;
|
6474
6647
|
case 24:
|
@@ -6476,12 +6649,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6476
6649
|
_context21.t0 = _context21["catch"](0);
|
6477
6650
|
_loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context21.t0);
|
6478
6651
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
|
6479
|
-
correlation_id:
|
6480
|
-
locus_id:
|
6652
|
+
correlation_id: _this40.correlationId,
|
6653
|
+
locus_id: _this40.locusUrl.split('/').pop(),
|
6481
6654
|
reason: _context21.t0.message,
|
6482
6655
|
stack: _context21.t0.stack
|
6483
6656
|
});
|
6484
|
-
|
6657
|
+
_this40.isMoveToInProgress = false;
|
6485
6658
|
case 29:
|
6486
6659
|
case "end":
|
6487
6660
|
return _context21.stop();
|
@@ -6497,17 +6670,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6497
6670
|
resourceId: resourceId,
|
6498
6671
|
moveToResource: true
|
6499
6672
|
}).then(function () {
|
6500
|
-
|
6673
|
+
_this40.meetingFiniteStateMachine.join();
|
6501
6674
|
}).catch(function (error) {
|
6502
|
-
|
6675
|
+
_this40.meetingFiniteStateMachine.fail(error);
|
6503
6676
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
|
6504
|
-
correlation_id:
|
6505
|
-
locus_id:
|
6677
|
+
correlation_id: _this40.correlationId,
|
6678
|
+
locus_id: _this40.locusUrl.split('/').pop(),
|
6506
6679
|
reason: error.message,
|
6507
6680
|
stack: error.stack
|
6508
6681
|
});
|
6509
6682
|
_loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
|
6510
|
-
|
6683
|
+
_this40.isMoveToInProgress = false;
|
6511
6684
|
return _promise.default.reject(error);
|
6512
6685
|
});
|
6513
6686
|
}
|
@@ -6522,7 +6695,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6522
6695
|
}, {
|
6523
6696
|
key: "moveFrom",
|
6524
6697
|
value: function moveFrom(resourceId) {
|
6525
|
-
var
|
6698
|
+
var _this41 = this;
|
6526
6699
|
// On moveFrom ask the developer to re capture it moveFrom then updateMedia
|
6527
6700
|
if (!resourceId) {
|
6528
6701
|
throw new _parameter.default('Cannot move call without a resourceId.');
|
@@ -6537,19 +6710,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6537
6710
|
}
|
6538
6711
|
});
|
6539
6712
|
return _util2.default.joinMeetingOptions(this).then(function () {
|
6540
|
-
return _util2.default.leaveMeeting(
|
6713
|
+
return _util2.default.leaveMeeting(_this41, {
|
6541
6714
|
resourceId: resourceId,
|
6542
6715
|
correlationId: oldCorrelationId,
|
6543
6716
|
moveMeeting: true
|
6544
6717
|
}).then(function () {
|
6545
|
-
|
6718
|
+
_this41.resourceId = '';
|
6546
6719
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
|
6547
6720
|
});
|
6548
6721
|
}).catch(function (error) {
|
6549
|
-
|
6722
|
+
_this41.meetingFiniteStateMachine.fail(error);
|
6550
6723
|
_metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
|
6551
|
-
correlation_id:
|
6552
|
-
locus_id:
|
6724
|
+
correlation_id: _this41.correlationId,
|
6725
|
+
locus_id: _this41.locusUrl.split('/').pop(),
|
6553
6726
|
reason: error.message,
|
6554
6727
|
stack: error.stack
|
6555
6728
|
});
|
@@ -6598,7 +6771,14 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6598
6771
|
turnServerInfo: turnServerInfo,
|
6599
6772
|
bundlePolicy: bundlePolicy,
|
6600
6773
|
// @ts-ignore - config coming from registerPlugin
|
6601
|
-
iceCandidatesTimeout: this.config.iceCandidatesGatheringTimeout
|
6774
|
+
iceCandidatesTimeout: this.config.iceCandidatesGatheringTimeout,
|
6775
|
+
// @ts-ignore - config coming from registerPlugin
|
6776
|
+
disableAudioMainDtx: this.config.experimental.disableAudioMainDtx,
|
6777
|
+
// @ts-ignore - config coming from registerPlugin
|
6778
|
+
enableAudioTwcc: this.config.enableAudioTwccForMultistream,
|
6779
|
+
stopIceGatheringAfterFirstRelayCandidate:
|
6780
|
+
// @ts-ignore - config coming from registerPlugin
|
6781
|
+
this.config.stopIceGatheringAfterFirstRelayCandidate
|
6602
6782
|
});
|
6603
6783
|
this.mediaProperties.setMediaPeerConnection(mc);
|
6604
6784
|
this.setupMediaConnectionListeners();
|
@@ -6665,9 +6845,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6665
6845
|
}, {
|
6666
6846
|
key: "forwardEvent",
|
6667
6847
|
value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
|
6668
|
-
var
|
6848
|
+
var _this42 = this;
|
6669
6849
|
eventEmitter.on(eventTypeToForward, function (data) {
|
6670
|
-
return _triggerProxy.default.trigger(
|
6850
|
+
return _triggerProxy.default.trigger(_this42, {
|
6671
6851
|
file: 'meetings',
|
6672
6852
|
function: 'addMedia'
|
6673
6853
|
}, meetingEventType, data);
|
@@ -6737,7 +6917,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6737
6917
|
key: "waitForMediaConnectionConnected",
|
6738
6918
|
value: (function () {
|
6739
6919
|
var _waitForMediaConnectionConnected = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
|
6740
|
-
var iceConnected, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, _this$mediaProperties13, _this$mediaProperties14;
|
6920
|
+
var iceConnected, _this$mediaProperties8, _this$mediaProperties9, _this$mediaProperties10, _this$mediaProperties11, _this$mediaProperties12, _this$mediaProperties13, _this$mediaProperties14, timedOutError;
|
6741
6921
|
return _regenerator.default.wrap(function _callee24$(_context24) {
|
6742
6922
|
while (1) switch (_context24.prev = _context24.next) {
|
6743
6923
|
case 0:
|
@@ -6745,7 +6925,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6745
6925
|
_context24.next = 3;
|
6746
6926
|
return this.mediaProperties.waitForMediaConnectionConnected();
|
6747
6927
|
case 3:
|
6748
|
-
_context24.next =
|
6928
|
+
_context24.next = 32;
|
6749
6929
|
break;
|
6750
6930
|
case 5:
|
6751
6931
|
_context24.prev = 5;
|
@@ -6787,7 +6967,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6787
6967
|
errors: _context24.t14
|
6788
6968
|
};
|
6789
6969
|
_context24.t16 = {
|
6790
|
-
meetingId: this.id
|
6970
|
+
meetingId: this.id,
|
6971
|
+
rawError: _context24.t0
|
6791
6972
|
};
|
6792
6973
|
_context24.t17 = {
|
6793
6974
|
name: 'client.ice.end',
|
@@ -6796,8 +6977,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6796
6977
|
};
|
6797
6978
|
_context24.t1.submitClientEvent.call(_context24.t1, _context24.t17);
|
6798
6979
|
case 29:
|
6799
|
-
|
6800
|
-
|
6980
|
+
timedOutError = new Error("Timed out waiting for media connection to be connected, correlationId=".concat(this.correlationId));
|
6981
|
+
timedOutError.cause = _context24.t0;
|
6982
|
+
throw timedOutError;
|
6983
|
+
case 32:
|
6801
6984
|
case "end":
|
6802
6985
|
return _context24.stop();
|
6803
6986
|
}
|
@@ -6828,6 +7011,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6828
7011
|
networkQualityMonitor: this.networkQualityMonitor,
|
6829
7012
|
isMultistream: this.isMultistream
|
6830
7013
|
});
|
7014
|
+
this.shareCAEventSentStatus = {
|
7015
|
+
transmitStart: false,
|
7016
|
+
transmitStop: false,
|
7017
|
+
receiveStart: false,
|
7018
|
+
receiveStop: false
|
7019
|
+
};
|
6831
7020
|
this.setupStatsAnalyzerEventHandlers();
|
6832
7021
|
this.networkQualityMonitor.on(_internalMediaCore.NetworkQualityEventNames.NETWORK_QUALITY, this.sendNetworkQualityEvent.bind(this));
|
6833
7022
|
}
|
@@ -6844,7 +7033,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6844
7033
|
key: "waitForRemoteSDPAnswer",
|
6845
7034
|
value: (function () {
|
6846
7035
|
var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25() {
|
6847
|
-
var
|
7036
|
+
var _this43 = this;
|
6848
7037
|
var LOG_HEADER, deferSDPAnswer;
|
6849
7038
|
return _regenerator.default.wrap(function _callee25$(_context25) {
|
6850
7039
|
while (1) switch (_context25.prev = _context25.next) {
|
@@ -6860,23 +7049,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6860
7049
|
deferSDPAnswer = this.deferSDPAnswer;
|
6861
7050
|
this.sdpResponseTimer = setTimeout(function () {
|
6862
7051
|
_loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
|
7052
|
+
var error = new Error('Timed out waiting for REMOTE SDP ANSWER');
|
7053
|
+
|
6863
7054
|
// @ts-ignore
|
6864
|
-
|
7055
|
+
_this43.webex.internal.newMetrics.submitClientEvent({
|
6865
7056
|
name: 'client.media-engine.remote-sdp-received',
|
6866
7057
|
payload: {
|
6867
7058
|
canProceed: false,
|
6868
7059
|
errors: [
|
6869
7060
|
// @ts-ignore
|
6870
|
-
|
7061
|
+
_this43.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
|
6871
7062
|
clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
|
6872
7063
|
})]
|
6873
7064
|
},
|
6874
7065
|
options: {
|
6875
|
-
meetingId:
|
6876
|
-
rawError:
|
7066
|
+
meetingId: _this43.id,
|
7067
|
+
rawError: error
|
6877
7068
|
}
|
6878
7069
|
});
|
6879
|
-
deferSDPAnswer.reject(
|
7070
|
+
deferSDPAnswer.reject(error);
|
6880
7071
|
}, _constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);
|
6881
7072
|
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " waiting for REMOTE SDP ANSWER..."));
|
6882
7073
|
return _context25.abrupt("return", deferSDPAnswer.promise);
|
@@ -7016,7 +7207,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7016
7207
|
break;
|
7017
7208
|
case 7:
|
7018
7209
|
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " error waiting for media to connect using UDP, TCP and TURN-TLS"), error);
|
7019
|
-
throw new _webexErrors.AddMediaFailed();
|
7210
|
+
throw new _webexErrors.AddMediaFailed(error);
|
7020
7211
|
case 9:
|
7021
7212
|
case "end":
|
7022
7213
|
return _context28.stop();
|
@@ -7379,10 +7570,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7379
7570
|
}, {
|
7380
7571
|
key: "addMedia",
|
7381
7572
|
value: function addMedia() {
|
7382
|
-
var
|
7573
|
+
var _this44 = this;
|
7383
7574
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
7384
7575
|
return this.addMediaInternal(function () {
|
7385
|
-
return
|
7576
|
+
return _this44.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
|
7386
7577
|
}, undefined, false, options);
|
7387
7578
|
}
|
7388
7579
|
|
@@ -7418,10 +7609,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7418
7609
|
_this$remoteMediaMana,
|
7419
7610
|
_yield$this$mediaProp,
|
7420
7611
|
connectionType,
|
7612
|
+
ipVersion,
|
7421
7613
|
selectedCandidatePairChanges,
|
7422
7614
|
numTransports,
|
7423
|
-
reachabilityStats,
|
7424
7615
|
iceCandidateErrors,
|
7616
|
+
reachabilityMetrics,
|
7425
7617
|
_this$mediaProperties15,
|
7426
7618
|
_this$mediaProperties16,
|
7427
7619
|
_this$mediaProperties17,
|
@@ -7443,7 +7635,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7443
7635
|
_this$mediaProperties33,
|
7444
7636
|
_this$mediaProperties34,
|
7445
7637
|
_this$mediaProperties35,
|
7446
|
-
|
7638
|
+
_reachabilityMetrics,
|
7447
7639
|
_yield$this$mediaProp2,
|
7448
7640
|
_selectedCandidatePairChanges,
|
7449
7641
|
_numTransports,
|
@@ -7564,28 +7756,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7564
7756
|
case 46:
|
7565
7757
|
_yield$this$mediaProp = _context35.sent;
|
7566
7758
|
connectionType = _yield$this$mediaProp.connectionType;
|
7759
|
+
ipVersion = _yield$this$mediaProp.ipVersion;
|
7567
7760
|
selectedCandidatePairChanges = _yield$this$mediaProp.selectedCandidatePairChanges;
|
7568
7761
|
numTransports = _yield$this$mediaProp.numTransports;
|
7569
|
-
_context35.next = 52;
|
7570
|
-
return this.webex.meetings.reachability.getReachabilityMetrics();
|
7571
|
-
case 52:
|
7572
|
-
reachabilityStats = _context35.sent;
|
7573
7762
|
iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);
|
7763
|
+
_context35.next = 54;
|
7764
|
+
return this.getMediaReachabilityMetricFields();
|
7765
|
+
case 54:
|
7766
|
+
reachabilityMetrics = _context35.sent;
|
7574
7767
|
_metrics.default.sendBehavioralMetric(_constants2.default.ADD_MEDIA_SUCCESS, _objectSpread(_objectSpread(_objectSpread({
|
7575
7768
|
correlation_id: this.correlationId,
|
7576
7769
|
locus_id: this.locusUrl.split('/').pop(),
|
7577
7770
|
connectionType: connectionType,
|
7771
|
+
ipVersion: ipVersion,
|
7578
7772
|
selectedCandidatePairChanges: selectedCandidatePairChanges,
|
7579
7773
|
numTransports: numTransports,
|
7580
7774
|
isMultistream: this.isMultistream,
|
7581
7775
|
retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,
|
7582
7776
|
isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry
|
7583
|
-
},
|
7777
|
+
}, reachabilityMetrics), iceCandidateErrors), {}, {
|
7584
7778
|
iceCandidatesCount: this.iceCandidatesCount
|
7585
7779
|
}));
|
7586
7780
|
// @ts-ignore
|
7587
7781
|
this.webex.internal.newMetrics.submitClientEvent({
|
7588
7782
|
name: 'client.media-engine.ready',
|
7783
|
+
payload: {
|
7784
|
+
ipVersion: ipVersion
|
7785
|
+
},
|
7589
7786
|
options: {
|
7590
7787
|
meetingId: this.id
|
7591
7788
|
}
|
@@ -7595,21 +7792,21 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7595
7792
|
// We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
|
7596
7793
|
(_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
|
7597
7794
|
this.startPeriodicLogUpload();
|
7598
|
-
_context35.next =
|
7795
|
+
_context35.next = 80;
|
7599
7796
|
break;
|
7600
|
-
case
|
7601
|
-
_context35.prev =
|
7797
|
+
case 62:
|
7798
|
+
_context35.prev = 62;
|
7602
7799
|
_context35.t1 = _context35["catch"](19);
|
7603
7800
|
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context35.t1);
|
7604
7801
|
|
7605
7802
|
// @ts-ignore
|
7606
|
-
_context35.next =
|
7607
|
-
return this.
|
7608
|
-
case
|
7609
|
-
|
7610
|
-
_context35.next =
|
7803
|
+
_context35.next = 67;
|
7804
|
+
return this.getMediaReachabilityMetricFields();
|
7805
|
+
case 67:
|
7806
|
+
_reachabilityMetrics = _context35.sent;
|
7807
|
+
_context35.next = 70;
|
7611
7808
|
return this.mediaProperties.getCurrentConnectionInfo();
|
7612
|
-
case
|
7809
|
+
case 70:
|
7613
7810
|
_yield$this$mediaProp2 = _context35.sent;
|
7614
7811
|
_selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
|
7615
7812
|
_numTransports = _yield$this$mediaProp2.numTransports;
|
@@ -7630,12 +7827,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7630
7827
|
signalingState: ((_this$mediaProperties15 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties15 === void 0 ? void 0 : (_this$mediaProperties16 = _this$mediaProperties15.multistreamConnection) === null || _this$mediaProperties16 === void 0 ? void 0 : (_this$mediaProperties17 = _this$mediaProperties16.pc) === null || _this$mediaProperties17 === void 0 ? void 0 : (_this$mediaProperties18 = _this$mediaProperties17.pc) === null || _this$mediaProperties18 === void 0 ? void 0 : _this$mediaProperties18.signalingState) || ((_this$mediaProperties19 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties19 === void 0 ? void 0 : (_this$mediaProperties20 = _this$mediaProperties19.mediaConnection) === null || _this$mediaProperties20 === void 0 ? void 0 : (_this$mediaProperties21 = _this$mediaProperties20.pc) === null || _this$mediaProperties21 === void 0 ? void 0 : _this$mediaProperties21.signalingState) || 'unknown',
|
7631
7828
|
connectionState: ((_this$mediaProperties22 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties22 === void 0 ? void 0 : (_this$mediaProperties23 = _this$mediaProperties22.multistreamConnection) === null || _this$mediaProperties23 === void 0 ? void 0 : (_this$mediaProperties24 = _this$mediaProperties23.pc) === null || _this$mediaProperties24 === void 0 ? void 0 : (_this$mediaProperties25 = _this$mediaProperties24.pc) === null || _this$mediaProperties25 === void 0 ? void 0 : _this$mediaProperties25.connectionState) || ((_this$mediaProperties26 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties26 === void 0 ? void 0 : (_this$mediaProperties27 = _this$mediaProperties26.mediaConnection) === null || _this$mediaProperties27 === void 0 ? void 0 : (_this$mediaProperties28 = _this$mediaProperties27.pc) === null || _this$mediaProperties28 === void 0 ? void 0 : _this$mediaProperties28.connectionState) || 'unknown',
|
7632
7829
|
iceConnectionState: ((_this$mediaProperties29 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties29 === void 0 ? void 0 : (_this$mediaProperties30 = _this$mediaProperties29.multistreamConnection) === null || _this$mediaProperties30 === void 0 ? void 0 : (_this$mediaProperties31 = _this$mediaProperties30.pc) === null || _this$mediaProperties31 === void 0 ? void 0 : (_this$mediaProperties32 = _this$mediaProperties31.pc) === null || _this$mediaProperties32 === void 0 ? void 0 : _this$mediaProperties32.iceConnectionState) || ((_this$mediaProperties33 = this.mediaProperties.webrtcMediaConnection) === null || _this$mediaProperties33 === void 0 ? void 0 : (_this$mediaProperties34 = _this$mediaProperties33.mediaConnection) === null || _this$mediaProperties34 === void 0 ? void 0 : (_this$mediaProperties35 = _this$mediaProperties34.pc) === null || _this$mediaProperties35 === void 0 ? void 0 : _this$mediaProperties35.iceConnectionState) || 'unknown'
|
7633
|
-
},
|
7830
|
+
}, _reachabilityMetrics), _iceCandidateErrors), {}, {
|
7634
7831
|
iceCandidatesCount: this.iceCandidatesCount
|
7635
7832
|
}));
|
7636
|
-
_context35.next =
|
7833
|
+
_context35.next = 77;
|
7637
7834
|
return this.cleanUpOnAddMediaFailure();
|
7638
|
-
case
|
7835
|
+
case 77:
|
7639
7836
|
// Upload logs on error while adding media
|
7640
7837
|
_triggerProxy.default.trigger(this, {
|
7641
7838
|
file: 'meeting/index',
|
@@ -7647,15 +7844,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7647
7844
|
});
|
7648
7845
|
}
|
7649
7846
|
throw _context35.t1;
|
7650
|
-
case
|
7651
|
-
_context35.prev =
|
7847
|
+
case 80:
|
7848
|
+
_context35.prev = 80;
|
7652
7849
|
this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
|
7653
|
-
return _context35.finish(
|
7654
|
-
case
|
7850
|
+
return _context35.finish(80);
|
7851
|
+
case 83:
|
7655
7852
|
case "end":
|
7656
7853
|
return _context35.stop();
|
7657
7854
|
}
|
7658
|
-
}, _callee35, this, [[19,
|
7855
|
+
}, _callee35, this, [[19, 62, 80, 83], [24, 29]]);
|
7659
7856
|
}));
|
7660
7857
|
function addMediaInternal(_x33, _x34, _x35) {
|
7661
7858
|
return _addMediaInternal.apply(this, arguments);
|
@@ -7687,7 +7884,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7687
7884
|
* @memberof Meeting
|
7688
7885
|
*/
|
7689
7886
|
function enqueueMediaUpdate(mediaUpdateType) {
|
7690
|
-
var
|
7887
|
+
var _this45 = this;
|
7691
7888
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
7692
7889
|
var canUpdateMediaNow = this.canUpdateMedia();
|
7693
7890
|
return new _promise.default(function (resolve, reject) {
|
@@ -7698,9 +7895,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7698
7895
|
options: options
|
7699
7896
|
};
|
7700
7897
|
_loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
|
7701
|
-
|
7898
|
+
_this45.queuedMediaUpdates.push(queueItem);
|
7702
7899
|
if (canUpdateMediaNow) {
|
7703
|
-
|
7900
|
+
_this45.processNextQueuedMediaUpdate();
|
7704
7901
|
}
|
7705
7902
|
});
|
7706
7903
|
}
|
@@ -7805,7 +8002,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7805
8002
|
}, {
|
7806
8003
|
key: "acknowledge",
|
7807
8004
|
value: function acknowledge(type) {
|
7808
|
-
var
|
8005
|
+
var _this46 = this;
|
7809
8006
|
if (!type) {
|
7810
8007
|
return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
|
7811
8008
|
}
|
@@ -7817,12 +8014,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7817
8014
|
}).then(function (response) {
|
7818
8015
|
return _promise.default.resolve(response);
|
7819
8016
|
}).then(function (response) {
|
7820
|
-
|
8017
|
+
_this46.meetingFiniteStateMachine.ring(type);
|
7821
8018
|
// @ts-ignore
|
7822
|
-
|
8019
|
+
_this46.webex.internal.newMetrics.submitClientEvent({
|
7823
8020
|
name: 'client.alert.displayed',
|
7824
8021
|
options: {
|
7825
|
-
meetingId:
|
8022
|
+
meetingId: _this46.id
|
7826
8023
|
}
|
7827
8024
|
});
|
7828
8025
|
return _promise.default.resolve({
|
@@ -7847,12 +8044,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7847
8044
|
}, {
|
7848
8045
|
key: "decline",
|
7849
8046
|
value: function decline(reason) {
|
7850
|
-
var
|
8047
|
+
var _this47 = this;
|
7851
8048
|
return _util2.default.declineMeeting(this, reason).then(function (decline) {
|
7852
|
-
|
8049
|
+
_this47.meetingFiniteStateMachine.decline();
|
7853
8050
|
return _promise.default.resolve(decline);
|
7854
8051
|
}).catch(function (error) {
|
7855
|
-
|
8052
|
+
_this47.meetingFiniteStateMachine.fail(error);
|
7856
8053
|
return _promise.default.reject(error);
|
7857
8054
|
});
|
7858
8055
|
}
|
@@ -7903,7 +8100,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7903
8100
|
}, {
|
7904
8101
|
key: "leave",
|
7905
8102
|
value: function leave() {
|
7906
|
-
var
|
8103
|
+
var _this48 = this;
|
7907
8104
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
7908
8105
|
var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
|
7909
8106
|
|
@@ -7915,7 +8112,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7915
8112
|
var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
7916
8113
|
return (
|
7917
8114
|
// @ts-ignore
|
7918
|
-
|
8115
|
+
_this48.webex.internal.newMetrics.submitClientEvent({
|
7919
8116
|
name: 'client.call.leave',
|
7920
8117
|
payload: _objectSpread({
|
7921
8118
|
trigger: 'user-interaction',
|
@@ -7923,7 +8120,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7923
8120
|
leaveReason: options.clientEventLeaveReason
|
7924
8121
|
}, payload),
|
7925
8122
|
options: {
|
7926
|
-
meetingId:
|
8123
|
+
meetingId: _this48.id
|
7927
8124
|
}
|
7928
8125
|
})
|
7929
8126
|
);
|
@@ -7932,24 +8129,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7932
8129
|
return _util2.default.leaveMeeting(this, options).then(function (leave) {
|
7933
8130
|
// CA team recommends submitting this *after* locus /leave
|
7934
8131
|
submitLeaveMetric();
|
7935
|
-
|
7936
|
-
|
8132
|
+
_this48.meetingFiniteStateMachine.leave();
|
8133
|
+
_this48.clearMeetingData();
|
7937
8134
|
|
7938
8135
|
// upload logs on leave irrespective of meeting delete
|
7939
|
-
_triggerProxy.default.trigger(
|
8136
|
+
_triggerProxy.default.trigger(_this48, {
|
7940
8137
|
file: 'meeting/index',
|
7941
8138
|
function: 'leave'
|
7942
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
8139
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this48);
|
7943
8140
|
|
7944
8141
|
// TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
|
7945
|
-
if (
|
8142
|
+
if (_this48.wirelessShare || _this48.guest) {
|
7946
8143
|
// If screen sharing clean the meeting object
|
7947
|
-
_triggerProxy.default.trigger(
|
8144
|
+
_triggerProxy.default.trigger(_this48, {
|
7948
8145
|
file: 'meeting/index',
|
7949
8146
|
function: 'leave'
|
7950
8147
|
}, _constants.EVENTS.DESTROY_MEETING, {
|
7951
8148
|
reason: options.reason,
|
7952
|
-
meetingId:
|
8149
|
+
meetingId: _this48.id
|
7953
8150
|
});
|
7954
8151
|
}
|
7955
8152
|
_loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
|
@@ -7966,16 +8163,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7966
8163
|
shownToUser: false
|
7967
8164
|
}]
|
7968
8165
|
});
|
7969
|
-
|
8166
|
+
_this48.meetingFiniteStateMachine.fail(error);
|
7970
8167
|
_loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
|
7971
8168
|
// upload logs on leave irrespective of meeting delete
|
7972
|
-
_triggerProxy.default.trigger(
|
8169
|
+
_triggerProxy.default.trigger(_this48, {
|
7973
8170
|
file: 'meeting/index',
|
7974
8171
|
function: 'leave'
|
7975
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
8172
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this48);
|
7976
8173
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
|
7977
|
-
correlation_id:
|
7978
|
-
locus_id:
|
8174
|
+
correlation_id: _this48.correlationId,
|
8175
|
+
locus_id: _this48.locusUrl.split('/').pop(),
|
7979
8176
|
reason: error.message,
|
7980
8177
|
stack: error.stack,
|
7981
8178
|
code: error.code
|
@@ -7995,7 +8192,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
7995
8192
|
}, {
|
7996
8193
|
key: "startWhiteboardShare",
|
7997
8194
|
value: function startWhiteboardShare(channelUrl, resourceToken) {
|
7998
|
-
var
|
8195
|
+
var _this49 = this;
|
7999
8196
|
var whiteboard = this.locusInfo.mediaShares.find(function (element) {
|
8000
8197
|
return element.name === 'whiteboard';
|
8001
8198
|
});
|
@@ -8024,13 +8221,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8024
8221
|
body.resourceToken = resourceToken;
|
8025
8222
|
}
|
8026
8223
|
return this.meetingRequest.changeMeetingFloor(body).then(function () {
|
8027
|
-
|
8224
|
+
_this49.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
|
8028
8225
|
return _promise.default.resolve();
|
8029
8226
|
}).catch(function (error) {
|
8030
8227
|
_loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
|
8031
8228
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
|
8032
|
-
correlation_id:
|
8033
|
-
locus_id:
|
8229
|
+
correlation_id: _this49.correlationId,
|
8230
|
+
locus_id: _this49.locusUrl.split('/').pop(),
|
8034
8231
|
reason: error.message,
|
8035
8232
|
stack: error.stack,
|
8036
8233
|
board: {
|
@@ -8053,7 +8250,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8053
8250
|
}, {
|
8054
8251
|
key: "stopWhiteboardShare",
|
8055
8252
|
value: function stopWhiteboardShare(channelUrl) {
|
8056
|
-
var
|
8253
|
+
var _this50 = this;
|
8057
8254
|
var whiteboard = this.locusInfo.mediaShares.find(function (element) {
|
8058
8255
|
return element.name === 'whiteboard';
|
8059
8256
|
});
|
@@ -8076,8 +8273,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8076
8273
|
}).catch(function (error) {
|
8077
8274
|
_loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
|
8078
8275
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
|
8079
|
-
correlation_id:
|
8080
|
-
locus_id:
|
8276
|
+
correlation_id: _this50.correlationId,
|
8277
|
+
locus_id: _this50.locusUrl.split('/').pop(),
|
8081
8278
|
reason: error.message,
|
8082
8279
|
stack: error.stack,
|
8083
8280
|
board: {
|
@@ -8099,7 +8296,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8099
8296
|
}, {
|
8100
8297
|
key: "requestScreenShareFloor",
|
8101
8298
|
value: function requestScreenShareFloor() {
|
8102
|
-
var
|
8299
|
+
var _this51 = this;
|
8103
8300
|
if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
|
8104
8301
|
_loggerProxy.default.logger.log("Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=".concat(this.mediaProperties.shareVideoStream ? 'yes' : 'no', ", sendShare=").concat(this.mediaProperties.mediaDirection.sendShare, ")"));
|
8105
8302
|
this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
|
@@ -8130,34 +8327,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8130
8327
|
resourceUrl: this.resourceUrl,
|
8131
8328
|
shareInstanceId: this.localShareInstanceId
|
8132
8329
|
}).then(function () {
|
8133
|
-
|
8330
|
+
_this51.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
|
8134
8331
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
|
8135
|
-
correlation_id:
|
8136
|
-
locus_id:
|
8332
|
+
correlation_id: _this51.correlationId,
|
8333
|
+
locus_id: _this51.locusUrl.split('/').pop()
|
8137
8334
|
});
|
8138
8335
|
return _promise.default.resolve();
|
8139
8336
|
}).catch(function (error) {
|
8140
8337
|
_loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
|
8141
8338
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
|
8142
|
-
correlation_id:
|
8143
|
-
locus_id:
|
8339
|
+
correlation_id: _this51.correlationId,
|
8340
|
+
locus_id: _this51.locusUrl.split('/').pop(),
|
8144
8341
|
reason: error.message,
|
8145
8342
|
stack: error.stack
|
8146
8343
|
});
|
8147
8344
|
|
8148
8345
|
// @ts-ignore
|
8149
|
-
|
8346
|
+
_this51.webex.internal.newMetrics.submitClientEvent({
|
8150
8347
|
name: 'client.share.floor-granted.local',
|
8151
8348
|
payload: {
|
8152
8349
|
mediaType: 'share',
|
8153
8350
|
errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
|
8154
|
-
shareInstanceId:
|
8351
|
+
shareInstanceId: _this51.localShareInstanceId
|
8155
8352
|
},
|
8156
8353
|
options: {
|
8157
|
-
meetingId:
|
8354
|
+
meetingId: _this51.id
|
8158
8355
|
}
|
8159
8356
|
});
|
8160
|
-
|
8357
|
+
_this51.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
|
8161
8358
|
return _promise.default.reject(error);
|
8162
8359
|
});
|
8163
8360
|
}
|
@@ -8180,10 +8377,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8180
8377
|
}, {
|
8181
8378
|
key: "requestScreenShareFloorIfPending",
|
8182
8379
|
value: function requestScreenShareFloorIfPending() {
|
8183
|
-
var
|
8380
|
+
var _this52 = this;
|
8184
8381
|
if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
|
8185
8382
|
this.requestScreenShareFloor().then(function () {
|
8186
|
-
|
8383
|
+
_this52.floorGrantPending = false;
|
8187
8384
|
});
|
8188
8385
|
}
|
8189
8386
|
}
|
@@ -8197,7 +8394,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8197
8394
|
}, {
|
8198
8395
|
key: "releaseScreenShareFloor",
|
8199
8396
|
value: function releaseScreenShareFloor() {
|
8200
|
-
var
|
8397
|
+
var _this53 = this;
|
8201
8398
|
var content = this.locusInfo.mediaShares.find(function (element) {
|
8202
8399
|
return element.name === _constants.CONTENT;
|
8203
8400
|
});
|
@@ -8232,8 +8429,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8232
8429
|
}).catch(function (error) {
|
8233
8430
|
_loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
|
8234
8431
|
_metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
|
8235
|
-
correlation_id:
|
8236
|
-
locus_id:
|
8432
|
+
correlation_id: _this53.correlationId,
|
8433
|
+
locus_id: _this53.locusUrl.split('/').pop(),
|
8237
8434
|
reason: error.message,
|
8238
8435
|
stack: error.stack
|
8239
8436
|
});
|
@@ -8413,7 +8610,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8413
8610
|
}, {
|
8414
8611
|
key: "changeVideoLayout",
|
8415
8612
|
value: function changeVideoLayout(layoutType) {
|
8416
|
-
var
|
8613
|
+
var _this54 = this;
|
8417
8614
|
var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
8418
8615
|
var main = renderInfo.main,
|
8419
8616
|
content = renderInfo.content;
|
@@ -8467,7 +8664,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8467
8664
|
}
|
8468
8665
|
this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
|
8469
8666
|
this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
|
8470
|
-
_triggerProxy.default.trigger(
|
8667
|
+
_triggerProxy.default.trigger(_this54, {
|
8471
8668
|
file: 'meeting/index',
|
8472
8669
|
function: 'changeVideoLayout'
|
8473
8670
|
}, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
|
@@ -8583,7 +8780,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8583
8780
|
}, {
|
8584
8781
|
key: "endMeetingForAll",
|
8585
8782
|
value: function endMeetingForAll() {
|
8586
|
-
var
|
8783
|
+
var _this55 = this;
|
8587
8784
|
// @ts-ignore
|
8588
8785
|
this.webex.internal.newMetrics.submitClientEvent({
|
8589
8786
|
name: 'client.call.leave',
|
@@ -8601,25 +8798,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8601
8798
|
locus_id: this.locusId
|
8602
8799
|
});
|
8603
8800
|
return _util2.default.endMeetingForAll(this).then(function (end) {
|
8604
|
-
|
8605
|
-
|
8801
|
+
_this55.meetingFiniteStateMachine.end();
|
8802
|
+
_this55.clearMeetingData();
|
8606
8803
|
// upload logs on leave irrespective of meeting delete
|
8607
|
-
_triggerProxy.default.trigger(
|
8804
|
+
_triggerProxy.default.trigger(_this55, {
|
8608
8805
|
file: 'meeting/index',
|
8609
8806
|
function: 'endMeetingForAll'
|
8610
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
8807
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this55);
|
8611
8808
|
return end;
|
8612
8809
|
}).catch(function (error) {
|
8613
|
-
|
8810
|
+
_this55.meetingFiniteStateMachine.fail(error);
|
8614
8811
|
_loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
|
8615
8812
|
// upload logs on leave irrespective of meeting delete
|
8616
|
-
_triggerProxy.default.trigger(
|
8813
|
+
_triggerProxy.default.trigger(_this55, {
|
8617
8814
|
file: 'meeting/index',
|
8618
8815
|
function: 'endMeetingForAll'
|
8619
|
-
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS,
|
8816
|
+
}, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this55);
|
8620
8817
|
_metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
|
8621
|
-
correlation_id:
|
8622
|
-
locus_id:
|
8818
|
+
correlation_id: _this55.correlationId,
|
8819
|
+
locus_id: _this55.locusUrl.split('/').pop(),
|
8623
8820
|
reason: error.message,
|
8624
8821
|
stack: error.stack,
|
8625
8822
|
code: error.code
|
@@ -8684,6 +8881,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8684
8881
|
});
|
8685
8882
|
}
|
8686
8883
|
|
8884
|
+
/**
|
8885
|
+
* Method to set post meeting data consent.
|
8886
|
+
*
|
8887
|
+
* @param {boolean} accept - whether consent accepted or declined
|
8888
|
+
* @returns {Promise}
|
8889
|
+
* @public
|
8890
|
+
* @memberof Meeting
|
8891
|
+
*/
|
8892
|
+
}, {
|
8893
|
+
key: "setPostMeetingDataConsent",
|
8894
|
+
value: function setPostMeetingDataConsent(accept) {
|
8895
|
+
return this.meetingRequest.setPostMeetingDataConsent({
|
8896
|
+
postMeetingDataConsent: accept,
|
8897
|
+
locusUrl: this.locusUrl,
|
8898
|
+
deviceUrl: this.deviceUrl,
|
8899
|
+
selfId: this.members.selfId
|
8900
|
+
});
|
8901
|
+
}
|
8902
|
+
|
8687
8903
|
/**
|
8688
8904
|
* Throws if we don't have a media connection created
|
8689
8905
|
*
|
@@ -8761,7 +8977,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8761
8977
|
_this$mediaProperties43,
|
8762
8978
|
_this$mediaProperties44,
|
8763
8979
|
_this$mediaProperties45,
|
8764
|
-
|
8980
|
+
_this56 = this;
|
8765
8981
|
var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
|
8766
8982
|
_loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
|
8767
8983
|
if (!this.canUpdateMedia()) {
|
@@ -8786,8 +9002,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
8786
9002
|
}).catch(function (error) {
|
8787
9003
|
_loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
|
8788
9004
|
_metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
|
8789
|
-
correlation_id:
|
8790
|
-
locus_id:
|
9005
|
+
correlation_id: _this56.correlationId,
|
9006
|
+
locus_id: _this56.locusUrl.split('/').pop(),
|
8791
9007
|
reason: error.message,
|
8792
9008
|
stack: error.stack
|
8793
9009
|
});
|
@@ -9009,10 +9225,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
9009
9225
|
return this.updateTranscodedMediaConnection();
|
9010
9226
|
case 31:
|
9011
9227
|
if (!floorRequestNeeded) {
|
9012
|
-
_context40.next =
|
9228
|
+
_context40.next = 39;
|
9013
9229
|
break;
|
9014
9230
|
}
|
9015
9231
|
this.localShareInstanceId = _uuid.default.v4();
|
9232
|
+
this.shareCAEventSentStatus.transmitStart = false;
|
9233
|
+
this.shareCAEventSentStatus.transmitStop = false;
|
9016
9234
|
|
9017
9235
|
// @ts-ignore
|
9018
9236
|
this.webex.internal.newMetrics.submitClientEvent({
|
@@ -9033,9 +9251,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
9033
9251
|
// we're sending the http request to Locus to request the screen share floor
|
9034
9252
|
// only after the SDP update, because that's how it's always been done for transcoded meetings
|
9035
9253
|
// and also if sharing from the start, we need confluence to have been created
|
9036
|
-
_context40.next =
|
9254
|
+
_context40.next = 39;
|
9037
9255
|
return this.enqueueScreenShareFloorRequest();
|
9038
|
-
case
|
9256
|
+
case 39:
|
9039
9257
|
case "end":
|
9040
9258
|
return _context40.stop();
|
9041
9259
|
}
|
@@ -9173,6 +9391,56 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
9173
9391
|
}
|
9174
9392
|
return _promise.default.resolve();
|
9175
9393
|
}
|
9394
|
+
|
9395
|
+
/**
|
9396
|
+
* Gets the media reachability metrics
|
9397
|
+
*
|
9398
|
+
* @returns {Promise<MediaReachabilityMetrics>}
|
9399
|
+
*/
|
9400
|
+
}, {
|
9401
|
+
key: "getMediaReachabilityMetricFields",
|
9402
|
+
value: (function () {
|
9403
|
+
var _getMediaReachabilityMetricFields = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee42() {
|
9404
|
+
var reachabilityMetrics, successKeys, totalSuccessCases, isSubnetReachable, selectedCluster;
|
9405
|
+
return _regenerator.default.wrap(function _callee42$(_context42) {
|
9406
|
+
while (1) switch (_context42.prev = _context42.next) {
|
9407
|
+
case 0:
|
9408
|
+
_context42.next = 2;
|
9409
|
+
return this.webex.meetings.reachability.getReachabilityMetrics();
|
9410
|
+
case 2:
|
9411
|
+
reachabilityMetrics = _context42.sent;
|
9412
|
+
successKeys = ['reachability_public_udp_success', 'reachability_public_tcp_success', 'reachability_public_xtls_success', 'reachability_vmn_udp_success', 'reachability_vmn_tcp_success', 'reachability_vmn_xtls_success'];
|
9413
|
+
totalSuccessCases = successKeys.reduce(function (total, key) {
|
9414
|
+
var value = reachabilityMetrics[key];
|
9415
|
+
if (typeof value === 'number') {
|
9416
|
+
return total + value;
|
9417
|
+
}
|
9418
|
+
return total;
|
9419
|
+
}, 0);
|
9420
|
+
isSubnetReachable = null;
|
9421
|
+
if (totalSuccessCases > 0) {
|
9422
|
+
// @ts-ignore
|
9423
|
+
isSubnetReachable = this.webex.meetings.reachability.isSubnetReachable(this.mediaServerIp);
|
9424
|
+
}
|
9425
|
+
selectedCluster = null;
|
9426
|
+
if (this.mediaConnections && this.mediaConnections.length > 0) {
|
9427
|
+
selectedCluster = this.mediaConnections[0].mediaAgentCluster;
|
9428
|
+
}
|
9429
|
+
return _context42.abrupt("return", _objectSpread(_objectSpread({}, reachabilityMetrics), {}, {
|
9430
|
+
isSubnetReachable: isSubnetReachable,
|
9431
|
+
selectedCluster: selectedCluster
|
9432
|
+
}));
|
9433
|
+
case 10:
|
9434
|
+
case "end":
|
9435
|
+
return _context42.stop();
|
9436
|
+
}
|
9437
|
+
}, _callee42, this);
|
9438
|
+
}));
|
9439
|
+
function getMediaReachabilityMetricFields() {
|
9440
|
+
return _getMediaReachabilityMetricFields.apply(this, arguments);
|
9441
|
+
}
|
9442
|
+
return getMediaReachabilityMetricFields;
|
9443
|
+
}())
|
9176
9444
|
}]);
|
9177
9445
|
return Meeting;
|
9178
9446
|
}(_webexCore.StatelessWebexPlugin);
|