@webex/plugin-meetings 3.0.0-beta.92 → 3.0.0-beta.94

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.
@@ -13,8 +13,7 @@ var _uuid = _interopRequireDefault(require("uuid"));
13
13
  var _constants = require("../constants");
14
14
  var _members = _interopRequireDefault(require("../members"));
15
15
  var _request = _interopRequireDefault(require("./request"));
16
- var _metrics = _interopRequireDefault(require("../metrics"));
17
- var _config = require("../metrics/config");
16
+ var _events = _interopRequireDefault(require("./events"));
18
17
  /*!
19
18
  * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
20
19
  */
@@ -76,43 +75,39 @@ var Breakout = _webexCore.WebexPlugin.extend({
76
75
  join: function join() {
77
76
  var _this = this;
78
77
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
79
- var breakoutMoveId, meetingId, result;
78
+ var breakoutMoveId, deviceUrl, meetingId, meeting, result;
80
79
  return _regenerator.default.wrap(function _callee$(_context) {
81
80
  while (1) switch (_context.prev = _context.next) {
82
81
  case 0:
83
82
  breakoutMoveId = _uuid.default.v4();
83
+ deviceUrl = _this.webex.internal.device.url;
84
84
  meetingId = _this.collection.parent.meetingId;
85
- _metrics.default.postEvent({
86
- event: _config.eventType.MOVE_TO_BREAKOUT,
87
- meetingId: meetingId,
88
- data: {
89
- breakoutMoveId: breakoutMoveId,
90
- breakoutSessionId: _this.sessionId,
91
- breakoutGroupId: _this.groupId
92
- }
85
+ meeting = _this.webex.meetings.getMeetingByType(_constants._ID_, meetingId);
86
+ _events.default.onBreakoutMoveRequest({
87
+ currentSession: _this,
88
+ meeting: meeting,
89
+ breakoutMoveId: breakoutMoveId
93
90
  });
94
- _context.next = 5;
91
+ _context.next = 7;
95
92
  return _this.request({
96
93
  method: _constants.HTTP_VERBS.POST,
97
94
  uri: "".concat(_this.url, "/move"),
98
95
  body: {
96
+ breakoutMoveId: breakoutMoveId,
97
+ deviceUrl: deviceUrl,
99
98
  groupId: _this.groupId,
100
99
  sessionId: _this.sessionId
101
100
  }
102
101
  });
103
- case 5:
102
+ case 7:
104
103
  result = _context.sent;
105
- _metrics.default.postEvent({
106
- event: _config.eventType.JOIN_BREAKOUT_RESPONSE,
107
- meetingId: meetingId,
108
- data: {
109
- breakoutMoveId: breakoutMoveId,
110
- breakoutSessionId: _this.sessionId,
111
- breakoutGroupId: _this.groupId
112
- }
104
+ _events.default.onBreakoutMoveResponse({
105
+ currentSession: _this,
106
+ meeting: meeting,
107
+ breakoutMoveId: breakoutMoveId
113
108
  });
114
109
  return _context.abrupt("return", result);
115
- case 8:
110
+ case 10:
116
111
  case "end":
117
112
  return _context.stop();
118
113
  }
@@ -173,7 +168,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
173
168
  sessionId: this.sessionId
174
169
  });
175
170
  },
176
- version: "3.0.0-beta.92"
171
+ version: "3.0.0-beta.94"
177
172
  });
178
173
  var _default = Breakout;
179
174
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","breakoutRequest","BreakoutRequest","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","derived","isMain","cache","deps","fn","initialize","members","Members","parent","webex","join","breakoutMoveId","uuid","v4","meetingId","collection","Metrics","postEvent","event","eventType","MOVE_TO_BREAKOUT","data","breakoutSessionId","breakoutGroupId","request","method","HTTP_VERBS","POST","uri","body","result","JOIN_BREAKOUT_RESPONSE","leave","Error","mainSession","breakouts","filter","breakout","askForHelp","parseRoster","locus","locusParticipantsUpdate","broadcast","message","options"],"sources":["breakout.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport uuid from 'uuid';\nimport {HTTP_VERBS, MEETINGS} from '../constants';\nimport LocusInfo from '../locus-info';\nimport Members from '../members';\nimport BreakoutRequest from './request';\nimport Metrics from '../metrics';\nimport {eventType} from '../metrics/config';\n/**\n * @class\n */\nconst Breakout = WebexPlugin.extend({\n idAttribute: 'sessionId',\n\n namespace: MEETINGS,\n\n breakoutRequest: BreakoutRequest,\n props: {\n active: ['boolean', false, false], // this session is active\n allowed: ['boolean', false, false], // allowed to join this session\n assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet\n assignedCurrent: ['boolean', false, false], // assigned AND current session\n requested: ['boolean', false, false], // requested by the host to join this session\n current: ['boolean', false, false], // the current joined session\n name: 'string',\n sessionId: 'string',\n sessionType: 'string',\n groupId: 'string',\n url: 'string', // where to send requests to\n },\n\n derived: {\n isMain: {\n cache: false, // fix issue: sometimes the derived will not change even if the deps changed\n deps: ['sessionType'],\n /**\n * If the breakout has no name, assume it is the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === 'MAIN';\n },\n },\n },\n\n initialize() {\n this.members = new Members({}, {parent: this.webex});\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Joins the breakout session\n * @returns {Promise}\n */\n async join() {\n const breakoutMoveId = uuid.v4();\n const {meetingId} = this.collection.parent;\n Metrics.postEvent({\n event: eventType.MOVE_TO_BREAKOUT,\n meetingId,\n data: {\n breakoutMoveId,\n breakoutSessionId: this.sessionId,\n breakoutGroupId: this.groupId,\n },\n });\n const result = await this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/move`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n Metrics.postEvent({\n event: eventType.JOIN_BREAKOUT_RESPONSE,\n meetingId,\n data: {\n breakoutMoveId,\n breakoutSessionId: this.sessionId,\n breakoutGroupId: this.groupId,\n },\n });\n\n return result;\n },\n\n /**\n * Leaves the breakout session to return to the main session\n * @returns {Promise}\n * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found\n */\n leave() {\n if (this.isMain) {\n throw new Error('Cannot leave the main session');\n }\n\n const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];\n\n if (!mainSession) {\n throw new Error('Cannot leave, no main session found');\n }\n\n return mainSession.join();\n },\n\n /**\n * Sends a help request for the current breakout\n * @returns {Promise}\n */\n askForHelp() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/help`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Parses the participants from the locus object\n * @param locus Locus object\n * @returns {void}\n */\n\n parseRoster(locus) {\n this.members.locusParticipantsUpdate(locus);\n },\n /*\n * Broadcast message to this breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: this.groupId,\n sessionId: this.sessionId,\n });\n },\n});\n\nexport default Breakout;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","breakoutRequest","BreakoutRequest","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","derived","isMain","cache","deps","fn","initialize","members","Members","parent","webex","join","breakoutMoveId","uuid","v4","deviceUrl","internal","device","meetingId","collection","meeting","meetings","getMeetingByType","_ID_","breakoutEvent","onBreakoutMoveRequest","currentSession","request","method","HTTP_VERBS","POST","uri","body","result","onBreakoutMoveResponse","leave","Error","mainSession","breakouts","filter","breakout","askForHelp","parseRoster","locus","locusParticipantsUpdate","broadcast","message","options"],"sources":["breakout.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport uuid from 'uuid';\nimport {_ID_, HTTP_VERBS, MEETINGS} from '../constants';\nimport Members from '../members';\nimport BreakoutRequest from './request';\nimport breakoutEvent from './events';\n/**\n * @class\n */\nconst Breakout = WebexPlugin.extend({\n idAttribute: 'sessionId',\n\n namespace: MEETINGS,\n\n breakoutRequest: BreakoutRequest,\n props: {\n active: ['boolean', false, false], // this session is active\n allowed: ['boolean', false, false], // allowed to join this session\n assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet\n assignedCurrent: ['boolean', false, false], // assigned AND current session\n requested: ['boolean', false, false], // requested by the host to join this session\n current: ['boolean', false, false], // the current joined session\n name: 'string',\n sessionId: 'string',\n sessionType: 'string',\n groupId: 'string',\n url: 'string', // where to send requests to\n },\n\n derived: {\n isMain: {\n cache: false, // fix issue: sometimes the derived will not change even if the deps changed\n deps: ['sessionType'],\n /**\n * If the breakout has no name, assume it is the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === 'MAIN';\n },\n },\n },\n\n initialize() {\n this.members = new Members({}, {parent: this.webex});\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Joins the breakout session\n * @returns {Promise}\n */\n async join() {\n const breakoutMoveId = uuid.v4();\n const deviceUrl = this.webex.internal.device.url;\n const {meetingId} = this.collection.parent;\n const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);\n breakoutEvent.onBreakoutMoveRequest({currentSession: this, meeting, breakoutMoveId});\n const result = await this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/move`,\n body: {\n breakoutMoveId,\n deviceUrl,\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n breakoutEvent.onBreakoutMoveResponse({currentSession: this, meeting, breakoutMoveId});\n\n return result;\n },\n\n /**\n * Leaves the breakout session to return to the main session\n * @returns {Promise}\n * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found\n */\n leave() {\n if (this.isMain) {\n throw new Error('Cannot leave the main session');\n }\n\n const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];\n\n if (!mainSession) {\n throw new Error('Cannot leave, no main session found');\n }\n\n return mainSession.join();\n },\n\n /**\n * Sends a help request for the current breakout\n * @returns {Promise}\n */\n askForHelp() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/help`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Parses the participants from the locus object\n * @param locus Locus object\n * @returns {void}\n */\n\n parseRoster(locus) {\n this.members.locusParticipantsUpdate(locus);\n },\n /*\n * Broadcast message to this breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: this.groupId,\n sessionId: this.sessionId,\n });\n },\n});\n\nexport default Breakout;\n"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _metrics = _interopRequireDefault(require("../metrics"));
10
+ var _config = require("../metrics/config");
11
+ // eslint-disable-next-line import/prefer-default-export
12
+
13
+ var breakoutEvent = {};
14
+ breakoutEvent.onBreakoutMoveRequest = function (eventInfo) {
15
+ breakoutEvent.postMoveCallAnalyzer(_config.eventType.BREAKOUT_MOVE_REQUEST, eventInfo);
16
+ };
17
+ breakoutEvent.onBreakoutMoveResponse = function (eventInfo) {
18
+ breakoutEvent.postMoveCallAnalyzer(_config.eventType.BREAKOUT_MOVE_RESPONSE, eventInfo);
19
+ };
20
+ breakoutEvent.onBreakoutJoinResponse = function (eventInfo) {
21
+ breakoutEvent.postMoveCallAnalyzer(_config.eventType.BREAKOUT_JOIN_RESPONSE, eventInfo);
22
+ };
23
+ breakoutEvent.postMoveCallAnalyzer = function (events, eventInfo) {
24
+ var _eventInfo$meeting$me, _eventInfo$currentSes, _eventInfo$currentSes2;
25
+ if (!(eventInfo !== null && eventInfo !== void 0 && eventInfo.breakoutMoveId) || !(eventInfo !== null && eventInfo !== void 0 && eventInfo.meeting)) {
26
+ return;
27
+ }
28
+ if (!((_eventInfo$meeting$me = eventInfo.meeting.meetingInfo) !== null && _eventInfo$meeting$me !== void 0 && _eventInfo$meeting$me.enableConvergedArchitecture)) {
29
+ return;
30
+ }
31
+ _metrics.default.postEvent({
32
+ event: events,
33
+ meetingId: eventInfo.meeting.id,
34
+ data: {
35
+ breakoutMoveId: eventInfo.breakoutMoveId,
36
+ breakoutSessionId: eventInfo === null || eventInfo === void 0 ? void 0 : (_eventInfo$currentSes = eventInfo.currentSession) === null || _eventInfo$currentSes === void 0 ? void 0 : _eventInfo$currentSes.sessionId,
37
+ breakoutGroupId: eventInfo === null || eventInfo === void 0 ? void 0 : (_eventInfo$currentSes2 = eventInfo.currentSession) === null || _eventInfo$currentSes2 === void 0 ? void 0 : _eventInfo$currentSes2.groupId
38
+ }
39
+ });
40
+ };
41
+ var _default = breakoutEvent;
42
+ exports.default = _default;
43
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["breakoutEvent","onBreakoutMoveRequest","eventInfo","postMoveCallAnalyzer","eventType","BREAKOUT_MOVE_REQUEST","onBreakoutMoveResponse","BREAKOUT_MOVE_RESPONSE","onBreakoutJoinResponse","BREAKOUT_JOIN_RESPONSE","events","breakoutMoveId","meeting","meetingInfo","enableConvergedArchitecture","Metrics","postEvent","event","meetingId","id","data","breakoutSessionId","currentSession","sessionId","breakoutGroupId","groupId"],"sources":["events.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nimport Metrics from '../metrics';\nimport {eventType} from '../metrics/config';\n\nconst breakoutEvent: any = {};\n\nbreakoutEvent.onBreakoutMoveRequest = (eventInfo) => {\n breakoutEvent.postMoveCallAnalyzer(eventType.BREAKOUT_MOVE_REQUEST, eventInfo);\n};\n\nbreakoutEvent.onBreakoutMoveResponse = (eventInfo) => {\n breakoutEvent.postMoveCallAnalyzer(eventType.BREAKOUT_MOVE_RESPONSE, eventInfo);\n};\n\nbreakoutEvent.onBreakoutJoinResponse = (eventInfo) => {\n breakoutEvent.postMoveCallAnalyzer(eventType.BREAKOUT_JOIN_RESPONSE, eventInfo);\n};\n\nbreakoutEvent.postMoveCallAnalyzer = (events: string, eventInfo: any) => {\n if (!eventInfo?.breakoutMoveId || !eventInfo?.meeting) {\n return;\n }\n if (!eventInfo.meeting.meetingInfo?.enableConvergedArchitecture) {\n return;\n }\n Metrics.postEvent({\n event: events,\n meetingId: eventInfo.meeting.id,\n data: {\n breakoutMoveId: eventInfo.breakoutMoveId,\n breakoutSessionId: eventInfo?.currentSession?.sessionId,\n breakoutGroupId: eventInfo?.currentSession?.groupId,\n },\n });\n};\n\nexport default breakoutEvent;\n"],"mappings":";;;;;;;;AACA;AACA;AAFA;;AAIA,IAAMA,aAAkB,GAAG,CAAC,CAAC;AAE7BA,aAAa,CAACC,qBAAqB,GAAG,UAACC,SAAS,EAAK;EACnDF,aAAa,CAACG,oBAAoB,CAACC,iBAAS,CAACC,qBAAqB,EAAEH,SAAS,CAAC;AAChF,CAAC;AAEDF,aAAa,CAACM,sBAAsB,GAAG,UAACJ,SAAS,EAAK;EACpDF,aAAa,CAACG,oBAAoB,CAACC,iBAAS,CAACG,sBAAsB,EAAEL,SAAS,CAAC;AACjF,CAAC;AAEDF,aAAa,CAACQ,sBAAsB,GAAG,UAACN,SAAS,EAAK;EACpDF,aAAa,CAACG,oBAAoB,CAACC,iBAAS,CAACK,sBAAsB,EAAEP,SAAS,CAAC;AACjF,CAAC;AAEDF,aAAa,CAACG,oBAAoB,GAAG,UAACO,MAAc,EAAER,SAAc,EAAK;EAAA;EACvE,IAAI,EAACA,SAAS,aAATA,SAAS,eAATA,SAAS,CAAES,cAAc,KAAI,EAACT,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEU,OAAO,GAAE;IACrD;EACF;EACA,IAAI,2BAACV,SAAS,CAACU,OAAO,CAACC,WAAW,kDAA7B,sBAA+BC,2BAA2B,GAAE;IAC/D;EACF;EACAC,gBAAO,CAACC,SAAS,CAAC;IAChBC,KAAK,EAAEP,MAAM;IACbQ,SAAS,EAAEhB,SAAS,CAACU,OAAO,CAACO,EAAE;IAC/BC,IAAI,EAAE;MACJT,cAAc,EAAET,SAAS,CAACS,cAAc;MACxCU,iBAAiB,EAAEnB,SAAS,aAATA,SAAS,gDAATA,SAAS,CAAEoB,cAAc,0DAAzB,sBAA2BC,SAAS;MACvDC,eAAe,EAAEtB,SAAS,aAATA,SAAS,iDAATA,SAAS,CAAEoB,cAAc,2DAAzB,uBAA2BG;IAC9C;EACF,CAAC,CAAC;AACJ,CAAC;AAAC,eAEazB,aAAa;AAAA"}
@@ -24,6 +24,7 @@ var _constants = require("../constants");
24
24
  var _breakout = _interopRequireDefault(require("./breakout"));
25
25
  var _collection = _interopRequireDefault(require("./collection"));
26
26
  var _request = _interopRequireDefault(require("./request"));
27
+ var _events = _interopRequireDefault(require("./events"));
27
28
  var _utils = require("./utils");
28
29
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
30
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -263,6 +264,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
263
264
  var preEnableBreakoutSession = this.get('enableBreakoutSession');
264
265
  this.set(params);
265
266
  this.set('groups', params.groups);
267
+ this.set('startTime', params.startTime);
266
268
  this.set('currentBreakoutSession', (_this$set = {
267
269
  sessionId: params.sessionId,
268
270
  groupId: params.groupId,
@@ -273,8 +275,17 @@ var Breakouts = _webexCore.WebexPlugin.extend({
273
275
  }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
274
276
 
275
277
  // We need to call queryPreAssignments when enableBreakoutSession become true
276
- if (params.enableBreakoutSession && params.hasBreakoutPreAssignments && preEnableBreakoutSession !== params.enableBreakoutSession) {
277
- this.queryPreAssignments();
278
+ if (preEnableBreakoutSession !== params.enableBreakoutSession) {
279
+ this.queryPreAssignments(params);
280
+ }
281
+ if (this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId || this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId) {
282
+ // should report joined session changed
283
+ var meeting = this.webex.meetings.getMeetingByType(_constants._ID_, this.meetingId);
284
+ _events.default.onBreakoutJoinResponse({
285
+ currentSession: this.currentBreakoutSession,
286
+ meeting: meeting,
287
+ breakoutMoveId: params.breakoutMoveId
288
+ });
278
289
  }
279
290
  },
280
291
  /**
@@ -810,10 +821,14 @@ var Breakouts = _webexCore.WebexPlugin.extend({
810
821
  },
811
822
  /**
812
823
  * The pre-assignments need to be queried when "hasBreakoutPreAssignments" is true
824
+ * @param {Object} params
813
825
  * @returns {void}
814
826
  */
815
- queryPreAssignments: function queryPreAssignments() {
827
+ queryPreAssignments: function queryPreAssignments(params) {
816
828
  var _this15 = this;
829
+ if (!params || !params.enableBreakoutSession || !params.hasBreakoutPreAssignments) {
830
+ return;
831
+ }
817
832
  if (!this.shouldFetchPreassignments) {
818
833
  this.webex.request({
819
834
  uri: "".concat(this.url, "/preassignments"),
@@ -861,7 +876,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
861
876
  body: body
862
877
  });
863
878
  },
864
- version: "3.0.0-beta.92"
879
+ version: "3.0.0-beta.94"
865
880
  });
866
881
  var _default = Breakouts;
867
882
  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","cache","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","isActiveBreakout","BREAKOUT","STATUS","OPEN","CLOSING","breakoutGroupId","length","id","initialize","listenTo","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToCurrentSessionTypeChange","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","isSessionTypeChangedFromSessionToMain","LEAVE_BREAKOUT","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","requested","ASK_RETURN_TO_MAIN","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","token","editlock","PUT","create","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","sessions","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, 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 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 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: ['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.listenToCurrentSessionTypeChange();\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 *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 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 if (this.allowBackToMain && this.getMainSession().requested) {\n this.trigger(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);\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 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} 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 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 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 * 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","cache","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","isActiveBreakout","BREAKOUT","STATUS","OPEN","CLOSING","breakoutGroupId","length","id","initialize","listenTo","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToCurrentSessionTypeChange","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","isSessionTypeChangedFromSessionToMain","LEAVE_BREAKOUT","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","preEnableBreakoutSession","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","queryPreAssignments","previous","meeting","meetings","getMeetingByType","_ID_","breakoutEvent","onBreakoutJoinResponse","currentSession","breakoutMoveId","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED","getMainSession","requested","ASK_RETURN_TO_MAIN","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","token","editlock","PUT","create","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","sessions","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, _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 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 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: ['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.listenToCurrentSessionTypeChange();\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 *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 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 this.set('startTime', params.startTime);\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 (preEnableBreakoutSession !== params.enableBreakoutSession) {\n this.queryPreAssignments(params);\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 currentSession: this.currentBreakoutSession,\n meeting,\n breakoutMoveId: params.breakoutMoveId,\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\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 if (this.allowBackToMain && this.getMainSession().requested) {\n this.trigger(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);\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 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} 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 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 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 * The pre-assignments need to be queried when \"hasBreakoutPreAssignments\" is true\n * @param {Object} params\n * @returns {void}\n */\n queryPreAssignments(params) {\n if (!params || !params.enableBreakoutSession || !params.hasBreakoutPreAssignments) {\n return;\n }\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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"}
@@ -204,7 +204,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
204
204
  this.updateParticipants(locus.participants);
205
205
  // For 1:1 space meeting the conversation Url does not exist in locus.conversation
206
206
  this.updateConversationUrl(locus.conversationUrl, locus.info);
207
- this.updateControls(locus.controls);
207
+ this.updateControls(locus.controls, locus.self);
208
208
  this.updateLocusUrl(locus.url);
209
209
  this.updateFullState(locus.fullState);
210
210
  this.updateMeetingInfo(locus.info);
@@ -376,7 +376,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
376
376
  // as it gets interpreted as if we have left the call
377
377
  return;
378
378
  }
379
- this.updateControls(locus.controls);
379
+ this.updateControls(locus.controls, locus.self);
380
380
  this.updateConversationUrl(locus.conversationUrl, locus.info);
381
381
  this.updateCreated(locus.created);
382
382
  this.updateFullState(locus.fullState);
@@ -647,12 +647,13 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
647
647
 
648
648
  /**
649
649
  * @param {Object} controls
650
+ * @param {Object} self
650
651
  * @returns {undefined}
651
652
  * @memberof LocusInfo
652
653
  */
653
654
  }, {
654
655
  key: "updateControls",
655
- value: function updateControls(controls) {
656
+ value: function updateControls(controls, self) {
656
657
  if (controls && !(0, _isEqual2.default)(this.controls, controls)) {
657
658
  this.parsedLocus.controls = _controlsUtils.default.parse(controls);
658
659
  var _ControlsUtils$getCon = _controlsUtils.default.getControls(this.controls, controls),
@@ -709,6 +710,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
709
710
  }
710
711
  if (hasBreakoutChanged) {
711
712
  var breakout = current.breakout;
713
+ breakout.breakoutMoveId = _selfUtils.default.getReplacedBreakoutMoveId(self, this.webex.internal.device.url);
712
714
  this.emitScoped({
713
715
  file: 'locus-info',
714
716
  function: 'updateControls'