@webex/plugin-meetings 3.12.0-next.44 → 3.12.0-next.46
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/aiEnableRequest/index.js +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/controls-options-manager/index.js +17 -5
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/interpretation/index.js +10 -1
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +94 -20
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/util.js +15 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/recording-controller/index.js +1 -3
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/types/controls-options-manager/index.d.ts +10 -0
- package/dist/types/meeting/index.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +7 -0
- package/dist/webinar/index.js +68 -17
- package/dist/webinar/index.js.map +1 -1
- package/package.json +3 -3
- package/src/controls-options-manager/index.ts +22 -6
- package/src/interpretation/index.ts +25 -8
- package/src/meeting/index.ts +79 -6
- package/src/meeting/util.ts +16 -2
- package/src/recording-controller/index.ts +1 -2
- package/src/webinar/index.ts +88 -21
- package/test/unit/spec/controls-options-manager/index.js +35 -32
- package/test/unit/spec/interpretation/index.ts +26 -4
- package/test/unit/spec/meeting/index.js +183 -0
- package/test/unit/spec/meeting/muteState.js +3 -0
- package/test/unit/spec/meeting/utils.js +25 -0
- package/test/unit/spec/recording-controller/index.js +9 -8
- package/test/unit/spec/webinar/index.ts +81 -16
|
@@ -191,7 +191,7 @@ var AIEnableRequest = _webexCore.WebexPlugin.extend({
|
|
|
191
191
|
method: _constants.HTTP_VERBS.PUT
|
|
192
192
|
});
|
|
193
193
|
},
|
|
194
|
-
version: "3.12.0-next.
|
|
194
|
+
version: "3.12.0-next.46"
|
|
195
195
|
});
|
|
196
196
|
var _default = exports.default = AIEnableRequest;
|
|
197
197
|
//# sourceMappingURL=index.js.map
|
package/dist/breakouts/index.js
CHANGED
|
@@ -1109,7 +1109,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
1109
1109
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
|
1110
1110
|
}
|
|
1111
1111
|
},
|
|
1112
|
-
version: "3.12.0-next.
|
|
1112
|
+
version: "3.12.0-next.46"
|
|
1113
1113
|
});
|
|
1114
1114
|
var _default = exports.default = Breakouts;
|
|
1115
1115
|
//# sourceMappingURL=index.js.map
|
|
@@ -203,10 +203,7 @@ var ControlsOptionsManager = exports.default = /*#__PURE__*/function () {
|
|
|
203
203
|
mainLocusUrl: _this.mainLocusUrl
|
|
204
204
|
});
|
|
205
205
|
return previous.then(function () {
|
|
206
|
-
return (
|
|
207
|
-
// @ts-ignore
|
|
208
|
-
_this.request.request(requestParams)
|
|
209
|
-
);
|
|
206
|
+
return _this.sendControlsRequest(requestParams);
|
|
210
207
|
});
|
|
211
208
|
}, _promise.default.resolve());
|
|
212
209
|
}
|
|
@@ -269,9 +266,24 @@ var ControlsOptionsManager = exports.default = /*#__PURE__*/function () {
|
|
|
269
266
|
locusUrl: this.locusUrl,
|
|
270
267
|
mainLocusUrl: this.mainLocusUrl
|
|
271
268
|
});
|
|
269
|
+
return this.sendControlsRequest(requestParams);
|
|
270
|
+
}
|
|
272
271
|
|
|
272
|
+
/**
|
|
273
|
+
* Sends a controls request to Locus. When authorizingLocusUrl is present in the body,
|
|
274
|
+
* we use a plain request() because the response contains the main session Locus DTO
|
|
275
|
+
* instead of the breakout we're in, so we don't want to parse it as a delta.
|
|
276
|
+
* Otherwise we use locusDeltaRequest() for normal delta processing.
|
|
277
|
+
*
|
|
278
|
+
* @param {Object} requestParams - The request parameters from getControlsRequestParams.
|
|
279
|
+
* @returns {Promise<any>}
|
|
280
|
+
*/
|
|
281
|
+
}, {
|
|
282
|
+
key: "sendControlsRequest",
|
|
283
|
+
value: function sendControlsRequest(requestParams) {
|
|
284
|
+
return requestParams.body.authorizingLocusUrl ?
|
|
273
285
|
// @ts-ignore
|
|
274
|
-
|
|
286
|
+
this.request.request(requestParams) : this.request.locusDeltaRequest(requestParams);
|
|
275
287
|
}
|
|
276
288
|
|
|
277
289
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_parameter","_interopRequireDefault","_permission","_loggerProxy","_enums","_util","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsOptionsManager","exports","request","options","_classCallCheck2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","isMainLocus","locusUrl","mainLocusUrl","setDisplayHints","hints","displayHints","getLocusUrl","getDisplayHints","update","_this","_promise","reject","ParameterError","_len","controls","Array","_key","payloads","map","control","_keys","Control","includes","scope","Error","concat","Util","canUpdate","PermissionError","properties","reduce","previous","payload","requestParams","getControlsRequestParams","body","then","resolve","setControls","setting","_this2","LoggerProxy","logger","log","_stringify","error","shouldSkipCheckToMergeBody","_entries","_ref2","_ref3","_slicedToArray2","undefined","CAN_SET","CAN_UNSET","Setting","muted","audio","camelCase","disallowUnmute","muteOnEntry","ENABLED","roles","_isArray","setMuteOnEntry","enabled","setDisallowUnmute","setMuteAll","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {Control, Setting} from './enums';\nimport {ControlConfig} from './types';\nimport Util from './util';\nimport {CAN_SET, CAN_UNSET, ENABLED} from './constants';\n\n/**\n * docs\n * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html\n * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351\n */\n\n/**\n * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class ControlsOptionsManager {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof ControlsOptionsManager\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof ControlsOptionsManager\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private mainLocusUrl: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof ControlsOptionsManager\n */\n constructor(\n request: MeetingRequest,\n options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public set(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @param {boolean} isMainLocus\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string, isMainLocus?: boolean) {\n this.locusUrl = url;\n if (isMainLocus) {\n this.mainLocusUrl = url;\n }\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * Set controls for this meeting.\n *\n * @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs\n * @returns {Promise<Array<any>>}- Promise resolving if the request was successful.\n */\n public update(...controls: Array<ControlConfig>) {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for update() controls must be defined.')\n );\n }\n\n const payloads = controls.map((control) => {\n if (!Object.keys(Control).includes(control.scope)) {\n throw new Error(\n `updating meeting control scope \"${control.scope}\" is not a supported scope`\n );\n }\n\n if (!Util.canUpdate(control, this.displayHints)) {\n throw new PermissionError(\n `updating meeting control scope \"${control.scope}\" not allowed, due to moderator property.`\n );\n }\n\n return {\n [control.scope]: control.properties,\n };\n });\n\n return payloads.reduce((previous, payload) => {\n const requestParams = Util.getControlsRequestParams({\n body: payload,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n return previous.then(() =>\n // @ts-ignore\n this.request.request(requestParams)\n );\n }, Promise.resolve());\n }\n\n /**\n * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {\n [Setting.muted]?: boolean;\n [Setting.disallowUnmute]?: boolean;\n [Setting.muteOnEntry]?: boolean;\n [Setting.roles]?: Array<string>;\n }): Promise<any> {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for setControls() must be defined.')\n );\n }\n\n LoggerProxy.logger.log(\n `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`\n );\n\n const body: Record<string, any> = {};\n let error: PermissionError;\n\n let shouldSkipCheckToMergeBody = false;\n\n Object.entries(setting).forEach(([key, value]) => {\n if (\n !shouldSkipCheckToMergeBody &&\n value !== undefined &&\n !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)\n ) {\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n\n if (error) {\n return;\n }\n\n switch (key) {\n case Setting.muted:\n shouldSkipCheckToMergeBody = true;\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n break;\n\n case Setting.disallowUnmute:\n case Setting.muteOnEntry:\n if (Object.keys(setting).includes(Setting.muted)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n body.audio[camelCase(key)] = value;\n } else {\n body[camelCase(key)] = {[ENABLED]: value};\n }\n break;\n\n case Setting.roles:\n if (Array.isArray(value)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n }\n break;\n\n default:\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n });\n\n if (error) {\n return Promise.reject(error);\n }\n\n const requestParams = Util.getControlsRequestParams({\n body,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n // @ts-ignore\n return this.request.request(requestParams);\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteOnEntry(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.muteOnEntry]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setDisallowUnmute(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.disallowUnmute]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @param {array} roles which should be muted\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean,\n roles: Array<string>\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n [Setting.roles]: roles,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_parameter","_interopRequireDefault","_permission","_loggerProxy","_enums","_util","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsOptionsManager","exports","request","options","_classCallCheck2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","isMainLocus","locusUrl","mainLocusUrl","setDisplayHints","hints","displayHints","getLocusUrl","getDisplayHints","update","_this","_promise","reject","ParameterError","_len","controls","Array","_key","payloads","map","control","_keys","Control","includes","scope","Error","concat","Util","canUpdate","PermissionError","properties","reduce","previous","payload","requestParams","getControlsRequestParams","body","then","sendControlsRequest","resolve","setControls","setting","_this2","LoggerProxy","logger","log","_stringify","error","shouldSkipCheckToMergeBody","_entries","_ref2","_ref3","_slicedToArray2","undefined","CAN_SET","CAN_UNSET","Setting","muted","audio","camelCase","disallowUnmute","muteOnEntry","ENABLED","roles","_isArray","authorizingLocusUrl","locusDeltaRequest","setMuteOnEntry","enabled","setDisallowUnmute","setMuteAll","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {Control, Setting} from './enums';\nimport {ControlConfig} from './types';\nimport Util from './util';\nimport {CAN_SET, CAN_UNSET, ENABLED} from './constants';\n\n/**\n * docs\n * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html\n * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867\n * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351\n */\n\n/**\n * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class ControlsOptionsManager {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof ControlsOptionsManager\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof ControlsOptionsManager\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof ControlsOptionsManager\n */\n private mainLocusUrl: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof ControlsOptionsManager\n */\n constructor(\n request: MeetingRequest,\n options?: {\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public set(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @param {boolean} isMainLocus\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string, isMainLocus?: boolean) {\n this.locusUrl = url;\n if (isMainLocus) {\n this.mainLocusUrl = url;\n }\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof ControlsOptionsManager\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof ControlsOptionsManager\n */\n private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * Set controls for this meeting.\n *\n * @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs\n * @returns {Promise<Array<any>>}- Promise resolving if the request was successful.\n */\n public update(...controls: Array<ControlConfig>) {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for update() controls must be defined.')\n );\n }\n\n const payloads = controls.map((control) => {\n if (!Object.keys(Control).includes(control.scope)) {\n throw new Error(\n `updating meeting control scope \"${control.scope}\" is not a supported scope`\n );\n }\n\n if (!Util.canUpdate(control, this.displayHints)) {\n throw new PermissionError(\n `updating meeting control scope \"${control.scope}\" not allowed, due to moderator property.`\n );\n }\n\n return {\n [control.scope]: control.properties,\n };\n });\n\n return payloads.reduce((previous, payload) => {\n const requestParams = Util.getControlsRequestParams({\n body: payload,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n return previous.then(() => this.sendControlsRequest(requestParams));\n }, Promise.resolve());\n }\n\n /**\n * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {\n [Setting.muted]?: boolean;\n [Setting.disallowUnmute]?: boolean;\n [Setting.muteOnEntry]?: boolean;\n [Setting.roles]?: Array<string>;\n }): Promise<any> {\n if (!this.locusUrl) {\n return Promise.reject(\n new ParameterError('The associated locusUrl for setControls() must be defined.')\n );\n }\n\n LoggerProxy.logger.log(\n `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`\n );\n\n const body: Record<string, any> = {};\n let error: PermissionError;\n\n let shouldSkipCheckToMergeBody = false;\n\n Object.entries(setting).forEach(([key, value]) => {\n if (\n !shouldSkipCheckToMergeBody &&\n value !== undefined &&\n !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)\n ) {\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n\n if (error) {\n return;\n }\n\n switch (key) {\n case Setting.muted:\n shouldSkipCheckToMergeBody = true;\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n break;\n\n case Setting.disallowUnmute:\n case Setting.muteOnEntry:\n if (Object.keys(setting).includes(Setting.muted)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n body.audio[camelCase(key)] = value;\n } else {\n body[camelCase(key)] = {[ENABLED]: value};\n }\n break;\n\n case Setting.roles:\n if (Array.isArray(value)) {\n body.audio = body.audio\n ? {...body.audio, [camelCase(key)]: value}\n : {[camelCase(key)]: value};\n }\n break;\n\n default:\n error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);\n }\n });\n\n if (error) {\n return Promise.reject(error);\n }\n\n const requestParams = Util.getControlsRequestParams({\n body,\n locusUrl: this.locusUrl,\n mainLocusUrl: this.mainLocusUrl,\n });\n\n return this.sendControlsRequest(requestParams);\n }\n\n /**\n * Sends a controls request to Locus. When authorizingLocusUrl is present in the body,\n * we use a plain request() because the response contains the main session Locus DTO\n * instead of the breakout we're in, so we don't want to parse it as a delta.\n * Otherwise we use locusDeltaRequest() for normal delta processing.\n *\n * @param {Object} requestParams - The request parameters from getControlsRequestParams.\n * @returns {Promise<any>}\n */\n private sendControlsRequest(requestParams: {\n uri: string;\n body: Record<string, any>;\n method: string;\n }): Promise<any> {\n return requestParams.body.authorizingLocusUrl\n ? // @ts-ignore\n this.request.request(requestParams)\n : this.request.locusDeltaRequest(requestParams);\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteOnEntry(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.muteOnEntry]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} enabled\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setDisallowUnmute(enabled: boolean): Promise<any> {\n return this.setControls({[Setting.disallowUnmute]: enabled});\n }\n\n /**\n * @public\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @param {array} roles which should be muted\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean,\n roles: Array<string>\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n [Setting.roles]: roles,\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/pr
|
|
|
10
10
|
var _webexCore = require("@webex/webex-core");
|
|
11
11
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
12
12
|
var _constants = require("../constants");
|
|
13
|
+
var _util = _interopRequireDefault(require("../meeting/util"));
|
|
13
14
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
14
15
|
/*!
|
|
15
16
|
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
@@ -212,6 +213,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
212
213
|
* @returns {Promise}
|
|
213
214
|
*/
|
|
214
215
|
updateInterpreters: function updateInterpreters(interpreters) {
|
|
216
|
+
var meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);
|
|
215
217
|
return this.request({
|
|
216
218
|
method: _constants.HTTP_VERBS.PATCH,
|
|
217
219
|
uri: "".concat(this.locusUrl, "/controls"),
|
|
@@ -220,6 +222,9 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
220
222
|
interpreters: interpreters
|
|
221
223
|
}
|
|
222
224
|
}
|
|
225
|
+
}).then(function (response) {
|
|
226
|
+
_util.default.updateLocusFromApiResponse(meeting, response);
|
|
227
|
+
return response;
|
|
223
228
|
}).catch(function (error) {
|
|
224
229
|
_loggerProxy.default.logger.error('Meeting:interpretation#updateInterpreters failed', error);
|
|
225
230
|
throw error;
|
|
@@ -236,6 +241,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
236
241
|
if (!this.selfParticipantId) {
|
|
237
242
|
return _promise.default.reject(new Error('Missing self participant id'));
|
|
238
243
|
}
|
|
244
|
+
var meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);
|
|
239
245
|
return this.request({
|
|
240
246
|
method: _constants.HTTP_VERBS.PATCH,
|
|
241
247
|
uri: "".concat(this.locusUrl, "/participant/").concat(this.selfParticipantId, "/controls"),
|
|
@@ -247,6 +253,9 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
247
253
|
order: this.order
|
|
248
254
|
}
|
|
249
255
|
}
|
|
256
|
+
}).then(function (response) {
|
|
257
|
+
_util.default.updateLocusFromApiResponse(meeting, response);
|
|
258
|
+
return response;
|
|
250
259
|
}).catch(function (error) {
|
|
251
260
|
_loggerProxy.default.logger.error('Meeting:interpretation#changeDirection failed', error);
|
|
252
261
|
throw error;
|
|
@@ -372,7 +381,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
372
381
|
throw error;
|
|
373
382
|
});
|
|
374
383
|
},
|
|
375
|
-
version: "3.12.0-next.
|
|
384
|
+
version: "3.12.0-next.46"
|
|
376
385
|
});
|
|
377
386
|
var _default = exports.default = SimultaneousInterpretation;
|
|
378
387
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","_collection","SimultaneousInterpretation","WebexPlugin","extend","namespace","MEETINGS","collections","siLanguages","SILanguageCollection","props","locusUrl","approvalUrl","originalLanguage","sourceLanguage","targetLanguage","receiveLanguage","order","isActive","selfParticipantId","canManageInterpreters","supportLanguages","meetingSIEnabled","hostSIEnabled","selfIsInterpreter","derived","shouldQuerySupportLanguages","cache","deps","fn","initialize","_this","listenTo","querySupportLanguages","listenToHandoffRequests","cleanUp","stopListening","locusUrlUpdate","set","approvalUrlUpdate","updateCanManageInterpreters","updateHostSIEnabled","updateMeetingSIEnabled","updateInterpretation","interpretation","updateSelfInterpretation","_ref","preTargetLanguage","_ref2","getTargetLanguageCode","_this$siLanguages$get","get","languageCode","_this2","request","method","HTTP_VERBS","GET","uri","concat","then","result","_result$body","body","trigger","INTERPRETATION","EVENTS","SUPPORT_LANGUAGES_UPDATE","catch","error","LoggerProxy","logger","getInterpreters","updateInterpreters","interpreters","PATCH","changeDirection","_promise","default","reject","Error","_this3","webex","internal","mercury","LOCUSEVENT","APPROVAL_REQUEST","event","_event$data","_event$data$approval","data","approval","resourceType","RESOURCE_TYPE","_receivers$","_event$data$approval2","receivers","initiator","actionType","url","receiverId","participantId","isReceiver","senderId","isSender","HANDOFF_REQUESTS_ARRIVED","handoffInterpreter","POST","ACTION_TYPE","OFFERED","requestHandoff","REQUESTED","acceptRequest","PUT","ACCEPTED","declineRequest","DECLINED","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, INTERPRETATION, LOCUSEVENT, MEETINGS} from '../constants';\n\nimport SILanguageCollection from './collection';\n\n/**\n * @class SimultaneousInterpretation\n */\nconst SimultaneousInterpretation = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n siLanguages: SILanguageCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current meeting's locus url\n approvalUrl: 'string', // appears current meeting's approval url for handoff between interpreters\n originalLanguage: 'string', // appears current meeting's original language\n sourceLanguage: 'string', // appears self interpreter's source language\n targetLanguage: 'string', // appears self interpreter's target language\n receiveLanguage: 'string', // appears self's receive language\n order: 'number', // appears the order of self as interpreter\n isActive: 'boolean', // appears self is interpreter and is active\n selfParticipantId: 'string', // appears the self participant id\n canManageInterpreters: 'boolean', // appears the ability to manage interpreters\n supportLanguages: 'array', // appears the support languages\n meetingSIEnabled: 'boolean', // appears the meeting support SI feature\n hostSIEnabled: 'boolean', // appears the meeting host/interpreter feature of SI enabled\n selfIsInterpreter: 'boolean', // current user is interpreter or not\n },\n derived: {\n shouldQuerySupportLanguages: {\n cache: false,\n deps: ['canManageInterpreters', 'hostSIEnabled', 'locusUrl'],\n /**\n * Returns should query support languages or not\n * @returns {boolean}\n */\n fn() {\n return !!(this.canManageInterpreters && this.hostSIEnabled && this.locusUrl);\n },\n },\n },\n /**\n * initialize for interpretation\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {\n if (this.shouldQuerySupportLanguages && !this.supportLanguages) {\n this.querySupportLanguages();\n }\n });\n this.listenToHandoffRequests();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n /**\n * Update the approval url for handoff\n * @param {string} approvalUrl // approval url\n * @returns {void}\n */\n approvalUrlUpdate(approvalUrl) {\n this.set('approvalUrl', approvalUrl);\n },\n /**\n * Update whether self has capability to manage interpreters (only host can manage it)\n * @param {boolean} canManageInterpreters\n * @returns {void}\n */\n updateCanManageInterpreters(canManageInterpreters) {\n this.set('canManageInterpreters', canManageInterpreters);\n },\n /**\n * Update whether the meeting's host si is enabled or not\n * @param {boolean} hostSIEnabled\n * @returns {void}\n */\n updateHostSIEnabled(hostSIEnabled) {\n this.set('hostSIEnabled', hostSIEnabled);\n },\n\n /**\n * Update whether the meeting support SI feature or not from meeting info\n * @param {boolean} meetingSIEnabled\n * @param {boolean} selfIsInterpreter\n * @returns {void}\n */\n updateMeetingSIEnabled(meetingSIEnabled: boolean, selfIsInterpreter): void {\n this.set('meetingSIEnabled', meetingSIEnabled);\n this.set('selfIsInterpreter', selfIsInterpreter);\n },\n\n /**\n * Update the interpretation languages channels which user can choose to subscribe\n * @param {Object} interpretation\n * @returns {void}\n */\n updateInterpretation(interpretation) {\n this.siLanguages.set(interpretation?.siLanguages || []);\n },\n /**\n * Update self's interpretation information (self is interpreter)\n * @param {Object} interpretation\n * @param {String} selfParticipantId\n * @returns {bool} is target language changed\n */\n updateSelfInterpretation({interpretation, selfParticipantId}) {\n const preTargetLanguage = this.targetLanguage;\n const {originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage} =\n interpretation || {};\n this.set({originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage});\n this.set('selfParticipantId', selfParticipantId);\n this.set('selfIsInterpreter', !!targetLanguage);\n\n return !!(preTargetLanguage !== targetLanguage);\n },\n\n /**\n * Get the language code of the interpreter target language\n * @returns {number}\n */\n getTargetLanguageCode() {\n if (this.selfIsInterpreter) {\n return this.siLanguages.get(this.targetLanguage)?.languageCode;\n }\n\n return 0;\n },\n\n /**\n * query interpretation languages\n * @returns {Promise}\n */\n querySupportLanguages() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/languages/interpretation`,\n })\n .then((result) => {\n this.set('supportLanguages', result.body?.siLanguages);\n this.trigger(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#querySupportLanguages failed', error);\n throw error;\n });\n },\n /**\n * get interpreters of the meeting\n * @returns {Promise}\n */\n getInterpreters() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/interpretation/interpreters`,\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#getInterpreters failed', error);\n throw error;\n });\n },\n /**\n * update interpreters of the meeting\n * @param {Array} interpreters\n * @returns {Promise}\n */\n updateInterpreters(interpreters) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n interpretation: {\n interpreters,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#updateInterpreters failed', error);\n throw error;\n });\n },\n /**\n * Change direction of interpretation for an interpreter participant\n * @returns {Promise}\n */\n changeDirection() {\n if (!this.sourceLanguage || !this.targetLanguage) {\n return Promise.reject(new Error('Missing sourceLanguage or targetLanguage'));\n }\n\n if (!this.selfParticipantId) {\n return Promise.reject(new Error('Missing self participant id'));\n }\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/participant/${this.selfParticipantId}/controls`,\n body: {\n interpretation: {\n sourceLanguage: this.targetLanguage,\n targetLanguage: this.sourceLanguage,\n isActive: this.isActive,\n order: this.order,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#changeDirection failed', error);\n throw error;\n });\n },\n /**\n * Sets up a listener for handoff requests from mercury\n * @returns {void}\n */\n listenToHandoffRequests() {\n this.listenTo(this.webex.internal.mercury, `event:${LOCUSEVENT.APPROVAL_REQUEST}`, (event) => {\n if (event?.data?.approval?.resourceType === INTERPRETATION.RESOURCE_TYPE) {\n const {receivers, initiator, actionType, url} = event.data.approval;\n const receiverId = receivers?.[0]?.participantId;\n const isReceiver = !!receiverId && receiverId === this.selfParticipantId;\n const senderId = initiator?.participantId;\n const isSender = !!senderId && senderId === this.selfParticipantId;\n if (!isReceiver && !isSender) {\n return;\n }\n this.trigger(INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, {\n actionType,\n isReceiver,\n isSender,\n senderId,\n receiverId,\n url,\n });\n }\n });\n },\n /**\n * handoff the active interpreter role to another interpreter in same group, only the interpreter is allowed to call this api\n * @param {string} participantId the participant id you want to hand off\n * @returns {Promise}\n */\n handoffInterpreter(participantId) {\n if (!participantId) {\n return Promise.reject(new Error('Missing target participant id'));\n }\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.OFFERED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n receivers: [\n {\n participantId,\n },\n ],\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#handoffInterpreter failed', error);\n throw error;\n });\n },\n /**\n * the in-active interpreter request to hand off the active role to self\n * @returns {Promise}\n */\n requestHandoff() {\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.REQUESTED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#requestHandoff failed', error);\n throw error;\n });\n },\n /**\n * accept the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n acceptRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to accept'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.ACCEPTED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#acceptRequest failed', error);\n throw error;\n });\n },\n /**\n * decline the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n declineRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to decline'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.DECLINED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#declineRequest failed', error);\n throw error;\n });\n },\n});\n\nexport default SimultaneousInterpretation;\n"],"mappings":";;;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA,IAAAI,WAAA,GAAAF,sBAAA,CAAAF,OAAA;AAPA;AACA;AACA;;AAOA;AACA;AACA;AACA,IAAMK,0BAA0B,GAAGC,sBAAW,CAACC,MAAM,CAAC;EACpDC,SAAS,EAAEC,mBAAQ;EACnBC,WAAW,EAAE;IACXC,WAAW,EAAEC;EACf,CAAC;EAEDC,KAAK,EAAE;IACLC,QAAQ,EAAE,QAAQ;IAAE;IACpBC,WAAW,EAAE,QAAQ;IAAE;IACvBC,gBAAgB,EAAE,QAAQ;IAAE;IAC5BC,cAAc,EAAE,QAAQ;IAAE;IAC1BC,cAAc,EAAE,QAAQ;IAAE;IAC1BC,eAAe,EAAE,QAAQ;IAAE;IAC3BC,KAAK,EAAE,QAAQ;IAAE;IACjBC,QAAQ,EAAE,SAAS;IAAE;IACrBC,iBAAiB,EAAE,QAAQ;IAAE;IAC7BC,qBAAqB,EAAE,SAAS;IAAE;IAClCC,gBAAgB,EAAE,OAAO;IAAE;IAC3BC,gBAAgB,EAAE,SAAS;IAAE;IAC7BC,aAAa,EAAE,SAAS;IAAE;IAC1BC,iBAAiB,EAAE,SAAS,CAAE;EAChC,CAAC;EACDC,OAAO,EAAE;IACPC,2BAA2B,EAAE;MAC3BC,KAAK,EAAE,KAAK;MACZC,IAAI,EAAE,CAAC,uBAAuB,EAAE,eAAe,EAAE,UAAU,CAAC;MAC5D;AACN;AACA;AACA;MACMC,EAAE,WAAFA,EAAEA,CAAA,EAAG;QACH,OAAO,CAAC,EAAE,IAAI,CAACT,qBAAqB,IAAI,IAAI,CAACG,aAAa,IAAI,IAAI,CAACZ,QAAQ,CAAC;MAC9E;IACF;EACF,CAAC;EACD;AACF;AACA;AACA;EACEmB,UAAU,WAAVA,UAAUA,CAAA,EAAG;IAAA,IAAAC,KAAA;IACX,IAAI,CAACC,QAAQ,CAAC,IAAI,EAAE,oCAAoC,EAAE,YAAM;MAC9D,IAAID,KAAI,CAACL,2BAA2B,IAAI,CAACK,KAAI,CAACV,gBAAgB,EAAE;QAC9DU,KAAI,CAACE,qBAAqB,CAAC,CAAC;MAC9B;IACF,CAAC,CAAC;IACF,IAAI,CAACC,uBAAuB,CAAC,CAAC;EAChC,CAAC;EAED;AACF;AACA;AACA;EACEC,OAAO,WAAPA,OAAOA,CAAA,EAAG;IACR,IAAI,CAACC,aAAa,CAAC,CAAC;EACtB,CAAC;EACD;AACF;AACA;AACA;AACA;EACEC,cAAc,WAAdA,cAAcA,CAAC1B,QAAQ,EAAE;IACvB,IAAI,CAAC2B,GAAG,CAAC,UAAU,EAAE3B,QAAQ,CAAC;EAChC,CAAC;EACD;AACF;AACA;AACA;AACA;EACE4B,iBAAiB,WAAjBA,iBAAiBA,CAAC3B,WAAW,EAAE;IAC7B,IAAI,CAAC0B,GAAG,CAAC,aAAa,EAAE1B,WAAW,CAAC;EACtC,CAAC;EACD;AACF;AACA;AACA;AACA;EACE4B,2BAA2B,WAA3BA,2BAA2BA,CAACpB,qBAAqB,EAAE;IACjD,IAAI,CAACkB,GAAG,CAAC,uBAAuB,EAAElB,qBAAqB,CAAC;EAC1D,CAAC;EACD;AACF;AACA;AACA;AACA;EACEqB,mBAAmB,WAAnBA,mBAAmBA,CAAClB,aAAa,EAAE;IACjC,IAAI,CAACe,GAAG,CAAC,eAAe,EAAEf,aAAa,CAAC;EAC1C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEmB,sBAAsB,WAAtBA,sBAAsBA,CAACpB,gBAAyB,EAAEE,iBAAiB,EAAQ;IACzE,IAAI,CAACc,GAAG,CAAC,kBAAkB,EAAEhB,gBAAgB,CAAC;IAC9C,IAAI,CAACgB,GAAG,CAAC,mBAAmB,EAAEd,iBAAiB,CAAC;EAClD,CAAC;EAED;AACF;AACA;AACA;AACA;EACEmB,oBAAoB,WAApBA,oBAAoBA,CAACC,cAAc,EAAE;IACnC,IAAI,CAACpC,WAAW,CAAC8B,GAAG,CAAC,CAAAM,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEpC,WAAW,KAAI,EAAE,CAAC;EACzD,CAAC;EACD;AACF;AACA;AACA;AACA;AACA;EACEqC,wBAAwB,WAAxBA,wBAAwBA,CAAAC,IAAA,EAAsC;IAAA,IAApCF,cAAc,GAAAE,IAAA,CAAdF,cAAc;MAAEzB,iBAAiB,GAAA2B,IAAA,CAAjB3B,iBAAiB;IACzD,IAAM4B,iBAAiB,GAAG,IAAI,CAAChC,cAAc;IAC7C,IAAAiC,KAAA,GACEJ,cAAc,IAAI,CAAC,CAAC;MADf/B,gBAAgB,GAAAmC,KAAA,CAAhBnC,gBAAgB;MAAEC,cAAc,GAAAkC,KAAA,CAAdlC,cAAc;MAAEG,KAAK,GAAA+B,KAAA,CAAL/B,KAAK;MAAEC,QAAQ,GAAA8B,KAAA,CAAR9B,QAAQ;MAAEH,cAAc,GAAAiC,KAAA,CAAdjC,cAAc;MAAEC,eAAe,GAAAgC,KAAA,CAAfhC,eAAe;IAEzF,IAAI,CAACsB,GAAG,CAAC;MAACzB,gBAAgB,EAAhBA,gBAAgB;MAAEC,cAAc,EAAdA,cAAc;MAAEG,KAAK,EAALA,KAAK;MAAEC,QAAQ,EAARA,QAAQ;MAAEH,cAAc,EAAdA,cAAc;MAAEC,eAAe,EAAfA;IAAe,CAAC,CAAC;IAC9F,IAAI,CAACsB,GAAG,CAAC,mBAAmB,EAAEnB,iBAAiB,CAAC;IAChD,IAAI,CAACmB,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAACvB,cAAc,CAAC;IAE/C,OAAO,CAAC,EAAEgC,iBAAiB,KAAKhC,cAAc,CAAC;EACjD,CAAC;EAED;AACF;AACA;AACA;EACEkC,qBAAqB,WAArBA,qBAAqBA,CAAA,EAAG;IACtB,IAAI,IAAI,CAACzB,iBAAiB,EAAE;MAAA,IAAA0B,qBAAA;MAC1B,QAAAA,qBAAA,GAAO,IAAI,CAAC1C,WAAW,CAAC2C,GAAG,CAAC,IAAI,CAACpC,cAAc,CAAC,cAAAmC,qBAAA,uBAAzCA,qBAAA,CAA2CE,YAAY;IAChE;IAEA,OAAO,CAAC;EACV,CAAC;EAED;AACF;AACA;AACA;EACEnB,qBAAqB,WAArBA,qBAAqBA,CAAA,EAAG;IAAA,IAAAoB,MAAA;IACtB,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACC,GAAG;MACtBC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAAChD,QAAQ;IACvB,CAAC,CAAC,CACCiD,IAAI,CAAC,UAACC,MAAM,EAAK;MAAA,IAAAC,YAAA;MAChBT,MAAI,CAACf,GAAG,CAAC,kBAAkB,GAAAwB,YAAA,GAAED,MAAM,CAACE,IAAI,cAAAD,YAAA,uBAAXA,YAAA,CAAatD,WAAW,CAAC;MACtD6C,MAAI,CAACW,OAAO,CAACC,yBAAc,CAACC,MAAM,CAACC,wBAAwB,CAAC;IAC9D,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,KAAK,EAAK;MAChBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,qDAAqD,EAAEA,KAAK,CAAC;MACtF,MAAMA,KAAK;IACb,CAAC,CAAC;EACN,CAAC;EACD;AACF;AACA;AACA;EACEG,eAAe,WAAfA,eAAeA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAClB,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACC,GAAG;MACtBC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAAChD,QAAQ;IACvB,CAAC,CAAC,CAACyD,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,+CAA+C,EAAEA,KAAK,CAAC;MAChF,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;AACA;EACEI,kBAAkB,WAAlBA,kBAAkBA,CAACC,YAAY,EAAE;IAC/B,OAAO,IAAI,CAACpB,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACmB,KAAK;MACxBjB,GAAG,KAAAC,MAAA,CAAK,IAAI,CAAChD,QAAQ,cAAW;MAChCoD,IAAI,EAAE;QACJnB,cAAc,EAAE;UACd8B,YAAY,EAAZA;QACF;MACF;IACF,CAAC,CAAC,CAACN,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,kDAAkD,EAAEA,KAAK,CAAC;MACnF,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;EACEO,eAAe,WAAfA,eAAeA,CAAA,EAAG;IAChB,IAAI,CAAC,IAAI,CAAC9D,cAAc,IAAI,CAAC,IAAI,CAACC,cAAc,EAAE;MAChD,OAAO8D,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9E;IAEA,IAAI,CAAC,IAAI,CAAC7D,iBAAiB,EAAE;MAC3B,OAAO0D,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjE;IAEA,OAAO,IAAI,CAAC1B,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACmB,KAAK;MACxBjB,GAAG,KAAAC,MAAA,CAAK,IAAI,CAAChD,QAAQ,mBAAAgD,MAAA,CAAgB,IAAI,CAACxC,iBAAiB,cAAW;MACtE4C,IAAI,EAAE;QACJnB,cAAc,EAAE;UACd9B,cAAc,EAAE,IAAI,CAACC,cAAc;UACnCA,cAAc,EAAE,IAAI,CAACD,cAAc;UACnCI,QAAQ,EAAE,IAAI,CAACA,QAAQ;UACvBD,KAAK,EAAE,IAAI,CAACA;QACd;MACF;IACF,CAAC,CAAC,CAACmD,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,+CAA+C,EAAEA,KAAK,CAAC;MAChF,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;EACEnC,uBAAuB,WAAvBA,uBAAuBA,CAAA,EAAG;IAAA,IAAA+C,MAAA;IACxB,IAAI,CAACjD,QAAQ,CAAC,IAAI,CAACkD,KAAK,CAACC,QAAQ,CAACC,OAAO,WAAAzB,MAAA,CAAW0B,qBAAU,CAACC,gBAAgB,GAAI,UAACC,KAAK,EAAK;MAAA,IAAAC,WAAA,EAAAC,oBAAA;MAC5F,IAAI,CAAAF,KAAK,aAALA,KAAK,wBAAAC,WAAA,GAALD,KAAK,CAAEG,IAAI,cAAAF,WAAA,wBAAAC,oBAAA,GAAXD,WAAA,CAAaG,QAAQ,cAAAF,oBAAA,uBAArBA,oBAAA,CAAuBG,YAAY,MAAK3B,yBAAc,CAAC4B,aAAa,EAAE;QAAA,IAAAC,WAAA;QACxE,IAAAC,qBAAA,GAAgDR,KAAK,CAACG,IAAI,CAACC,QAAQ;UAA5DK,SAAS,GAAAD,qBAAA,CAATC,SAAS;UAAEC,SAAS,GAAAF,qBAAA,CAATE,SAAS;UAAEC,UAAU,GAAAH,qBAAA,CAAVG,UAAU;UAAEC,GAAG,GAAAJ,qBAAA,CAAHI,GAAG;QAC5C,IAAMC,UAAU,GAAGJ,SAAS,aAATA,SAAS,wBAAAF,WAAA,GAATE,SAAS,CAAG,CAAC,CAAC,cAAAF,WAAA,uBAAdA,WAAA,CAAgBO,aAAa;QAChD,IAAMC,UAAU,GAAG,CAAC,CAACF,UAAU,IAAIA,UAAU,KAAKnB,MAAI,CAAC9D,iBAAiB;QACxE,IAAMoF,QAAQ,GAAGN,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEI,aAAa;QACzC,IAAMG,QAAQ,GAAG,CAAC,CAACD,QAAQ,IAAIA,QAAQ,KAAKtB,MAAI,CAAC9D,iBAAiB;QAClE,IAAI,CAACmF,UAAU,IAAI,CAACE,QAAQ,EAAE;UAC5B;QACF;QACAvB,MAAI,CAACjB,OAAO,CAACC,yBAAc,CAACC,MAAM,CAACuC,wBAAwB,EAAE;UAC3DP,UAAU,EAAVA,UAAU;UACVI,UAAU,EAAVA,UAAU;UACVE,QAAQ,EAARA,QAAQ;UACRD,QAAQ,EAARA,QAAQ;UACRH,UAAU,EAAVA,UAAU;UACVD,GAAG,EAAHA;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;AACA;EACEO,kBAAkB,WAAlBA,kBAAkBA,CAACL,aAAa,EAAE;IAChC,IAAI,CAACA,aAAa,EAAE;MAClB,OAAOxB,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnE;IACA,IAAI,CAAC,IAAI,CAACpE,WAAW,EAAE;MACrB,OAAOiE,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,OAAO,IAAI,CAAC1B,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACmD,IAAI;MACvBjD,GAAG,EAAE,IAAI,CAAC9C,WAAW;MACrBmD,IAAI,EAAE;QACJmC,UAAU,EAAEjC,yBAAc,CAAC2C,WAAW,CAACC,OAAO;QAC9CjB,YAAY,EAAE3B,yBAAc,CAAC4B,aAAa;QAC1CG,SAAS,EAAE,CACT;UACEK,aAAa,EAAbA;QACF,CAAC;MAEL;IACF,CAAC,CAAC,CAACjC,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,kDAAkD,EAAEA,KAAK,CAAC;MACnF,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;EACEyC,cAAc,WAAdA,cAAcA,CAAA,EAAG;IACf,IAAI,CAAC,IAAI,CAAClG,WAAW,EAAE;MACrB,OAAOiE,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,OAAO,IAAI,CAAC1B,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACmD,IAAI;MACvBjD,GAAG,EAAE,IAAI,CAAC9C,WAAW;MACrBmD,IAAI,EAAE;QACJmC,UAAU,EAAEjC,yBAAc,CAAC2C,WAAW,CAACG,SAAS;QAChDnB,YAAY,EAAE3B,yBAAc,CAAC4B;MAC/B;IACF,CAAC,CAAC,CAACzB,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,8CAA8C,EAAEA,KAAK,CAAC;MAC/E,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;AACA;EACE2C,aAAa,WAAbA,aAAaA,CAACb,GAAG,EAAE;IACjB,IAAI,CAACA,GAAG,EAAE;MACR,OAAOtB,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/D;IAEA,OAAO,IAAI,CAAC1B,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACyD,GAAG;MACtBvD,GAAG,EAAEyC,GAAG;MACRpC,IAAI,EAAE;QACJmC,UAAU,EAAEjC,yBAAc,CAAC2C,WAAW,CAACM;MACzC;IACF,CAAC,CAAC,CAAC9C,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,6CAA6C,EAAEA,KAAK,CAAC;MAC9E,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;AACA;EACE8C,cAAc,WAAdA,cAAcA,CAAChB,GAAG,EAAE;IAClB,IAAI,CAACA,GAAG,EAAE;MACR,OAAOtB,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChE;IAEA,OAAO,IAAI,CAAC1B,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACyD,GAAG;MACtBvD,GAAG,EAAEyC,GAAG;MACRpC,IAAI,EAAE;QACJmC,UAAU,EAAEjC,yBAAc,CAAC2C,WAAW,CAACQ;MACzC;IACF,CAAC,CAAC,CAAChD,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,8CAA8C,EAAEA,KAAK,CAAC;MAC/E,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EAAAgD,OAAA;AACH,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAzC,OAAA,GAEY5E,0BAA0B","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","_util","_collection","SimultaneousInterpretation","WebexPlugin","extend","namespace","MEETINGS","collections","siLanguages","SILanguageCollection","props","locusUrl","approvalUrl","originalLanguage","sourceLanguage","targetLanguage","receiveLanguage","order","isActive","selfParticipantId","canManageInterpreters","supportLanguages","meetingSIEnabled","hostSIEnabled","selfIsInterpreter","derived","shouldQuerySupportLanguages","cache","deps","fn","initialize","_this","listenTo","querySupportLanguages","listenToHandoffRequests","cleanUp","stopListening","locusUrlUpdate","set","approvalUrlUpdate","updateCanManageInterpreters","updateHostSIEnabled","updateMeetingSIEnabled","updateInterpretation","interpretation","updateSelfInterpretation","_ref","preTargetLanguage","_ref2","getTargetLanguageCode","_this$siLanguages$get","get","languageCode","_this2","request","method","HTTP_VERBS","GET","uri","concat","then","result","_result$body","body","trigger","INTERPRETATION","EVENTS","SUPPORT_LANGUAGES_UPDATE","catch","error","LoggerProxy","logger","getInterpreters","updateInterpreters","interpreters","meeting","webex","meetings","meetingCollection","getByKey","PATCH","response","MeetingUtil","updateLocusFromApiResponse","changeDirection","_promise","default","reject","Error","_this3","internal","mercury","LOCUSEVENT","APPROVAL_REQUEST","event","_event$data","_event$data$approval","data","approval","resourceType","RESOURCE_TYPE","_receivers$","_event$data$approval2","receivers","initiator","actionType","url","receiverId","participantId","isReceiver","senderId","isSender","HANDOFF_REQUESTS_ARRIVED","handoffInterpreter","POST","ACTION_TYPE","OFFERED","requestHandoff","REQUESTED","acceptRequest","PUT","ACCEPTED","declineRequest","DECLINED","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, INTERPRETATION, LOCUSEVENT, MEETINGS} from '../constants';\nimport MeetingUtil from '../meeting/util';\n\nimport SILanguageCollection from './collection';\n\n/**\n * @class SimultaneousInterpretation\n */\nconst SimultaneousInterpretation = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n siLanguages: SILanguageCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current meeting's locus url\n approvalUrl: 'string', // appears current meeting's approval url for handoff between interpreters\n originalLanguage: 'string', // appears current meeting's original language\n sourceLanguage: 'string', // appears self interpreter's source language\n targetLanguage: 'string', // appears self interpreter's target language\n receiveLanguage: 'string', // appears self's receive language\n order: 'number', // appears the order of self as interpreter\n isActive: 'boolean', // appears self is interpreter and is active\n selfParticipantId: 'string', // appears the self participant id\n canManageInterpreters: 'boolean', // appears the ability to manage interpreters\n supportLanguages: 'array', // appears the support languages\n meetingSIEnabled: 'boolean', // appears the meeting support SI feature\n hostSIEnabled: 'boolean', // appears the meeting host/interpreter feature of SI enabled\n selfIsInterpreter: 'boolean', // current user is interpreter or not\n },\n derived: {\n shouldQuerySupportLanguages: {\n cache: false,\n deps: ['canManageInterpreters', 'hostSIEnabled', 'locusUrl'],\n /**\n * Returns should query support languages or not\n * @returns {boolean}\n */\n fn() {\n return !!(this.canManageInterpreters && this.hostSIEnabled && this.locusUrl);\n },\n },\n },\n /**\n * initialize for interpretation\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {\n if (this.shouldQuerySupportLanguages && !this.supportLanguages) {\n this.querySupportLanguages();\n }\n });\n this.listenToHandoffRequests();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n /**\n * Update the approval url for handoff\n * @param {string} approvalUrl // approval url\n * @returns {void}\n */\n approvalUrlUpdate(approvalUrl) {\n this.set('approvalUrl', approvalUrl);\n },\n /**\n * Update whether self has capability to manage interpreters (only host can manage it)\n * @param {boolean} canManageInterpreters\n * @returns {void}\n */\n updateCanManageInterpreters(canManageInterpreters) {\n this.set('canManageInterpreters', canManageInterpreters);\n },\n /**\n * Update whether the meeting's host si is enabled or not\n * @param {boolean} hostSIEnabled\n * @returns {void}\n */\n updateHostSIEnabled(hostSIEnabled) {\n this.set('hostSIEnabled', hostSIEnabled);\n },\n\n /**\n * Update whether the meeting support SI feature or not from meeting info\n * @param {boolean} meetingSIEnabled\n * @param {boolean} selfIsInterpreter\n * @returns {void}\n */\n updateMeetingSIEnabled(meetingSIEnabled: boolean, selfIsInterpreter): void {\n this.set('meetingSIEnabled', meetingSIEnabled);\n this.set('selfIsInterpreter', selfIsInterpreter);\n },\n\n /**\n * Update the interpretation languages channels which user can choose to subscribe\n * @param {Object} interpretation\n * @returns {void}\n */\n updateInterpretation(interpretation) {\n this.siLanguages.set(interpretation?.siLanguages || []);\n },\n /**\n * Update self's interpretation information (self is interpreter)\n * @param {Object} interpretation\n * @param {String} selfParticipantId\n * @returns {bool} is target language changed\n */\n updateSelfInterpretation({interpretation, selfParticipantId}) {\n const preTargetLanguage = this.targetLanguage;\n const {originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage} =\n interpretation || {};\n this.set({originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage});\n this.set('selfParticipantId', selfParticipantId);\n this.set('selfIsInterpreter', !!targetLanguage);\n\n return !!(preTargetLanguage !== targetLanguage);\n },\n\n /**\n * Get the language code of the interpreter target language\n * @returns {number}\n */\n getTargetLanguageCode() {\n if (this.selfIsInterpreter) {\n return this.siLanguages.get(this.targetLanguage)?.languageCode;\n }\n\n return 0;\n },\n\n /**\n * query interpretation languages\n * @returns {Promise}\n */\n querySupportLanguages() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/languages/interpretation`,\n })\n .then((result) => {\n this.set('supportLanguages', result.body?.siLanguages);\n this.trigger(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#querySupportLanguages failed', error);\n throw error;\n });\n },\n /**\n * get interpreters of the meeting\n * @returns {Promise}\n */\n getInterpreters() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/interpretation/interpreters`,\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#getInterpreters failed', error);\n throw error;\n });\n },\n /**\n * update interpreters of the meeting\n * @param {Array} interpreters\n * @returns {Promise}\n */\n updateInterpreters(interpreters) {\n const meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n interpretation: {\n interpreters,\n },\n },\n })\n .then((response) => {\n MeetingUtil.updateLocusFromApiResponse(meeting, response);\n\n return response;\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#updateInterpreters failed', error);\n throw error;\n });\n },\n /**\n * Change direction of interpretation for an interpreter participant\n * @returns {Promise}\n */\n changeDirection() {\n if (!this.sourceLanguage || !this.targetLanguage) {\n return Promise.reject(new Error('Missing sourceLanguage or targetLanguage'));\n }\n\n if (!this.selfParticipantId) {\n return Promise.reject(new Error('Missing self participant id'));\n }\n\n const meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/participant/${this.selfParticipantId}/controls`,\n body: {\n interpretation: {\n sourceLanguage: this.targetLanguage,\n targetLanguage: this.sourceLanguage,\n isActive: this.isActive,\n order: this.order,\n },\n },\n })\n .then((response) => {\n MeetingUtil.updateLocusFromApiResponse(meeting, response);\n\n return response;\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#changeDirection failed', error);\n throw error;\n });\n },\n /**\n * Sets up a listener for handoff requests from mercury\n * @returns {void}\n */\n listenToHandoffRequests() {\n this.listenTo(this.webex.internal.mercury, `event:${LOCUSEVENT.APPROVAL_REQUEST}`, (event) => {\n if (event?.data?.approval?.resourceType === INTERPRETATION.RESOURCE_TYPE) {\n const {receivers, initiator, actionType, url} = event.data.approval;\n const receiverId = receivers?.[0]?.participantId;\n const isReceiver = !!receiverId && receiverId === this.selfParticipantId;\n const senderId = initiator?.participantId;\n const isSender = !!senderId && senderId === this.selfParticipantId;\n if (!isReceiver && !isSender) {\n return;\n }\n this.trigger(INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, {\n actionType,\n isReceiver,\n isSender,\n senderId,\n receiverId,\n url,\n });\n }\n });\n },\n /**\n * handoff the active interpreter role to another interpreter in same group, only the interpreter is allowed to call this api\n * @param {string} participantId the participant id you want to hand off\n * @returns {Promise}\n */\n handoffInterpreter(participantId) {\n if (!participantId) {\n return Promise.reject(new Error('Missing target participant id'));\n }\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.OFFERED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n receivers: [\n {\n participantId,\n },\n ],\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#handoffInterpreter failed', error);\n throw error;\n });\n },\n /**\n * the in-active interpreter request to hand off the active role to self\n * @returns {Promise}\n */\n requestHandoff() {\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.REQUESTED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#requestHandoff failed', error);\n throw error;\n });\n },\n /**\n * accept the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n acceptRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to accept'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.ACCEPTED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#acceptRequest failed', error);\n throw error;\n });\n },\n /**\n * decline the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n declineRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to decline'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.DECLINED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#declineRequest failed', error);\n throw error;\n });\n },\n});\n\nexport default SimultaneousInterpretation;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
|
|
|
18
18
|
languageCode: 'number',
|
|
19
19
|
languageName: 'string'
|
|
20
20
|
},
|
|
21
|
-
version: "3.12.0-next.
|
|
21
|
+
version: "3.12.0-next.46"
|
|
22
22
|
});
|
|
23
23
|
var _default = exports.default = SILanguage;
|
|
24
24
|
//# sourceMappingURL=siLanguage.js.map
|
package/dist/meeting/index.js
CHANGED
|
@@ -689,6 +689,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
689
689
|
});
|
|
690
690
|
/**
|
|
691
691
|
* Disconnects and cleans up the default LLM session listeners/timers.
|
|
692
|
+
*
|
|
693
|
+
* Ownership-aware: only calls `disconnectLLM` when this meeting is the
|
|
694
|
+
* current owner of the default LLM session (or when no owner is recorded).
|
|
695
|
+
* Event listeners belonging to this meeting instance are always detached
|
|
696
|
+
* so they do not receive another meeting's relay events.
|
|
697
|
+
*
|
|
692
698
|
* @param {Object} options
|
|
693
699
|
* @param {boolean} [options.removeOnlineListener=true] removes the one-time online listener
|
|
694
700
|
* @param {boolean} [options.throwOnError=true] rethrows disconnect errors when true
|
|
@@ -700,13 +706,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
700
706
|
removeOnlineListener,
|
|
701
707
|
_ref3$throwOnError,
|
|
702
708
|
throwOnError,
|
|
709
|
+
currentOwner,
|
|
710
|
+
isOwner,
|
|
711
|
+
_this$webex$internal$,
|
|
712
|
+
_this$webex$internal$2,
|
|
703
713
|
_args = arguments,
|
|
704
714
|
_t;
|
|
705
715
|
return _regenerator.default.wrap(function (_context) {
|
|
706
716
|
while (1) switch (_context.prev = _context.next) {
|
|
707
717
|
case 0:
|
|
708
718
|
_ref3 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref3$removeOnlineLis = _ref3.removeOnlineListener, removeOnlineListener = _ref3$removeOnlineLis === void 0 ? true : _ref3$removeOnlineLis, _ref3$throwOnError = _ref3.throwOnError, throwOnError = _ref3$throwOnError === void 0 ? true : _ref3$throwOnError;
|
|
719
|
+
// @ts-ignore - Fix type
|
|
720
|
+
currentOwner = _this.webex.internal.llm.getOwnerMeetingId();
|
|
721
|
+
isOwner = !currentOwner || currentOwner === _this.id;
|
|
709
722
|
_context.prev = 1;
|
|
723
|
+
if (!isOwner) {
|
|
724
|
+
_context.next = 3;
|
|
725
|
+
break;
|
|
726
|
+
}
|
|
710
727
|
_context.next = 2;
|
|
711
728
|
return _this.webex.internal.llm.disconnectLLM({
|
|
712
729
|
code: 3050,
|
|
@@ -716,27 +733,43 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
716
733
|
_context.next = 4;
|
|
717
734
|
break;
|
|
718
735
|
case 3:
|
|
719
|
-
|
|
736
|
+
_loggerProxy.default.logger.info("Meeting:index#cleanupLLMConneciton --> skipping disconnect; LLM owned by meeting ".concat(currentOwner, ", not ").concat(_this.id));
|
|
737
|
+
case 4:
|
|
738
|
+
_context.next = 6;
|
|
739
|
+
break;
|
|
740
|
+
case 5:
|
|
741
|
+
_context.prev = 5;
|
|
720
742
|
_t = _context["catch"](1);
|
|
721
743
|
_loggerProxy.default.logger.error('Meeting:index#cleanupLLMConneciton --> Failed to disconnect default LLM session', _t);
|
|
722
744
|
if (!throwOnError) {
|
|
723
|
-
_context.next =
|
|
745
|
+
_context.next = 6;
|
|
724
746
|
break;
|
|
725
747
|
}
|
|
726
748
|
throw _t;
|
|
727
|
-
case
|
|
728
|
-
_context.prev =
|
|
749
|
+
case 6:
|
|
750
|
+
_context.prev = 6;
|
|
729
751
|
if (removeOnlineListener) {
|
|
730
752
|
// @ts-ignore - Fix type
|
|
731
753
|
_this.webex.internal.llm.off('online', _this.handleLLMOnline);
|
|
732
754
|
}
|
|
733
755
|
_this.stopListeningForLLMEvents();
|
|
734
|
-
|
|
735
|
-
|
|
756
|
+
|
|
757
|
+
// If this meeting owned (or could have owned) the default LLM session,
|
|
758
|
+
// always release the owner tag here regardless of whether disconnectLLM
|
|
759
|
+
// resolved. `disconnectLLM` only clears the owner on its success path,
|
|
760
|
+
// so a failed disconnect would otherwise leave a stale owner pointing
|
|
761
|
+
// at a torn-down meeting and permanently block other meetings'
|
|
762
|
+
// `updateLLMConnection` calls via the ownership guard.
|
|
763
|
+
if (isOwner) {
|
|
764
|
+
// @ts-ignore - Fix type
|
|
765
|
+
(_this$webex$internal$ = (_this$webex$internal$2 = _this.webex.internal.llm).setOwnerMeetingId) === null || _this$webex$internal$ === void 0 ? void 0 : _this$webex$internal$.call(_this$webex$internal$2, undefined);
|
|
766
|
+
}
|
|
767
|
+
return _context.finish(6);
|
|
768
|
+
case 7:
|
|
736
769
|
case "end":
|
|
737
770
|
return _context.stop();
|
|
738
771
|
}
|
|
739
|
-
}, _callee, null, [[1,
|
|
772
|
+
}, _callee, null, [[1, 5, 6, 7]]);
|
|
740
773
|
})));
|
|
741
774
|
/**
|
|
742
775
|
* Handles ROAP_FAILURE event from the webrtc media connection
|
|
@@ -1568,6 +1601,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1568
1601
|
* @memberof Meeting
|
|
1569
1602
|
*/
|
|
1570
1603
|
(0, _defineProperty3.default)(_this, "clearMeetingData", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
1604
|
+
var currentOwner, isOwner;
|
|
1571
1605
|
return _regenerator.default.wrap(function (_context5) {
|
|
1572
1606
|
while (1) switch (_context5.prev = _context5.next) {
|
|
1573
1607
|
case 0:
|
|
@@ -1584,7 +1618,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1584
1618
|
// received mid-teardown do not trigger Locus syncs. Calling it here
|
|
1585
1619
|
// again would double-emit MEETING_STOPPED_RECEIVING_TRANSCRIPTION
|
|
1586
1620
|
// because stopTranscription() always fires its trigger.
|
|
1587
|
-
|
|
1621
|
+
//
|
|
1622
|
+
// Ownership-aware token clear: only clear the shared LLM data channel
|
|
1623
|
+
// tokens when this meeting owns (or no meeting owns) the default LLM
|
|
1624
|
+
// session. Otherwise we would wipe tokens still in use by another
|
|
1625
|
+
// meeting's active LLM connection.
|
|
1626
|
+
// @ts-ignore - Fix type
|
|
1627
|
+
currentOwner = _this.webex.internal.llm.getOwnerMeetingId();
|
|
1628
|
+
isOwner = !currentOwner || currentOwner === _this.id;
|
|
1629
|
+
if (isOwner) {
|
|
1630
|
+
_this.clearDataChannelToken();
|
|
1631
|
+
} else {
|
|
1632
|
+
_loggerProxy.default.logger.info("Meeting:index#clearMeetingData --> skipping clearDataChannelToken; LLM owned by meeting ".concat(currentOwner, ", not ").concat(_this.id));
|
|
1633
|
+
}
|
|
1588
1634
|
_context5.next = 1;
|
|
1589
1635
|
return _this.cleanupLLMConneciton({
|
|
1590
1636
|
throwOnError: false
|
|
@@ -6554,9 +6600,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6554
6600
|
key: "restoreLLMSubscriptionsIfNeeded",
|
|
6555
6601
|
value: function restoreLLMSubscriptionsIfNeeded() {
|
|
6556
6602
|
try {
|
|
6557
|
-
var _this$webex$internal
|
|
6603
|
+
var _this$webex$internal$3, _this$webex$internal$4;
|
|
6558
6604
|
// @ts-ignore
|
|
6559
|
-
var isCaptionBoxOn = (_this$webex$internal$ = this.webex.internal.voicea) === null || _this$webex$internal$ === void 0 ? void 0 : (_this$webex$internal$
|
|
6605
|
+
var isCaptionBoxOn = (_this$webex$internal$3 = this.webex.internal.voicea) === null || _this$webex$internal$3 === void 0 ? void 0 : (_this$webex$internal$4 = _this$webex$internal$3.getIsCaptionBoxOn) === null || _this$webex$internal$4 === void 0 ? void 0 : _this$webex$internal$4.call(_this$webex$internal$3);
|
|
6560
6606
|
if (!isCaptionBoxOn) {
|
|
6561
6607
|
return;
|
|
6562
6608
|
}
|
|
@@ -6999,7 +7045,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
6999
7045
|
value: (function () {
|
|
7000
7046
|
var _updateLLMConnection = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
|
|
7001
7047
|
var _this36 = this;
|
|
7002
|
-
var _ref39, _ref39$url, url, _ref39$info, _ref39$info2, _ref39$info2$datachan, datachannelUrl, isJoined, datachannelToken, dataChannelUrl;
|
|
7048
|
+
var _ref39, _ref39$url, url, _ref39$info, _ref39$info2, _ref39$info2$datachan, datachannelUrl, isJoined, datachannelToken, dataChannelUrl, currentOwner;
|
|
7003
7049
|
return _regenerator.default.wrap(function (_context21) {
|
|
7004
7050
|
while (1) switch (_context21.prev = _context21.next) {
|
|
7005
7051
|
case 0:
|
|
@@ -7007,33 +7053,61 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7007
7053
|
_ref39 = this.locusInfo || {}, _ref39$url = _ref39.url, url = _ref39$url === void 0 ? undefined : _ref39$url, _ref39$info = _ref39.info, _ref39$info2 = _ref39$info === void 0 ? {} : _ref39$info, _ref39$info2$datachan = _ref39$info2.datachannelUrl, datachannelUrl = _ref39$info2$datachan === void 0 ? undefined : _ref39$info2$datachan;
|
|
7008
7054
|
isJoined = this.isJoined(); // @ts-ignore
|
|
7009
7055
|
datachannelToken = this.webex.internal.llm.getDatachannelToken(_internalPluginLlm.DataChannelTokenType.Default);
|
|
7010
|
-
dataChannelUrl = datachannelUrl; //
|
|
7056
|
+
dataChannelUrl = datachannelUrl; // Ownership guard: when the default LLM session is already connected and
|
|
7057
|
+
// owned by a *different* Meeting instance, do not disconnect or reconfigure
|
|
7058
|
+
// it. Another meeting's `updateLLMConnection` must be ignored here to
|
|
7059
|
+
// avoid killing the socket it relies on. We only proceed to manage the
|
|
7060
|
+
// connection when this meeting is the current owner, or when no owner is
|
|
7061
|
+
// set yet (first claim).
|
|
7062
|
+
// @ts-ignore - Fix type
|
|
7063
|
+
currentOwner = this.webex.internal.llm.getOwnerMeetingId(); // @ts-ignore - Fix type
|
|
7011
7064
|
if (!this.webex.internal.llm.isConnected()) {
|
|
7012
|
-
_context21.next =
|
|
7065
|
+
_context21.next = 3;
|
|
7013
7066
|
break;
|
|
7014
7067
|
}
|
|
7068
|
+
if (!(currentOwner && currentOwner !== this.id)) {
|
|
7069
|
+
_context21.next = 1;
|
|
7070
|
+
break;
|
|
7071
|
+
}
|
|
7072
|
+
// Another meeting owns the live LLM socket. We must not disconnect
|
|
7073
|
+
// or reconfigure it -- doing so would tear down a session the
|
|
7074
|
+
// owning meeting still relies on. Locus/datachannel URL mismatch is
|
|
7075
|
+
// expected here (each meeting has its own locus URL) and is NOT a
|
|
7076
|
+
// valid signal of staleness, so we never reclaim from this path.
|
|
7077
|
+
// The only safe reclaim mechanism is the `finally`-block owner-tag
|
|
7078
|
+
// release in `cleanupLLMConneciton`, which fires when this meeting
|
|
7079
|
+
// itself is being torn down.
|
|
7080
|
+
_loggerProxy.default.logger.info("Meeting:index#updateLLMConnection --> skipping; LLM owned by meeting ".concat(currentOwner, ", not ").concat(this.id));
|
|
7081
|
+
return _context21.abrupt("return", undefined);
|
|
7082
|
+
case 1:
|
|
7015
7083
|
if (!(
|
|
7016
7084
|
// @ts-ignore - Fix type
|
|
7017
7085
|
url === this.webex.internal.llm.getLocusUrl() &&
|
|
7018
7086
|
// @ts-ignore - Fix type
|
|
7019
7087
|
dataChannelUrl === this.webex.internal.llm.getDatachannelUrl() && isJoined)) {
|
|
7020
|
-
_context21.next =
|
|
7088
|
+
_context21.next = 2;
|
|
7021
7089
|
break;
|
|
7022
7090
|
}
|
|
7023
7091
|
return _context21.abrupt("return", undefined);
|
|
7024
|
-
case
|
|
7025
|
-
_context21.next =
|
|
7092
|
+
case 2:
|
|
7093
|
+
_context21.next = 3;
|
|
7026
7094
|
return this.cleanupLLMConneciton({
|
|
7027
7095
|
removeOnlineListener: false
|
|
7028
7096
|
});
|
|
7029
|
-
case
|
|
7097
|
+
case 3:
|
|
7030
7098
|
if (isJoined) {
|
|
7031
|
-
_context21.next =
|
|
7099
|
+
_context21.next = 4;
|
|
7032
7100
|
break;
|
|
7033
7101
|
}
|
|
7034
7102
|
return _context21.abrupt("return", undefined);
|
|
7035
|
-
case
|
|
7103
|
+
case 4:
|
|
7036
7104
|
return _context21.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl, datachannelToken).then(function (registerAndConnectResult) {
|
|
7105
|
+
var _this36$webex$interna, _this36$webex$interna2;
|
|
7106
|
+
// Record ownership of the default LLM session for this meeting so
|
|
7107
|
+
// subsequent cross-meeting `updateLLMConnection` / `cleanupLLMConneciton`
|
|
7108
|
+
// calls can detect and skip work that doesn't belong to them.
|
|
7109
|
+
// @ts-ignore - Fix type
|
|
7110
|
+
(_this36$webex$interna = (_this36$webex$interna2 = _this36.webex.internal.llm).setOwnerMeetingId) === null || _this36$webex$interna === void 0 ? void 0 : _this36$webex$interna.call(_this36$webex$interna2, _this36.id);
|
|
7037
7111
|
// @ts-ignore - Fix type
|
|
7038
7112
|
_this36.webex.internal.llm.off('event:relay.event', _this36.processRelayEvent);
|
|
7039
7113
|
// @ts-ignore - Fix type
|
|
@@ -7046,7 +7120,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
7046
7120
|
_this36.startLLMHealthCheckTimer();
|
|
7047
7121
|
return _promise.default.resolve(registerAndConnectResult);
|
|
7048
7122
|
}));
|
|
7049
|
-
case
|
|
7123
|
+
case 5:
|
|
7050
7124
|
case "end":
|
|
7051
7125
|
return _context21.stop();
|
|
7052
7126
|
}
|