@webex/plugin-meetings 3.0.0-beta.61 → 3.0.0-beta.62
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/controls-options-manager/index.js +3 -1
- package/dist/controls-options-manager/index.js.map +1 -1
- package/package.json +18 -18
- package/src/controls-options-manager/index.ts +7 -1
- package/test/unit/spec/controls-options-manager/index.js +24 -0
package/dist/breakouts/index.js
CHANGED
|
@@ -175,11 +175,12 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
175
175
|
_loggerProxy.default.logger.log("ControlsOptionsManager:index#setControls --> ".concat((0, _stringify.default)(setting)));
|
|
176
176
|
var body = {};
|
|
177
177
|
var error;
|
|
178
|
+
var shouldSkipCheckToMergeBody = false;
|
|
178
179
|
(0, _entries.default)(setting).forEach(function (_ref) {
|
|
179
180
|
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
180
181
|
key = _ref2[0],
|
|
181
182
|
value = _ref2[1];
|
|
182
|
-
if (!(_util.default !== null && _util.default !== void 0 && _util.default["".concat(value ? _constants2.CAN_SET : _constants2.CAN_UNSET).concat(key)](_this.displayHints))) {
|
|
183
|
+
if (!shouldSkipCheckToMergeBody && !(_util.default !== null && _util.default !== void 0 && _util.default["".concat(value ? _constants2.CAN_SET : _constants2.CAN_UNSET).concat(key)](_this.displayHints))) {
|
|
183
184
|
error = new _permission.default("".concat(key, " [").concat(value, "] not allowed, due to moderator property."));
|
|
184
185
|
}
|
|
185
186
|
if (error) {
|
|
@@ -187,6 +188,7 @@ var ControlsOptionsManager = /*#__PURE__*/function () {
|
|
|
187
188
|
}
|
|
188
189
|
switch (key) {
|
|
189
190
|
case _enums.default.muted:
|
|
191
|
+
shouldSkipCheckToMergeBody = true;
|
|
190
192
|
body.audio = body.audio ? _objectSpread(_objectSpread({}, body.audio), {}, (0, _defineProperty2.default)({}, (0, _camelCase2.default)(key), value)) : (0, _defineProperty2.default)({}, (0, _camelCase2.default)(key), value);
|
|
191
193
|
break;
|
|
192
194
|
case _enums.default.disallowUnmute:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ControlsOptionsManager","request","options","initialize","set","extract","url","locusUrl","hints","displayHints","setDisplayHints","setLocusUrl","setting","LoggerProxy","logger","log","body","error","forEach","key","value","Util","CAN_SET","CAN_UNSET","PermissionError","Setting","muted","audio","disallowUnmute","muteOnEntry","includes","ENABLED","reject","uri","CONTROLS","method","HTTP_VERBS","PATCH","enabled","setControls","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport PermissionError from '../common/errors/permission';\nimport {CONTROLS, HTTP_VERBS} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Setting from './enums';\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 * @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 * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\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 * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {\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 Object.entries(setting).forEach(([key, value]) => {\n if (!Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)) {\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 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 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 // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body,\n method: HTTP_VERBS.PATCH,\n });\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 * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["ControlsOptionsManager","request","options","initialize","set","extract","url","locusUrl","hints","displayHints","setDisplayHints","setLocusUrl","setting","LoggerProxy","logger","log","body","error","shouldSkipCheckToMergeBody","forEach","key","value","Util","CAN_SET","CAN_UNSET","PermissionError","Setting","muted","audio","disallowUnmute","muteOnEntry","includes","ENABLED","reject","uri","CONTROLS","method","HTTP_VERBS","PATCH","enabled","setControls","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled"],"sources":["index.ts"],"sourcesContent":["import {camelCase} from 'lodash';\nimport PermissionError from '../common/errors/permission';\nimport {CONTROLS, HTTP_VERBS} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Setting from './enums';\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 * @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 * @returns {void}\n * @public\n * @memberof ControlsOptionsManager\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\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 * @param {Setting} setting\n * @private\n * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {\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 !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 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 // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body,\n method: HTTP_VERBS.PATCH,\n });\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 * @memberof ControlsOptionsManager\n * @returns {Promise}\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean\n ): Promise<any> {\n return this.setControls({\n [Setting.muted]: mutedEnabled,\n [Setting.disallowUnmute]: disallowUnmuteEnabled,\n [Setting.muteOnEntry]: muteOnEntryEnabled,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AAEA;AACA;AACA;AACA;AAAwD;AAAA;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA,IAMqBA,sBAAsB;EACzC;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;EACE,gCACEC,OAAuB,EACvBC,OAGC,EACD;IAAA;IAAA;IAAA,oDAtBoC,EAAE;IAAA;IAuBtC,IAAI,CAACC,UAAU,CAACF,OAAO,CAAC;IACxB,IAAI,CAACG,GAAG,CAACF,OAAO,CAAC;EACnB;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,oBAAmBD,OAAuB,EAAE;MAC1C,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,aAAWC,OAA0D,EAAE;MACrE,IAAI,CAACG,OAAO,CAACH,OAAO,CAAC;IACvB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,qBAAmBI,GAAW,EAAE;MAC9B,IAAI,CAACC,QAAQ,GAAGD,GAAG;IACrB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,yBAAuBE,KAAoB,EAAE;MAC3C,IAAI,CAACC,YAAY,GAAGD,KAAK;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,uBAAqB;MACnB,OAAO,IAAI,CAACD,QAAQ;IACtB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,2BAAyB;MACvB,OAAO,IAAI,CAACE,YAAY;IAC1B;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,iBAAgBP,OAA0D,EAAE;MAC1E,IAAI,CAACQ,eAAe,CAACR,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEO,YAAY,CAAC;MAC3C,IAAI,CAACE,WAAW,CAACT,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,QAAQ,CAAC;IACrC;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,qBAAoBK,OAAqC,EAAgB;MAAA;MACvEC,oBAAW,CAACC,MAAM,CAACC,GAAG,wDAC4B,wBAAeH,OAAO,CAAC,EACxE;MAED,IAAMI,IAAyB,GAAG,CAAC,CAAC;MACpC,IAAIC,KAAsB;MAE1B,IAAIC,0BAA0B,GAAG,KAAK;MAEtC,sBAAeN,OAAO,CAAC,CAACO,OAAO,CAAC,gBAAkB;QAAA;UAAhBC,GAAG;UAAEC,KAAK;QAC1C,IACE,CAACH,0BAA0B,IAC3B,EAACI,aAAI,aAAJA,aAAI,eAAJA,aAAI,WAAMD,KAAK,GAAGE,mBAAO,GAAGC,qBAAS,SAAGJ,GAAG,EAAG,CAAC,KAAI,CAACX,YAAY,CAAC,GAClE;UACAQ,KAAK,GAAG,IAAIQ,mBAAe,WAAIL,GAAG,eAAKC,KAAK,+CAA4C;QAC1F;QAEA,IAAIJ,KAAK,EAAE;UACT;QACF;QAEA,QAAQG,GAAG;UACT,KAAKM,cAAO,CAACC,KAAK;YAChBT,0BAA0B,GAAG,IAAI;YACjCF,IAAI,CAACY,KAAK,GAAGZ,IAAI,CAACY,KAAK,mCACfZ,IAAI,CAACY,KAAK,yCAAG,yBAAUR,GAAG,CAAC,EAAGC,KAAK,uCACrC,yBAAUD,GAAG,CAAC,EAAGC,KAAK,CAAC;YAC7B;UAEF,KAAKK,cAAO,CAACG,cAAc;UAC3B,KAAKH,cAAO,CAACI,WAAW;YACtB,IAAI,mBAAYlB,OAAO,CAAC,CAACmB,QAAQ,CAACL,cAAO,CAACC,KAAK,CAAC,EAAE;cAChDX,IAAI,CAACY,KAAK,GAAGZ,IAAI,CAACY,KAAK,mCACfZ,IAAI,CAACY,KAAK,yCAAG,yBAAUR,GAAG,CAAC,EAAGC,KAAK,uCACrC,yBAAUD,GAAG,CAAC,EAAGC,KAAK,CAAC;cAC7BL,IAAI,CAACY,KAAK,CAAC,yBAAUR,GAAG,CAAC,CAAC,GAAGC,KAAK;YACpC,CAAC,MAAM;cACLL,IAAI,CAAC,yBAAUI,GAAG,CAAC,CAAC,qCAAKY,mBAAO,EAAGX,KAAK,CAAC;YAC3C;YACA;UAEF;YACEJ,KAAK,GAAG,IAAIQ,mBAAe,WAAIL,GAAG,eAAKC,KAAK,+CAA4C;QAAC;MAE/F,CAAC,CAAC;MAEF,IAAIJ,KAAK,EAAE;QACT,OAAO,iBAAQgB,MAAM,CAAChB,KAAK,CAAC;MAC9B;;MAEA;MACA,OAAO,IAAI,CAAChB,OAAO,CAACA,OAAO,CAAC;QAC1BiC,GAAG,YAAK,IAAI,CAAC3B,QAAQ,cAAI4B,mBAAQ,CAAE;QACnCnB,IAAI,EAAJA,IAAI;QACJoB,MAAM,EAAEC,qBAAU,CAACC;MACrB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,wBAAsBC,OAAgB,EAAgB;MACpD,OAAO,IAAI,CAACC,WAAW,mCAAGd,cAAO,CAACI,WAAW,EAAGS,OAAO,EAAE;IAC3D;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,2BAAyBA,OAAgB,EAAgB;MACvD,OAAO,IAAI,CAACC,WAAW,mCAAGd,cAAO,CAACG,cAAc,EAAGU,OAAO,EAAE;IAC9D;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,oBACEE,YAAqB,EACrBC,qBAA8B,EAC9BC,kBAA2B,EACb;MAAA;MACd,OAAO,IAAI,CAACH,WAAW,6EACpBd,cAAO,CAACC,KAAK,EAAGc,YAAY,qDAC5Bf,cAAO,CAACG,cAAc,EAAGa,qBAAqB,qDAC9ChB,cAAO,CAACI,WAAW,EAAGa,kBAAkB,uBACzC;IACJ;EAAC;EAAA;AAAA;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.62",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.62",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.62",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.62",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.62",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.62",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.62",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,18 +46,18 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.62",
|
|
50
50
|
"@webex/internal-media-core": "1.35.7",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
60
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.62",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.62",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.62",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.62",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.62",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.62",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.62",
|
|
58
|
+
"@webex/plugin-people": "3.0.0-beta.62",
|
|
59
|
+
"@webex/plugin-rooms": "3.0.0-beta.62",
|
|
60
|
+
"@webex/webex-core": "3.0.0-beta.62",
|
|
61
61
|
"ampersand-collection": "^2.0.2",
|
|
62
62
|
"bowser": "^2.11.0",
|
|
63
63
|
"btoa": "^1.2.1",
|
|
@@ -147,8 +147,13 @@ export default class ControlsOptionsManager {
|
|
|
147
147
|
const body: Record<string, any> = {};
|
|
148
148
|
let error: PermissionError;
|
|
149
149
|
|
|
150
|
+
let shouldSkipCheckToMergeBody = false;
|
|
151
|
+
|
|
150
152
|
Object.entries(setting).forEach(([key, value]) => {
|
|
151
|
-
if (
|
|
153
|
+
if (
|
|
154
|
+
!shouldSkipCheckToMergeBody &&
|
|
155
|
+
!Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
|
|
156
|
+
) {
|
|
152
157
|
error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
|
|
153
158
|
}
|
|
154
159
|
|
|
@@ -158,6 +163,7 @@ export default class ControlsOptionsManager {
|
|
|
158
163
|
|
|
159
164
|
switch (key) {
|
|
160
165
|
case Setting.muted:
|
|
166
|
+
shouldSkipCheckToMergeBody = true;
|
|
161
167
|
body.audio = body.audio
|
|
162
168
|
? {...body.audio, [camelCase(key)]: value}
|
|
163
169
|
: {[camelCase(key)]: value};
|
|
@@ -163,6 +163,30 @@ describe('plugin-meetings', () => {
|
|
|
163
163
|
assert.deepEqual(result, request.request.firstCall.returnValue);
|
|
164
164
|
});
|
|
165
165
|
|
|
166
|
+
it('can set mute all when the display hint is available mutedEnabled=true', () => {
|
|
167
|
+
manager.setDisplayHints(['MUTE_ALL', 'DISABLE_HARD_MUTE', 'ENABLE_MUTE_ON_ENTRY']);
|
|
168
|
+
|
|
169
|
+
const result = manager.setMuteAll(true, true, true);
|
|
170
|
+
|
|
171
|
+
assert.calledWith(request.request, { uri: 'test/id/controls',
|
|
172
|
+
body: { audio: { muted: true, disallowUnmute: true, muteOnEntry: true } },
|
|
173
|
+
method: HTTP_VERBS.PATCH});
|
|
174
|
+
|
|
175
|
+
assert.deepEqual(result, request.request.firstCall.returnValue);
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
it('can set mute all when the display hint is available mutedEnabled=true', () => {
|
|
179
|
+
manager.setDisplayHints(['MUTE_ALL', 'DISABLE_HARD_MUTE', 'DISABLE_MUTE_ON_ENTRY']);
|
|
180
|
+
|
|
181
|
+
const result = manager.setMuteAll(true, true, true);
|
|
182
|
+
|
|
183
|
+
assert.calledWith(request.request, { uri: 'test/id/controls',
|
|
184
|
+
body: { audio: { muted: true, disallowUnmute: true, muteOnEntry: true } },
|
|
185
|
+
method: HTTP_VERBS.PATCH});
|
|
186
|
+
|
|
187
|
+
assert.deepEqual(result, request.request.firstCall.returnValue);
|
|
188
|
+
});
|
|
189
|
+
|
|
166
190
|
it('can set mute all when the display hint is available mutedEnabled=false', () => {
|
|
167
191
|
manager.setDisplayHints(['UNMUTE_ALL', 'DISABLE_HARD_MUTE', 'DISABLE_MUTE_ON_ENTRY']);
|
|
168
192
|
|