@webex/plugin-meetings 3.0.0-beta.25 → 3.0.0-beta.27

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.
Files changed (46) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +92 -2
  3. package/dist/breakouts/index.js.map +1 -1
  4. package/dist/constants.js +5 -1
  5. package/dist/constants.js.map +1 -1
  6. package/dist/controls-options-manager/constants.js +14 -0
  7. package/dist/controls-options-manager/constants.js.map +1 -0
  8. package/dist/controls-options-manager/enums.js +15 -0
  9. package/dist/controls-options-manager/enums.js.map +1 -0
  10. package/dist/controls-options-manager/index.js +203 -0
  11. package/dist/controls-options-manager/index.js.map +1 -0
  12. package/dist/controls-options-manager/util.js +28 -0
  13. package/dist/controls-options-manager/util.js.map +1 -0
  14. package/dist/meeting/in-meeting-actions.js +8 -0
  15. package/dist/meeting/in-meeting-actions.js.map +1 -1
  16. package/dist/meeting/index.js +61 -13
  17. package/dist/meeting/index.js.map +1 -1
  18. package/dist/meetings/util.js +17 -0
  19. package/dist/meetings/util.js.map +1 -1
  20. package/dist/types/constants.d.ts +4 -0
  21. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  22. package/dist/types/controls-options-manager/enums.d.ts +5 -0
  23. package/dist/types/controls-options-manager/index.d.ts +120 -0
  24. package/dist/types/controls-options-manager/util.d.ts +7 -0
  25. package/dist/types/meeting/in-meeting-actions.d.ts +8 -0
  26. package/dist/types/meeting/index.d.ts +18 -0
  27. package/package.json +18 -18
  28. package/src/breakouts/index.ts +73 -1
  29. package/src/constants.ts +4 -0
  30. package/src/controls-options-manager/constants.ts +5 -0
  31. package/src/controls-options-manager/enums.ts +6 -0
  32. package/src/controls-options-manager/index.ts +183 -0
  33. package/src/controls-options-manager/util.ts +20 -0
  34. package/src/meeting/in-meeting-actions.ts +16 -0
  35. package/src/meeting/index.ts +50 -0
  36. package/src/meetings/util.ts +24 -0
  37. package/test/integration/spec/converged-space-meetings.js +176 -0
  38. package/test/unit/spec/breakouts/index.ts +76 -0
  39. package/test/unit/spec/controls-options-manager/index.js +124 -0
  40. package/test/unit/spec/controls-options-manager/util.js +66 -0
  41. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -0
  42. package/test/unit/spec/meeting/index.js +15 -0
  43. package/test/utils/constants.js +9 -0
  44. package/test/utils/testUtils.js +13 -6
  45. package/test/utils/webex-config.js +4 -0
  46. package/test/utils/webex-test-users.js +6 -3
@@ -109,7 +109,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
109
109
  parseRoster: function parseRoster(locus) {
110
110
  this.members.locusParticipantsUpdate(locus);
111
111
  },
112
- version: "3.0.0-beta.25"
112
+ version: "3.0.0-beta.27"
113
113
  });
114
114
  var _default = Breakout;
115
115
  exports.default = _default;
@@ -6,7 +6,10 @@ _Object$defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
9
10
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
11
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
10
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
11
14
  var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
12
15
  var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
