@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.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +70 -54
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +12 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/metrics/index.js +3 -1
- package/dist/metrics/index.js.map +1 -1
- package/dist/types/breakouts/utils.d.ts +7 -0
- package/dist/types/constants.d.ts +2 -0
- package/package.json +19 -19
- package/src/breakouts/index.ts +21 -1
- package/src/breakouts/utils.ts +13 -0
- package/src/constants.ts +2 -0
- package/src/metrics/index.ts +1 -1
- package/test/unit/spec/breakouts/index.ts +146 -2
- package/test/unit/spec/breakouts/utils.js +19 -1
- package/test/unit/spec/metrics/index.js +31 -0
package/dist/breakouts/index.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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:
|
|
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
|
|
250
|
+
var _this5 = this;
|
|
238
251
|
this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
|
|
239
|
-
|
|
240
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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 (!(
|
|
394
|
+
if (!(_this7.enableBreakoutSession === undefined)) {
|
|
379
395
|
_context.next = 10;
|
|
380
396
|
break;
|
|
381
397
|
}
|
|
382
398
|
_context.next = 3;
|
|
383
|
-
return
|
|
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
|
-
|
|
407
|
+
_this7.updateBreakout(info.body);
|
|
392
408
|
_context.next = 8;
|
|
393
|
-
return
|
|
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
|
|
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
|
|
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({},
|
|
458
|
+
body = _objectSpread(_objectSpread({}, _this8.editLock && !!_this8.editLock.token ? {
|
|
443
459
|
editlock: {
|
|
444
|
-
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
|
|
466
|
+
return _this8.webex.request({
|
|
451
467
|
method: _constants.HTTP_VERBS.PUT,
|
|
452
|
-
uri:
|
|
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
|
-
|
|
476
|
+
_this8.set('groups', breakInfo.body.groups);
|
|
461
477
|
}
|
|
462
478
|
|
|
463
479
|
// clear edit lock info after save breakout session info
|
|
464
|
-
|
|
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
|
|
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({},
|
|
501
|
+
body = _objectSpread(_objectSpread({}, _this9.editLock && !!_this9.editLock.token ? {
|
|
486
502
|
editlock: {
|
|
487
|
-
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
|
|
511
|
+
return _this9.webex.request({
|
|
496
512
|
method: _constants.HTTP_VERBS.PUT,
|
|
497
|
-
uri:
|
|
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
|
-
|
|
521
|
+
_this9.set('groups', breakInfo.body.groups);
|
|
506
522
|
}
|
|
507
|
-
|
|
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
|
|
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
|
|
636
|
+
return _this10.request({
|
|
621
637
|
method: _constants.HTTP_VERBS.GET,
|
|
622
|
-
uri:
|
|
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
|
-
|
|
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
|
-
|
|
631
|
-
|
|
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
|
|
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 (!
|
|
668
|
+
if (!_this11.enableBreakoutSession) {
|
|
653
669
|
_context5.next = 4;
|
|
654
670
|
break;
|
|
655
671
|
}
|
|
656
|
-
|
|
672
|
+
_this11.lockBreakout();
|
|
657
673
|
_context5.next = 8;
|
|
658
674
|
break;
|
|
659
675
|
case 4:
|
|
660
676
|
_context5.next = 6;
|
|
661
|
-
return
|
|
677
|
+
return _this11.enableBreakouts();
|
|
662
678
|
case 6:
|
|
663
679
|
info = _context5.sent;
|
|
664
680
|
if (info.body) {
|
|
665
|
-
|
|
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
|
|
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 (!(
|
|
701
|
+
if (!(_this12.editLock && !!_this12.editLock.token)) {
|
|
686
702
|
_context6.next = 8;
|
|
687
703
|
break;
|
|
688
704
|
}
|
|
689
|
-
if (!(
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
742
|
+
_this13.request({
|
|
727
743
|
method: _constants.HTTP_VERBS.PUT,
|
|
728
|
-
uri: "".concat(
|
|
744
|
+
uri: "".concat(_this13.url, "/editlock/").concat(_this13.editLock.token)
|
|
729
745
|
}).catch(function (error) {
|
|
730
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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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"}
|
package/dist/breakouts/utils.js
CHANGED
|
@@ -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
|