@webex/plugin-meetings 3.0.0-beta.89 → 3.0.0-beta.90

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.
@@ -173,7 +173,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
173
173
  sessionId: this.sessionId
174
174
  });
175
175
  },
176
- version: "3.0.0-beta.89"
176
+ version: "3.0.0-beta.90"
177
177
  });
178
178
  var _default = Breakout;
179
179
  exports.default = _default;
@@ -135,6 +135,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
135
135
  this.listenTo(this.breakouts, 'add', function () {
136
136
  _this.debouncedQueryRosters();
137
137
  });
138
+ this.listenToCurrentSessionTypeChange();
138
139
  this.listenToBroadcastMessages();
139
140
  this.listenToBreakoutRosters();
140
141
  // @ts-ignore
@@ -207,25 +208,37 @@ var Breakouts = _webexCore.WebexPlugin.extend({
207
208
  }
208
209
  session.parseRoster(locus);
209
210
  },
211
+ /**
212
+ *Sets up listener for currentBreakoutSession sessionType changed
213
+ * @returns {void}
214
+ */
215
+ listenToCurrentSessionTypeChange: function listenToCurrentSessionTypeChange() {
216
+ var _this3 = this;
217
+ this.listenTo(this.currentBreakoutSession, 'change:sessionType', function (currentBreakoutSession, sessionType) {
218
+ if ((0, _utils.isSessionTypeChangedFromSessionToMain)(currentBreakoutSession, sessionType)) {
219
+ _this3.trigger(_constants.BREAKOUTS.EVENTS.LEAVE_BREAKOUT);
220
+ }
221
+ });
222
+ },
210
223
  /**
211
224
  * Sets up listener for broadcast messages sent to the breakout session
212
225
  * @returns {void}
213
226
  */
214
227
  listenToBroadcastMessages: function listenToBroadcastMessages() {
215
- var _this3 = this;
228
+ var _this4 = this;
216
229
  this.listenTo(this.webex.internal.llm, 'event:breakout.message', function (event) {
217
230
  var _event$data = event.data,
218
231
  senderUserId = _event$data.senderUserId,
219
232
  sentTime = _event$data.sentTime,
220
233
  message = _event$data.message;
221
- _this3.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
234
+ _this4.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
222
235
  senderUserId: senderUserId,
223
236
  sentTime: sentTime,
224
237
  message: message,
225
238
  // FIXME: This is only the current sessionId
226
239
  // We'd need to check that the dataChannelUrl is still the same
227
240
  // to guarantee that this message was sent to this session
228
- sessionId: _this3.currentBreakoutSession.sessionId
241
+ sessionId: _this4.currentBreakoutSession.sessionId
229
242
  });
230
243
  });
231
244
  },
@@ -234,10 +247,10 @@ var Breakouts = _webexCore.WebexPlugin.extend({
234
247
  * @returns {void}
235
248
  */
236
249
  listenToBreakoutRosters: function listenToBreakoutRosters() {
237
- var _this4 = this;
250
+ var _this5 = this;
238
251
  this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
239
- _this4.handleRosterUpdate(event.data.locus);
240
- _this4.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
252
+ _this5.handleRosterUpdate(event.data.locus);
253
+ _this5.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
241
254
  });
242
255
  },
243
256
  /**
@@ -270,7 +283,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
270
283
  * @returns {void}
271
284
  */
