@webex/plugin-meetings 3.8.1-web-workers-keepalive.1 → 3.9.0-webinar5k.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +8 -2
- package/dist/constants.js.map +1 -1
- package/dist/hashTree/constants.js +23 -0
- package/dist/hashTree/constants.js.map +1 -0
- package/dist/hashTree/hashTree.js +516 -0
- package/dist/hashTree/hashTree.js.map +1 -0
- package/dist/hashTree/hashTreeParser.js +521 -0
- package/dist/hashTree/hashTreeParser.js.map +1 -0
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +301 -59
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/brbState.js +14 -12
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/index.js +110 -12
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +2 -5
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +19 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +8 -11
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +6 -2
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +44 -23
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +3 -3
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +18 -6
- package/dist/members/util.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +32 -2
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/types/constants.d.ts +6 -0
- package/dist/types/hashTree/constants.d.ts +8 -0
- package/dist/types/hashTree/hashTree.d.ts +128 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
- package/dist/types/locus-info/index.d.ts +93 -3
- package/dist/types/meeting/brbState.d.ts +0 -1
- package/dist/types/meeting/index.d.ts +29 -3
- package/dist/types/meeting/request.d.ts +9 -1
- package/dist/types/meeting/request.type.d.ts +74 -0
- package/dist/types/meeting/util.d.ts +3 -3
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +15 -3
- package/dist/types/members/request.d.ts +1 -1
- package/dist/types/members/util.d.ts +5 -2
- package/dist/types/multistream/sendSlotManager.d.ts +16 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +24 -23
- package/src/constants.ts +7 -0
- package/src/hashTree/constants.ts +12 -0
- package/src/hashTree/hashTree.ts +460 -0
- package/src/hashTree/hashTreeParser.ts +556 -0
- package/src/locus-info/index.ts +393 -58
- package/src/meeting/brbState.ts +9 -7
- package/src/meeting/index.ts +104 -6
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +16 -0
- package/src/meeting/request.type.ts +64 -0
- package/src/meeting/util.ts +17 -20
- package/src/meetings/index.ts +17 -3
- package/src/member/index.ts +1 -0
- package/src/member/types.ts +1 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +33 -7
- package/src/members/request.ts +2 -2
- package/src/members/util.ts +14 -3
- package/src/multistream/sendSlotManager.ts +34 -2
- package/test/unit/spec/hashTree/hashTree.ts +394 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
- package/test/unit/spec/locus-info/index.js +506 -55
- package/test/unit/spec/meeting/brbState.ts +9 -9
- package/test/unit/spec/meeting/index.js +475 -42
- package/test/unit/spec/meeting/request.js +71 -0
- package/test/unit/spec/members/index.js +33 -10
- package/test/unit/spec/members/request.js +2 -2
- package/test/unit/spec/members/utils.js +27 -7
- package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
- package/test/unit/spec/reachability/index.ts +3 -1
package/dist/meeting/brbState.js
CHANGED
@@ -56,8 +56,13 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
|
|
56
56
|
(0, _createClass2.default)(BrbState, [{
|
57
57
|
key: "enable",
|
58
58
|
value: function enable(enabled, sendSlotManager) {
|
59
|
+
var _this = this;
|
59
60
|
this.state.client.enabled = enabled;
|
60
|
-
|
61
|
+
|
62
|
+
// Don't set the source state override if enabling brb fails
|
63
|
+
return this.applyClientStateToServer(sendSlotManager).then(function () {
|
64
|
+
sendSlotManager.setSourceStateOverride(_internalMediaCore.MediaType.VideoMain, _this.state.client.enabled ? 'away' : null);
|
65
|
+
});
|
61
66
|
}
|
62
67
|
|
63
68
|
/**
|
@@ -69,7 +74,7 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
|
|
69
74
|
}, {
|
70
75
|
key: "applyClientStateToServer",
|
71
76
|
value: function applyClientStateToServer(sendSlotManager) {
|
72
|
-
var
|
77
|
+
var _this2 = this;
|
73
78
|
if (this.state.syncToServerInProgress) {
|
74
79
|
_loggerProxy.default.logger.info("Meeting:brbState#applyClientStateToServer: request to server in progress, we need to wait for it to complete");
|
75
80
|
return _promise.default.resolve();
|
@@ -81,20 +86,20 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
|
|
81
86
|
return _promise.default.resolve();
|
82
87
|
}
|
83
88
|
this.state.syncToServerInProgress = true;
|
84
|
-
return this.sendLocalBrbStateToServer(
|
85
|
-
|
89
|
+
return this.sendLocalBrbStateToServer().then(function () {
|
90
|
+
_this2.state.syncToServerInProgress = false;
|
86
91
|
|
87
92
|
// This is a workaround for the fact that the server does not send the brb state
|
88
93
|
// in the locus update when a user joins from multiple devices but not all devices are requested brb.
|
89
94
|
// In the future, this could be improved with a new brb locus update handler
|
90
95
|
// https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-655626
|
91
|
-
|
96
|
+
_this2.handleServerBrbUpdate(_this2.state.client.enabled);
|
92
97
|
_loggerProxy.default.logger.info("Meeting:brbState#applyClientStateToServer: sync with server completed");
|
93
98
|
|
94
99
|
// need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync
|
95
|
-
|
100
|
+
_this2.applyClientStateToServer(sendSlotManager);
|
96
101
|
}).catch(function (error) {
|
97
|
-
|
102
|
+
_this2.state.syncToServerInProgress = false;
|
98
103
|
_loggerProxy.default.logger.warn("Meeting:brbState#applyClientStateToServer: Error: ".concat(error));
|
99
104
|
return _promise.default.reject(error);
|
100
105
|
});
|
@@ -103,13 +108,12 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
|
|
103
108
|
/**
|
104
109
|
* Send the local brb state to the server
|
105
110
|
*
|
106
|
-
* @param {SendSlotManager} sendSlotManager
|
107
111
|
* @returns {Promise}
|
108
112
|
*/
|
109
113
|
}, {
|
110
114
|
key: "sendLocalBrbStateToServer",
|
111
115
|
value: (function () {
|
112
|
-
var _sendLocalBrbStateToServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(
|
116
|
+
var _sendLocalBrbStateToServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
113
117
|
var enabled, errorMessage, error, _errorMessage, _error;
|
114
118
|
return _regenerator.default.wrap(function _callee$(_context) {
|
115
119
|
while (1) switch (_context.prev = _context.next) {
|
@@ -138,8 +142,6 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
|
|
138
142
|
locusUrl: this.meeting.locusUrl,
|
139
143
|
deviceUrl: this.meeting.deviceUrl,
|
140
144
|
selfId: this.meeting.selfId
|
141
|
-
}).then(function () {
|
142
|
-
sendSlotManager.setSourceStateOverride(_internalMediaCore.MediaType.VideoMain, enabled ? 'away' : null);
|
143
145
|
}).catch(function (error) {
|
144
146
|
_loggerProxy.default.logger.error('Meeting:brbState#sendLocalBrbStateToServer: Error ', error);
|
145
147
|
return _promise.default.reject(error);
|
@@ -150,7 +152,7 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
|
|
150
152
|
}
|
151
153
|
}, _callee, this);
|
152
154
|
}));
|
153
|
-
function sendLocalBrbStateToServer(
|
155
|
+
function sendLocalBrbStateToServer() {
|
154
156
|
return _sendLocalBrbStateToServer.apply(this, arguments);
|
155
157
|
}
|
156
158
|
return sendLocalBrbStateToServer;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","createBrbState","exports","meeting","enabled","LoggerProxy","logger","info","concat","id","brbState","BrbState","_classCallCheck2","default","_defineProperty2","state","client","server","syncToServerInProgress","_createClass2","key","value","enable","sendSlotManager","applyClientStateToServer","_this","_promise","resolve","remoteBrbRequiresSync","sendLocalBrbStateToServer","then","handleServerBrbUpdate","catch","error","warn","reject","_sendLocalBrbStateToServer","_asyncToGenerator2","_regenerator","mark","_callee","errorMessage","_errorMessage","_error","wrap","_callee$","_context","prev","next","isMultistream","Error","abrupt","mediaProperties","webrtcMediaConnection","meetingRequest","setBrb","locusUrl","deviceUrl","selfId","setSourceStateOverride","MediaType","VideoMain","stop","_x","apply","arguments"],"sources":["brbState.ts"],"sourcesContent":["import {MediaType} from '@webex/internal-media-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport type Meeting from '.';\nimport SendSlotManager from '../multistream/sendSlotManager';\n\nexport const createBrbState = (meeting: Meeting, enabled: boolean) => {\n LoggerProxy.logger.info(\n `Meeting:brbState#createBrbState: creating BrbState for meeting id ${meeting?.id}`\n );\n\n const brbState = new BrbState(meeting, enabled);\n\n return brbState;\n};\n\n/** The purpose of this class is to manage the local and remote brb state\n * and make sure that the server state always matches the last requested state by the client.\n */\nexport class BrbState {\n state: {\n client: {\n enabled: boolean;\n };\n server: {\n enabled: boolean;\n };\n syncToServerInProgress: boolean;\n };\n\n meeting: Meeting;\n\n /**\n * Constructor\n *\n * @param {Meeting} meeting - the meeting object\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(meeting: Meeting, enabled: boolean) {\n this.meeting = meeting;\n this.state = {\n client: {\n enabled,\n },\n server: {\n enabled: false,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Enables/disables brb\n *\n * @param {boolean} enabled\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n public enable(enabled: boolean, sendSlotManager: SendSlotManager) {\n this.state.client.enabled = enabled;\n\n return this.applyClientStateToServer(sendSlotManager);\n }\n\n /**\n * Updates the server local and remote brb values so that they match the current client desired state.\n *\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n private applyClientStateToServer(sendSlotManager: SendSlotManager) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: request to server in progress, we need to wait for it to complete`\n );\n\n return Promise.resolve();\n }\n\n const remoteBrbRequiresSync = this.state.client.enabled !== this.state.server.enabled;\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: remoteBrbRequiresSync: ${remoteBrbRequiresSync}`\n );\n\n if (!remoteBrbRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: client state already matching server state, nothing to do`\n );\n\n return Promise.resolve();\n }\n\n this.state.syncToServerInProgress = true;\n\n return this.sendLocalBrbStateToServer(sendSlotManager)\n .then(() => {\n this.state.syncToServerInProgress = false;\n\n // This is a workaround for the fact that the server does not send the brb state\n // in the locus update when a user joins from multiple devices but not all devices are requested brb.\n // In the future, this could be improved with a new brb locus update handler\n // https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-655626\n this.handleServerBrbUpdate(this.state.client.enabled);\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(sendSlotManager);\n })\n .catch((error) => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.warn(`Meeting:brbState#applyClientStateToServer: Error: ${error}`);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Send the local brb state to the server\n *\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n private async sendLocalBrbStateToServer(sendSlotManager: SendSlotManager) {\n const {enabled} = this.state.client;\n\n if (!this.meeting.isMultistream) {\n const errorMessage = 'Meeting:brbState#sendLocalBrbStateToServer: Not a multistream meeting';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n if (!this.meeting.mediaProperties.webrtcMediaConnection) {\n const errorMessage =\n 'Meeting:brbState#sendLocalBrbStateToServer: WebRTC media connection is not defined';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n // this logic should be applied only to multistream meetings\n return this.meeting.meetingRequest\n .setBrb({\n enabled,\n locusUrl: this.meeting.locusUrl,\n deviceUrl: this.meeting.deviceUrl,\n selfId: this.meeting.selfId,\n })\n .then(() => {\n sendSlotManager.setSourceStateOverride(MediaType.VideoMain, enabled ? 'away' : null);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:brbState#sendLocalBrbStateToServer: Error ', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * This method should be called whenever the server brb state is changed\n *\n * @param {Boolean} [enabled] true if user has brb enabled, false otherwise\n * @returns {undefined}\n */\n public handleServerBrbUpdate(enabled?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:brbState#handleServerBrbUpdate: updating server brb to (${enabled})`\n );\n this.state.server.enabled = !!enabled;\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","createBrbState","exports","meeting","enabled","LoggerProxy","logger","info","concat","id","brbState","BrbState","_classCallCheck2","default","_defineProperty2","state","client","server","syncToServerInProgress","_createClass2","key","value","enable","sendSlotManager","_this","applyClientStateToServer","then","setSourceStateOverride","MediaType","VideoMain","_this2","_promise","resolve","remoteBrbRequiresSync","sendLocalBrbStateToServer","handleServerBrbUpdate","catch","error","warn","reject","_sendLocalBrbStateToServer","_asyncToGenerator2","_regenerator","mark","_callee","errorMessage","_errorMessage","_error","wrap","_callee$","_context","prev","next","isMultistream","Error","abrupt","mediaProperties","webrtcMediaConnection","meetingRequest","setBrb","locusUrl","deviceUrl","selfId","stop","apply","arguments"],"sources":["brbState.ts"],"sourcesContent":["import {MediaType} from '@webex/internal-media-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport type Meeting from '.';\nimport SendSlotManager from '../multistream/sendSlotManager';\n\nexport const createBrbState = (meeting: Meeting, enabled: boolean) => {\n LoggerProxy.logger.info(\n `Meeting:brbState#createBrbState: creating BrbState for meeting id ${meeting?.id}`\n );\n\n const brbState = new BrbState(meeting, enabled);\n\n return brbState;\n};\n\n/** The purpose of this class is to manage the local and remote brb state\n * and make sure that the server state always matches the last requested state by the client.\n */\nexport class BrbState {\n state: {\n client: {\n enabled: boolean;\n };\n server: {\n enabled: boolean;\n };\n syncToServerInProgress: boolean;\n };\n\n meeting: Meeting;\n\n /**\n * Constructor\n *\n * @param {Meeting} meeting - the meeting object\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(meeting: Meeting, enabled: boolean) {\n this.meeting = meeting;\n this.state = {\n client: {\n enabled,\n },\n server: {\n enabled: false,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Enables/disables brb\n *\n * @param {boolean} enabled\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n public enable(enabled: boolean, sendSlotManager: SendSlotManager) {\n this.state.client.enabled = enabled;\n\n // Don't set the source state override if enabling brb fails\n return this.applyClientStateToServer(sendSlotManager).then(() => {\n sendSlotManager.setSourceStateOverride(\n MediaType.VideoMain,\n this.state.client.enabled ? 'away' : null\n );\n });\n }\n\n /**\n * Updates the server local and remote brb values so that they match the current client desired state.\n *\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n private applyClientStateToServer(sendSlotManager: SendSlotManager) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: request to server in progress, we need to wait for it to complete`\n );\n\n return Promise.resolve();\n }\n\n const remoteBrbRequiresSync = this.state.client.enabled !== this.state.server.enabled;\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: remoteBrbRequiresSync: ${remoteBrbRequiresSync}`\n );\n\n if (!remoteBrbRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: client state already matching server state, nothing to do`\n );\n\n return Promise.resolve();\n }\n\n this.state.syncToServerInProgress = true;\n\n return this.sendLocalBrbStateToServer()\n .then(() => {\n this.state.syncToServerInProgress = false;\n\n // This is a workaround for the fact that the server does not send the brb state\n // in the locus update when a user joins from multiple devices but not all devices are requested brb.\n // In the future, this could be improved with a new brb locus update handler\n // https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-655626\n this.handleServerBrbUpdate(this.state.client.enabled);\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(sendSlotManager);\n })\n .catch((error) => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.warn(`Meeting:brbState#applyClientStateToServer: Error: ${error}`);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Send the local brb state to the server\n *\n * @returns {Promise}\n */\n private async sendLocalBrbStateToServer() {\n const {enabled} = this.state.client;\n\n if (!this.meeting.isMultistream) {\n const errorMessage = 'Meeting:brbState#sendLocalBrbStateToServer: Not a multistream meeting';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n if (!this.meeting.mediaProperties.webrtcMediaConnection) {\n const errorMessage =\n 'Meeting:brbState#sendLocalBrbStateToServer: WebRTC media connection is not defined';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n // this logic should be applied only to multistream meetings\n return this.meeting.meetingRequest\n .setBrb({\n enabled,\n locusUrl: this.meeting.locusUrl,\n deviceUrl: this.meeting.deviceUrl,\n selfId: this.meeting.selfId,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:brbState#sendLocalBrbStateToServer: Error ', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * This method should be called whenever the server brb state is changed\n *\n * @param {Boolean} [enabled] true if user has brb enabled, false otherwise\n * @returns {undefined}\n */\n public handleServerBrbUpdate(enabled?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:brbState#handleServerBrbUpdate: updating server brb to (${enabled})`\n );\n this.state.server.enabled = !!enabled;\n }\n}\n"],"mappings":"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"}
|
package/dist/meeting/index.js
CHANGED
@@ -563,6 +563,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
563
563
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "uploadLogsTimer", void 0);
|
564
564
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "logUploadIntervalIndex", void 0);
|
565
565
|
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaServerIp", void 0);
|
566
|
+
/** Handles Locus LLM events
|
567
|
+
*
|
568
|
+
* @param {LocusLLMEvent} event - The Locus LLM event to process
|
569
|
+
* @returns {void}
|
570
|
+
*/
|
571
|
+
(0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "processLocusLLMEvent", function (event) {
|
572
|
+
if (event.data.eventType === 'locus.state_message') {
|
573
|
+
_this.locusInfo.parse((0, _assertThisInitialized2.default)(_this), event.data);
|
574
|
+
} else {
|
575
|
+
_loggerProxy.default.logger.warn("Meeting:index#processLocusLLMEvent --> Unknown event type: ".concat(event.data.eventType));
|
576
|
+
}
|
577
|
+
});
|
566
578
|
/**
|
567
579
|
* Callback called when a relay event is received from meeting LLM Connection
|
568
580
|
* @param {RelayEvent} e Event object coming from LLM Connection
|
@@ -1422,6 +1434,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
1422
1434
|
|
1423
1435
|
// @ts-ignore - fix types
|
1424
1436
|
_this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
|
1437
|
+
// @ts-ignore - Fix type
|
1438
|
+
_this.webex.internal.llm.off('event:locus.state_message', _this.processLocusLLMEvent);
|
1425
1439
|
});
|
1426
1440
|
/**
|
1427
1441
|
* starts keepAlives being sent
|
@@ -4349,17 +4363,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4349
4363
|
}
|
4350
4364
|
|
4351
4365
|
/**
|
4352
|
-
* Cancel an SIP call invitation made during a meeting
|
4366
|
+
* Cancel an SIP/phone call invitation made during a meeting
|
4353
4367
|
* @param {Object} invitee
|
4354
4368
|
* @param {String} invitee.memberId
|
4355
|
-
* @
|
4369
|
+
* @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
|
4370
|
+
* @returns {Promise} see #members.cancelInviteByMemberId
|
4356
4371
|
* @public
|
4357
4372
|
* @memberof Meeting
|
4358
4373
|
*/
|
4359
4374
|
}, {
|
4360
|
-
key: "
|
4361
|
-
value: function
|
4362
|
-
return this.members.
|
4375
|
+
key: "cancelInviteByMemberId",
|
4376
|
+
value: function cancelInviteByMemberId(invitee) {
|
4377
|
+
return this.members.cancelInviteByMemberId(invitee);
|
4363
4378
|
}
|
4364
4379
|
|
4365
4380
|
/**
|
@@ -4938,7 +4953,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
4938
4953
|
this.selfId = locus.selfId;
|
4939
4954
|
this.mediaId = locus.mediaId;
|
4940
4955
|
this.hostId = mtgLocus.host ? mtgLocus.host.id : this.hostId;
|
4941
|
-
this.locusInfo.initialSetup(mtgLocus);
|
4956
|
+
this.locusInfo.initialSetup(mtgLocus, locus.dataSets);
|
4942
4957
|
}
|
4943
4958
|
|
4944
4959
|
/**
|
@@ -6401,7 +6416,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6401
6416
|
isJoined = this.isJoined(); // webinar panelist should use new data channel in practice session
|
6402
6417
|
dataChannelUrl = this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl ? practiceSessionDatachannelUrl : datachannelUrl; // @ts-ignore - Fix type
|
6403
6418
|
if (!this.webex.internal.llm.isConnected()) {
|
6404
|
-
_context20.next =
|
6419
|
+
_context20.next = 10;
|
6405
6420
|
break;
|
6406
6421
|
}
|
6407
6422
|
if (!(
|
@@ -6422,22 +6437,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
6422
6437
|
case 8:
|
6423
6438
|
// @ts-ignore - Fix type
|
6424
6439
|
this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
|
6425
|
-
|
6440
|
+
// @ts-ignore - Fix type
|
6441
|
+
this.webex.internal.llm.off('event:locus.state_message', this.processLocusLLMEvent);
|
6442
|
+
case 10:
|
6426
6443
|
if (isJoined) {
|
6427
|
-
_context20.next =
|
6444
|
+
_context20.next = 12;
|
6428
6445
|
break;
|
6429
6446
|
}
|
6430
6447
|
return _context20.abrupt("return", undefined);
|
6431
|
-
case
|
6448
|
+
case 12:
|
6432
6449
|
return _context20.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl).then(function (registerAndConnectResult) {
|
6433
6450
|
// @ts-ignore - Fix type
|
6434
6451
|
_this37.webex.internal.llm.off('event:relay.event', _this37.processRelayEvent);
|
6435
6452
|
// @ts-ignore - Fix type
|
6436
6453
|
_this37.webex.internal.llm.on('event:relay.event', _this37.processRelayEvent);
|
6454
|
+
// @ts-ignore - Fix type
|
6455
|
+
_this37.webex.internal.llm.off('event:locus.state_message', _this37.processLocusLLMEvent);
|
6456
|
+
// @ts-ignore - Fix type
|
6457
|
+
_this37.webex.internal.llm.on('event:locus.state_message', _this37.processLocusLLMEvent);
|
6437
6458
|
_loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
|
6438
6459
|
return _promise.default.resolve(registerAndConnectResult);
|
6439
6460
|
}));
|
6440
|
-
case
|
6461
|
+
case 13:
|
6441
6462
|
case "end":
|
6442
6463
|
return _context20.stop();
|
6443
6464
|
}
|
@@ -9481,7 +9502,84 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
9481
9502
|
return _getMediaReachabilityMetricFields.apply(this, arguments);
|
9482
9503
|
}
|
9483
9504
|
return getMediaReachabilityMetricFields;
|
9484
|
-
}()
|
9505
|
+
}()
|
9506
|
+
/**
|
9507
|
+
* Set the stage for the meeting
|
9508
|
+
*
|
9509
|
+
* @param {SetStageOptions} options Options to use when setting the stage
|
9510
|
+
* @returns {Promise} The locus request
|
9511
|
+
*/
|
9512
|
+
)
|
9513
|
+
}, {
|
9514
|
+
key: "setStage",
|
9515
|
+
value: function setStage() {
|
9516
|
+
var _ref37 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
9517
|
+
_ref37$activeSpeakerP = _ref37.activeSpeakerProportion,
|
9518
|
+
activeSpeakerProportion = _ref37$activeSpeakerP === void 0 ? 0.5 : _ref37$activeSpeakerP,
|
9519
|
+
customBackground = _ref37.customBackground,
|
9520
|
+
customLogo = _ref37.customLogo,
|
9521
|
+
customNameLabel = _ref37.customNameLabel,
|
9522
|
+
importantParticipants = _ref37.importantParticipants,
|
9523
|
+
_ref37$lockAttendeeVi = _ref37.lockAttendeeViewOnStage,
|
9524
|
+
lockAttendeeViewOnStage = _ref37$lockAttendeeVi === void 0 ? false : _ref37$lockAttendeeVi,
|
9525
|
+
_ref37$showActiveSpea = _ref37.showActiveSpeaker,
|
9526
|
+
showActiveSpeaker = _ref37$showActiveSpea === void 0 ? false : _ref37$showActiveSpea;
|
9527
|
+
var videoLayout = {
|
9528
|
+
overrideDefault: true,
|
9529
|
+
lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,
|
9530
|
+
stageParameters: {
|
9531
|
+
activeSpeakerProportion: activeSpeakerProportion,
|
9532
|
+
showActiveSpeaker: {
|
9533
|
+
show: showActiveSpeaker,
|
9534
|
+
order: 0
|
9535
|
+
},
|
9536
|
+
stageManagerType: 0
|
9537
|
+
}
|
9538
|
+
};
|
9539
|
+
if (importantParticipants !== null && importantParticipants !== void 0 && importantParticipants.length) {
|
9540
|
+
videoLayout.stageParameters.importantParticipants = importantParticipants.map(function (importantParticipant, index) {
|
9541
|
+
return _objectSpread(_objectSpread({}, importantParticipant), {}, {
|
9542
|
+
order: index + 1
|
9543
|
+
});
|
9544
|
+
});
|
9545
|
+
}
|
9546
|
+
if (customLogo) {
|
9547
|
+
if (!videoLayout.customLayouts) {
|
9548
|
+
videoLayout.customLayouts = {};
|
9549
|
+
}
|
9550
|
+
videoLayout.customLayouts.logo = customLogo;
|
9551
|
+
// eslint-disable-next-line no-bitwise
|
9552
|
+
videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.LOGO;
|
9553
|
+
}
|
9554
|
+
if (customBackground) {
|
9555
|
+
if (!videoLayout.customLayouts) {
|
9556
|
+
videoLayout.customLayouts = {};
|
9557
|
+
}
|
9558
|
+
videoLayout.customLayouts.background = customBackground;
|
9559
|
+
// eslint-disable-next-line no-bitwise
|
9560
|
+
videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.BACKGROUND;
|
9561
|
+
}
|
9562
|
+
if (customNameLabel) {
|
9563
|
+
videoLayout.nameLabelStyle = customNameLabel;
|
9564
|
+
// eslint-disable-next-line no-bitwise
|
9565
|
+
videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.NAME_LABEL;
|
9566
|
+
}
|
9567
|
+
return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
|
9568
|
+
}
|
9569
|
+
|
9570
|
+
/**
|
9571
|
+
* Unset the stage for the meeting
|
9572
|
+
*
|
9573
|
+
* @returns {Promise} The locus request
|
9574
|
+
*/
|
9575
|
+
}, {
|
9576
|
+
key: "unsetStage",
|
9577
|
+
value: function unsetStage() {
|
9578
|
+
var videoLayout = {
|
9579
|
+
overrideDefault: false
|
9580
|
+
};
|
9581
|
+
return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
|
9582
|
+
}
|
9485
9583
|
}]);
|
9486
9584
|
return Meeting;
|
9487
9585
|
}(_webexCore.StatelessWebexPlugin);
|