@webex/plugin-meetings 3.0.0-beta.70 → 3.0.0-beta.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 +38 -7
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +11 -7
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/locus-info/index.js +5 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +17 -12
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/meeting/index.js +3 -1
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +14 -10
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +5 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/types/breakouts/utils.d.ts +2 -2
- package/dist/types/config.d.ts +1 -0
- package/dist/types/locus-info/index.d.ts +1 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +2 -1
- package/package.json +18 -18
- package/src/breakouts/index.ts +34 -13
- package/src/breakouts/utils.ts +11 -6
- package/src/config.ts +1 -0
- package/src/locus-info/index.ts +7 -2
- package/src/locus-info/selfUtils.ts +6 -4
- package/src/meeting/index.ts +3 -1
- package/src/meeting-info/meeting-info-v2.ts +9 -2
- package/src/meeting-info/utilv2.ts +5 -1
- package/test/unit/spec/breakouts/index.ts +138 -5
- package/test/unit/spec/breakouts/utils.js +8 -1
- package/test/unit/spec/locus-info/index.js +31 -2
- package/test/unit/spec/locus-info/selfUtils.js +28 -2
- package/test/unit/spec/meeting/index.js +4 -1
- package/test/unit/spec/meeting-info/meetinginfov2.js +27 -0
package/dist/breakouts/index.js
CHANGED
|
@@ -449,7 +449,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
449
449
|
uri: _this7.url,
|
|
450
450
|
body: body
|
|
451
451
|
}).catch(function (error) {
|
|
452
|
-
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create
|
|
452
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
|
|
453
453
|
});
|
|
454
454
|
case 3:
|
|
455
455
|
breakInfo = _context2.sent;
|
|
@@ -494,7 +494,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
494
494
|
uri: _this8.url,
|
|
495
495
|
body: body
|
|
496
496
|
}).catch(function (error) {
|
|
497
|
-
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions
|
|
497
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions'));
|
|
498
498
|
});
|
|
499
499
|
case 3:
|
|
500
500
|
breakInfo = _context3.sent;
|
|
@@ -538,7 +538,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
538
538
|
uri: this.url,
|
|
539
539
|
body: body
|
|
540
540
|
}).catch(function (error) {
|
|
541
|
-
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start
|
|
541
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start'));
|
|
542
542
|
});
|
|
543
543
|
},
|
|
544
544
|
/**
|
|
@@ -569,7 +569,35 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
569
569
|
uri: this.url,
|
|
570
570
|
body: body
|
|
571
571
|
}).catch(function (error) {
|
|
572
|
-
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end
|
|
572
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end'));
|
|
573
|
+
});
|
|
574
|
+
},
|
|
575
|
+
/**
|
|
576
|
+
* Host or cohost update breakout sessions
|
|
577
|
+
* @param {Object} params
|
|
578
|
+
* @param {String} params.id
|
|
579
|
+
* @returns {Promise}
|
|
580
|
+
*/
|
|
581
|
+
update: function update(params) {
|
|
582
|
+
var _this$editLock;
|
|
583
|
+
if (!params.id) {
|
|
584
|
+
return _promise.default.reject(new Error('Missing breakout group id'));
|
|
585
|
+
}
|
|
586
|
+
var payload = _objectSpread({}, params);
|
|
587
|
+
var body = _objectSpread(_objectSpread({}, (_this$editLock = this.editLock) !== null && _this$editLock !== void 0 && _this$editLock.token ? {
|
|
588
|
+
editlock: {
|
|
589
|
+
token: this.editLock.token,
|
|
590
|
+
refresh: true
|
|
591
|
+
}
|
|
592
|
+
} : {}), {
|
|
593
|
+
groups: [payload]
|
|
594
|
+
});
|
|
595
|
+
return this.request({
|
|
596
|
+
method: _constants.HTTP_VERBS.PUT,
|
|
597
|
+
uri: this.url,
|
|
598
|
+
body: body
|
|
599
|
+
}).catch(function (error) {
|
|
600
|
+
return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#update'));
|
|
573
601
|
});
|
|
574
602
|
},
|
|
575
603
|
/**
|
|
@@ -580,7 +608,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
580
608
|
getBreakout: function getBreakout(editlock) {
|
|
581
609
|
var _this9 = this;
|
|
582
610
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
583
|
-
var _breakout$body, _breakout$body2;
|
|
611
|
+
var _breakout$body, _breakout$body2, _breakout$body2$editl;
|
|
584
612
|
var breakout;
|
|
585
613
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
586
614
|
while (1) switch (_context4.prev = _context4.next) {
|
|
@@ -595,7 +623,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
595
623
|
if ((_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && _breakout$body.groups) {
|
|
596
624
|
_this9.set('groups', breakout.body.groups);
|
|
597
625
|
}
|
|
598
|
-
if ((_breakout$body2 = breakout.body) !== null && _breakout$body2 !== void 0 && _breakout$body2.editlock &&
|
|
626
|
+
if (editlock && (_breakout$body2 = breakout.body) !== null && _breakout$body2 !== void 0 && (_breakout$body2$editl = _breakout$body2.editlock) !== null && _breakout$body2$editl !== void 0 && _breakout$body2$editl.token) {
|
|
599
627
|
_this9.set('editLock', breakout.body.editlock);
|
|
600
628
|
_this9.keepEditLockAlive();
|
|
601
629
|
}
|
|
@@ -688,6 +716,9 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
688
716
|
var _this12 = this;
|
|
689
717
|
if (this.editLock && !!this.editLock.token) {
|
|
690
718
|
var ttl = this.editLock.ttl < 30 ? _constants.BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
|
|
719
|
+
if (this.intervalID) {
|
|
720
|
+
window.clearInterval(this.intervalID);
|
|
721
|
+
}
|
|
691
722
|
this.intervalID = window.setInterval(function () {
|
|
692
723
|
_this12.request({
|
|
693
724
|
method: _constants.HTTP_VERBS.PUT,
|
|
@@ -805,7 +836,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
805
836
|
body: body
|
|
806
837
|
});
|
|
807
838
|
},
|
|
808
|
-
version: "3.0.0-beta.
|
|
839
|
+
version: "3.0.0-beta.72"
|
|
809
840
|
});
|
|
810
841
|
var _default = Breakouts;
|
|
811
842
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["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","shouldFetchPreassignments","editLock","intervalID","meetingId","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","isActiveBreakout","BREAKOUT","STATUS","OPEN","CLOSING","breakoutGroupId","length","id","initialize","listenTo","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","preEnableBreakoutSession","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","queryPreAssignments","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","dynamicAssign","updatedSessions","participants","targetState"],"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 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 shouldFetchPreassignments: 'boolean', // Controlling the lifecycle of the pre-assign API\n editLock: 'object', // appears when getBreakout info editlock = true\n intervalID: 'number',\n meetingId: 'string',\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 isActiveBreakout: {\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 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 const preEnableBreakoutSession = this.get('enableBreakoutSession');\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 // We need to call queryPreAssignments when enableBreakoutSession become true\n if (\n params.enableBreakoutSession &&\n params.hasBreakoutPreAssignments &&\n preEnableBreakoutSession !== params.enableBreakoutSession\n ) {\n this.queryPreAssignments();\n }\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n /**\n * 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 this.shouldFetchPreassignments = false;\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 /**\n * The pre-assignments need to be queried when \"hasBreakoutPreAssignments\" is true\n * @returns {void}\n */\n queryPreAssignments() {\n if (!this.shouldFetchPreassignments) {\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('groups', result.body.groups);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryPreAssignments failed', error);\n });\n this.shouldFetchPreassignments = true;\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\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","hasBreakoutPreAssignments","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","shouldFetchPreassignments","editLock","intervalID","meetingId","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","isActiveBreakout","BREAKOUT","STATUS","OPEN","CLOSING","breakoutGroupId","length","id","initialize","listenTo","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","preEnableBreakoutSession","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","queryPreAssignments","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","update","getBreakout","GET","keepEditLockAlive","enableAndLockBreakout","lockBreakout","EDIT_LOCK_STATUS","LOCKED","ttl","DEFAULT_TTL","window","clearInterval","setInterval","unLockEditBreakout","assign","internalSessions","map","item","assigned","memberIds","assignedEmails","emails","anyoneCanJoin","anyone","dynamicAssign","updatedSessions","participants","targetState"],"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 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 shouldFetchPreassignments: 'boolean', // Controlling the lifecycle of the pre-assign API\n editLock: 'object', // appears when getBreakout info editlock = true\n intervalID: 'number',\n meetingId: 'string',\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 isActiveBreakout: {\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 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 const preEnableBreakoutSession = this.get('enableBreakoutSession');\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 // We need to call queryPreAssignments when enableBreakoutSession become true\n if (\n params.enableBreakoutSession &&\n params.hasBreakoutPreAssignments &&\n preEnableBreakoutSession !== params.enableBreakoutSession\n ) {\n this.queryPreAssignments();\n }\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n /**\n * 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(boServiceErrorHandler(error, 'Breakouts#create'));\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(boServiceErrorHandler(error, 'Breakouts#clearSessions'));\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n this.shouldFetchPreassignments = false;\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(boServiceErrorHandler(error, 'Breakouts#start'));\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(boServiceErrorHandler(error, 'Breakouts#end'));\n });\n },\n\n /**\n * Host or cohost update breakout sessions\n * @param {Object} params\n * @param {String} params.id\n * @returns {Promise}\n */\n update(params: {id: string}) {\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 ? {editlock: {token: this.editLock.token, refresh: true}} : {}),\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(boServiceErrorHandler(error, 'Breakouts#update'));\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 (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 * 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 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 /**\n * The pre-assignments need to be queried when \"hasBreakoutPreAssignments\" is true\n * @returns {void}\n */\n queryPreAssignments() {\n if (!this.shouldFetchPreassignments) {\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('groups', result.body.groups);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryPreAssignments failed', error);\n });\n this.shouldFetchPreassignments = true;\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\nexport default Breakouts;\n"],"mappings":"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"}
|
package/dist/breakouts/utils.js
CHANGED
|
@@ -28,25 +28,29 @@ var getBroadcastRoles = function getBroadcastRoles(options) {
|
|
|
28
28
|
/**
|
|
29
29
|
* Deals with all kinds of errors of breakout service
|
|
30
30
|
* @param {object} error // one of the breakout service error
|
|
31
|
-
* @param {string}
|
|
31
|
+
* @param {string} position // position of the error occur
|
|
32
32
|
* @returns {object}
|
|
33
33
|
*/
|
|
34
34
|
exports.getBroadcastRoles = getBroadcastRoles;
|
|
35
|
-
var boServiceErrorHandler = function boServiceErrorHandler(error,
|
|
36
|
-
var _error$body;
|
|
35
|
+
var boServiceErrorHandler = function boServiceErrorHandler(error, position) {
|
|
36
|
+
var _error$body, _throwError;
|
|
37
37
|
var errorCode = error === null || error === void 0 ? void 0 : (_error$body = error.body) === null || _error$body === void 0 ? void 0 : _error$body.errorCode;
|
|
38
38
|
var _BREAKOUTS$ERROR_CODE = _constants.BREAKOUTS.ERROR_CODE,
|
|
39
39
|
EDIT_LOCK_TOKEN_MISMATCH = _BREAKOUTS$ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH,
|
|
40
40
|
EDIT_NOT_AUTHORIZED = _BREAKOUTS$ERROR_CODE.EDIT_NOT_AUTHORIZED;
|
|
41
|
-
|
|
41
|
+
var throwError;
|
|
42
42
|
switch (errorCode) {
|
|
43
43
|
case EDIT_LOCK_TOKEN_MISMATCH:
|
|
44
|
-
|
|
44
|
+
throwError = new _editLockError.default('Edit lock token mismatch', error);
|
|
45
|
+
break;
|
|
45
46
|
case EDIT_NOT_AUTHORIZED:
|
|
46
|
-
|
|
47
|
+
throwError = new _editLockError.default('Not authorized to interact with edit lock', error);
|
|
48
|
+
break;
|
|
47
49
|
default:
|
|
48
|
-
|
|
50
|
+
throwError = error;
|
|
49
51
|
}
|
|
52
|
+
_loggerProxy.default.logger.info("".concat(position, " --> ").concat((_throwError = throwError) === null || _throwError === void 0 ? void 0 : _throwError.message));
|
|
53
|
+
return throwError;
|
|
50
54
|
};
|
|
51
55
|
exports.boServiceErrorHandler = boServiceErrorHandler;
|
|
52
56
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getBroadcastRoles","options","recipientRoles","cohosts","presenters","push","boServiceErrorHandler","error","
|
|
1
|
+
{"version":3,"names":["getBroadcastRoles","options","recipientRoles","cohosts","presenters","push","boServiceErrorHandler","error","position","errorCode","body","BREAKOUTS","ERROR_CODE","EDIT_LOCK_TOKEN_MISMATCH","EDIT_NOT_AUTHORIZED","throwError","BreakoutEditLockedError","LoggerProxy","logger","info","message"],"sources":["utils.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport BreakoutEditLockedError from './edit-lock-error';\nimport {BREAKOUTS} from '../constants';\n\nexport const getBroadcastRoles = (options): string[] => {\n const recipientRoles = [];\n if (!options || (!options.cohosts && !options.presenters)) {\n return recipientRoles;\n }\n if (options.cohosts) {\n recipientRoles.push('COHOST');\n }\n if (options.presenters) {\n recipientRoles.push('PRESENTER');\n }\n\n return recipientRoles;\n};\n\n/**\n * Deals with all kinds of errors of breakout service\n * @param {object} error // one of the breakout service error\n * @param {string} position // position of the error occur\n * @returns {object}\n */\nexport const boServiceErrorHandler = (error: any, position: string): any => {\n const errorCode = error?.body?.errorCode;\n const {EDIT_LOCK_TOKEN_MISMATCH, EDIT_NOT_AUTHORIZED} = BREAKOUTS.ERROR_CODE;\n let throwError;\n switch (errorCode) {\n case EDIT_LOCK_TOKEN_MISMATCH:\n throwError = new BreakoutEditLockedError('Edit lock token mismatch', error);\n break;\n case EDIT_NOT_AUTHORIZED:\n throwError = new BreakoutEditLockedError('Not authorized to interact with edit lock', error);\n break;\n default:\n throwError = error;\n }\n LoggerProxy.logger.info(`${position} --> ${throwError?.message}`);\n\n return throwError;\n};\n"],"mappings":";;;;;;;;AACA;AACA;AACA;AAHA;;AAKO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIC,OAAO,EAAe;EACtD,IAAMC,cAAc,GAAG,EAAE;EACzB,IAAI,CAACD,OAAO,IAAK,CAACA,OAAO,CAACE,OAAO,IAAI,CAACF,OAAO,CAACG,UAAW,EAAE;IACzD,OAAOF,cAAc;EACvB;EACA,IAAID,OAAO,CAACE,OAAO,EAAE;IACnBD,cAAc,CAACG,IAAI,CAAC,QAAQ,CAAC;EAC/B;EACA,IAAIJ,OAAO,CAACG,UAAU,EAAE;IACtBF,cAAc,CAACG,IAAI,CAAC,WAAW,CAAC;EAClC;EAEA,OAAOH,cAAc;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMO,IAAMI,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAU,EAAEC,QAAgB,EAAU;EAAA;EAC1E,IAAMC,SAAS,GAAGF,KAAK,aAALA,KAAK,sCAALA,KAAK,CAAEG,IAAI,gDAAX,YAAaD,SAAS;EACxC,4BAAwDE,oBAAS,CAACC,UAAU;IAArEC,wBAAwB,yBAAxBA,wBAAwB;IAAEC,mBAAmB,yBAAnBA,mBAAmB;EACpD,IAAIC,UAAU;EACd,QAAQN,SAAS;IACf,KAAKI,wBAAwB;MAC3BE,UAAU,GAAG,IAAIC,sBAAuB,CAAC,0BAA0B,EAAET,KAAK,CAAC;MAC3E;IACF,KAAKO,mBAAmB;MACtBC,UAAU,GAAG,IAAIC,sBAAuB,CAAC,2CAA2C,EAAET,KAAK,CAAC;MAC5F;IACF;MACEQ,UAAU,GAAGR,KAAK;EAAC;EAEvBU,oBAAW,CAACC,MAAM,CAACC,IAAI,WAAIX,QAAQ,iCAAQO,UAAU,gDAAV,YAAYK,OAAO,EAAG;EAEjE,OAAOL,UAAU;AACnB,CAAC;AAAC"}
|
package/dist/config.js
CHANGED
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["meetings","deviceType","WEB","mediaSettings","sendAudio","sendVideo","receiveAudio","receiveVideo","pstn","sendShare","receiveShare","reconnection","enabled","autoRejoin","detection","iceReconnectionTimeout","maxRejoinAttempts","stats","enableStatsAnalyzer","autoDowngradeEnabled","interval","analyzerInterval","historyMax","videoPacketLossRatioThreshold","rttThreshold","jitterThreshold","metrics","clientName","clientType","subClientType","mqaMetricsInterval","autoSendMQA","logging","enable","verboseEvents","resolution","maxWidth","maxHeight","idealWidth","idealHeight","screenResolution","bandwidth","audio","video","startBitrate","screenFrameRate","videoShareFrameRate","aspectRatio","autoUploadLogs","enableRtx","receiveTranscription","enableExtmap","enableAutomaticLLM","experimental","enableMediaNegotiatedEvent","enableUnifiedMeetings","enableAdhocMeetings","enableTurnDiscovery","degradationPreferences","maxMacroblocksLimit"],"sources":["config.ts"],"sourcesContent":["import {\n // @ts-ignore\n deviceType,\n} from '@webex/common';\n\nexport default {\n // TODO: this needs to be defaulted\n // to JS_SDK and clients set it to WEB or others\n // see https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-73167\n meetings: {\n deviceType: deviceType.WEB,\n mediaSettings: {\n sendAudio: true,\n sendVideo: true,\n receiveAudio: true,\n receiveVideo: true,\n pstn: false,\n sendShare: false,\n receiveShare: false,\n },\n reconnection: {\n enabled: false,\n autoRejoin: true,\n detection: true,\n // Timeout duration to wait for ICE to reconnect if a disconnect is received.\n iceReconnectionTimeout: 10000,\n // Amount of times attempting to rejoin a meeting during reconnect\n maxRejoinAttempts: 3,\n },\n stats: {\n // Enable the webrtc stats analyzer that emits quality degradation events\n enableStatsAnalyzer: true,\n // Enable the auto downgrade video quality feature\n autoDowngradeEnabled: false,\n // 1 second intervals to collect stats data\n interval: 1000,\n // we just want to analyze data every 5 sec interval\n analyzerInterval: 5000,\n // hold the last 2 minute of a calls data\n historyMax: 120,\n // Once packet loss hits this ratio, the video will downgrade\n videoPacketLossRatioThreshold: 9, // comparison of packets lost / packets received\n rttThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n jitterThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n },\n metrics: {\n // change to your client name else data will be muddled\n // you do not need a specific format, and you do not need to register it\n clientName: 'WEBEX_JS_SDK',\n // TODO: for now this line has to be whitelisted, which is problematic for third party\n clientType: 'WEBEX_SDK',\n // Stores the sub client type used when sending metrics\n subClientType: 'WEB_APP',\n // send average values MQA in 60 second intervals\n mqaMetricsInterval: 60000,\n // send to cisco internal MQA data automatically\n // we already send CA\n autoSendMQA: true,\n },\n logging: {\n enable: true,\n verboseEvents: true,\n },\n resolution: {\n maxWidth: 1280,\n maxHeight: 720,\n idealWidth: 1280,\n idealHeight: 720,\n },\n screenResolution: {\n maxWidth: 1920,\n maxHeight: 1080,\n idealWidth: 1920,\n idealHeight: 1080,\n },\n bandwidth: {\n // please note, these are the maximum bandwidth values\n // the server supports, minimums have to be tested\n audio: 64000,\n video: 4000000,\n startBitrate: 2000,\n },\n screenFrameRate: 10,\n videoShareFrameRate: 30,\n aspectRatio: 1.7695852534562213,\n // When enabled, as calls are ended, it will upload the SDK logs and correlate them\n autoUploadLogs: true,\n enableRtx: true,\n receiveTranscription: false,\n enableExtmap: false,\n enableAutomaticLLM: false,\n experimental: {\n enableMediaNegotiatedEvent: false,\n enableUnifiedMeetings: false,\n enableAdhocMeetings: false,\n enableTurnDiscovery: true,\n },\n degradationPreferences: {\n maxMacroblocksLimit: 8192,\n },\n },\n};\n"],"mappings":";;;;;;;AAAA;AAGuB,eAER;EACb;EACA;EACA;EACAA,QAAQ,EAAE;IACRC,UAAU,EAAEA,kBAAU,CAACC,GAAG;IAC1BC,aAAa,EAAE;MACbC,SAAS,EAAE,IAAI;MACfC,SAAS,EAAE,IAAI;MACfC,YAAY,EAAE,IAAI;MAClBC,YAAY,EAAE,IAAI;MAClBC,IAAI,EAAE,KAAK;MACXC,SAAS,EAAE,KAAK;MAChBC,YAAY,EAAE;IAChB,CAAC;IACDC,YAAY,EAAE;MACZC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,IAAI;MAChBC,SAAS,EAAE,IAAI;MACf;MACAC,sBAAsB,EAAE,KAAK;MAC7B;MACAC,iBAAiB,EAAE;IACrB,CAAC;IACDC,KAAK,EAAE;MACL;MACAC,mBAAmB,EAAE,IAAI;MACzB;MACAC,oBAAoB,EAAE,KAAK;MAC3B;MACAC,QAAQ,EAAE,IAAI;MACd;MACAC,gBAAgB,EAAE,IAAI;MACtB;MACAC,UAAU,EAAE,GAAG;MACf;MACAC,6BAA6B,EAAE,CAAC;MAAE;MAClCC,YAAY,EAAE,GAAG;MAAE;MACnBC,eAAe,EAAE,GAAG,CAAE;IACxB,CAAC;;IACDC,OAAO,EAAE;MACP;MACA;MACAC,UAAU,EAAE,cAAc;MAC1B;MACAC,UAAU,EAAE,WAAW;MACvB;MACAC,aAAa,EAAE,SAAS;MACxB;MACAC,kBAAkB,EAAE,KAAK;MACzB;MACA;MACAC,WAAW,EAAE;IACf,CAAC;IACDC,OAAO,EAAE;MACPC,MAAM,EAAE,IAAI;MACZC,aAAa,EAAE;IACjB,CAAC;IACDC,UAAU,EAAE;MACVC,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,GAAG;MACdC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDC,gBAAgB,EAAE;MAChBJ,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,IAAI;MACfC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDE,SAAS,EAAE;MACT;MACA;MACAC,KAAK,EAAE,KAAK;MACZC,KAAK,EAAE,OAAO;MACdC,YAAY,EAAE;IAChB,CAAC;IACDC,eAAe,EAAE,EAAE;IACnBC,mBAAmB,EAAE,EAAE;IACvBC,WAAW,EAAE,kBAAkB;IAC/B;IACAC,cAAc,EAAE,IAAI;IACpBC,SAAS,EAAE,IAAI;IACfC,oBAAoB,EAAE,KAAK;IAC3BC,YAAY,EAAE,KAAK;IACnBC,kBAAkB,EAAE,KAAK;IACzBC,YAAY,EAAE;MACZC,0BAA0B,EAAE,KAAK;MACjCC,qBAAqB,EAAE,KAAK;MAC5BC,mBAAmB,EAAE,KAAK;MAC1BC,mBAAmB,EAAE;IACvB,CAAC;IACDC,sBAAsB,EAAE;MACtBC,mBAAmB,EAAE;IACvB;EACF;AACF,CAAC;AAAA"}
|
|
1
|
+
{"version":3,"names":["meetings","deviceType","WEB","mediaSettings","sendAudio","sendVideo","receiveAudio","receiveVideo","pstn","sendShare","receiveShare","reconnection","enabled","autoRejoin","detection","iceReconnectionTimeout","maxRejoinAttempts","stats","enableStatsAnalyzer","autoDowngradeEnabled","interval","analyzerInterval","historyMax","videoPacketLossRatioThreshold","rttThreshold","jitterThreshold","metrics","clientName","clientType","subClientType","mqaMetricsInterval","autoSendMQA","logging","enable","verboseEvents","resolution","maxWidth","maxHeight","idealWidth","idealHeight","screenResolution","bandwidth","audio","video","startBitrate","screenFrameRate","videoShareFrameRate","aspectRatio","autoUploadLogs","enableRtx","receiveTranscription","enableExtmap","enableAutomaticLLM","installedOrgID","undefined","experimental","enableMediaNegotiatedEvent","enableUnifiedMeetings","enableAdhocMeetings","enableTurnDiscovery","degradationPreferences","maxMacroblocksLimit"],"sources":["config.ts"],"sourcesContent":["import {\n // @ts-ignore\n deviceType,\n} from '@webex/common';\n\nexport default {\n // TODO: this needs to be defaulted\n // to JS_SDK and clients set it to WEB or others\n // see https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-73167\n meetings: {\n deviceType: deviceType.WEB,\n mediaSettings: {\n sendAudio: true,\n sendVideo: true,\n receiveAudio: true,\n receiveVideo: true,\n pstn: false,\n sendShare: false,\n receiveShare: false,\n },\n reconnection: {\n enabled: false,\n autoRejoin: true,\n detection: true,\n // Timeout duration to wait for ICE to reconnect if a disconnect is received.\n iceReconnectionTimeout: 10000,\n // Amount of times attempting to rejoin a meeting during reconnect\n maxRejoinAttempts: 3,\n },\n stats: {\n // Enable the webrtc stats analyzer that emits quality degradation events\n enableStatsAnalyzer: true,\n // Enable the auto downgrade video quality feature\n autoDowngradeEnabled: false,\n // 1 second intervals to collect stats data\n interval: 1000,\n // we just want to analyze data every 5 sec interval\n analyzerInterval: 5000,\n // hold the last 2 minute of a calls data\n historyMax: 120,\n // Once packet loss hits this ratio, the video will downgrade\n videoPacketLossRatioThreshold: 9, // comparison of packets lost / packets received\n rttThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n jitterThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n },\n metrics: {\n // change to your client name else data will be muddled\n // you do not need a specific format, and you do not need to register it\n clientName: 'WEBEX_JS_SDK',\n // TODO: for now this line has to be whitelisted, which is problematic for third party\n clientType: 'WEBEX_SDK',\n // Stores the sub client type used when sending metrics\n subClientType: 'WEB_APP',\n // send average values MQA in 60 second intervals\n mqaMetricsInterval: 60000,\n // send to cisco internal MQA data automatically\n // we already send CA\n autoSendMQA: true,\n },\n logging: {\n enable: true,\n verboseEvents: true,\n },\n resolution: {\n maxWidth: 1280,\n maxHeight: 720,\n idealWidth: 1280,\n idealHeight: 720,\n },\n screenResolution: {\n maxWidth: 1920,\n maxHeight: 1080,\n idealWidth: 1920,\n idealHeight: 1080,\n },\n bandwidth: {\n // please note, these are the maximum bandwidth values\n // the server supports, minimums have to be tested\n audio: 64000,\n video: 4000000,\n startBitrate: 2000,\n },\n screenFrameRate: 10,\n videoShareFrameRate: 30,\n aspectRatio: 1.7695852534562213,\n // When enabled, as calls are ended, it will upload the SDK logs and correlate them\n autoUploadLogs: true,\n enableRtx: true,\n receiveTranscription: false,\n enableExtmap: false,\n enableAutomaticLLM: false,\n installedOrgID: undefined,\n experimental: {\n enableMediaNegotiatedEvent: false,\n enableUnifiedMeetings: false,\n enableAdhocMeetings: false,\n enableTurnDiscovery: true,\n },\n degradationPreferences: {\n maxMacroblocksLimit: 8192,\n },\n },\n};\n"],"mappings":";;;;;;;AAAA;AAGuB,eAER;EACb;EACA;EACA;EACAA,QAAQ,EAAE;IACRC,UAAU,EAAEA,kBAAU,CAACC,GAAG;IAC1BC,aAAa,EAAE;MACbC,SAAS,EAAE,IAAI;MACfC,SAAS,EAAE,IAAI;MACfC,YAAY,EAAE,IAAI;MAClBC,YAAY,EAAE,IAAI;MAClBC,IAAI,EAAE,KAAK;MACXC,SAAS,EAAE,KAAK;MAChBC,YAAY,EAAE;IAChB,CAAC;IACDC,YAAY,EAAE;MACZC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,IAAI;MAChBC,SAAS,EAAE,IAAI;MACf;MACAC,sBAAsB,EAAE,KAAK;MAC7B;MACAC,iBAAiB,EAAE;IACrB,CAAC;IACDC,KAAK,EAAE;MACL;MACAC,mBAAmB,EAAE,IAAI;MACzB;MACAC,oBAAoB,EAAE,KAAK;MAC3B;MACAC,QAAQ,EAAE,IAAI;MACd;MACAC,gBAAgB,EAAE,IAAI;MACtB;MACAC,UAAU,EAAE,GAAG;MACf;MACAC,6BAA6B,EAAE,CAAC;MAAE;MAClCC,YAAY,EAAE,GAAG;MAAE;MACnBC,eAAe,EAAE,GAAG,CAAE;IACxB,CAAC;;IACDC,OAAO,EAAE;MACP;MACA;MACAC,UAAU,EAAE,cAAc;MAC1B;MACAC,UAAU,EAAE,WAAW;MACvB;MACAC,aAAa,EAAE,SAAS;MACxB;MACAC,kBAAkB,EAAE,KAAK;MACzB;MACA;MACAC,WAAW,EAAE;IACf,CAAC;IACDC,OAAO,EAAE;MACPC,MAAM,EAAE,IAAI;MACZC,aAAa,EAAE;IACjB,CAAC;IACDC,UAAU,EAAE;MACVC,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,GAAG;MACdC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDC,gBAAgB,EAAE;MAChBJ,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,IAAI;MACfC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDE,SAAS,EAAE;MACT;MACA;MACAC,KAAK,EAAE,KAAK;MACZC,KAAK,EAAE,OAAO;MACdC,YAAY,EAAE;IAChB,CAAC;IACDC,eAAe,EAAE,EAAE;IACnBC,mBAAmB,EAAE,EAAE;IACvBC,WAAW,EAAE,kBAAkB;IAC/B;IACAC,cAAc,EAAE,IAAI;IACpBC,SAAS,EAAE,IAAI;IACfC,oBAAoB,EAAE,KAAK;IAC3BC,YAAY,EAAE,KAAK;IACnBC,kBAAkB,EAAE,KAAK;IACzBC,cAAc,EAAEC,SAAS;IACzBC,YAAY,EAAE;MACZC,0BAA0B,EAAE,KAAK;MACjCC,qBAAqB,EAAE,KAAK;MAC5BC,mBAAmB,EAAE,KAAK;MAC1BC,mBAAmB,EAAE;IACvB,CAAC;IACDC,sBAAsB,EAAE;MACtBC,mBAAmB,EAAE;IACvB;EACF;AACF,CAAC;AAAA"}
|
package/dist/locus-info/index.js
CHANGED
|
@@ -75,6 +75,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
|
|
|
75
75
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fullState", void 0);
|
|
76
76
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "host", void 0);
|
|
77
77
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "info", void 0);
|
|
78
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "roles", void 0);
|
|
78
79
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaShares", void 0);
|
|
79
80
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "replace", void 0);
|
|
80
81
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "url", void 0);
|
|
@@ -867,9 +868,9 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
|
|
|
867
868
|
}, {
|
|
868
869
|
key: "updateMeetingInfo",
|
|
869
870
|
value: function updateMeetingInfo(info, self) {
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
871
|
+
var _this$parsedLocus$sel;
|
|
872
|
+
var roles = self ? _selfUtils.default.getRoles(self) : ((_this$parsedLocus$sel = this.parsedLocus.self) === null || _this$parsedLocus$sel === void 0 ? void 0 : _this$parsedLocus$sel.roles) || [];
|
|
873
|
+
if (info && !(0, _isEqual2.default)(this.info, info) || roles.length && !(0, _isEqual2.default)(this.roles, roles) && info) {
|
|
873
874
|
var isJoined = _selfUtils.default.isJoined(self || this.parsedLocus.self);
|
|
874
875
|
var parsedInfo = _infoUtils.default.getInfos(this.parsedLocus.info, info, roles, isJoined);
|
|
875
876
|
this.emitScoped({
|
|
@@ -896,6 +897,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
|
|
|
896
897
|
// Parses the info and adds necessary values
|
|
897
898
|
this.updateMeeting(parsedInfo.current);
|
|
898
899
|
}
|
|
900
|
+
this.roles = roles;
|
|
899
901
|
}
|
|
900
902
|
|
|
901
903
|
/**
|