272
285
  updateBreakoutSessions: function updateBreakoutSessions(payload) {
273
- var _this5 = this;
286
+ var _this6 = this;
274
287
  var breakouts = {};
275
288
  if (payload.breakoutSessions) {
276
289
  (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
@@ -290,9 +303,12 @@ var Breakouts = _webexCore.WebexPlugin.extend({
290
303
  }
291
304
  (0, _forEach2.default)(breakouts, function (breakout) {
292
305
  // eslint-disable-next-line no-param-reassign
293
- breakout.url = _this5.url;
306
+ breakout.url = _this6.url;
294
307
  });
295
308
  this.breakouts.set((0, _values.default)(breakouts));
309
+ if (this.allowBackToMain && this.getMainSession().requested) {
310
+ this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
311
+ }
296
312
  },
297
313
  /**
298
314
  * get main session
@@ -369,18 +385,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
369
385
  * @returns {Promise}
370
386
  */
371
387
  toggleBreakout: function toggleBreakout(enable) {
372
- var _this6 = this;
388
+ var _this7 = this;
373
389
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
374
390
  var info;
375
391
  return _regenerator.default.wrap(function _callee$(_context) {
376
392
  while (1) switch (_context.prev = _context.next) {
377
393
  case 0:
378
- if (!(_this6.enableBreakoutSession === undefined)) {
394
+ if (!(_this7.enableBreakoutSession === undefined)) {
379
395
  _context.next = 10;
380
396
  break;
381
397
  }
382
398
  _context.next = 3;
383
- return _this6.enableBreakouts();
399
+ return _this7.enableBreakouts();
384
400
  case 3:
385
401
  info = _context.sent;
386
402
  if (enable) {
@@ -388,15 +404,15 @@ var Breakouts = _webexCore.WebexPlugin.extend({
388
404
  break;
389
405
  }
390
406
  // if enable is false, updateBreakout set the param then set enableBreakoutSession as false
391
- _this6.updateBreakout(info.body);
407
+ _this7.updateBreakout(info.body);
392
408
  _context.next = 8;
393
- return _this6.doToggleBreakout(enable);
409
+ return _this7.doToggleBreakout(enable);
394
410
  case 8:
395
411
  _context.next = 12;
396
412
  break;
397
413
  case 10:
398
414
  _context.next = 12;
399
- return _this6.doToggleBreakout(enable);
415
+ return _this7.doToggleBreakout(enable);
400
416
  case 12:
401
417
  case "end":
402
418
  return _context.stop();
@@ -431,7 +447,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
431
447
  * @returns {Promise}
432
448
  */
433
449
  create: function create(params) {
434
- var _this7 = this;
450
+ var _this8 = this;
435
451
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
436
452
  var _breakInfo$body;
437
453
  var payload, body, breakInfo;
@@ -439,17 +455,17 @@ var Breakouts = _webexCore.WebexPlugin.extend({
439
455
  while (1) switch (_context2.prev = _context2.next) {
440
456
  case 0:
441
457
  payload = _objectSpread({}, params);
442
- body = _objectSpread(_objectSpread({}, _this7.editLock && !!_this7.editLock.token ? {
458
+ body = _objectSpread(_objectSpread({}, _this8.editLock && !!_this8.editLock.token ? {
443
459
  editlock: {
444
- token: _this7.editLock.token
460
+ token: _this8.editLock.token
445
461
  }
446
462
  } : {}), {
447
463
  groups: [payload]
448
464
  }); // @ts-ignore
449
465
  _context2.next = 4;
450
- return _this7.webex.request({
466
+ return _this8.webex.request({
451
467
  method: _constants.HTTP_VERBS.PUT,
452
- uri: _this7.url,
468
+ uri: _this8.url,
453
469
  body: body
454
470
  }).catch(function (error) {
455
471
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
@@ -457,11 +473,11 @@ var Breakouts = _webexCore.WebexPlugin.extend({
457
473
  case 4:
458
474
  breakInfo = _context2.sent;
459
475
  if ((_breakInfo$body = breakInfo.body) !== null && _breakInfo$body !== void 0 && _breakInfo$body.groups) {
460
- _this7.set('groups', breakInfo.body.groups);
476
+ _this8.set('groups', breakInfo.body.groups);
461
477
  }
462
478
 
463
479
  // clear edit lock info after save breakout session info
464
- _this7._clearEditLockInfo();
480
+ _this8._clearEditLockInfo();
465
481
  return _context2.abrupt("return", _promise.default.resolve(breakInfo));
466
482
  case 8:
467
483
  case "end":
@@ -475,16 +491,16 @@ var Breakouts = _webexCore.WebexPlugin.extend({
475
491
  * @returns {Promise}
476
492
  */
477
493
  clearSessions: function clearSessions() {
478
- var _this8 = this;
494
+ var _this9 = this;
479
495
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
480
496
  var _breakInfo$body2;
481
497
  var body, breakInfo;
482
498
  return _regenerator.default.wrap(function _callee3$(_context3) {
483
499
  while (1) switch (_context3.prev = _context3.next) {
484
500
  case 0:
485
- body = _objectSpread(_objectSpread({}, _this8.editLock && !!_this8.editLock.token ? {
501
+ body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
486
502
  editlock: {
487
- token: _this8.editLock.token
503
+ token: _this9.editLock.token
488
504
  }
489
505
  } : {}), {
490
506
  groups: [{
@@ -492,9 +508,9 @@ var Breakouts = _webexCore.WebexPlugin.extend({
492
508
  }]
493
509
  }); // @ts-ignore
494
510
  _context3.next = 3;
495
- return _this8.webex.request({
511
+ return _this9.webex.request({
496
512
  method: _constants.HTTP_VERBS.PUT,
497
- uri: _this8.url,
513
+ uri: _this9.url,
498
514
  body: body
499
515
  }).catch(function (error) {
500
516
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions'));
@@ -502,9 +518,9 @@ var Breakouts = _webexCore.WebexPlugin.extend({
502
518
  case 3:
503
519
  breakInfo = _context3.sent;
504
520
  if ((_breakInfo$body2 = breakInfo.body) !== null && _breakInfo$body2 !== void 0 && _breakInfo$body2.groups) {
505
- _this8.set('groups', breakInfo.body.groups);
521
+ _this9.set('groups', breakInfo.body.groups);
506
522
  }
507
- _this8.shouldFetchPreassignments = false;
523
+ _this9.shouldFetchPreassignments = false;
508
524
  return _context3.abrupt("return", _promise.default.resolve(breakInfo));
509
525
  case 7:
510
526
  case "end":
@@ -609,7 +625,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
609
625
  * @returns {Promise}
610
626
  */
611
627
  getBreakout: function getBreakout(editlock) {
612
- var _this9 = this;
628
+ var _this10 = this;
613
629
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
614
630
  var _breakout$body, _breakout$body2, _breakout$body2$editl;
615
631
  var breakout;
@@ -617,18 +633,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
617
633
  while (1) switch (_context4.prev = _context4.next) {
618
634
  case 0:
619
635
  _context4.next = 2;
620
- return _this9.request({
636
+ return _this10.request({
621
637
  method: _constants.HTTP_VERBS.GET,
622
- uri: _this9.url + (editlock ? "?editlock=".concat(editlock) : '')
638
+ uri: _this10.url + (editlock ? "?editlock=".concat(editlock) : '')
623
639
  });
624
640
  case 2:
625
641
  breakout = _context4.sent;
626
642
  if ((_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && _breakout$body.groups) {
627
- _this9.set('groups', breakout.body.groups);
643
+ _this10.set('groups', breakout.body.groups);
628
644
  }
629
645
  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) {
630
- _this9.set('editLock', breakout.body.editlock);
631
- _this9.keepEditLockAlive();
646
+ _this10.set('editLock', breakout.body.editlock);
647
+ _this10.keepEditLockAlive();
632
648
  }
633
649
  return _context4.abrupt("return", breakout);
634
650
  case 6:
@@ -643,26 +659,26 @@ var Breakouts = _webexCore.WebexPlugin.extend({
643
659
  * @returns {void}
644
660
  */
645
661
  enableAndLockBreakout: function enableAndLockBreakout() {
646
- var _this10 = this;
662
+ var _this11 = this;
647
663
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
648
664
  var info;
649
665
  return _regenerator.default.wrap(function _callee5$(_context5) {
650
666
  while (1) switch (_context5.prev = _context5.next) {
651
667
  case 0:
652
- if (!_this10.enableBreakoutSession) {
668
+ if (!_this11.enableBreakoutSession) {
653
669
  _context5.next = 4;
654
670
  break;
655
671
  }
656
- _this10.lockBreakout();
672
+ _this11.lockBreakout();
657
673
  _context5.next = 8;
658
674
  break;
659
675
  case 4:
660
676
  _context5.next = 6;
661
- return _this10.enableBreakouts();
677
+ return _this11.enableBreakouts();
662
678
  case 6:
663
679
  info = _context5.sent;
664
680
  if (info.body) {
665
- _this10.lockBreakout();
681
+ _this11.lockBreakout();
666
682
  }
667
683
  case 8:
668
684
  case "end":
@@ -676,33 +692,33 @@ var Breakouts = _webexCore.WebexPlugin.extend({
676
692
  * @returns {void}
677
693
  */
678
694
  lockBreakout: function lockBreakout() {
679
- var _this11 = this;
695
+ var _this12 = this;
680
696
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
681
697
  var _breakout$body3, breakout;
682
698
  return _regenerator.default.wrap(function _callee6$(_context6) {
683
699
  while (1) switch (_context6.prev = _context6.next) {
684
700
  case 0:
685
- if (!(_this11.editLock && !!_this11.editLock.token)) {
701
+ if (!(_this12.editLock && !!_this12.editLock.token)) {
686
702
  _context6.next = 8;
687
703
  break;
688
704
  }
689
- if (!(_this11.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
705
+ if (!(_this12.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
690
706
  _context6.next = 5;
691
707
  break;
692
708
  }
693
709
  throw new Error('Breakout already locked');
694
710
  case 5:
695
- _this11.keepEditLockAlive();
711
+ _this12.keepEditLockAlive();
696
712
  case 6:
697
713
  _context6.next = 12;
698
714
  break;
699
715
  case 8:
700
716
  _context6.next = 10;
701
- return _this11.getBreakout(true);
717
+ return _this12.getBreakout(true);
702
718
  case 10:
703
719
  breakout = _context6.sent;
704
720
  if ((_breakout$body3 = breakout.body) !== null && _breakout$body3 !== void 0 && _breakout$body3.editlock) {
705
- _this11.keepEditLockAlive();
721
+ _this12.keepEditLockAlive();
706
722
  }
707
723
  case 12:
708
724
  case "end":
@@ -716,18 +732,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
716
732
  * @returns {void}
717
733
  */
718
734
  keepEditLockAlive: function keepEditLockAlive() {
719
- var _this12 = this;
735
+ var _this13 = this;
720
736
  if (this.editLock && !!this.editLock.token) {
721
737
  var ttl = this.editLock.ttl < 30 ? _constants.BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
722
738
  if (this.intervalID) {
723
739
  window.clearInterval(this.intervalID);
724
740
  }
725
741
  this.intervalID = window.setInterval(function () {
726
- _this12.request({
742
+ _this13.request({
727
743
  method: _constants.HTTP_VERBS.PUT,
728
- uri: "".concat(_this12.url, "/editlock/").concat(_this12.editLock.token)
744
+ uri: "".concat(_this13.url, "/editlock/").concat(_this13.editLock.token)
729
745
  }).catch(function (error) {
730
- _this12._clearEditLockInfo();
746
+ _this13._clearEditLockInfo();
731
747
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#keepEditLockAlive'));
732
748
  });
733
749
  }, ttl / 2 * 1000);
@@ -738,13 +754,13 @@ var Breakouts = _webexCore.WebexPlugin.extend({
738
754
  * @returns {void}
739
755
  */
740
756
  unLockEditBreakout: function unLockEditBreakout() {
741
- var _this13 = this;
757
+ var _this14 = this;
742
758
  if (this.editLock && !!this.editLock.token) {
743
759
  this.request({
744
760
  method: _constants.HTTP_VERBS.DELETE,
745
761
  uri: "".concat(this.url, "/editlock/").concat(this.editLock.token)
746
762
  }).then(function () {
747
- _this13._clearEditLockInfo();
763
+ _this14._clearEditLockInfo();
748
764
  }).catch(function (error) {
749
765
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#unLockEditBreakout'));
750
766
  });
@@ -797,7 +813,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
797
813
  * @returns {void}
798
814
  */
799
815
  queryPreAssignments: function queryPreAssignments() {
800
- var _this14 = this;
816
+ var _this15 = this;
801
817
  if (!this.shouldFetchPreassignments) {
802
818
  this.webex.request({
803
819
  uri: "".concat(this.url, "/preassignments"),
@@ -807,7 +823,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
807
823
  }).then(function (result) {
808
824
  var _result$body;
809
825
  if ((_result$body = result.body) !== null && _result$body !== void 0 && _result$body.groups) {
810
- _this14.set('groups', result.body.groups);
826
+ _this15.set('groups', result.body.groups);
811
827
  }
812
828
  }).catch(function (error) {
813
829
  _loggerProxy.default.logger.error('Meeting:breakouts#queryPreAssignments failed', error);
@@ -845,7 +861,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
845
861
  body: body
846
862
  });
847
863
  },
848
- version: "3.0.0-beta.89"
864
+ version: "3.0.0-beta.90"
849
865
  });
850
866
  var _default = Breakouts;
851
867
  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","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","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} 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.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} 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","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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"}
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
5
5
  _Object$defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getBroadcastRoles = exports.boServiceErrorHandler = void 0;
8
+ exports.isSessionTypeChangedFromSessionToMain = exports.getBroadcastRoles = exports.boServiceErrorHandler = void 0;
9
9
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
10
10
  var _editLockError = _interopRequireDefault(require("./edit-lock-error"));
11
11
  var _constants = require("../constants");
@@ -52,5 +52,16 @@ var boServiceErrorHandler = function boServiceErrorHandler(error, position) {
52
52
  _loggerProxy.default.logger.info("".concat(position, " --> ").concat((_throwError = throwError) === null || _throwError === void 0 ? void 0 : _throwError.message));
53
53
  return throwError;
54
54
  };
55
+
56
+ /**
57
+ *
58
+ * @param {object} breakout
59
+ * @param {string} newSessionType
60
+ * @returns {boolean}
61
+ */
55
62
  exports.boServiceErrorHandler = boServiceErrorHandler;
63
+ var isSessionTypeChangedFromSessionToMain = function isSessionTypeChangedFromSessionToMain(breakout, newSessionType) {
64
+ return breakout.previous('sessionType') === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT && newSessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
65
+ };
66
+ exports.isSessionTypeChangedFromSessionToMain = isSessionTypeChangedFromSessionToMain;
56
67
  //# sourceMappingURL=utils.js.map