@webex/plugin-meetings 3.0.0-beta.62 → 3.0.0-beta.64
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 +49 -36
- package/dist/breakouts/index.js.map +1 -1
- package/package.json +18 -18
- package/src/breakouts/index.ts +44 -58
- package/test/unit/spec/breakouts/index.ts +56 -0
package/dist/breakouts/index.js
CHANGED
|
@@ -386,13 +386,19 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
386
386
|
* @returns {Promise}
|
|
387
387
|
*/
|
|
388
388
|
doToggleBreakout: function doToggleBreakout(enable) {
|
|
389
|
+
var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
|
|
390
|
+
editlock: {
|
|
391
|
+
token: this.editLock.token
|
|
392
|
+
}
|
|
393
|
+
} : {}), {
|
|
394
|
+
enableBreakoutSession: enable
|
|
395
|
+
});
|
|
396
|
+
|
|
389
397
|
// @ts-ignore
|
|
390
398
|
return this.webex.request({
|
|
391
399
|
method: _constants.HTTP_VERBS.PUT,
|
|
392
400
|
uri: this.url,
|
|
393
|
-
body:
|
|
394
|
-
enableBreakoutSession: enable
|
|
395
|
-
}
|
|
401
|
+
body: body
|
|
396
402
|
});
|
|
397
403
|
},
|
|
398
404
|
/**
|
|
@@ -404,28 +410,24 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
404
410
|
var _this7 = this;
|
|
405
411
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
406
412
|
var _breakInfo$body;
|
|
407
|
-
var
|
|
413
|
+
var body, breakInfo;
|
|
408
414
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
409
415
|
while (1) switch (_context2.prev = _context2.next) {
|
|
410
416
|
case 0:
|
|
411
|
-
|
|
412
|
-
bodyInfo = _this7.editLock && !!_this7.editLock.token ? {
|
|
413
|
-
groups: [{
|
|
414
|
-
sessions: sessions
|
|
415
|
-
}],
|
|
417
|
+
body = _objectSpread(_objectSpread({}, _this7.editLock && !!_this7.editLock.token ? {
|
|
416
418
|
editlock: {
|
|
417
419
|
token: _this7.editLock.token
|
|
418
420
|
}
|
|
419
|
-
} : {
|
|
421
|
+
} : {}), {
|
|
420
422
|
groups: [{
|
|
421
423
|
sessions: sessions
|
|
422
424
|
}]
|
|
423
|
-
};
|
|
425
|
+
}); // @ts-ignore
|
|
424
426
|
_context2.next = 3;
|
|
425
427
|
return _this7.webex.request({
|
|
426
428
|
method: _constants.HTTP_VERBS.PUT,
|
|
427
429
|
uri: _this7.url,
|
|
428
|
-
body:
|
|
430
|
+
body: body
|
|
429
431
|
}).catch(function (error) {
|
|
430
432
|
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create --> Edit lock token mismatch'));
|
|
431
433
|
});
|
|
@@ -453,28 +455,24 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
453
455
|
var _this8 = this;
|
|
454
456
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
455
457
|
var _breakInfo$body2;
|
|
456
|
-
var
|
|
458
|
+
var body, breakInfo;
|
|
457
459
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
458
460
|
while (1) switch (_context3.prev = _context3.next) {
|
|
459
461
|
case 0:
|
|
460
|
-
|
|
461
|
-
bodyInfo = _this8.editLock && !!_this8.editLock.token ? {
|
|
462
|
-
groups: [{
|
|
463
|
-
action: _constants.BREAKOUTS.ACTION.DELETE
|
|
464
|
-
}],
|
|
462
|
+
body = _objectSpread(_objectSpread({}, _this8.editLock && !!_this8.editLock.token ? {
|
|
465
463
|
editlock: {
|
|
466
464
|
token: _this8.editLock.token
|
|
467
465
|
}
|
|
468
|
-
} : {
|
|
466
|
+
} : {}), {
|
|
469
467
|
groups: [{
|
|
470
468
|
action: _constants.BREAKOUTS.ACTION.DELETE
|
|
471
469
|
}]
|
|
472
|
-
};
|
|
470
|
+
}); // @ts-ignore
|
|
473
471
|
_context3.next = 3;
|
|
474
472
|
return _this8.webex.request({
|
|
475
473
|
method: _constants.HTTP_VERBS.PUT,
|
|
476
474
|
uri: _this8.url,
|
|
477
|
-
body:
|
|
475
|
+
body: body
|
|
478
476
|
}).catch(function (error) {
|
|
479
477
|
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions --> Edit lock token mismatch'));
|
|
480
478
|
});
|
|
@@ -506,12 +504,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
506
504
|
allowToJoinLater: false,
|
|
507
505
|
duration: _constants.BREAKOUTS.DEFAULT_DURATION
|
|
508
506
|
}, params);
|
|
507
|
+
var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
|
|
508
|
+
editlock: {
|
|
509
|
+
token: this.editLock.token,
|
|
510
|
+
refresh: true
|
|
511
|
+
}
|
|
512
|
+
} : {}), {
|
|
513
|
+
groups: [payload]
|
|
514
|
+
});
|
|
509
515
|
return this.request({
|
|
510
516
|
method: _constants.HTTP_VERBS.PUT,
|
|
511
517
|
uri: this.url,
|
|
512
|
-
body:
|
|
513
|
-
groups: [payload]
|
|
514
|
-
}
|
|
518
|
+
body: body
|
|
515
519
|
}).catch(function (error) {
|
|
516
520
|
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start --> Edit lock token mismatch'));
|
|
517
521
|
});
|
|
@@ -531,12 +535,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
531
535
|
action: action,
|
|
532
536
|
delayCloseTime: delayCloseTime
|
|
533
537
|
}, params);
|
|
538
|
+
var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
|
|
539
|
+
editlock: {
|
|
540
|
+
token: this.editLock.token,
|
|
541
|
+
refresh: true
|
|
542
|
+
}
|
|
543
|
+
} : {}), {
|
|
544
|
+
groups: [payload]
|
|
545
|
+
});
|
|
534
546
|
return this.request({
|
|
535
547
|
method: _constants.HTTP_VERBS.PUT,
|
|
536
548
|
uri: this.url,
|
|
537
|
-
body:
|
|
538
|
-
groups: [payload]
|
|
539
|
-
}
|
|
549
|
+
body: body
|
|
540
550
|
}).catch(function (error) {
|
|
541
551
|
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end --> Edit lock token mismatch'));
|
|
542
552
|
});
|
|
@@ -566,6 +576,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
566
576
|
}
|
|
567
577
|
if ((_breakout$body2 = breakout.body) !== null && _breakout$body2 !== void 0 && _breakout$body2.editlock && editlock) {
|
|
568
578
|
_this9.set('editLock', breakout.body.editlock);
|
|
579
|
+
_this9.keepEditLockAlive();
|
|
569
580
|
}
|
|
570
581
|
return _context4.abrupt("return", breakout);
|
|
571
582
|
case 6:
|
|
@@ -673,14 +684,16 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
673
684
|
*/
|
|
674
685
|
unLockEditBreakout: function unLockEditBreakout() {
|
|
675
686
|
var _this13 = this;
|
|
676
|
-
this.
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
687
|
+
if (this.editLock && !!this.editLock.token) {
|
|
688
|
+
this.request({
|
|
689
|
+
method: _constants.HTTP_VERBS.DELETE,
|
|
690
|
+
uri: "".concat(this.url, "/editlock/").concat(this.editLock.token)
|
|
691
|
+
}).then(function () {
|
|
692
|
+
_this13._clearEditLockInfo();
|
|
693
|
+
}).catch(function (error) {
|
|
694
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#unLockEditBreakout'));
|
|
695
|
+
});
|
|
696
|
+
}
|
|
684
697
|
},
|
|
685
698
|
/**
|
|
686
699
|
* clear interval and edit lock info
|
|
@@ -718,7 +731,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
718
731
|
}
|
|
719
732
|
});
|
|
720
733
|
},
|
|
721
|
-
version: "3.0.0-beta.
|
|
734
|
+
version: "3.0.0-beta.64"
|
|
722
735
|
});
|
|
723
736
|
var _default = Breakouts;
|
|
724
737
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","editLock","intervalID","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","breakoutGroupId","length","id","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","webex","cleanUp","stopListening","locusUrlUpdate","set","breakoutServiceUrlUpdate","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","getMainSession","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","PUT","create","sessions","bodyInfo","token","editlock","boServiceErrorHandler","breakInfo","_clearEditLockInfo","resolve","clearSessions","action","ACTION","DELETE","start","START","allowToJoinLater","duration","DEFAULT_DURATION","end","CLOSE","getBreakout","GET","enableAndLockBreakout","lockBreakout","EDIT_LOCK_STATUS","LOCKED","keepEditLockAlive","ttl","DEFAULT_TTL","window","setInterval","unLockEditBreakout","clearInterval","assign","internalSessions","map","item","assigned","memberIds","assignedEmails","emails","anyoneCanJoin","anyone"],"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';\nimport BreakoutRequest from './request';\nimport {boServiceErrorHandler} from './utils';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n breakoutRequest: BreakoutRequest,\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 resource url\n mainLocusUrl: 'string', // the locus url of the main session\n groups: 'array', // appears when create breakouts\n editLock: 'object', // appears when getBreakout info editlock = true\n intervalID: 'number',\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 breakoutGroupId: {\n deps: ['groups'],\n /**\n * Returns the actived group id\n * @returns {boolean}\n */\n fn() {\n if (this.groups?.length) {\n return this.groups[0].id;\n }\n\n return '';\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 // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\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 const {isInMainSession, mainLocusUrl} = this;\n if (isInMainSession || !mainLocusUrl) {\n this.set('mainLocusUrl', locusUrl);\n }\n },\n\n /**\n * Update the current breakout resource 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 this.set('groups', params.groups);\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 * get main session\n * @returns {Breakout}\n */\n getMainSession() {\n if (this.isInMainSession) {\n return this.currentBreakoutSession;\n }\n\n const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];\n if (!mainSession) {\n throw new Error('no main session found');\n }\n\n return mainSession;\n },\n /**\n * Host/CoHost ask all participants return to main session\n * @returns {Promise}\n */\n askAllToReturn() {\n const mainSession = this.getMainSession();\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/requestMove`,\n body: {\n groupId: mainSession.groupId,\n sessionId: mainSession.sessionId,\n },\n });\n },\n\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n const {breakoutGroupId} = this;\n if (!breakoutGroupId) {\n throw new Error('Cannot broadcast, no breakout session found');\n }\n\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: breakoutGroupId,\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 enable 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 /**\n * Create new breakout sessions\n * @param {object} sessions -- breakout session group\n * @returns {Promise}\n */\n async create(sessions) {\n // @ts-ignore\n const bodyInfo =\n this.editLock && !!this.editLock.token\n ? {\n groups: [\n {\n sessions,\n },\n ],\n editlock: {\n token: this.editLock.token,\n },\n }\n : {\n groups: [\n {\n sessions,\n },\n ],\n };\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: bodyInfo,\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#create --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n // clear edit lock info after save breakout session info\n this._clearEditLockInfo();\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Delete all breakout sessions\n * @returns {Promise}\n */\n async clearSessions() {\n // @ts-ignore\n const bodyInfo =\n this.editLock && !!this.editLock.token\n ? {\n groups: [\n {\n action: BREAKOUTS.ACTION.DELETE,\n },\n ],\n editlock: {\n token: this.editLock.token,\n },\n }\n : {\n groups: [\n {\n action: BREAKOUTS.ACTION.DELETE,\n },\n ],\n };\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: bodyInfo,\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#clearSessions --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\n duration: BREAKOUTS.DEFAULT_DURATION,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#start --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n end(params = {}) {\n const {delayCloseTime, breakoutGroupId: id} = this;\n const action = BREAKOUTS.ACTION.CLOSE;\n const payload = {\n id,\n action,\n delayCloseTime,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#end --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * get existed breakout sessions\n * @param {boolean} editlock -- lock operations of the breakout sessions\n * @returns {Promise}\n */\n async getBreakout(editlock) {\n const breakout = await this.request({\n method: HTTP_VERBS.GET,\n uri: this.url + (editlock ? `?editlock=${editlock}` : ''),\n });\n\n if (breakout.body?.groups) {\n this.set('groups', breakout.body.groups);\n }\n if (breakout.body?.editlock && editlock) {\n this.set('editLock', breakout.body.editlock);\n }\n\n return breakout;\n },\n\n /**\n * enable and edit lock breakout\n * @returns {void}\n */\n async enableAndLockBreakout() {\n if (this.enableBreakoutSession) {\n this.lockBreakout();\n } else {\n const info = await this.enableBreakouts();\n\n if (info.body) {\n this.lockBreakout();\n }\n }\n },\n\n /**\n * send breakout edit lock\n * @returns {void}\n */\n async lockBreakout() {\n if (this.editLock && !!this.editLock.token) {\n if (this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED) {\n throw new Error('Breakout already locked');\n } else {\n this.keepEditLockAlive();\n }\n } else {\n const breakout = await this.getBreakout(true);\n if (breakout.body?.editlock) {\n this.keepEditLockAlive();\n }\n }\n },\n\n /**\n * keep edit lock alive\n * @returns {void}\n */\n keepEditLockAlive() {\n if (this.editLock && !!this.editLock.token) {\n const ttl = this.editLock.ttl < 30 ? BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;\n\n this.intervalID = window.setInterval(() => {\n this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.url}/editlock/${this.editLock.token}`,\n }).catch((error) => {\n this._clearEditLockInfo();\n\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#keepEditLockAlive'));\n });\n }, (ttl / 2) * 1000);\n }\n },\n\n /**\n * unlock edit breakout\n * @returns {void}\n */\n unLockEditBreakout() {\n this.request({\n method: HTTP_VERBS.DELETE,\n uri: `${this.url}/editlock/${this.editLock.token}`,\n })\n .then(() => {\n this._clearEditLockInfo();\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#unLockEditBreakout'));\n });\n },\n\n /**\n * clear interval and edit lock info\n * @private\n * @returns {void}\n */\n _clearEditLockInfo() {\n if (this.intervalID) {\n clearInterval(this.intervalID);\n }\n this.set('editLock', {});\n },\n\n /**\n * assign participants to breakout session\n * @param {Array} sessions\n * @returns {void}\n */\n assign(sessions: any[]) {\n const internalSessions = sessions.map((item) => {\n return {\n id: item.id,\n assigned: item.memberIds,\n assignedEmails: item.emails,\n anyoneCanJoin: !!item.anyone,\n };\n });\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: internalSessions,\n },\n ],\n },\n });\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","editLock","intervalID","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","breakoutGroupId","length","id","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","webex","cleanUp","stopListening","locusUrlUpdate","set","breakoutServiceUrlUpdate","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","getMainSession","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","token","editlock","PUT","create","sessions","boServiceErrorHandler","breakInfo","_clearEditLockInfo","resolve","clearSessions","action","ACTION","DELETE","start","START","allowToJoinLater","duration","DEFAULT_DURATION","refresh","end","CLOSE","getBreakout","GET","keepEditLockAlive","enableAndLockBreakout","lockBreakout","EDIT_LOCK_STATUS","LOCKED","ttl","DEFAULT_TTL","window","setInterval","unLockEditBreakout","clearInterval","assign","internalSessions","map","item","assigned","memberIds","assignedEmails","emails","anyoneCanJoin","anyone"],"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';\nimport BreakoutRequest from './request';\nimport {boServiceErrorHandler} from './utils';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n breakoutRequest: BreakoutRequest,\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 resource url\n mainLocusUrl: 'string', // the locus url of the main session\n groups: 'array', // appears when create breakouts\n editLock: 'object', // appears when getBreakout info editlock = true\n intervalID: 'number',\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 breakoutGroupId: {\n deps: ['groups'],\n /**\n * Returns the actived group id\n * @returns {boolean}\n */\n fn() {\n if (this.groups?.length) {\n return this.groups[0].id;\n }\n\n return '';\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 // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\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 const {isInMainSession, mainLocusUrl} = this;\n if (isInMainSession || !mainLocusUrl) {\n this.set('mainLocusUrl', locusUrl);\n }\n },\n\n /**\n * Update the current breakout resource 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 this.set('groups', params.groups);\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 * get main session\n * @returns {Breakout}\n */\n getMainSession() {\n if (this.isInMainSession) {\n return this.currentBreakoutSession;\n }\n\n const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];\n if (!mainSession) {\n throw new Error('no main session found');\n }\n\n return mainSession;\n },\n /**\n * Host/CoHost ask all participants return to main session\n * @returns {Promise}\n */\n askAllToReturn() {\n const mainSession = this.getMainSession();\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/requestMove`,\n body: {\n groupId: mainSession.groupId,\n sessionId: mainSession.sessionId,\n },\n });\n },\n\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n const {breakoutGroupId} = this;\n if (!breakoutGroupId) {\n throw new Error('Cannot broadcast, no breakout session found');\n }\n\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: breakoutGroupId,\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 enable 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 const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{enableBreakoutSession: enable},\n };\n\n // @ts-ignore\n return this.webex.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n });\n },\n\n /**\n * Create new breakout sessions\n * @param {object} sessions -- breakout session group\n * @returns {Promise}\n */\n async create(sessions) {\n const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{groups: [{sessions}]},\n };\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#create --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n // clear edit lock info after save breakout session info\n this._clearEditLockInfo();\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Delete all breakout sessions\n * @returns {Promise}\n */\n async clearSessions() {\n const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{groups: [{action: BREAKOUTS.ACTION.DELETE}]},\n };\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#clearSessions --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\n duration: BREAKOUTS.DEFAULT_DURATION,\n ...params,\n };\n\n const body = {\n ...(this.editLock && !!this.editLock.token\n ? {editlock: {token: this.editLock.token, refresh: true}}\n : {}),\n ...{groups: [payload]},\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#start --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n end(params = {}) {\n const {delayCloseTime, breakoutGroupId: id} = this;\n const action = BREAKOUTS.ACTION.CLOSE;\n const payload = {\n id,\n action,\n delayCloseTime,\n ...params,\n };\n\n const body = {\n ...(this.editLock && !!this.editLock.token\n ? {editlock: {token: this.editLock.token, refresh: true}}\n : {}),\n ...{groups: [payload]},\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#end --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * get existed breakout sessions\n * @param {boolean} editlock -- lock operations of the breakout sessions\n * @returns {Promise}\n */\n async getBreakout(editlock) {\n const breakout = await this.request({\n method: HTTP_VERBS.GET,\n uri: this.url + (editlock ? `?editlock=${editlock}` : ''),\n });\n\n if (breakout.body?.groups) {\n this.set('groups', breakout.body.groups);\n }\n if (breakout.body?.editlock && editlock) {\n this.set('editLock', breakout.body.editlock);\n this.keepEditLockAlive();\n }\n\n return breakout;\n },\n\n /**\n * enable and edit lock breakout\n * @returns {void}\n */\n async enableAndLockBreakout() {\n if (this.enableBreakoutSession) {\n this.lockBreakout();\n } else {\n const info = await this.enableBreakouts();\n\n if (info.body) {\n this.lockBreakout();\n }\n }\n },\n\n /**\n * send breakout edit lock\n * @returns {void}\n */\n async lockBreakout() {\n if (this.editLock && !!this.editLock.token) {\n if (this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED) {\n throw new Error('Breakout already locked');\n } else {\n this.keepEditLockAlive();\n }\n } else {\n const breakout = await this.getBreakout(true);\n if (breakout.body?.editlock) {\n this.keepEditLockAlive();\n }\n }\n },\n\n /**\n * keep edit lock alive\n * @returns {void}\n */\n keepEditLockAlive() {\n if (this.editLock && !!this.editLock.token) {\n const ttl = this.editLock.ttl < 30 ? BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;\n\n this.intervalID = window.setInterval(() => {\n this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.url}/editlock/${this.editLock.token}`,\n }).catch((error) => {\n this._clearEditLockInfo();\n\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#keepEditLockAlive'));\n });\n }, (ttl / 2) * 1000);\n }\n },\n\n /**\n * unlock edit breakout\n * @returns {void}\n */\n unLockEditBreakout() {\n if (this.editLock && !!this.editLock.token) {\n this.request({\n method: HTTP_VERBS.DELETE,\n uri: `${this.url}/editlock/${this.editLock.token}`,\n })\n .then(() => {\n this._clearEditLockInfo();\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#unLockEditBreakout'));\n });\n }\n },\n\n /**\n * clear interval and edit lock info\n * @private\n * @returns {void}\n */\n _clearEditLockInfo() {\n if (this.intervalID) {\n clearInterval(this.intervalID);\n }\n this.set('editLock', {});\n },\n\n /**\n * assign participants to breakout session\n * @param {Array} sessions\n * @returns {void}\n */\n assign(sessions: any[]) {\n const internalSessions = sessions.map((item) => {\n return {\n id: item.id,\n assigned: item.memberIds,\n assignedEmails: item.emails,\n anyoneCanJoin: !!item.anyone,\n };\n });\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: internalSessions,\n },\n ],\n },\n });\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
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.64",
|
|
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.64",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.64",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.64",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.64",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.64",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.64",
|
|
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.64",
|
|
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.64",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.64",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.64",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.64",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.64",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.64",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.64",
|
|
58
|
+
"@webex/plugin-people": "3.0.0-beta.64",
|
|
59
|
+
"@webex/plugin-rooms": "3.0.0-beta.64",
|
|
60
|
+
"@webex/webex-core": "3.0.0-beta.64",
|
|
61
61
|
"ampersand-collection": "^2.0.2",
|
|
62
62
|
"bowser": "^2.11.0",
|
|
63
63
|
"btoa": "^1.2.1",
|
package/src/breakouts/index.ts
CHANGED
|
@@ -361,13 +361,16 @@ const Breakouts = WebexPlugin.extend({
|
|
|
361
361
|
* @returns {Promise}
|
|
362
362
|
*/
|
|
363
363
|
doToggleBreakout(enable) {
|
|
364
|
+
const body = {
|
|
365
|
+
...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),
|
|
366
|
+
...{enableBreakoutSession: enable},
|
|
367
|
+
};
|
|
368
|
+
|
|
364
369
|
// @ts-ignore
|
|
365
370
|
return this.webex.request({
|
|
366
371
|
method: HTTP_VERBS.PUT,
|
|
367
372
|
uri: this.url,
|
|
368
|
-
body
|
|
369
|
-
enableBreakoutSession: enable,
|
|
370
|
-
},
|
|
373
|
+
body,
|
|
371
374
|
});
|
|
372
375
|
},
|
|
373
376
|
|
|
@@ -377,31 +380,16 @@ const Breakouts = WebexPlugin.extend({
|
|
|
377
380
|
* @returns {Promise}
|
|
378
381
|
*/
|
|
379
382
|
async create(sessions) {
|
|
383
|
+
const body = {
|
|
384
|
+
...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),
|
|
385
|
+
...{groups: [{sessions}]},
|
|
386
|
+
};
|
|
380
387
|
// @ts-ignore
|
|
381
|
-
const bodyInfo =
|
|
382
|
-
this.editLock && !!this.editLock.token
|
|
383
|
-
? {
|
|
384
|
-
groups: [
|
|
385
|
-
{
|
|
386
|
-
sessions,
|
|
387
|
-
},
|
|
388
|
-
],
|
|
389
|
-
editlock: {
|
|
390
|
-
token: this.editLock.token,
|
|
391
|
-
},
|
|
392
|
-
}
|
|
393
|
-
: {
|
|
394
|
-
groups: [
|
|
395
|
-
{
|
|
396
|
-
sessions,
|
|
397
|
-
},
|
|
398
|
-
],
|
|
399
|
-
};
|
|
400
388
|
const breakInfo = await this.webex
|
|
401
389
|
.request({
|
|
402
390
|
method: HTTP_VERBS.PUT,
|
|
403
391
|
uri: this.url,
|
|
404
|
-
body
|
|
392
|
+
body,
|
|
405
393
|
})
|
|
406
394
|
.catch((error) => {
|
|
407
395
|
return Promise.reject(
|
|
@@ -424,31 +412,16 @@ const Breakouts = WebexPlugin.extend({
|
|
|
424
412
|
* @returns {Promise}
|
|
425
413
|
*/
|
|
426
414
|
async clearSessions() {
|
|
415
|
+
const body = {
|
|
416
|
+
...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),
|
|
417
|
+
...{groups: [{action: BREAKOUTS.ACTION.DELETE}]},
|
|
418
|
+
};
|
|
427
419
|
// @ts-ignore
|
|
428
|
-
const bodyInfo =
|
|
429
|
-
this.editLock && !!this.editLock.token
|
|
430
|
-
? {
|
|
431
|
-
groups: [
|
|
432
|
-
{
|
|
433
|
-
action: BREAKOUTS.ACTION.DELETE,
|
|
434
|
-
},
|
|
435
|
-
],
|
|
436
|
-
editlock: {
|
|
437
|
-
token: this.editLock.token,
|
|
438
|
-
},
|
|
439
|
-
}
|
|
440
|
-
: {
|
|
441
|
-
groups: [
|
|
442
|
-
{
|
|
443
|
-
action: BREAKOUTS.ACTION.DELETE,
|
|
444
|
-
},
|
|
445
|
-
],
|
|
446
|
-
};
|
|
447
420
|
const breakInfo = await this.webex
|
|
448
421
|
.request({
|
|
449
422
|
method: HTTP_VERBS.PUT,
|
|
450
423
|
uri: this.url,
|
|
451
|
-
body
|
|
424
|
+
body,
|
|
452
425
|
})
|
|
453
426
|
.catch((error) => {
|
|
454
427
|
return Promise.reject(
|
|
@@ -479,12 +452,17 @@ const Breakouts = WebexPlugin.extend({
|
|
|
479
452
|
...params,
|
|
480
453
|
};
|
|
481
454
|
|
|
455
|
+
const body = {
|
|
456
|
+
...(this.editLock && !!this.editLock.token
|
|
457
|
+
? {editlock: {token: this.editLock.token, refresh: true}}
|
|
458
|
+
: {}),
|
|
459
|
+
...{groups: [payload]},
|
|
460
|
+
};
|
|
461
|
+
|
|
482
462
|
return this.request({
|
|
483
463
|
method: HTTP_VERBS.PUT,
|
|
484
464
|
uri: this.url,
|
|
485
|
-
body
|
|
486
|
-
groups: [payload],
|
|
487
|
-
},
|
|
465
|
+
body,
|
|
488
466
|
}).catch((error) => {
|
|
489
467
|
return Promise.reject(
|
|
490
468
|
boServiceErrorHandler(error, 'Breakouts#start --> Edit lock token mismatch')
|
|
@@ -507,12 +485,17 @@ const Breakouts = WebexPlugin.extend({
|
|
|
507
485
|
...params,
|
|
508
486
|
};
|
|
509
487
|
|
|
488
|
+
const body = {
|
|
489
|
+
...(this.editLock && !!this.editLock.token
|
|
490
|
+
? {editlock: {token: this.editLock.token, refresh: true}}
|
|
491
|
+
: {}),
|
|
492
|
+
...{groups: [payload]},
|
|
493
|
+
};
|
|
494
|
+
|
|
510
495
|
return this.request({
|
|
511
496
|
method: HTTP_VERBS.PUT,
|
|
512
497
|
uri: this.url,
|
|
513
|
-
body
|
|
514
|
-
groups: [payload],
|
|
515
|
-
},
|
|
498
|
+
body,
|
|
516
499
|
}).catch((error) => {
|
|
517
500
|
return Promise.reject(
|
|
518
501
|
boServiceErrorHandler(error, 'Breakouts#end --> Edit lock token mismatch')
|
|
@@ -536,6 +519,7 @@ const Breakouts = WebexPlugin.extend({
|
|
|
536
519
|
}
|
|
537
520
|
if (breakout.body?.editlock && editlock) {
|
|
538
521
|
this.set('editLock', breakout.body.editlock);
|
|
522
|
+
this.keepEditLockAlive();
|
|
539
523
|
}
|
|
540
524
|
|
|
541
525
|
return breakout;
|
|
@@ -602,16 +586,18 @@ const Breakouts = WebexPlugin.extend({
|
|
|
602
586
|
* @returns {void}
|
|
603
587
|
*/
|
|
604
588
|
unLockEditBreakout() {
|
|
605
|
-
this.
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
.then(() => {
|
|
610
|
-
this._clearEditLockInfo();
|
|
589
|
+
if (this.editLock && !!this.editLock.token) {
|
|
590
|
+
this.request({
|
|
591
|
+
method: HTTP_VERBS.DELETE,
|
|
592
|
+
uri: `${this.url}/editlock/${this.editLock.token}`,
|
|
611
593
|
})
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
594
|
+
.then(() => {
|
|
595
|
+
this._clearEditLockInfo();
|
|
596
|
+
})
|
|
597
|
+
.catch((error) => {
|
|
598
|
+
return Promise.reject(boServiceErrorHandler(error, 'Breakouts#unLockEditBreakout'));
|
|
599
|
+
});
|
|
600
|
+
}
|
|
615
601
|
},
|
|
616
602
|
|
|
617
603
|
/**
|
|
@@ -47,6 +47,31 @@ const getBOResponse = (status: string) => {
|
|
|
47
47
|
};
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
+
const getBOResponseWithEditLockInfo = (status: string) => {
|
|
51
|
+
return {
|
|
52
|
+
url: 'url',
|
|
53
|
+
locusUrl: 'locusUrl',
|
|
54
|
+
mainGroupId: 'mainGroupId',
|
|
55
|
+
mainSessionId: 'mainSessionId',
|
|
56
|
+
editlock: {state: "LOCKED", ttl: 30, userId: "cc5d452f-04b6-4876-a4c3-28ca21982c6a"},
|
|
57
|
+
groups: [
|
|
58
|
+
{
|
|
59
|
+
sessions: [
|
|
60
|
+
{
|
|
61
|
+
name: 'Breakout Session 1',
|
|
62
|
+
subConfId: 1,
|
|
63
|
+
anyoneCanJoin: false,
|
|
64
|
+
locusUrl: 'locusUrl',
|
|
65
|
+
venueUrl: 'venueUrl',
|
|
66
|
+
allowed: ['allowed id1', 'allowed id2'],
|
|
67
|
+
id: 'sessionId1',
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
|
|
50
75
|
describe('plugin-meetings', () => {
|
|
51
76
|
describe('Breakouts', () => {
|
|
52
77
|
let webex;
|
|
@@ -620,15 +645,40 @@ describe('plugin-meetings', () => {
|
|
|
620
645
|
assert.deepEqual(breakouts.groups, result.body.groups);
|
|
621
646
|
assert.equal(breakouts.breakoutGroupId, 'groupId');
|
|
622
647
|
});
|
|
648
|
+
|
|
649
|
+
it('should call keep alive when response with edit lock info', async () => {
|
|
650
|
+
webex.request.returns(
|
|
651
|
+
Promise.resolve({
|
|
652
|
+
body: getBOResponseWithEditLockInfo('PENDING'),
|
|
653
|
+
})
|
|
654
|
+
);
|
|
655
|
+
|
|
656
|
+
breakouts.set('url', 'url');
|
|
657
|
+
breakouts.keepEditLockAlive = sinon.stub().resolves();
|
|
658
|
+
const result = await breakouts.getBreakout();
|
|
659
|
+
await breakouts.getBreakout(true);
|
|
660
|
+
|
|
661
|
+
assert.calledOnceWithExactly(breakouts.keepEditLockAlive);
|
|
662
|
+
});
|
|
663
|
+
|
|
664
|
+
|
|
623
665
|
});
|
|
624
666
|
|
|
625
667
|
describe('doToggleBreakout', () => {
|
|
626
668
|
it('makes the request as expected', async () => {
|
|
669
|
+
breakouts.set('editLock', {
|
|
670
|
+
ttl: 30,
|
|
671
|
+
token: 'editToken',
|
|
672
|
+
state: 'UNLOCKED',
|
|
673
|
+
});
|
|
627
674
|
const result = await breakouts.doToggleBreakout(true);
|
|
628
675
|
assert.calledOnceWithExactly(webex.request, {
|
|
629
676
|
method: 'PUT',
|
|
630
677
|
uri: 'url',
|
|
631
678
|
body: {
|
|
679
|
+
editlock: {
|
|
680
|
+
token: 'editToken',
|
|
681
|
+
},
|
|
632
682
|
enableBreakoutSession: true,
|
|
633
683
|
},
|
|
634
684
|
});
|
|
@@ -807,6 +857,12 @@ describe('plugin-meetings', () => {
|
|
|
807
857
|
uri: 'url/editlock/2ad57140-01b5-4bd0-a5a7-4dccdc06904c',
|
|
808
858
|
});
|
|
809
859
|
});
|
|
860
|
+
|
|
861
|
+
it('do not call unLock if edit lock info not exist ', async () => {
|
|
862
|
+
|
|
863
|
+
breakouts.unLockEditBreakout();
|
|
864
|
+
assert.notCalled(webex.request);
|
|
865
|
+
});
|
|
810
866
|
});
|
|
811
867
|
|
|
812
868
|
describe('keepEditLockAlive', () => {
|