@webex/plugin-meetings 3.8.0-next.71 → 3.8.0-next.72
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 +70 -6
- package/dist/breakouts/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +3 -3
- package/src/breakouts/index.ts +69 -0
- package/test/unit/spec/breakouts/index.ts +167 -95
package/dist/breakouts/index.js
CHANGED
@@ -77,7 +77,11 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
77
77
|
// appears when getBreakout info editlock = true
|
78
78
|
intervalID: 'number',
|
79
79
|
meetingId: 'string',
|
80
|
-
canManageBreakouts: 'boolean'
|
80
|
+
canManageBreakouts: 'boolean',
|
81
|
+
// appear the ability to manage breakouts
|
82
|
+
mainGroupId: 'string',
|
83
|
+
// appears from the moment you enable breakouts
|
84
|
+
mainSessionId: 'string' // appears from the moment you enable breakouts
|
81
85
|
},
|
82
86
|
|
83
87
|
children: {
|
@@ -562,6 +566,28 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
562
566
|
this.set('manageGroups', breakoutInfo.body.groups);
|
563
567
|
}
|
564
568
|
},
|
569
|
+
/**
|
570
|
+
* set main group id
|
571
|
+
* @param {Object} breakoutInfo -- breakout groups
|
572
|
+
* @returns {void}
|
573
|
+
*/
|
574
|
+
_setMainGroupId: function _setMainGroupId(breakoutInfo) {
|
575
|
+
var _breakoutInfo$body2;
|
576
|
+
if (breakoutInfo !== null && breakoutInfo !== void 0 && (_breakoutInfo$body2 = breakoutInfo.body) !== null && _breakoutInfo$body2 !== void 0 && _breakoutInfo$body2.mainGroupId) {
|
577
|
+
this.set('mainGroupId', breakoutInfo.body.mainGroupId);
|
578
|
+
}
|
579
|
+
},
|
580
|
+
/**
|
581
|
+
* set main session id
|
582
|
+
* @param {Object} breakoutInfo -- breakout groups
|
583
|
+
* @returns {void}
|
584
|
+
*/
|
585
|
+
_setMainSessionId: function _setMainSessionId(breakoutInfo) {
|
586
|
+
var _breakoutInfo$body3;
|
587
|
+
if (breakoutInfo !== null && breakoutInfo !== void 0 && (_breakoutInfo$body3 = breakoutInfo.body) !== null && _breakoutInfo$body3 !== void 0 && _breakoutInfo$body3.mainSessionId) {
|
588
|
+
this.set('mainSessionId', breakoutInfo.body.mainSessionId);
|
589
|
+
}
|
590
|
+
},
|
565
591
|
/**
|
566
592
|
* Create new breakout sessions
|
567
593
|
* @param {object} params -- breakout session group
|
@@ -593,11 +619,13 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
593
619
|
case 4:
|
594
620
|
breakoutInfo = _context2.sent;
|
595
621
|
_this9._setManageGroups(breakoutInfo);
|
622
|
+
_this9._setMainGroupId(breakoutInfo);
|
623
|
+
_this9._setMainSessionId(breakoutInfo);
|
596
624
|
|
597
625
|
// clear edit lock info after save breakout session info
|
598
626
|
_this9._clearEditLockInfo();
|
599
627
|
return _context2.abrupt("return", breakoutInfo);
|
600
|
-
case
|
628
|
+
case 10:
|
601
629
|
case "end":
|
602
630
|
return _context2.stop();
|
603
631
|
}
|
@@ -683,8 +711,10 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
683
711
|
case 6:
|
684
712
|
breakoutInfo = _context4.sent;
|
685
713
|
_this11._setManageGroups(breakoutInfo);
|
714
|
+
_this11._setMainGroupId(breakoutInfo);
|
715
|
+
_this11._setMainSessionId(breakoutInfo);
|
686
716
|
return _context4.abrupt("return", breakoutInfo);
|
687
|
-
case
|
717
|
+
case 11:
|
688
718
|
case "end":
|
689
719
|
return _context4.stop();
|
690
720
|
}
|
@@ -731,8 +761,10 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
731
761
|
case 7:
|
732
762
|
breakoutInfo = _context5.sent;
|
733
763
|
_this12._setManageGroups(breakoutInfo);
|
764
|
+
_this12._setMainGroupId(breakoutInfo);
|
765
|
+
_this12._setMainSessionId(breakoutInfo);
|
734
766
|
return _context5.abrupt("return", breakoutInfo);
|
735
|
-
case
|
767
|
+
case 12:
|
736
768
|
case "end":
|
737
769
|
return _context5.stop();
|
738
770
|
}
|
@@ -812,12 +844,14 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
812
844
|
case 2:
|
813
845
|
breakout = _context7.sent;
|
814
846
|
_this14._setManageGroups(breakout);
|
847
|
+
_this14._setMainGroupId(breakout);
|
848
|
+
_this14._setMainSessionId(breakout);
|
815
849
|
if (editlock && (_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && (_breakout$body$editlo = _breakout$body.editlock) !== null && _breakout$body$editlo !== void 0 && _breakout$body$editlo.token) {
|
816
850
|
_this14.set('editLock', breakout.body.editlock);
|
817
851
|
_this14.keepEditLockAlive();
|
818
852
|
}
|
819
853
|
return _context7.abrupt("return", breakout);
|
820
|
-
case
|
854
|
+
case 8:
|
821
855
|
case "end":
|
822
856
|
return _context7.stop();
|
823
857
|
}
|
@@ -1036,6 +1070,36 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
1036
1070
|
body: body
|
1037
1071
|
});
|
1038
1072
|
},
|
1073
|
+
/**
|
1074
|
+
* Move participants to main session lobby
|
1075
|
+
* @param {Array} sessions
|
1076
|
+
* @param {string} sessions[].participants - Participant IDs to move
|
1077
|
+
* @returns {void}
|
1078
|
+
*/
|
1079
|
+
moveToLobby: function moveToLobby(sessions) {
|
1080
|
+
var _this20 = this;
|
1081
|
+
if (!this.mainGroupId || !this.mainSessionId) {
|
1082
|
+
throw new Error('Main group ID and session ID must be available to move participants to lobby');
|
1083
|
+
}
|
1084
|
+
var updatedSessions = sessions.map(function (item) {
|
1085
|
+
return {
|
1086
|
+
id: _this20.mainSessionId,
|
1087
|
+
participants: item.participants,
|
1088
|
+
targetState: 'LOBBY'
|
1089
|
+
};
|
1090
|
+
});
|
1091
|
+
var body = {
|
1092
|
+
groups: [{
|
1093
|
+
id: this.mainGroupId,
|
1094
|
+
sessions: updatedSessions
|
1095
|
+
}]
|
1096
|
+
};
|
1097
|
+
return this.request({
|
1098
|
+
method: _constants.HTTP_VERBS.PUT,
|
1099
|
+
uri: "".concat(this.url, "/dynamicAssign"),
|
1100
|
+
body: body
|
1101
|
+
});
|
1102
|
+
},
|
1039
1103
|
/**
|
1040
1104
|
* trigger ASK_RETURN_TO_MAIN event when main session requested
|
1041
1105
|
* @param {Object} breakout
|
@@ -1046,7 +1110,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
1046
1110
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
1047
1111
|
}
|
1048
1112
|
},
|
1049
|
-
version: "3.8.0-next.
|
1113
|
+
version: "3.8.0-next.72"
|
1050
1114
|
});
|
1051
1115
|
var _default = exports.default = Breakouts;
|
1052
1116
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_lodash","_loggerProxy","_interopRequireDefault","_constants","_breakout","_collection","_request","_events","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","hasBreakoutPreAssignments","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","manageGroups","preAssignments","editLock","intervalID","meetingId","canManageBreakouts","children","currentBreakoutSession","Breakout","derived","isInMainSession","cache","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","isActiveBreakout","BREAKOUT","STATUS","OPEN","CLOSING","breakoutGroupId","_this$manageGroups","CLOSED","id","breakoutStatus","_this$groups","_this$groups$","shouldQueryPreAssignments","initialize","_this","listenTo","trigger","EVENTS","BREAKOUTS_CLOSING","queryPreAssignments","debouncedQueryRosters","debounce","queryRosters","leading","trailing","breakout","triggerReturnToMainEvent","listenToCurrentSessionTypeChange","listenToBreakoutRosters","listenToBreakoutHelp","webex","cleanUp","stopListening","hasSubscribedToMessage","undefined","locusUrlUpdate","set","listenToBroadcastMessages","updateCanManageBreakouts","breakoutServiceUrlUpdate","concat","_this2","request","uri","qs","btoa","then","result","rosters","body","_ref","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","_locus$controls","_locus$controls$break","controls","session","get","parseRoster","_this3","isSessionTypeChangedFromSessionToMain","LEAVE_BREAKOUT","_this4","internal","llm","isConnected","event","_event$data","data","senderUserId","sentTime","message","MESSAGE","_this5","mercury","_this6","_event$data2","participant","ASK_FOR_HELP","isBreakoutInProgress","_this$groups2","_this$groups2$","currentStatus","isBreakoutIClosing","_this$groups3","_this$groups3$","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED","ASSIGNED_CURRENT","REQUESTED","clearBreakouts","previous","meeting","meetings","getMeetingByType","_ID_","breakoutEvent","onBreakoutJoinResponse","currentSession","breakoutMoveId","newMetrics","submitClientEvent","bind","updateBreakoutSessions","payload","_this7","breakoutSessions","state","requestedLastModifiedTime","modifiedAt","_values","reset","getMainSession","mainSession","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","_promise","reject","toggleBreakout","enable","_this8","_asyncToGenerator2","_regenerator","mark","_callee","info","wrap","_callee$","_context","prev","next","sent","doToggleBreakout","stop","token","editlock","PUT","_setManageGroups","breakoutInfo","_breakoutInfo$body","create","_this9","_callee2","_callee2$","_context2","boServiceErrorHandler","_clearEditLockInfo","abrupt","clearSessions","_this10","_callee3","_callee3$","_context3","action","ACTION","DELETE","start","_arguments","_this11","_callee4","_callee4$","_context4","START","allowToJoinLater","refresh","end","_arguments2","_this12","_callee5","_callee5$","_context5","CLOSE","update","unlockEdit","_this13","_callee6","_this13$editLock","_callee6$","_context6","getBreakout","_this14","_callee7","_breakout$body","_breakout$body$editlo","_callee7$","_context7","GET","keepEditLockAlive","enableAndLockBreakout","_this15","_callee8","_callee8$","_context8","lockBreakout","hasBreakoutLocked","EDIT_LOCK_STATUS","LOCKED","_this16","_callee9","_breakout$body2","_callee9$","_context9","_this17","ttl","DEFAULT_TTL","window","clearInterval","setInterval","unLockEditBreakout","_this18","assign","sessions","internalSessions","map","item","assigned","memberIds","assignedEmails","emails","anyoneCanJoin","anyone","_this19","_result$body","PRE_ASSIGNMENTS_UPDATE","dynamicAssign","updatedSessions","participants","targetState","requested","ASK_RETURN_TO_MAIN","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS, HTTP_VERBS, _ID_} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\nimport BreakoutRequest from './request';\nimport breakoutEvent from './events';\nimport {boServiceErrorHandler, isSessionTypeChangedFromSessionToMain} 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 hasBreakoutPreAssignments: '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 manageGroups: 'array', // appears when manage breakouts\n preAssignments: 'array', // appears when getPreAssignments info hasBreakoutPreAssignments = true\n editLock: 'object', // appears when getBreakout info editlock = true\n intervalID: 'number',\n meetingId: 'string',\n canManageBreakouts: 'boolean', // appear the ability to manage breakouts\n },\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n cache: false,\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 isActiveBreakout: {\n cache: false, // fix issue: sometimes the derived will not change even if the deps changed\n deps: ['sessionType', 'status'],\n /**\n * Returns true if the breakout status is active\n * @returns {boolean}\n */\n fn() {\n return (\n this.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n (this.status === BREAKOUTS.STATUS.OPEN || this.status === BREAKOUTS.STATUS.CLOSING)\n );\n },\n },\n breakoutGroupId: {\n cache: false,\n deps: ['manageGroups'],\n /**\n * Returns the active group id\n * @returns {boolean}\n */\n fn() {\n if (this.manageGroups?.length) {\n return this.manageGroups[0].status !== BREAKOUTS.STATUS.CLOSED\n ? this.manageGroups[0].id\n : '';\n }\n\n return '';\n },\n },\n breakoutStatus: {\n cache: true,\n deps: ['isInMainSession', 'status', 'groups'],\n /**\n * Returns the breakout status\n * @returns {boolean}\n */\n fn() {\n return this.isInMainSession ? this.groups?.[0]?.status : this.status;\n },\n },\n shouldQueryPreAssignments: {\n cache: false,\n deps: ['canManageBreakouts', 'enableBreakoutSession', 'hasBreakoutPreAssignments'],\n /**\n * Returns should query preAssignments or not\n * @returns {boolean}\n */\n fn() {\n return !!(\n this.canManageBreakouts &&\n this.enableBreakoutSession &&\n this.hasBreakoutPreAssignments\n );\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:breakoutStatus', () => {\n if (this.breakoutStatus === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.listenTo(this, 'change:shouldQueryPreAssignments', () => {\n if (this.shouldQueryPreAssignments && !this.preAssignments) {\n this.queryPreAssignments();\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', (breakout) => {\n this.debouncedQueryRosters();\n this.triggerReturnToMainEvent(breakout);\n });\n this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', (breakout) => {\n this.triggerReturnToMainEvent(breakout);\n });\n this.listenToCurrentSessionTypeChange();\n this.listenToBreakoutRosters();\n this.listenToBreakoutHelp();\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 this.hasSubscribedToMessage = undefined;\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 this.listenToBroadcastMessages();\n const {isInMainSession, mainLocusUrl} = this;\n if (isInMainSession || !mainLocusUrl) {\n this.set('mainLocusUrl', locusUrl);\n }\n },\n\n /**\n * Update whether self is moderator/cohost or not\n * @param {boolean} canManageBreakouts\n * @returns {void}\n */\n updateCanManageBreakouts(canManageBreakouts) {\n this.set('canManageBreakouts', canManageBreakouts);\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 *Sets up listener for currentBreakoutSession sessionType changed\n * @returns {void}\n */\n listenToCurrentSessionTypeChange(): void {\n this.listenTo(\n this.currentBreakoutSession,\n 'change:sessionType',\n (currentBreakoutSession, sessionType) => {\n if (isSessionTypeChangedFromSessionToMain(currentBreakoutSession, sessionType)) {\n this.trigger(BREAKOUTS.EVENTS.LEAVE_BREAKOUT);\n }\n }\n );\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n if (!this.webex.internal.llm.isConnected() || this.hasSubscribedToMessage) {\n return;\n }\n\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 this.hasSubscribedToMessage = true;\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 * Sets up a listener for ask help notify from mecury\n * @returns {void}\n */\n listenToBreakoutHelp() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.help', (event) => {\n const {\n data: {participant, sessionId},\n } = event;\n this.trigger(BREAKOUTS.EVENTS.ASK_FOR_HELP, {participant, sessionId});\n });\n },\n\n /**\n * get current breakout is in progress or not\n * @returns {boolean}\n */\n isBreakoutInProgress() {\n const currentStatus = this.groups?.[0]?.status || this.status;\n\n return currentStatus === BREAKOUTS.STATUS.OPEN || currentStatus === BREAKOUTS.STATUS.CLOSING;\n },\n\n /**\n * get current breakout is in closing or not\n * @returns {boolean}\n */\n isBreakoutIClosing() {\n return (this.groups?.[0]?.status || this.status) === BREAKOUTS.STATUS.CLOSING;\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 // These values are set manually so they are unset when they are not included in params\n this.set('groups', params.groups);\n this.set('startTime', params.startTime);\n this.set('status', params.status);\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.ASSIGNED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n if (!this.isBreakoutInProgress()) {\n this.clearBreakouts();\n }\n\n if (\n this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId ||\n this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId\n ) {\n // should report joined session changed\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n breakoutEvent.onBreakoutJoinResponse(\n {\n currentSession: this.currentBreakoutSession,\n meeting,\n breakoutMoveId: params.breakoutMoveId,\n },\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)\n );\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 if (this.isBreakoutIClosing()) {\n // fix issue: don't clear/update breakouts collection when in closing since locus DTO will send undefined or\n // only the MAIN session info here, if just update it, will miss the breakout roster info during\n // count down to end breakouts\n return;\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 if (state === BREAKOUTS.SESSION_STATES.REQUESTED) {\n breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;\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 * clear breakouts collection\n * @returns {void}\n */\n clearBreakouts() {\n if (this.breakouts.length > 0) {\n this.breakouts.reset();\n }\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 // first time enable, set the initial data\n this.updateBreakout(info?.body);\n if (!enable) {\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 * set groups to manageGroups prop\n * @param {Object} breakoutInfo -- breakout groups\n * @returns {void}\n */\n _setManageGroups(breakoutInfo) {\n if (breakoutInfo?.body?.groups) {\n this.set('manageGroups', breakoutInfo.body.groups);\n }\n },\n\n /**\n * Create new breakout sessions\n * @param {object} params -- breakout session group\n * @returns {Promise}\n */\n async create(params) {\n const payload = {...params};\n const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{groups: [payload]},\n };\n // @ts-ignore\n const breakoutInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#create'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n // clear edit lock info after save breakout session info\n this._clearEditLockInfo();\n\n return breakoutInfo;\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 breakoutInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#clearSessions'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n async start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\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 const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#start'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n async 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 const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#end'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost update breakout sessions\n * @param {Object} params\n * @param {String} params.id\n * @param {Boolean} unlockEdit\n * @returns {Promise}\n */\n async update(params: {id: string}, unlockEdit?: boolean) {\n if (!params.id) {\n return Promise.reject(new Error('Missing breakout group id'));\n }\n const payload = {...params};\n\n const body = {\n ...(this.editLock?.token\n ? {editlock: {token: this.editLock.token, refresh: !unlockEdit}}\n : {}),\n ...{groups: [payload]},\n };\n\n const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#update'));\n });\n\n if (unlockEdit) {\n this._clearEditLockInfo();\n }\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\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 this._setManageGroups(breakout);\n if (editlock && breakout.body?.editlock?.token) {\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 * breakout edit locked by yourself or not\n * @returns {boolean}\n */\n hasBreakoutLocked() {\n return (\n this.editLock &&\n this.editLock.token &&\n this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED\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 if (this.intervalID) {\n window.clearInterval(this.intervalID);\n }\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 const body = {\n ...(this.editLock && !!this.editLock.token\n ? {editlock: {token: this.editLock.token, refresh: true}}\n : {}),\n ...{\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: internalSessions,\n },\n ],\n },\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n });\n },\n\n /**\n * query preAssignments\n * @returns {void}\n */\n queryPreAssignments() {\n this.webex\n .request({uri: `${this.url}/preassignments`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n if (result.body?.groups) {\n this.set('preAssignments', result.body.groups);\n this.trigger(BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryPreAssignments failed', error);\n });\n },\n /**\n * assign participants dynamically after breakout sessions started,\n * but currently it only used for admitting participants from lobby into breakout directly\n * @param {Array} sessions\n * @returns {void}\n */\n dynamicAssign(sessions: any[]) {\n const updatedSessions = sessions.map((item) => {\n return {\n id: item.id,\n participants: item.participants,\n targetState: item.targetState,\n };\n });\n\n const body = {\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: updatedSessions,\n },\n ],\n editlock: null,\n };\n\n if (this.editLock && this.editLock.token) {\n body.editlock = this.editLock;\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.url}/dynamicAssign`,\n body,\n });\n },\n /**\n * trigger ASK_RETURN_TO_MAIN event when main session requested\n * @param {Object} breakout\n * @returns {void}\n */\n triggerReturnToMainEvent(breakout) {\n if (breakout.isMain && breakout.requested) {\n this.trigger(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);\n }\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_webexCore","require","_lodash","_loggerProxy","_interopRequireDefault","_constants","_breakout","_collection","_request","_events","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","hasBreakoutPreAssignments","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","manageGroups","preAssignments","editLock","intervalID","meetingId","canManageBreakouts","mainGroupId","mainSessionId","children","currentBreakoutSession","Breakout","derived","isInMainSession","cache","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","isActiveBreakout","BREAKOUT","STATUS","OPEN","CLOSING","breakoutGroupId","_this$manageGroups","CLOSED","id","breakoutStatus","_this$groups","_this$groups$","shouldQueryPreAssignments","initialize","_this","listenTo","trigger","EVENTS","BREAKOUTS_CLOSING","queryPreAssignments","debouncedQueryRosters","debounce","queryRosters","leading","trailing","breakout","triggerReturnToMainEvent","listenToCurrentSessionTypeChange","listenToBreakoutRosters","listenToBreakoutHelp","webex","cleanUp","stopListening","hasSubscribedToMessage","undefined","locusUrlUpdate","set","listenToBroadcastMessages","updateCanManageBreakouts","breakoutServiceUrlUpdate","concat","_this2","request","uri","qs","btoa","then","result","rosters","body","_ref","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","_locus$controls","_locus$controls$break","controls","session","get","parseRoster","_this3","isSessionTypeChangedFromSessionToMain","LEAVE_BREAKOUT","_this4","internal","llm","isConnected","event","_event$data","data","senderUserId","sentTime","message","MESSAGE","_this5","mercury","_this6","_event$data2","participant","ASK_FOR_HELP","isBreakoutInProgress","_this$groups2","_this$groups2$","currentStatus","isBreakoutIClosing","_this$groups3","_this$groups3$","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED","ASSIGNED_CURRENT","REQUESTED","clearBreakouts","previous","meeting","meetings","getMeetingByType","_ID_","breakoutEvent","onBreakoutJoinResponse","currentSession","breakoutMoveId","newMetrics","submitClientEvent","bind","updateBreakoutSessions","payload","_this7","breakoutSessions","state","requestedLastModifiedTime","modifiedAt","_values","reset","getMainSession","mainSession","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","_promise","reject","toggleBreakout","enable","_this8","_asyncToGenerator2","_regenerator","mark","_callee","info","wrap","_callee$","_context","prev","next","sent","doToggleBreakout","stop","token","editlock","PUT","_setManageGroups","breakoutInfo","_breakoutInfo$body","_setMainGroupId","_breakoutInfo$body2","_setMainSessionId","_breakoutInfo$body3","create","_this9","_callee2","_callee2$","_context2","boServiceErrorHandler","_clearEditLockInfo","abrupt","clearSessions","_this10","_callee3","_callee3$","_context3","action","ACTION","DELETE","start","_arguments","_this11","_callee4","_callee4$","_context4","START","allowToJoinLater","refresh","end","_arguments2","_this12","_callee5","_callee5$","_context5","CLOSE","update","unlockEdit","_this13","_callee6","_this13$editLock","_callee6$","_context6","getBreakout","_this14","_callee7","_breakout$body","_breakout$body$editlo","_callee7$","_context7","GET","keepEditLockAlive","enableAndLockBreakout","_this15","_callee8","_callee8$","_context8","lockBreakout","hasBreakoutLocked","EDIT_LOCK_STATUS","LOCKED","_this16","_callee9","_breakout$body2","_callee9$","_context9","_this17","ttl","DEFAULT_TTL","window","clearInterval","setInterval","unLockEditBreakout","_this18","assign","sessions","internalSessions","map","item","assigned","memberIds","assignedEmails","emails","anyoneCanJoin","anyone","_this19","_result$body","PRE_ASSIGNMENTS_UPDATE","dynamicAssign","updatedSessions","participants","targetState","moveToLobby","_this20","requested","ASK_RETURN_TO_MAIN","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS, HTTP_VERBS, _ID_} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\nimport BreakoutRequest from './request';\nimport breakoutEvent from './events';\nimport {boServiceErrorHandler, isSessionTypeChangedFromSessionToMain} 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 hasBreakoutPreAssignments: '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 manageGroups: 'array', // appears when manage breakouts\n preAssignments: 'array', // appears when getPreAssignments info hasBreakoutPreAssignments = true\n editLock: 'object', // appears when getBreakout info editlock = true\n intervalID: 'number',\n meetingId: 'string',\n canManageBreakouts: 'boolean', // appear the ability to manage breakouts\n mainGroupId: 'string', // appears from the moment you enable breakouts\n mainSessionId: 'string', // appears from the moment you enable breakouts\n },\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n cache: false,\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 isActiveBreakout: {\n cache: false, // fix issue: sometimes the derived will not change even if the deps changed\n deps: ['sessionType', 'status'],\n /**\n * Returns true if the breakout status is active\n * @returns {boolean}\n */\n fn() {\n return (\n this.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n (this.status === BREAKOUTS.STATUS.OPEN || this.status === BREAKOUTS.STATUS.CLOSING)\n );\n },\n },\n breakoutGroupId: {\n cache: false,\n deps: ['manageGroups'],\n /**\n * Returns the active group id\n * @returns {boolean}\n */\n fn() {\n if (this.manageGroups?.length) {\n return this.manageGroups[0].status !== BREAKOUTS.STATUS.CLOSED\n ? this.manageGroups[0].id\n : '';\n }\n\n return '';\n },\n },\n breakoutStatus: {\n cache: true,\n deps: ['isInMainSession', 'status', 'groups'],\n /**\n * Returns the breakout status\n * @returns {boolean}\n */\n fn() {\n return this.isInMainSession ? this.groups?.[0]?.status : this.status;\n },\n },\n shouldQueryPreAssignments: {\n cache: false,\n deps: ['canManageBreakouts', 'enableBreakoutSession', 'hasBreakoutPreAssignments'],\n /**\n * Returns should query preAssignments or not\n * @returns {boolean}\n */\n fn() {\n return !!(\n this.canManageBreakouts &&\n this.enableBreakoutSession &&\n this.hasBreakoutPreAssignments\n );\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:breakoutStatus', () => {\n if (this.breakoutStatus === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.listenTo(this, 'change:shouldQueryPreAssignments', () => {\n if (this.shouldQueryPreAssignments && !this.preAssignments) {\n this.queryPreAssignments();\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', (breakout) => {\n this.debouncedQueryRosters();\n this.triggerReturnToMainEvent(breakout);\n });\n this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', (breakout) => {\n this.triggerReturnToMainEvent(breakout);\n });\n this.listenToCurrentSessionTypeChange();\n this.listenToBreakoutRosters();\n this.listenToBreakoutHelp();\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 this.hasSubscribedToMessage = undefined;\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 this.listenToBroadcastMessages();\n const {isInMainSession, mainLocusUrl} = this;\n if (isInMainSession || !mainLocusUrl) {\n this.set('mainLocusUrl', locusUrl);\n }\n },\n\n /**\n * Update whether self is moderator/cohost or not\n * @param {boolean} canManageBreakouts\n * @returns {void}\n */\n updateCanManageBreakouts(canManageBreakouts) {\n this.set('canManageBreakouts', canManageBreakouts);\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 *Sets up listener for currentBreakoutSession sessionType changed\n * @returns {void}\n */\n listenToCurrentSessionTypeChange(): void {\n this.listenTo(\n this.currentBreakoutSession,\n 'change:sessionType',\n (currentBreakoutSession, sessionType) => {\n if (isSessionTypeChangedFromSessionToMain(currentBreakoutSession, sessionType)) {\n this.trigger(BREAKOUTS.EVENTS.LEAVE_BREAKOUT);\n }\n }\n );\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n if (!this.webex.internal.llm.isConnected() || this.hasSubscribedToMessage) {\n return;\n }\n\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 this.hasSubscribedToMessage = true;\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 * Sets up a listener for ask help notify from mecury\n * @returns {void}\n */\n listenToBreakoutHelp() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.help', (event) => {\n const {\n data: {participant, sessionId},\n } = event;\n this.trigger(BREAKOUTS.EVENTS.ASK_FOR_HELP, {participant, sessionId});\n });\n },\n\n /**\n * get current breakout is in progress or not\n * @returns {boolean}\n */\n isBreakoutInProgress() {\n const currentStatus = this.groups?.[0]?.status || this.status;\n\n return currentStatus === BREAKOUTS.STATUS.OPEN || currentStatus === BREAKOUTS.STATUS.CLOSING;\n },\n\n /**\n * get current breakout is in closing or not\n * @returns {boolean}\n */\n isBreakoutIClosing() {\n return (this.groups?.[0]?.status || this.status) === BREAKOUTS.STATUS.CLOSING;\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 // These values are set manually so they are unset when they are not included in params\n this.set('groups', params.groups);\n this.set('startTime', params.startTime);\n this.set('status', params.status);\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.ASSIGNED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n if (!this.isBreakoutInProgress()) {\n this.clearBreakouts();\n }\n\n if (\n this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId ||\n this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId\n ) {\n // should report joined session changed\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n breakoutEvent.onBreakoutJoinResponse(\n {\n currentSession: this.currentBreakoutSession,\n meeting,\n breakoutMoveId: params.breakoutMoveId,\n },\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)\n );\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 if (this.isBreakoutIClosing()) {\n // fix issue: don't clear/update breakouts collection when in closing since locus DTO will send undefined or\n // only the MAIN session info here, if just update it, will miss the breakout roster info during\n // count down to end breakouts\n return;\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 if (state === BREAKOUTS.SESSION_STATES.REQUESTED) {\n breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;\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 * clear breakouts collection\n * @returns {void}\n */\n clearBreakouts() {\n if (this.breakouts.length > 0) {\n this.breakouts.reset();\n }\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 // first time enable, set the initial data\n this.updateBreakout(info?.body);\n if (!enable) {\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 * set groups to manageGroups prop\n * @param {Object} breakoutInfo -- breakout groups\n * @returns {void}\n */\n _setManageGroups(breakoutInfo) {\n if (breakoutInfo?.body?.groups) {\n this.set('manageGroups', breakoutInfo.body.groups);\n }\n },\n\n /**\n * set main group id\n * @param {Object} breakoutInfo -- breakout groups\n * @returns {void}\n */\n _setMainGroupId(breakoutInfo) {\n if (breakoutInfo?.body?.mainGroupId) {\n this.set('mainGroupId', breakoutInfo.body.mainGroupId);\n }\n },\n\n /**\n * set main session id\n * @param {Object} breakoutInfo -- breakout groups\n * @returns {void}\n */\n _setMainSessionId(breakoutInfo) {\n if (breakoutInfo?.body?.mainSessionId) {\n this.set('mainSessionId', breakoutInfo.body.mainSessionId);\n }\n },\n\n /**\n * Create new breakout sessions\n * @param {object} params -- breakout session group\n * @returns {Promise}\n */\n async create(params) {\n const payload = {...params};\n const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{groups: [payload]},\n };\n // @ts-ignore\n const breakoutInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#create'));\n });\n\n this._setManageGroups(breakoutInfo);\n this._setMainGroupId(breakoutInfo);\n this._setMainSessionId(breakoutInfo);\n\n // clear edit lock info after save breakout session info\n this._clearEditLockInfo();\n\n return breakoutInfo;\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 breakoutInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#clearSessions'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n async start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\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 const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#start'));\n });\n\n this._setManageGroups(breakoutInfo);\n this._setMainGroupId(breakoutInfo);\n this._setMainSessionId(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n async 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 const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#end'));\n });\n\n this._setManageGroups(breakoutInfo);\n this._setMainGroupId(breakoutInfo);\n this._setMainSessionId(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost update breakout sessions\n * @param {Object} params\n * @param {String} params.id\n * @param {Boolean} unlockEdit\n * @returns {Promise}\n */\n async update(params: {id: string}, unlockEdit?: boolean) {\n if (!params.id) {\n return Promise.reject(new Error('Missing breakout group id'));\n }\n const payload = {...params};\n\n const body = {\n ...(this.editLock?.token\n ? {editlock: {token: this.editLock.token, refresh: !unlockEdit}}\n : {}),\n ...{groups: [payload]},\n };\n\n const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#update'));\n });\n\n if (unlockEdit) {\n this._clearEditLockInfo();\n }\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\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 this._setManageGroups(breakout);\n this._setMainGroupId(breakout);\n this._setMainSessionId(breakout);\n\n if (editlock && breakout.body?.editlock?.token) {\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 * breakout edit locked by yourself or not\n * @returns {boolean}\n */\n hasBreakoutLocked() {\n return (\n this.editLock &&\n this.editLock.token &&\n this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED\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 if (this.intervalID) {\n window.clearInterval(this.intervalID);\n }\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 const body = {\n ...(this.editLock && !!this.editLock.token\n ? {editlock: {token: this.editLock.token, refresh: true}}\n : {}),\n ...{\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: internalSessions,\n },\n ],\n },\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n });\n },\n\n /**\n * query preAssignments\n * @returns {void}\n */\n queryPreAssignments() {\n this.webex\n .request({uri: `${this.url}/preassignments`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n if (result.body?.groups) {\n this.set('preAssignments', result.body.groups);\n this.trigger(BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryPreAssignments failed', error);\n });\n },\n /**\n * assign participants dynamically after breakout sessions started,\n * but currently it only used for admitting participants from lobby into breakout directly\n * @param {Array} sessions\n * @returns {void}\n */\n dynamicAssign(sessions: any[]) {\n const updatedSessions = sessions.map((item) => {\n return {\n id: item.id,\n participants: item.participants,\n targetState: item.targetState,\n };\n });\n\n const body = {\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: updatedSessions,\n },\n ],\n editlock: null,\n };\n\n if (this.editLock && this.editLock.token) {\n body.editlock = this.editLock;\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.url}/dynamicAssign`,\n body,\n });\n },\n /**\n * Move participants to main session lobby\n * @param {Array} sessions\n * @param {string} sessions[].participants - Participant IDs to move\n * @returns {void}\n */\n moveToLobby(sessions: Array<{participants: string[]}>) {\n if (!this.mainGroupId || !this.mainSessionId) {\n throw new Error(\n 'Main group ID and session ID must be available to move participants to lobby'\n );\n }\n\n const updatedSessions = sessions.map((item) => {\n return {\n id: this.mainSessionId,\n participants: item.participants,\n targetState: 'LOBBY',\n };\n });\n\n const body = {\n groups: [\n {\n id: this.mainGroupId,\n sessions: updatedSessions,\n },\n ],\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.url}/dynamicAssign`,\n body,\n });\n },\n /**\n * trigger ASK_RETURN_TO_MAIN event when main session requested\n * @param {Object} breakout\n * @returns {void}\n */\n triggerReturnToMainEvent(breakout) {\n if (breakout.isMain && breakout.requested) {\n this.trigger(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);\n }\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
@@ -373,7 +373,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
373
373
|
throw error;
|
374
374
|
});
|
375
375
|
},
|
376
|
-
version: "3.8.0-next.
|
376
|
+
version: "3.8.0-next.72"
|
377
377
|
});
|
378
378
|
var _default = exports.default = SimultaneousInterpretation;
|
379
379
|
//# sourceMappingURL=index.js.map
|
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
|
|
18
18
|
languageCode: 'number',
|
19
19
|
languageName: 'string'
|
20
20
|
},
|
21
|
-
version: "3.8.0-next.
|
21
|
+
version: "3.8.0-next.72"
|
22
22
|
});
|
23
23
|
var _default = exports.default = SILanguage;
|
24
24
|
//# sourceMappingURL=siLanguage.js.map
|
package/dist/webinar/index.js
CHANGED
package/package.json
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
44
44
|
"@webex/jest-config-legacy": "0.0.0",
|
45
45
|
"@webex/legacy-tools": "0.0.0",
|
46
|
-
"@webex/plugin-meetings": "3.8.0-next.
|
46
|
+
"@webex/plugin-meetings": "3.8.0-next.72",
|
47
47
|
"@webex/plugin-rooms": "3.8.0-next.24",
|
48
48
|
"@webex/test-helper-chai": "3.8.0-next.20",
|
49
49
|
"@webex/test-helper-mocha": "3.8.0-next.20",
|
@@ -71,7 +71,7 @@
|
|
71
71
|
"@webex/internal-plugin-metrics": "3.8.0-next.20",
|
72
72
|
"@webex/internal-plugin-support": "3.8.0-next.24",
|
73
73
|
"@webex/internal-plugin-user": "3.8.0-next.20",
|
74
|
-
"@webex/internal-plugin-voicea": "3.8.0-next.
|
74
|
+
"@webex/internal-plugin-voicea": "3.8.0-next.72",
|
75
75
|
"@webex/media-helpers": "3.8.0-next.24",
|
76
76
|
"@webex/plugin-people": "3.8.0-next.22",
|
77
77
|
"@webex/plugin-rooms": "3.8.0-next.24",
|
@@ -93,5 +93,5 @@
|
|
93
93
|
"//": [
|
94
94
|
"TODO: upgrade jwt-decode when moving to node 18"
|
95
95
|
],
|
96
|
-
"version": "3.8.0-next.
|
96
|
+
"version": "3.8.0-next.72"
|
97
97
|
}
|
package/src/breakouts/index.ts
CHANGED
@@ -45,6 +45,8 @@ const Breakouts = WebexPlugin.extend({
|
|
45
45
|
intervalID: 'number',
|
46
46
|
meetingId: 'string',
|
47
47
|
canManageBreakouts: 'boolean', // appear the ability to manage breakouts
|
48
|
+
mainGroupId: 'string', // appears from the moment you enable breakouts
|
49
|
+
mainSessionId: 'string', // appears from the moment you enable breakouts
|
48
50
|
},
|
49
51
|
children: {
|
50
52
|
currentBreakoutSession: Breakout,
|
@@ -544,6 +546,28 @@ const Breakouts = WebexPlugin.extend({
|
|
544
546
|
}
|
545
547
|
},
|
546
548
|
|
549
|
+
/**
|
550
|
+
* set main group id
|
551
|
+
* @param {Object} breakoutInfo -- breakout groups
|
552
|
+
* @returns {void}
|
553
|
+
*/
|
554
|
+
_setMainGroupId(breakoutInfo) {
|
555
|
+
if (breakoutInfo?.body?.mainGroupId) {
|
556
|
+
this.set('mainGroupId', breakoutInfo.body.mainGroupId);
|
557
|
+
}
|
558
|
+
},
|
559
|
+
|
560
|
+
/**
|
561
|
+
* set main session id
|
562
|
+
* @param {Object} breakoutInfo -- breakout groups
|
563
|
+
* @returns {void}
|
564
|
+
*/
|
565
|
+
_setMainSessionId(breakoutInfo) {
|
566
|
+
if (breakoutInfo?.body?.mainSessionId) {
|
567
|
+
this.set('mainSessionId', breakoutInfo.body.mainSessionId);
|
568
|
+
}
|
569
|
+
},
|
570
|
+
|
547
571
|
/**
|
548
572
|
* Create new breakout sessions
|
549
573
|
* @param {object} params -- breakout session group
|
@@ -567,6 +591,8 @@ const Breakouts = WebexPlugin.extend({
|
|
567
591
|
});
|
568
592
|
|
569
593
|
this._setManageGroups(breakoutInfo);
|
594
|
+
this._setMainGroupId(breakoutInfo);
|
595
|
+
this._setMainSessionId(breakoutInfo);
|
570
596
|
|
571
597
|
// clear edit lock info after save breakout session info
|
572
598
|
this._clearEditLockInfo();
|
@@ -630,6 +656,8 @@ const Breakouts = WebexPlugin.extend({
|
|
630
656
|
});
|
631
657
|
|
632
658
|
this._setManageGroups(breakoutInfo);
|
659
|
+
this._setMainGroupId(breakoutInfo);
|
660
|
+
this._setMainSessionId(breakoutInfo);
|
633
661
|
|
634
662
|
return breakoutInfo;
|
635
663
|
},
|
@@ -665,6 +693,8 @@ const Breakouts = WebexPlugin.extend({
|
|
665
693
|
});
|
666
694
|
|
667
695
|
this._setManageGroups(breakoutInfo);
|
696
|
+
this._setMainGroupId(breakoutInfo);
|
697
|
+
this._setMainSessionId(breakoutInfo);
|
668
698
|
|
669
699
|
return breakoutInfo;
|
670
700
|
},
|
@@ -718,6 +748,9 @@ const Breakouts = WebexPlugin.extend({
|
|
718
748
|
});
|
719
749
|
|
720
750
|
this._setManageGroups(breakout);
|
751
|
+
this._setMainGroupId(breakout);
|
752
|
+
this._setMainSessionId(breakout);
|
753
|
+
|
721
754
|
if (editlock && breakout.body?.editlock?.token) {
|
722
755
|
this.set('editLock', breakout.body.editlock);
|
723
756
|
this.keepEditLockAlive();
|
@@ -916,6 +949,42 @@ const Breakouts = WebexPlugin.extend({
|
|
916
949
|
body,
|
917
950
|
});
|
918
951
|
},
|
952
|
+
/**
|
953
|
+
* Move participants to main session lobby
|
954
|
+
* @param {Array} sessions
|
955
|
+
* @param {string} sessions[].participants - Participant IDs to move
|
956
|
+
* @returns {void}
|
957
|
+
*/
|
958
|
+
moveToLobby(sessions: Array<{participants: string[]}>) {
|
959
|
+
if (!this.mainGroupId || !this.mainSessionId) {
|
960
|
+
throw new Error(
|
961
|
+
'Main group ID and session ID must be available to move participants to lobby'
|
962
|
+
);
|
963
|
+
}
|
964
|
+
|
965
|
+
const updatedSessions = sessions.map((item) => {
|
966
|
+
return {
|
967
|
+
id: this.mainSessionId,
|
968
|
+
participants: item.participants,
|
969
|
+
targetState: 'LOBBY',
|
970
|
+
};
|
971
|
+
});
|
972
|
+
|
973
|
+
const body = {
|
974
|
+
groups: [
|
975
|
+
{
|
976
|
+
id: this.mainGroupId,
|
977
|
+
sessions: updatedSessions,
|
978
|
+
},
|
979
|
+
],
|
980
|
+
};
|
981
|
+
|
982
|
+
return this.request({
|
983
|
+
method: HTTP_VERBS.PUT,
|
984
|
+
uri: `${this.url}/dynamicAssign`,
|
985
|
+
body,
|
986
|
+
});
|
987
|
+
},
|
919
988
|
/**
|
920
989
|
* trigger ASK_RETURN_TO_MAIN event when main session requested
|
921
990
|
* @param {Object} breakout
|
@@ -114,39 +114,58 @@ describe('plugin-meetings', () => {
|
|
114
114
|
assert.notCalled(breakoutClosingHandler);
|
115
115
|
breakouts.set(deps);
|
116
116
|
assert.calledOnce(breakoutClosingHandler);
|
117
|
-
}
|
118
|
-
|
119
|
-
checkIsCalled({sessionType: BREAKOUTS.SESSION_TYPES.MAIN, groups: undefined, status: undefined}, {
|
120
|
-
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
121
|
-
groups: [{status: BREAKOUTS.STATUS.CLOSING}],
|
122
|
-
status: undefined
|
123
|
-
});
|
117
|
+
};
|
124
118
|
|
125
|
-
checkIsCalled(
|
126
|
-
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
127
|
-
|
128
|
-
|
129
|
-
|
119
|
+
checkIsCalled(
|
120
|
+
{sessionType: BREAKOUTS.SESSION_TYPES.MAIN, groups: undefined, status: undefined},
|
121
|
+
{
|
122
|
+
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
123
|
+
groups: [{status: BREAKOUTS.STATUS.CLOSING}],
|
124
|
+
status: undefined,
|
125
|
+
}
|
126
|
+
);
|
130
127
|
|
131
|
-
checkIsCalled(
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
128
|
+
checkIsCalled(
|
129
|
+
{
|
130
|
+
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
131
|
+
groups: [{status: BREAKOUTS.STATUS.OPEN}],
|
132
|
+
status: undefined,
|
133
|
+
},
|
134
|
+
{
|
135
|
+
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
136
|
+
groups: [{status: BREAKOUTS.STATUS.CLOSING}],
|
137
|
+
status: undefined,
|
138
|
+
}
|
139
|
+
);
|
136
140
|
|
137
|
-
checkIsCalled(
|
138
|
-
sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT,
|
139
|
-
|
140
|
-
|
141
|
-
|
141
|
+
checkIsCalled(
|
142
|
+
{sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT, groups: undefined, status: undefined},
|
143
|
+
{
|
144
|
+
sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT,
|
145
|
+
groups: undefined,
|
146
|
+
status: BREAKOUTS.STATUS.CLOSING,
|
147
|
+
}
|
148
|
+
);
|
142
149
|
|
150
|
+
checkIsCalled(
|
151
|
+
{
|
152
|
+
sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT,
|
153
|
+
groups: undefined,
|
154
|
+
status: BREAKOUTS.STATUS.OPEN,
|
155
|
+
},
|
156
|
+
{
|
157
|
+
sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT,
|
158
|
+
groups: undefined,
|
159
|
+
status: BREAKOUTS.STATUS.CLOSING,
|
160
|
+
}
|
161
|
+
);
|
143
162
|
});
|
144
163
|
|
145
164
|
it('should not emits BREAKOUTS_CLOSING event when just sessionType changed from BREAKOUT to MAIN', () => {
|
146
165
|
breakouts.set({
|
147
166
|
sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT,
|
148
167
|
groups: undefined,
|
149
|
-
status: BREAKOUTS.STATUS.CLOSING
|
168
|
+
status: BREAKOUTS.STATUS.CLOSING,
|
150
169
|
});
|
151
170
|
|
152
171
|
const breakoutClosingHandler = sinon.stub();
|
@@ -155,7 +174,7 @@ describe('plugin-meetings', () => {
|
|
155
174
|
breakouts.set({
|
156
175
|
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
157
176
|
groups: [{status: BREAKOUTS.STATUS.CLOSING}],
|
158
|
-
status: undefined
|
177
|
+
status: undefined,
|
159
178
|
});
|
160
179
|
|
161
180
|
assert.notCalled(breakoutClosingHandler);
|
@@ -171,14 +190,22 @@ describe('plugin-meetings', () => {
|
|
171
190
|
it('call triggerReturnToMainEvent correctly when requested breakout add', () => {
|
172
191
|
breakouts.triggerReturnToMainEvent = sinon.stub();
|
173
192
|
breakouts.breakouts.add({sessionId: 'session1', sessionType: 'MAIN'});
|
174
|
-
assert.calledOnceWithExactly(
|
193
|
+
assert.calledOnceWithExactly(
|
194
|
+
breakouts.triggerReturnToMainEvent,
|
195
|
+
breakouts.breakouts.get('session1')
|
196
|
+
);
|
175
197
|
});
|
176
198
|
|
177
199
|
it('call triggerReturnToMainEvent correctly when breakout requestedLastModifiedTime change', () => {
|
178
200
|
breakouts.breakouts.add({sessionId: 'session1', sessionType: 'MAIN'});
|
179
201
|
breakouts.triggerReturnToMainEvent = sinon.stub();
|
180
|
-
breakouts.breakouts
|
181
|
-
|
202
|
+
breakouts.breakouts
|
203
|
+
.get('session1')
|
204
|
+
.set({requestedLastModifiedTime: '2023-05-09T17:16:01.000Z'});
|
205
|
+
assert.calledOnceWithExactly(
|
206
|
+
breakouts.triggerReturnToMainEvent,
|
207
|
+
breakouts.breakouts.get('session1')
|
208
|
+
);
|
182
209
|
});
|
183
210
|
|
184
211
|
it('call queryPreAssignments correctly when should query preAssignments is true', () => {
|
@@ -195,7 +222,7 @@ describe('plugin-meetings', () => {
|
|
195
222
|
describe('#listenToCurrentSessionTypeChange', () => {
|
196
223
|
it('triggers leave breakout event when sessionType changed from SESSION to MAIN', () => {
|
197
224
|
const handler = sinon.stub();
|
198
|
-
breakouts.currentBreakoutSession.set({sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT})
|
225
|
+
breakouts.currentBreakoutSession.set({sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT});
|
199
226
|
breakouts.listenTo(breakouts, BREAKOUTS.EVENTS.LEAVE_BREAKOUT, handler);
|
200
227
|
breakouts.currentBreakoutSession.set({sessionType: BREAKOUTS.SESSION_TYPES.MAIN});
|
201
228
|
|
@@ -206,7 +233,7 @@ describe('plugin-meetings', () => {
|
|
206
233
|
|
207
234
|
it('should not triggers leave breakout event when sessionType changed from undefined to MAIN', () => {
|
208
235
|
const handler = sinon.stub();
|
209
|
-
breakouts.currentBreakoutSession.set({sessionType: undefined})
|
236
|
+
breakouts.currentBreakoutSession.set({sessionType: undefined});
|
210
237
|
breakouts.listenTo(breakouts, BREAKOUTS.EVENTS.LEAVE_BREAKOUT, handler);
|
211
238
|
breakouts.currentBreakoutSession.set({sessionType: BREAKOUTS.SESSION_TYPES.MAIN});
|
212
239
|
|
@@ -217,7 +244,7 @@ describe('plugin-meetings', () => {
|
|
217
244
|
|
218
245
|
it('should not triggers leave breakout event when sessionType changed from MAIN to SESSION', () => {
|
219
246
|
const handler = sinon.stub();
|
220
|
-
breakouts.currentBreakoutSession.set({sessionType: BREAKOUTS.SESSION_TYPES.MAIN})
|
247
|
+
breakouts.currentBreakoutSession.set({sessionType: BREAKOUTS.SESSION_TYPES.MAIN});
|
221
248
|
breakouts.listenTo(breakouts, BREAKOUTS.EVENTS.LEAVE_BREAKOUT, handler);
|
222
249
|
breakouts.currentBreakoutSession.set({sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT});
|
223
250
|
|
@@ -268,7 +295,7 @@ describe('plugin-meetings', () => {
|
|
268
295
|
callback({
|
269
296
|
data: {
|
270
297
|
participant: 'participant',
|
271
|
-
sessionId: 'sessionId'
|
298
|
+
sessionId: 'sessionId',
|
272
299
|
},
|
273
300
|
});
|
274
301
|
|
@@ -321,38 +348,38 @@ describe('plugin-meetings', () => {
|
|
321
348
|
|
322
349
|
it('update the startTime correctly when no attribute startTime exists on params', () => {
|
323
350
|
breakouts.updateBreakout({
|
324
|
-
startTime:
|
325
|
-
})
|
351
|
+
startTime: 'startTime',
|
352
|
+
});
|
326
353
|
assert.equal(breakouts.startTime, 'startTime');
|
327
354
|
|
328
|
-
breakouts.updateBreakout({})
|
355
|
+
breakouts.updateBreakout({});
|
329
356
|
assert.equal(breakouts.startTime, undefined);
|
330
357
|
});
|
331
358
|
|
332
359
|
it('update the status correctly when no attribute status exists on params', () => {
|
333
360
|
breakouts.updateBreakout({
|
334
|
-
status: 'CLOSING'
|
335
|
-
})
|
361
|
+
status: 'CLOSING',
|
362
|
+
});
|
336
363
|
assert.equal(breakouts.status, 'CLOSING');
|
337
364
|
|
338
|
-
breakouts.updateBreakout({})
|
365
|
+
breakouts.updateBreakout({});
|
339
366
|
assert.equal(breakouts.status, undefined);
|
340
367
|
});
|
341
368
|
|
342
369
|
it('call clearBreakouts if current breakout is not in-progress', () => {
|
343
370
|
breakouts.clearBreakouts = sinon.stub();
|
344
|
-
breakouts.updateBreakout({status: 'CLOSED'})
|
371
|
+
breakouts.updateBreakout({status: 'CLOSED'});
|
345
372
|
assert.calledOnce(breakouts.clearBreakouts);
|
346
373
|
});
|
347
374
|
|
348
375
|
it('updates the current breakout session, call onBreakoutJoinResponse when session changed', () => {
|
349
376
|
breakouts.webex.meetings = {
|
350
377
|
getMeetingByType: sinon.stub().returns({
|
351
|
-
id: 'meeting-id'
|
352
|
-
})
|
378
|
+
id: 'meeting-id',
|
379
|
+
}),
|
353
380
|
};
|
354
|
-
const onBreakoutJoinResponseSpy = sinon.stub(breakoutEvent,'onBreakoutJoinResponse')
|
355
|
-
breakouts.currentBreakoutSession.sessionId =
|
381
|
+
const onBreakoutJoinResponseSpy = sinon.stub(breakoutEvent, 'onBreakoutJoinResponse');
|
382
|
+
breakouts.currentBreakoutSession.sessionId = 'sessionId-old';
|
356
383
|
breakouts.updateBreakout({
|
357
384
|
sessionId: 'sessionId-new',
|
358
385
|
groupId: 'groupId',
|
@@ -370,19 +397,18 @@ describe('plugin-meetings', () => {
|
|
370
397
|
|
371
398
|
assert.calledOnce(onBreakoutJoinResponseSpy);
|
372
399
|
|
373
|
-
onBreakoutJoinResponseSpy.restore()
|
374
|
-
|
400
|
+
onBreakoutJoinResponseSpy.restore();
|
375
401
|
});
|
376
402
|
|
377
403
|
it('updates the current breakout session, not call onBreakoutJoinResponse when session no changed', () => {
|
378
404
|
breakouts.webex.meetings = {
|
379
405
|
getMeetingByType: sinon.stub().returns({
|
380
|
-
id: 'meeting-id'
|
381
|
-
})
|
406
|
+
id: 'meeting-id',
|
407
|
+
}),
|
382
408
|
};
|
383
409
|
const onBreakoutJoinResponseSpy = sinon.stub(breakoutEvent, 'onBreakoutJoinResponse');
|
384
|
-
breakouts.currentBreakoutSession.sessionId =
|
385
|
-
breakouts.currentBreakoutSession.groupId =
|
410
|
+
breakouts.currentBreakoutSession.sessionId = 'sessionId';
|
411
|
+
breakouts.currentBreakoutSession.groupId = 'groupId';
|
386
412
|
breakouts.updateBreakout({
|
387
413
|
sessionId: 'sessionId',
|
388
414
|
groupId: 'groupId',
|
@@ -399,8 +425,7 @@ describe('plugin-meetings', () => {
|
|
399
425
|
});
|
400
426
|
|
401
427
|
assert.notCalled(onBreakoutJoinResponseSpy);
|
402
|
-
onBreakoutJoinResponseSpy.restore()
|
403
|
-
|
428
|
+
onBreakoutJoinResponseSpy.restore();
|
404
429
|
});
|
405
430
|
});
|
406
431
|
|
@@ -446,13 +471,16 @@ describe('plugin-meetings', () => {
|
|
446
471
|
const payload = {
|
447
472
|
breakoutSessions: {
|
448
473
|
assigned: [{sessionId: 'sessionId1'}],
|
449
|
-
requested: [{sessionId: 'sessionId2', modifiedAt:
|
474
|
+
requested: [{sessionId: 'sessionId2', modifiedAt: '2023-05-09T17:16:01.000Z'}],
|
450
475
|
},
|
451
476
|
};
|
452
477
|
|
453
478
|
breakouts.updateBreakoutSessions(payload);
|
454
|
-
assert.equal(breakouts.breakouts.get('sessionId1').requestedLastModifiedTime, undefined)
|
455
|
-
assert.equal(
|
479
|
+
assert.equal(breakouts.breakouts.get('sessionId1').requestedLastModifiedTime, undefined);
|
480
|
+
assert.equal(
|
481
|
+
breakouts.breakouts.get('sessionId2').requestedLastModifiedTime,
|
482
|
+
'2023-05-09T17:16:01.000Z'
|
483
|
+
);
|
456
484
|
});
|
457
485
|
|
458
486
|
it('not update breakout sessions when breakouts is closing', () => {
|
@@ -603,15 +631,15 @@ describe('plugin-meetings', () => {
|
|
603
631
|
|
604
632
|
describe('#breakoutStatus', () => {
|
605
633
|
it('return status from groups with session type', () => {
|
606
|
-
breakouts.set('groups', [{status:
|
607
|
-
breakouts.set('status',
|
634
|
+
breakouts.set('groups', [{status: 'OPEN'}]);
|
635
|
+
breakouts.set('status', 'CLOSED');
|
608
636
|
breakouts.set('sessionType', BREAKOUTS.SESSION_TYPES.MAIN);
|
609
637
|
|
610
|
-
assert.equal(breakouts.breakoutStatus,
|
638
|
+
assert.equal(breakouts.breakoutStatus, 'OPEN');
|
611
639
|
|
612
640
|
breakouts.set('sessionType', BREAKOUTS.SESSION_TYPES.BREAKOUT);
|
613
641
|
|
614
|
-
assert.equal(breakouts.breakoutStatus,
|
642
|
+
assert.equal(breakouts.breakoutStatus, 'CLOSED');
|
615
643
|
});
|
616
644
|
});
|
617
645
|
|
@@ -634,7 +662,7 @@ describe('plugin-meetings', () => {
|
|
634
662
|
it('return breakout is in progress depends on the status(groups/breakouts)', () => {
|
635
663
|
breakouts.set('groups', [{status: 'CLOSING'}]);
|
636
664
|
|
637
|
-
assert.equal(breakouts.isBreakoutInProgress(), true)
|
665
|
+
assert.equal(breakouts.isBreakoutInProgress(), true);
|
638
666
|
|
639
667
|
breakouts.set('groups', undefined);
|
640
668
|
breakouts.set('status', 'OPEN');
|
@@ -1107,7 +1135,7 @@ describe('plugin-meetings', () => {
|
|
1107
1135
|
someOtherParam: 'someOtherParam',
|
1108
1136
|
});
|
1109
1137
|
assert.deepEqual(result, {body: mockedReturnBody});
|
1110
|
-
assert.calledWithExactly(breakouts._setManageGroups, {body: mockedReturnBody})
|
1138
|
+
assert.calledWithExactly(breakouts._setManageGroups, {body: mockedReturnBody});
|
1111
1139
|
});
|
1112
1140
|
|
1113
1141
|
it('rejects when edit lock token mismatch', async () => {
|
@@ -1668,29 +1696,29 @@ describe('plugin-meetings', () => {
|
|
1668
1696
|
describe('#queryPreAssignments', () => {
|
1669
1697
|
it('makes the expected query', async () => {
|
1670
1698
|
const mockPreAssignments = [
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
},
|
1678
|
-
{
|
1679
|
-
name: 'Breakout session 2',
|
1680
|
-
anyoneCanJoin: false,
|
1681
|
-
},
|
1682
|
-
{
|
1683
|
-
name: 'Breakout session 3',
|
1684
|
-
assignedEmails: ['cc@cc.com'],
|
1685
|
-
anyoneCanJoin: false,
|
1686
|
-
},
|
1687
|
-
],
|
1688
|
-
unassignedInvitees: {
|
1689
|
-
emails: ['dd@dd.com'],
|
1699
|
+
{
|
1700
|
+
sessions: [
|
1701
|
+
{
|
1702
|
+
name: 'Breakout session 1',
|
1703
|
+
assignedEmails: ['aa@aa.com', 'bb@bb.com', 'cc@cc.com'],
|
1704
|
+
anyoneCanJoin: false,
|
1690
1705
|
},
|
1691
|
-
|
1706
|
+
{
|
1707
|
+
name: 'Breakout session 2',
|
1708
|
+
anyoneCanJoin: false,
|
1709
|
+
},
|
1710
|
+
{
|
1711
|
+
name: 'Breakout session 3',
|
1712
|
+
assignedEmails: ['cc@cc.com'],
|
1713
|
+
anyoneCanJoin: false,
|
1714
|
+
},
|
1715
|
+
],
|
1716
|
+
unassignedInvitees: {
|
1717
|
+
emails: ['dd@dd.com'],
|
1692
1718
|
},
|
1693
|
-
|
1719
|
+
type: 'BREAKOUT',
|
1720
|
+
},
|
1721
|
+
];
|
1694
1722
|
webex.request.returns(
|
1695
1723
|
Promise.resolve({
|
1696
1724
|
body: {
|
@@ -1705,7 +1733,7 @@ describe('plugin-meetings', () => {
|
|
1705
1733
|
uri: 'url/preassignments',
|
1706
1734
|
qs: {
|
1707
1735
|
locusUrl: 'dGVzdA==',
|
1708
|
-
}
|
1736
|
+
},
|
1709
1737
|
});
|
1710
1738
|
|
1711
1739
|
assert.deepEqual(breakouts.preAssignments, mockPreAssignments);
|
@@ -1721,7 +1749,10 @@ describe('plugin-meetings', () => {
|
|
1721
1749
|
};
|
1722
1750
|
webex.request.rejects(response);
|
1723
1751
|
LoggerProxy.logger.error = sinon.stub();
|
1724
|
-
const result = await breakouts.queryPreAssignments({
|
1752
|
+
const result = await breakouts.queryPreAssignments({
|
1753
|
+
enableBreakoutSession: true,
|
1754
|
+
hasBreakoutPreAssignments: true,
|
1755
|
+
});
|
1725
1756
|
await testUtils.flushPromises();
|
1726
1757
|
assert.calledOnceWithExactly(
|
1727
1758
|
LoggerProxy.logger.error,
|
@@ -1730,20 +1761,35 @@ describe('plugin-meetings', () => {
|
|
1730
1761
|
);
|
1731
1762
|
});
|
1732
1763
|
|
1733
|
-
it('fail when no correct params',
|
1734
|
-
|
1764
|
+
it('fail when no correct params', () => {
|
1735
1765
|
assert.deepEqual(breakouts.queryPreAssignments(undefined), undefined);
|
1736
1766
|
|
1737
1767
|
assert.deepEqual(breakouts.queryPreAssignments({}), undefined);
|
1738
1768
|
|
1739
|
-
assert.deepEqual(
|
1740
|
-
|
1741
|
-
|
1769
|
+
assert.deepEqual(
|
1770
|
+
breakouts.queryPreAssignments({
|
1771
|
+
enableBreakoutSession: true,
|
1772
|
+
hasBreakoutPreAssignments: false,
|
1773
|
+
}),
|
1774
|
+
undefined
|
1775
|
+
);
|
1742
1776
|
|
1743
|
-
assert.deepEqual(
|
1777
|
+
assert.deepEqual(
|
1778
|
+
breakouts.queryPreAssignments({
|
1779
|
+
enableBreakoutSession: false,
|
1780
|
+
hasBreakoutPreAssignments: true,
|
1781
|
+
}),
|
1782
|
+
undefined
|
1783
|
+
);
|
1744
1784
|
|
1785
|
+
assert.deepEqual(
|
1786
|
+
breakouts.queryPreAssignments({
|
1787
|
+
enableBreakoutSession: false,
|
1788
|
+
hasBreakoutPreAssignments: false,
|
1789
|
+
}),
|
1790
|
+
undefined
|
1791
|
+
);
|
1745
1792
|
});
|
1746
|
-
|
1747
1793
|
});
|
1748
1794
|
|
1749
1795
|
describe('#dynamicAssign', () => {
|
@@ -1775,6 +1821,32 @@ describe('plugin-meetings', () => {
|
|
1775
1821
|
});
|
1776
1822
|
});
|
1777
1823
|
|
1824
|
+
describe('#moveToLobby', () => {
|
1825
|
+
it('should make a PUT request with correct body and return the result', async () => {
|
1826
|
+
breakouts.moveToLobby = sinon.stub().returns(Promise.resolve('REQUEST_RETURN_VALUE'));
|
1827
|
+
|
1828
|
+
const expectedBody = {
|
1829
|
+
groups: [
|
1830
|
+
{
|
1831
|
+
id: 'mainGroupId',
|
1832
|
+
sessions: [
|
1833
|
+
{
|
1834
|
+
id: 'mainSessionId',
|
1835
|
+
participants: ['participant1'],
|
1836
|
+
targetState: 'LOBBY',
|
1837
|
+
},
|
1838
|
+
],
|
1839
|
+
},
|
1840
|
+
],
|
1841
|
+
};
|
1842
|
+
|
1843
|
+
const result = await breakouts.moveToLobby(expectedBody);
|
1844
|
+
|
1845
|
+
assert.calledOnceWithExactly(breakouts.moveToLobby, expectedBody);
|
1846
|
+
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
1847
|
+
});
|
1848
|
+
});
|
1849
|
+
|
1778
1850
|
describe('#triggerReturnToMainEvent', () => {
|
1779
1851
|
const checkTrigger = ({breakout, shouldTrigger}) => {
|
1780
1852
|
breakouts.trigger = sinon.stub();
|
@@ -1784,19 +1856,19 @@ describe('plugin-meetings', () => {
|
|
1784
1856
|
} else {
|
1785
1857
|
assert.notCalled(breakouts.trigger);
|
1786
1858
|
}
|
1787
|
-
}
|
1859
|
+
};
|
1788
1860
|
it('should trigger ASK_RETURN_TO_MAIN event correctly', () => {
|
1789
1861
|
const breakout = {
|
1790
1862
|
isMain: true,
|
1791
|
-
requested: true
|
1863
|
+
requested: true,
|
1792
1864
|
};
|
1793
|
-
checkTrigger({breakout, shouldTrigger: true})
|
1865
|
+
checkTrigger({breakout, shouldTrigger: true});
|
1794
1866
|
});
|
1795
1867
|
|
1796
1868
|
it('should not trigger ASK_RETURN_TO_MAIN event when sessionType is not MAIN', () => {
|
1797
1869
|
const breakout = {
|
1798
1870
|
isMain: false,
|
1799
|
-
requested: true
|
1871
|
+
requested: true,
|
1800
1872
|
};
|
1801
1873
|
checkTrigger({breakout, shouldTrigger: false});
|
1802
1874
|
});
|
@@ -1804,9 +1876,9 @@ describe('plugin-meetings', () => {
|
|
1804
1876
|
it('should not trigger ASK_RETURN_TO_MAIN event when session is not requested', () => {
|
1805
1877
|
const breakout = {
|
1806
1878
|
isMain: true,
|
1807
|
-
requested: false
|
1879
|
+
requested: false,
|
1808
1880
|
};
|
1809
|
-
checkTrigger({breakout, shouldTrigger: false})
|
1881
|
+
checkTrigger({breakout, shouldTrigger: false});
|
1810
1882
|
});
|
1811
1883
|
});
|
1812
1884
|
});
|