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

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.
@@ -42,9 +42,10 @@ var Breakout = _webexCore.WebexPlugin.extend({
42
42
  sessionId: 'string',
43
43
  sessionType: 'string',
44
44
  groupId: 'string',
45
- url: 'string' // where to send requests to
45
+ url: 'string',
46
+ // where to send requests to
47
+ requestedLastModifiedTime: 'string'
46
48
  },
47
-
48
49
  derived: {
49
50
  isMain: {
50
51
  cache: false,
@@ -168,7 +169,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
168
169
  sessionId: this.sessionId
169
170
  });
170
171
  },
171
- version: "3.0.0-beta.94"
172
+ version: "3.0.0-beta.95"
172
173
  });
173
174
  var _default = Breakout;
174
175
  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","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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"}
1
+ {"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","breakoutRequest","BreakoutRequest","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","requestedLastModifiedTime","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 requestedLastModifiedTime: 'string',\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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"}
@@ -133,12 +133,17 @@ var Breakouts = _webexCore.WebexPlugin.extend({
133
133
  leading: true,
134
134
  trailing: false
135
135
  });
136
- this.listenTo(this.breakouts, 'add', function () {
136
+ this.listenTo(this.breakouts, 'add', function (breakout) {
137
137
  _this.debouncedQueryRosters();
138
+ _this.triggerReturnToMainEvent(breakout);
139
+ });
140
+ this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', function (breakout) {
141
+ _this.triggerReturnToMainEvent(breakout);
138
142
  });
139
143
  this.listenToCurrentSessionTypeChange();
140
144
  this.listenToBroadcastMessages();
141
145
  this.listenToBreakoutRosters();
146
+ this.listenToBreakoutHelp();
142
147
  // @ts-ignore
143
148
  this.breakoutRequest = new _request.default({
144
149
  webex: this.webex
@@ -254,6 +259,22 @@ var Breakouts = _webexCore.WebexPlugin.extend({
254
259
  _this5.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
255
260
  });
256
261
  },
262
+ /**
263
+ * Sets up a listener for ask help notify from mecury
264
+ * @returns {void}
265
+ */
266
+ listenToBreakoutHelp: function listenToBreakoutHelp() {
267
+ var _this6 = this;
268
+ this.listenTo(this.webex.internal.mercury, 'event:breakout.help', function (event) {
269
+ var _event$data2 = event.data,
270
+ participant = _event$data2.participant,
271
+ sessionId = _event$data2.sessionId;
272
+ _this6.trigger(_constants.BREAKOUTS.EVENTS.ASK_FOR_HELP, {
273
+ participant: participant,
274
+ sessionId: sessionId
275
+ });
276
+ });
277
+ },
257
278
  /**
258
279
  * Updates the information about the current breakout
259
280
  * @param {Object} params
@@ -294,7 +315,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
294
315
  * @returns {void}
295
316
  */
296
317
  updateBreakoutSessions: function updateBreakoutSessions(payload) {
297
- var _this6 = this;
318
+ var _this7 = this;
298
319
  var breakouts = {};
299
320
  if (payload.breakoutSessions) {
300
321
  (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
@@ -309,17 +330,17 @@ var Breakouts = _webexCore.WebexPlugin.extend({
309
330
  breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.REQUESTED] = false;
310
331
  }
311
332
  breakouts[sessionId][state] = true;
333
+ if (state === _constants.BREAKOUTS.SESSION_STATES.REQUESTED) {
334
+ breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;
335
+ }
312
336
  });
313
337
  });
314
338
  }
315
339
  (0, _forEach2.default)(breakouts, function (breakout) {
316
340
  // eslint-disable-next-line no-param-reassign
317
- breakout.url = _this6.url;
341
+ breakout.url = _this7.url;
318
342
  });
319
343
  this.breakouts.set((0, _values.default)(breakouts));
320
- if (this.allowBackToMain && this.getMainSession().requested) {
321
- this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
322
- }
323
344
  },
324
345
  /**
325
346
  * get main session
@@ -396,18 +417,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
396
417
  * @returns {Promise}
397
418
  */