@@ -48,7 +51,9 @@ var Breakouts = _webexCore.WebexPlugin.extend({
48
51
  // only present when in a breakout session
49
52
  url: 'string',
50
53
  // appears from the moment you enable breakouts
51
- locusUrl: 'string' // the current locus url
54
+ locusUrl: 'string',
55
+ // the current locus url
56
+ breakoutServiceUrl: 'string' // the current breakout resouce url
52
57
  },
53
58
 
54
59
  children: {
@@ -102,6 +107,14 @@ var Breakouts = _webexCore.WebexPlugin.extend({
102
107
  locusUrlUpdate: function locusUrlUpdate(locusUrl) {
103
108
  this.set('locusUrl', locusUrl);
104
109
  },
110
+ /**
111
+ * Update the current breakout resouce url
112
+ * @param {string} breakoutServiceUrl
113
+ * @returns {void}
114
+ */
115
+ breakoutServiceUrlUpdate: function breakoutServiceUrlUpdate(breakoutServiceUrl) {
116
+ this.set('breakoutServiceUrl', "".concat(breakoutServiceUrl, "/breakout/"));
117
+ },
105
118
  /**
106
119
  * The initial roster lists need to be queried because you don't
107
120
  * get a breakout.roster event when you join the meeting
@@ -188,6 +201,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
188
201
  sessionType: params.sessionType,
189
202
  url: params.url
190
203
  }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
204
+ this.set('enableBreakoutSession', params.enableBreakoutSession);
191
205
  },
192
206
  /**
193
207
  * Updates the information about available breakouts
@@ -219,7 +233,83 @@ var Breakouts = _webexCore.WebexPlugin.extend({
219
233
  });
220
234
  this.breakouts.set((0, _values.default)(breakouts));
221
235
  },
222
- version: "3.0.0-beta.25"
236
+ /**
237
+ * Make enable breakout resource
238
+ * @returns {Promise}
239
+ */
240
+ enableBreakouts: function enableBreakouts() {
241
+ if (this.breakoutServiceUrl) {
242
+ // @ts-ignore
243
+ return this.webex.request({
244
+ method: _constants.HTTP_VERBS.POST,
245
+ uri: this.breakoutServiceUrl,
246
+ body: {
247
+ locusUrl: this.locusUrl
248
+ }
249
+ }).catch(function (err) {
250
+ _loggerProxy.default.logger.error("Meeting:request#touchBreakout --> Error provisioning error ".concat(err));
251
+ throw err;
252
+ });
253
+ }
254
+ return _promise.default.reject(new Error("enableBreakouts: the breakoutServiceUrl is empty"));
255
+ },
256
+ /**
257
+ * Make the meeting enbale or disable breakout session
258
+ * @param {boolean} enable
259
+ * @returns {Promise}
260
+ */
261
+ toggleBreakout: function toggleBreakout(enable) {
262
+ var _this6 = this;
263
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
264
+ var info;
265
+ return _regenerator.default.wrap(function _callee$(_context) {
266
+ while (1) switch (_context.prev = _context.next) {
267
+ case 0:
268
+ if (!(_this6.enableBreakoutSession === undefined)) {
269
+ _context.next = 10;
270
+ break;
271
+ }
272
+ _context.next = 3;
273
+ return _this6.enableBreakouts();
274
+ case 3:
275
+ info = _context.sent;
276
+ if (enable) {
277
+ _context.next = 8;
278
+ break;
279
+ }
280
+ // if enable is false, updateBreakout set the param then set enableBreakoutSession as false
281
+ _this6.updateBreakout(info.body);
282
+ _context.next = 8;
283
+ return _this6.doToggleBreakout(enable);
284
+ case 8:
285
+ _context.next = 12;
286
+ break;
287
+ case 10:
288
+ _context.next = 12;
289
+ return _this6.doToggleBreakout(enable);
290
+ case 12:
291
+ case "end":
292
+ return _context.stop();
293
+ }
294
+ }, _callee);
295
+ }))();
296
+ },
297
+ /**
298
+ * do toggle meeting breakout session enable or disable
299
+ * @param {boolean} enable
300
+ * @returns {Promise}
301
+ */
302
+ doToggleBreakout: function doToggleBreakout(enable) {
303
+ // @ts-ignore
304
+ return this.webex.request({
305
+ method: _constants.HTTP_VERBS.PUT,
306
+ uri: this.url,
307
+ body: {
308
+ enableBreakoutSession: enable
309
+ }
310
+ });
311
+ },
312
+ version: "3.0.0-beta.27"
223
313
  });
224
314
  var _default = Breakouts;
225
315
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","cleanUp","stopListening","locusUrlUpdate","set","webex","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\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 /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","cleanUp","stopListening","locusUrlUpdate","set","breakoutServiceUrlUpdate","webex","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED","enableBreakouts","method","HTTP_VERBS","POST","err","reject","Error","toggleBreakout","enable","undefined","info","doToggleBreakout","PUT"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS, HTTP_VERBS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n breakoutServiceUrl: 'string', // the current breakout resouce url\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\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 /**\n * Update the current breakout resouce url\n * @param {string} breakoutServiceUrl\n * @returns {void}\n */\n breakoutServiceUrlUpdate(breakoutServiceUrl) {\n this.set('breakoutServiceUrl', `${breakoutServiceUrl}/breakout/`);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n this.set('enableBreakoutSession', params.enableBreakoutSession);\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n\n /**\n * Make enable breakout resource\n * @returns {Promise}\n */\n enableBreakouts() {\n if (this.breakoutServiceUrl) {\n // @ts-ignore\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: this.breakoutServiceUrl,\n body: {\n locusUrl: this.locusUrl,\n },\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#touchBreakout --> Error provisioning error ${err}`\n );\n throw err;\n });\n }\n\n return Promise.reject(new Error(`enableBreakouts: the breakoutServiceUrl is empty`));\n },\n\n /**\n * Make the meeting enbale or disable breakout session\n * @param {boolean} enable\n * @returns {Promise}\n */\n async toggleBreakout(enable) {\n if (this.enableBreakoutSession === undefined) {\n const info = await this.enableBreakouts();\n if (!enable) {\n // if enable is false, updateBreakout set the param then set enableBreakoutSession as false\n this.updateBreakout(info.body);\n await this.doToggleBreakout(enable);\n }\n } else {\n await this.doToggleBreakout(enable);\n }\n },\n\n /**\n * do toggle meeting breakout session enable or disable\n * @param {boolean} enable\n * @returns {Promise}\n */\n doToggleBreakout(enable) {\n // @ts-ignore\n return this.webex.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n enableBreakoutSession: enable,\n },\n });\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -821,7 +821,11 @@ var DISPLAY_HINTS = {
821
821
  ENABLE_REACTIONS: 'ENABLE_REACTIONS',
822
822
  DISABLE_REACTIONS: 'DISABLE_REACTIONS',
823
823
  REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
824
- REACTIONS_INACTIVE: 'REACTIONS_INACTIVE'
824
+ REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
825
+ ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
826
+ DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
827
+ ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
828
+ DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE'
825
829
  };
826
830
  exports.DISPLAY_HINTS = DISPLAY_HINTS;
827
831
  var SELF_ROLES = {