398
419
  toggleBreakout: function toggleBreakout(enable) {
399
- var _this7 = this;
420
+ var _this8 = this;
400
421
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
401
422
  var info;
402
423
  return _regenerator.default.wrap(function _callee$(_context) {
403
424
  while (1) switch (_context.prev = _context.next) {
404
425
  case 0:
405
- if (!(_this7.enableBreakoutSession === undefined)) {
426
+ if (!(_this8.enableBreakoutSession === undefined)) {
406
427
  _context.next = 10;
407
428
  break;
408
429
  }
409
430
  _context.next = 3;
410
- return _this7.enableBreakouts();
431
+ return _this8.enableBreakouts();
411
432
  case 3:
412
433
  info = _context.sent;
413
434
  if (enable) {
@@ -415,15 +436,15 @@ var Breakouts = _webexCore.WebexPlugin.extend({
415
436
  break;
416
437
  }
417
438
  // if enable is false, updateBreakout set the param then set enableBreakoutSession as false
418
- _this7.updateBreakout(info.body);
439
+ _this8.updateBreakout(info.body);
419
440
  _context.next = 8;
420
- return _this7.doToggleBreakout(enable);
441
+ return _this8.doToggleBreakout(enable);
421
442
  case 8:
422
443
  _context.next = 12;
423
444
  break;
424
445
  case 10:
425
446
  _context.next = 12;
426
- return _this7.doToggleBreakout(enable);
447
+ return _this8.doToggleBreakout(enable);
427
448
  case 12:
428
449
  case "end":
429
450
  return _context.stop();
@@ -458,7 +479,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
458
479
  * @returns {Promise}
459
480
  */
460
481
  create: function create(params) {
461
- var _this8 = this;
482
+ var _this9 = this;
462
483
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
463
484
  var _breakInfo$body;
464
485
  var payload, body, breakInfo;
@@ -466,17 +487,17 @@ var Breakouts = _webexCore.WebexPlugin.extend({
466
487
  while (1) switch (_context2.prev = _context2.next) {
467
488
  case 0:
468
489
  payload = _objectSpread({}, params);
469
- body = _objectSpread(_objectSpread({}, _this8.editLock && !!_this8.editLock.token ? {
490
+ body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
470
491
  editlock: {
471
- token: _this8.editLock.token
492
+ token: _this9.editLock.token
472
493
  }
473
494
  } : {}), {
474
495
  groups: [payload]
475
496
  }); // @ts-ignore
476
497
  _context2.next = 4;
477
- return _this8.webex.request({
498
+ return _this9.webex.request({
478
499
  method: _constants.HTTP_VERBS.PUT,
479
- uri: _this8.url,
500
+ uri: _this9.url,
480
501
  body: body
481
502
  }).catch(function (error) {
482
503
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
@@ -484,11 +505,11 @@ var Breakouts = _webexCore.WebexPlugin.extend({
484
505
  case 4:
485
506
  breakInfo = _context2.sent;
486
507
  if ((_breakInfo$body = breakInfo.body) !== null && _breakInfo$body !== void 0 && _breakInfo$body.groups) {
487
- _this8.set('groups', breakInfo.body.groups);
508
+ _this9.set('groups', breakInfo.body.groups);
488
509
  }
489
510
 
490
511
  // clear edit lock info after save breakout session info
491
- _this8._clearEditLockInfo();
512
+ _this9._clearEditLockInfo();
492
513
  return _context2.abrupt("return", _promise.default.resolve(breakInfo));
493
514
  case 8:
494
515
  case "end":
@@ -502,16 +523,16 @@ var Breakouts = _webexCore.WebexPlugin.extend({
502
523
  * @returns {Promise}
503
524
  */
504
525
  clearSessions: function clearSessions() {
505
- var _this9 = this;
526
+ var _this10 = this;
506
527
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
507
528
  var _breakInfo$body2;
508
529
  var body, breakInfo;
509
530
  return _regenerator.default.wrap(function _callee3$(_context3) {
510
531
  while (1) switch (_context3.prev = _context3.next) {
511
532
  case 0:
512
- body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
533
+ body = _objectSpread(_objectSpread({}, _this10.editLock && !!_this10.editLock.token ? {
513
534
  editlock: {
514
- token: _this9.editLock.token
535
+ token: _this10.editLock.token
515
536
  }
516
537
  } : {}), {
517
538
  groups: [{
@@ -519,9 +540,9 @@ var Breakouts = _webexCore.WebexPlugin.extend({
519
540
  }]
520
541
  }); // @ts-ignore
521
542
  _context3.next = 3;
522
- return _this9.webex.request({
543
+ return _this10.webex.request({
523
544
  method: _constants.HTTP_VERBS.PUT,
524
- uri: _this9.url,
545
+ uri: _this10.url,
525
546
  body: body
526
547
  }).catch(function (error) {
527
548
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions'));
@@ -529,9 +550,9 @@ var Breakouts = _webexCore.WebexPlugin.extend({
529
550
  case 3:
530
551
  breakInfo = _context3.sent;
531
552
  if ((_breakInfo$body2 = breakInfo.body) !== null && _breakInfo$body2 !== void 0 && _breakInfo$body2.groups) {
532
- _this9.set('groups', breakInfo.body.groups);
553
+ _this10.set('groups', breakInfo.body.groups);
533
554
  }
534
- _this9.shouldFetchPreassignments = false;
555
+ _this10.shouldFetchPreassignments = false;
535
556
  return _context3.abrupt("return", _promise.default.resolve(breakInfo));
536
557
  case 7:
537
558
  case "end":
@@ -636,7 +657,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
636
657
  * @returns {Promise}
637
658
  */
638
659
  getBreakout: function getBreakout(editlock) {
639
- var _this10 = this;
660
+ var _this11 = this;
640
661
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
641
662
  var _breakout$body, _breakout$body2, _breakout$body2$editl;
642
663
  var breakout;
@@ -644,18 +665,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
644
665
  while (1) switch (_context4.prev = _context4.next) {
645
666
  case 0:
646
667
  _context4.next = 2;
647
- return _this10.request({
668
+ return _this11.request({
648
669
  method: _constants.HTTP_VERBS.GET,
649
- uri: _this10.url + (editlock ? "?editlock=".concat(editlock) : '')
670
+ uri: _this11.url + (editlock ? "?editlock=".concat(editlock) : '')
650
671
  });
651
672
  case 2:
652
673
  breakout = _context4.sent;
653
674
  if ((_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && _breakout$body.groups) {
654
- _this10.set('groups', breakout.body.groups);
675
+ _this11.set('groups', breakout.body.groups);
655
676
  }
656
677
  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) {
657
- _this10.set('editLock', breakout.body.editlock);
658
- _this10.keepEditLockAlive();
678
+ _this11.set('editLock', breakout.body.editlock);
679
+ _this11.keepEditLockAlive();
659
680
  }
660
681
  return _context4.abrupt("return", breakout);
661
682
  case 6:
@@ -670,26 +691,26 @@ var Breakouts = _webexCore.WebexPlugin.extend({
670
691
  * @returns {void}
671
692
  */
672
693
  enableAndLockBreakout: function enableAndLockBreakout() {
673
- var _this11 = this;
694
+ var _this12 = this;
674
695
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
675
696
  var info;
676
697
  return _regenerator.default.wrap(function _callee5$(_context5) {
677
698
  while (1) switch (_context5.prev = _context5.next) {
678
699
  case 0:
679
- if (!_this11.enableBreakoutSession) {
700
+ if (!_this12.enableBreakoutSession) {
680
701
  _context5.next = 4;
681
702
  break;
682
703
  }
683
- _this11.lockBreakout();
704
+ _this12.lockBreakout();
684
705
  _context5.next = 8;
685
706
  break;
686
707
  case 4:
687
708
  _context5.next = 6;
688
- return _this11.enableBreakouts();
709
+ return _this12.enableBreakouts();
689
710
  case 6:
690
711
  info = _context5.sent;
691
712
  if (info.body) {
692
- _this11.lockBreakout();
713
+ _this12.lockBreakout();
693
714
  }
694
715
  case 8:
695
716
  case "end":
@@ -703,33 +724,33 @@ var Breakouts = _webexCore.WebexPlugin.extend({
703
724
  * @returns {void}
704
725
  */
705
726
  lockBreakout: function lockBreakout() {
706
- var _this12 = this;
727
+ var _this13 = this;
707
728
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
708
729
  var _breakout$body3, breakout;
709
730
  return _regenerator.default.wrap(function _callee6$(_context6) {
710
731
  while (1) switch (_context6.prev = _context6.next) {
711
732
  case 0:
712
- if (!(_this12.editLock && !!_this12.editLock.token)) {
733
+ if (!(_this13.editLock && !!_this13.editLock.token)) {
713
734
  _context6.next = 8;
714
735
  break;
715
736
  }
716
- if (!(_this12.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
737
+ if (!(_this13.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
717
738
  _context6.next = 5;
718
739
  break;
719
740
  }
720
741
  throw new Error('Breakout already locked');
721
742
  case 5:
722
- _this12.keepEditLockAlive();
743
+ _this13.keepEditLockAlive();
723
744
  case 6:
724
745
  _context6.next = 12;
725
746
  break;
726
747
  case 8:
727
748
  _context6.next = 10;
728
- return _this12.getBreakout(true);
749
+ return _this13.getBreakout(true);
729
750
  case 10:
730
751
  breakout = _context6.sent;
731
752
  if ((_breakout$body3 = breakout.body) !== null && _breakout$body3 !== void 0 && _breakout$body3.editlock) {
732
- _this12.keepEditLockAlive();
753
+ _this13.keepEditLockAlive();
733
754
  }
734
755
  case 12:
735
756
  case "end":
@@ -743,18 +764,18 @@ var Breakouts = _webexCore.WebexPlugin.extend({
743
764
  * @returns {void}
744
765
  */
745
766
  keepEditLockAlive: function keepEditLockAlive() {
746
- var _this13 = this;
767
+ var _this14 = this;
747
768
  if (this.editLock && !!this.editLock.token) {
748
769
  var ttl = this.editLock.ttl < 30 ? _constants.BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
749
770
  if (this.intervalID) {
750
771
  window.clearInterval(this.intervalID);
751
772
  }
752
773
  this.intervalID = window.setInterval(function () {
753
- _this13.request({
774
+ _this14.request({
754
775
  method: _constants.HTTP_VERBS.PUT,
755
- uri: "".concat(_this13.url, "/editlock/").concat(_this13.editLock.token)
776
+ uri: "".concat(_this14.url, "/editlock/").concat(_this14.editLock.token)
756
777
  }).catch(function (error) {
757
- _this13._clearEditLockInfo();
778
+ _this14._clearEditLockInfo();
758
779
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#keepEditLockAlive'));
759
780
  });
760
781
  }, ttl / 2 * 1000);
@@ -765,13 +786,13 @@ var Breakouts = _webexCore.WebexPlugin.extend({
765
786
  * @returns {void}
766
787
  */
767
788
  unLockEditBreakout: function unLockEditBreakout() {
768
- var _this14 = this;
789
+ var _this15 = this;
769
790
  if (this.editLock && !!this.editLock.token) {
770
791
  this.request({
771
792
  method: _constants.HTTP_VERBS.DELETE,
772
793
  uri: "".concat(this.url, "/editlock/").concat(this.editLock.token)
773
794
  }).then(function () {
774
- _this14._clearEditLockInfo();
795
+ _this15._clearEditLockInfo();
775
796
  }).catch(function (error) {
776
797
  return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#unLockEditBreakout'));
777
798
  });
@@ -825,7 +846,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
825
846
  * @returns {void}
826
847
  */
827
848
  queryPreAssignments: function queryPreAssignments(params) {
828
- var _this15 = this;
849
+ var _this16 = this;
829
850
  if (!params || !params.enableBreakoutSession || !params.hasBreakoutPreAssignments) {
830
851
  return;
831
852
  }
@@ -838,7 +859,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
838
859
  }).then(function (result) {
839
860
  var _result$body;
840
861
  if ((_result$body = result.body) !== null && _result$body !== void 0 && _result$body.groups) {
841
- _this15.set('groups', result.body.groups);
862
+ _this16.set('groups', result.body.groups);
842
863
  }
843
864
  }).catch(function (error) {
844
865
  _loggerProxy.default.logger.error('Meeting:breakouts#queryPreAssignments failed', error);
@@ -876,7 +897,17 @@ var Breakouts = _webexCore.WebexPlugin.extend({
876
897
  body: body
877
898
  });
878
899
  },
879
- version: "3.0.0-beta.94"
900
+ /**
901
+ * trigger ASK_RETURN_TO_MAIN event when main session requested
902
+ * @param {Object} breakout
903
+ * @returns {void}
904
+ */
905
+ triggerReturnToMainEvent: function triggerReturnToMainEvent(breakout) {
906
+ if (breakout.isMain && breakout.requested) {
907
+ this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
908
+ }
909
+ },
910
+ version: "3.0.0-beta.95"
880
911
  });
881
912
  var _default = Breakouts;
882
913
  exports.default = _default;