@webex/plugin-meetings 3.6.0-next.1 → 3.6.0-next.11

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.
Files changed (48) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/common/errors/webinar-registration-error.js +50 -0
  4. package/dist/common/errors/webinar-registration-error.js.map +1 -0
  5. package/dist/constants.js +7 -0
  6. package/dist/constants.js.map +1 -1
  7. package/dist/index.js +7 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/interpretation/index.js +1 -1
  10. package/dist/interpretation/siLanguage.js +1 -1
  11. package/dist/locus-info/parser.js +5 -1
  12. package/dist/locus-info/parser.js.map +1 -1
  13. package/dist/meeting/index.js +146 -99
  14. package/dist/meeting/index.js.map +1 -1
  15. package/dist/meeting/muteState.js +5 -2
  16. package/dist/meeting/muteState.js.map +1 -1
  17. package/dist/meeting-info/meeting-info-v2.js +68 -17
  18. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  19. package/dist/meetings/index.js +2 -1
  20. package/dist/meetings/index.js.map +1 -1
  21. package/dist/metrics/constants.js +2 -1
  22. package/dist/metrics/constants.js.map +1 -1
  23. package/dist/multistream/remoteMedia.js +4 -0
  24. package/dist/multistream/remoteMedia.js.map +1 -1
  25. package/dist/types/common/errors/webinar-registration-error.d.ts +14 -0
  26. package/dist/types/constants.d.ts +6 -0
  27. package/dist/types/index.d.ts +2 -1
  28. package/dist/types/meeting/muteState.d.ts +2 -1
  29. package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
  30. package/dist/types/metrics/constants.d.ts +1 -0
  31. package/dist/types/multistream/remoteMedia.d.ts +1 -0
  32. package/dist/webinar/index.js +1 -1
  33. package/package.json +21 -21
  34. package/src/common/errors/webinar-registration-error.ts +27 -0
  35. package/src/constants.ts +6 -0
  36. package/src/index.ts +2 -0
  37. package/src/locus-info/parser.ts +8 -1
  38. package/src/meeting/index.ts +40 -11
  39. package/src/meeting/muteState.ts +6 -2
  40. package/src/meeting-info/meeting-info-v2.ts +51 -0
  41. package/src/meetings/index.ts +3 -1
  42. package/src/metrics/constants.ts +1 -0
  43. package/src/multistream/remoteMedia.ts +5 -0
  44. package/test/unit/spec/locus-info/index.js +29 -0
  45. package/test/unit/spec/meeting/index.js +60 -1
  46. package/test/unit/spec/meeting/muteState.js +8 -4
  47. package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
  48. package/test/unit/spec/multistream/remoteMedia.ts +16 -2
@@ -86,6 +86,7 @@ var _controlsOptionsManager = _interopRequireDefault(require("../controls-option
86
86
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
87
87
  var _locusMediaRequest = require("./locusMediaRequest");
88
88
  var _connectionStateHandler = require("./connectionStateHandler");
89
+ var _webinarRegistrationError = _interopRequireDefault(require("../common/errors/webinar-registration-error"));
89
90
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
90
91
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
91
92
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -1218,31 +1219,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1218
1219
  return _regenerator.default.wrap(function _callee2$(_context2) {
1219
1220
  while (1) switch (_context2.prev = _context2.next) {
1220
1221
  case 0:
1222
+ _loggerProxy.default.logger.info("Meeting:index#handleShareAudioStreamEnded --> audio share stream ended");
1223
+ // current share audio stream has ended, but there might be an active
1224
+ // share video stream. we only leave from wireless share if share has
1225
+ // completely ended, which means no share audio or video streams active
1221
1226
  if (!(_this.wirelessShare && !_this.mediaProperties.shareVideoStream)) {
1222
- _context2.next = 4;
1227
+ _context2.next = 5;
1223
1228
  break;
1224
1229
  }
1225
1230
  _this.leave({
1226
1231
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1227
1232
  });
1228
- _context2.next = 12;
1233
+ _context2.next = 13;
1229
1234
  break;
1230
- case 4:
1231
- _context2.prev = 4;
1232
- _context2.next = 7;
1235
+ case 5:
1236
+ _context2.prev = 5;
1237
+ _context2.next = 8;
1233
1238
  return _this.unpublishStreams([_this.mediaProperties.shareAudioStream]);
1234
- case 7:
1235
- _context2.next = 12;
1239
+ case 8:
1240
+ _context2.next = 13;
1236
1241
  break;
1237
- case 9:
1238
- _context2.prev = 9;
1239
- _context2.t0 = _context2["catch"](4);
1242
+ case 10:
1243
+ _context2.prev = 10;
1244
+ _context2.t0 = _context2["catch"](5);
1240
1245
  _loggerProxy.default.logger.log('Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ', _context2.t0);
1241
- case 12:
1246
+ case 13:
1242
1247
  case "end":
1243
1248
  return _context2.stop();
1244
1249
  }
1245
- }, _callee2, null, [[4, 9]]);
1250
+ }, _callee2, null, [[5, 10]]);
1246
1251
  })));
1247
1252
  /**
1248
1253
  * Functionality for when a share video is muted or unmuted.
@@ -1270,33 +1275,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1270
1275
  return _regenerator.default.wrap(function _callee3$(_context3) {
1271
1276
  while (1) switch (_context3.prev = _context3.next) {
1272
1277
  case 0:
1278
+ _loggerProxy.default.logger.info("Meeting:index#handleShareVideoStreamEnded --> video share stream ended");
1279
+ // current share video stream has ended, but there might be an active
1280
+ // share audio stream. we only leave from wireless share if share has
1281
+ // completely ended, which means no share audio or video streams active
1273
1282
  if (!(_this.wirelessShare && !_this.mediaProperties.shareAudioStream)) {
1274
- _context3.next = 4;
1283
+ _context3.next = 5;
1275
1284
  break;
1276
1285
  }
1277
1286
  _this.leave({
1278
1287
  reason: _constants.MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS
1279
1288
  });
1280
- _context3.next = 12;
1289
+ _context3.next = 13;
1281
1290
  break;
1282
- case 4:
1283
- _context3.prev = 4;
1284
- _context3.next = 7;
1291
+ case 5:
1292
+ _context3.prev = 5;
1293
+ _context3.next = 8;
1285
1294
  return _this.unpublishStreams([_this.mediaProperties.shareVideoStream]);
1286
- case 7:
1287
- _context3.next = 12;
1295
+ case 8:
1296
+ _context3.next = 13;
1288
1297
  break;
1289
- case 9:
1290
- _context3.prev = 9;
1291
- _context3.t0 = _context3["catch"](4);
1298
+ case 10:
1299
+ _context3.prev = 10;
1300
+ _context3.t0 = _context3["catch"](5);
1292
1301
  _loggerProxy.default.logger.log('Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ', _context3.t0);
1293
- case 12:
1294
- _this.triggerStoppedSharing();
1295
1302
  case 13:
1303
+ _this.triggerStoppedSharing();
1304
+ case 14:
1296
1305
  case "end":
1297
1306
  return _context3.stop();
1298
1307
  }
1299
- }, _callee3, null, [[4, 9]]);
1308
+ }, _callee3, null, [[5, 10]]);
1300
1309
  })));
1301
1310
  /**
1302
1311
  * Emits meeting:stoppedSharingLocal
@@ -2413,8 +2422,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2413
2422
  }
2414
2423
  throw new _permission.default();
2415
2424
  case 21:
2425
+ if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2WebinarRegistrationError)) {
2426
+ _context5.next = 28;
2427
+ break;
2428
+ }
2429
+ this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;
2430
+ this.meetingInfoFailureCode = _context5.t0.wbxAppApiCode;
2431
+ if (_context5.t0.meetingInfo) {
2432
+ this.meetingInfo = _context5.t0.meetingInfo;
2433
+ }
2434
+ throw new _webinarRegistrationError.default();
2435
+ case 28:
2416
2436
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2PasswordError)) {
2417
- _context5.next = 33;
2437
+ _context5.next = 40;
2418
2438
  break;
2419
2439
  }
2420
2440
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2429,16 +2449,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2429
2449
  this.passwordStatus = _constants.PASSWORD_STATUS.REQUIRED;
2430
2450
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;
2431
2451
  if (!this.requiredCaptcha) {
2432
- _context5.next = 30;
2452
+ _context5.next = 37;
2433
2453
  break;
2434
2454
  }
2435
- _context5.next = 30;
2455
+ _context5.next = 37;
2436
2456
  return this.refreshCaptcha();
2437
- case 30:
2457
+ case 37:
2438
2458
  throw new _passwordError.default();
2439
- case 33:
2459
+ case 40:
2440
2460
  if (!(_context5.t0 instanceof _meetingInfoV.MeetingInfoV2CaptchaError)) {
2441
- _context5.next = 42;
2461
+ _context5.next = 49;
2442
2462
  break;
2443
2463
  }
2444
2464
  _loggerProxy.default.logger.info( // @ts-ignore
@@ -2450,10 +2470,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2450
2470
  }
2451
2471
  this.requiredCaptcha = _context5.t0.captchaInfo;
2452
2472
  throw new _captchaError.default();
2453
- case 42:
2473
+ case 49:
2454
2474
  this.meetingInfoFailureReason = _constants.MEETING_INFO_FAILURE_REASON.OTHER;
2455
2475
  throw _context5.t0;
2456
- case 44:
2476
+ case 51:
2457
2477
  case "end":
2458
2478
  return _context5.stop();
2459
2479
  }
@@ -3288,8 +3308,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3288
3308
  else if ((previousContentShare && contentShare.disposition === _constants.FLOOR_ACTION.RELEASED || contentShare.disposition === null) && (previousWhiteboardShare && whiteboardShare.disposition === _constants.FLOOR_ACTION.RELEASED || whiteboardShare.disposition === null)) {
3289
3309
  newShareStatus = _constants.SHARE_STATUS.NO_SHARE;
3290
3310
  }
3311
+ _loggerProxy.default.logger.info("Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=".concat(_this14.shareStatus, " newShareStatus=").concat(newShareStatus));
3291
3312
  if (!(newShareStatus !== _this14.shareStatus)) {
3292
- _context8.next = 45;
3313
+ _context8.next = 46;
3293
3314
  break;
3294
3315
  }
3295
3316
  oldShareStatus = _this14.shareStatus; // update our state before we send out any notifications
@@ -3297,37 +3318,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3297
3318
 
3298
3319
  // send out "stop" notifications for the old state
3299
3320
  _context8.t0 = oldShareStatus;
3300
- _context8.next = _context8.t0 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 14 : _context8.t0 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 16 : _context8.t0 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 18 : _context8.t0 === _constants.SHARE_STATUS.NO_SHARE ? 20 : 21;
3321
+ _context8.next = _context8.t0 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 15 : _context8.t0 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 17 : _context8.t0 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 19 : _context8.t0 === _constants.SHARE_STATUS.NO_SHARE ? 21 : 22;
3301
3322
  break;
3302
- case 14:
3323
+ case 15:
3303
3324
  _triggerProxy.default.trigger(_this14, {
3304
3325
  file: 'meetings/index',
3305
3326
  function: 'remoteShare'
3306
3327
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE);
3307
- return _context8.abrupt("break", 22);
3308
- case 16:
3328
+ return _context8.abrupt("break", 23);
3329
+ case 17:
3309
3330
  _triggerProxy.default.trigger(_this14, {
3310
3331
  file: 'meeting/index',
3311
3332
  function: 'localShare'
3312
3333
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL, {
3313
3334
  reason: _constants.SHARE_STOPPED_REASON.SELF_STOPPED
3314
3335
  });
3315
- return _context8.abrupt("break", 22);
3316
- case 18:
3336
+ return _context8.abrupt("break", 23);
3337
+ case 19:
3317
3338
  _triggerProxy.default.trigger(_this14, {
3318
3339
  file: 'meeting/index',
3319
3340
  function: 'stopWhiteboardShare'
3320
3341
  }, _constants.EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD);
3321
- return _context8.abrupt("break", 22);
3322
- case 20:
3323
- return _context8.abrupt("break", 22);
3342
+ return _context8.abrupt("break", 23);
3324
3343
  case 21:
3325
- return _context8.abrupt("break", 22);
3344
+ return _context8.abrupt("break", 23);
3326
3345
  case 22:
3346
+ return _context8.abrupt("break", 23);
3347
+ case 23:
3327
3348
  _context8.t1 = newShareStatus;
3328
- _context8.next = _context8.t1 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 25 : _context8.t1 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 34 : _context8.t1 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 37 : _context8.t1 === _constants.SHARE_STATUS.NO_SHARE ? 40 : 41;
3349
+ _context8.next = _context8.t1 === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE ? 26 : _context8.t1 === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE ? 35 : _context8.t1 === _constants.SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE ? 38 : _context8.t1 === _constants.SHARE_STATUS.NO_SHARE ? 41 : 42;
3329
3350
  break;
3330
- case 25:
3351
+ case 26:
3331
3352
  sendStartedSharingRemote = function sendStartedSharingRemote() {
3332
3353
  _this14.remoteShareInstanceId = contentShare.shareInstanceId;
3333
3354
  _triggerProxy.default.trigger(_this14, {
@@ -3341,20 +3362,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3341
3362
  resourceType: contentShare.resourceType
3342
3363
  });
3343
3364
  };
3344
- _context8.prev = 26;
3365
+ _context8.prev = 27;
3345
3366
  if (!((_this14$mediaProperti = _this14.mediaProperties.mediaDirection) !== null && _this14$mediaProperti !== void 0 && _this14$mediaProperti.sendShare && oldShareStatus === _constants.SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
3346
- _context8.next = 30;
3367
+ _context8.next = 31;
3347
3368
  break;
3348
3369
  }
3349
- _context8.next = 30;
3370
+ _context8.next = 31;
3350
3371
  return _this14.unpublishStreams([_this14.mediaProperties.shareVideoStream, _this14.mediaProperties.shareAudioStream]);
3351
- case 30:
3352
- _context8.prev = 30;
3372
+ case 31:
3373
+ _context8.prev = 31;
3353
3374
  sendStartedSharingRemote();
3354
- return _context8.finish(30);
3355
- case 33:
3356
- return _context8.abrupt("break", 42);
3375
+ return _context8.finish(31);
3357
3376
  case 34:
3377
+ return _context8.abrupt("break", 43);
3378
+ case 35:
3358
3379
  _triggerProxy.default.trigger(_this14, {
3359
3380
  file: 'meeting/index',
3360
3381
  function: 'share'
@@ -3370,8 +3391,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3370
3391
  meetingId: _this14.id
3371
3392
  }
3372
3393
  });
3373
- return _context8.abrupt("break", 42);
3374
- case 37:
3394
+ return _context8.abrupt("break", 43);
3395
+ case 38:
3375
3396
  _triggerProxy.default.trigger(_this14, {
3376
3397
  file: 'meeting/index',
3377
3398
  function: 'startWhiteboardShare'
@@ -3389,16 +3410,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3389
3410
  meetingId: _this14.id
3390
3411
  }
3391
3412
  });
3392
- return _context8.abrupt("break", 42);
3393
- case 40:
3394
- return _context8.abrupt("break", 42);
3413
+ return _context8.abrupt("break", 43);
3395
3414
  case 41:
3396
- return _context8.abrupt("break", 42);
3415
+ return _context8.abrupt("break", 43);
3397
3416
  case 42:
3417
+ return _context8.abrupt("break", 43);
3418
+ case 43:
3398
3419
  _this14.members.locusMediaSharesUpdate(payload);
3399
- _context8.next = 46;
3420
+ _context8.next = 47;
3400
3421
  break;
3401
- case 45:
3422
+ case 46:
3402
3423
  if (newShareStatus === _constants.SHARE_STATUS.REMOTE_SHARE_ACTIVE) {
3403
3424
  // if we got here, then some remote participant has stolen
3404
3425
  // the presentation from another remote participant
@@ -3436,11 +3457,11 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3436
3457
  });
3437
3458
  _this14.members.locusMediaSharesUpdate(payload);
3438
3459
  }
3439
- case 46:
3460
+ case 47:
3440
3461
  case "end":
3441
3462
  return _context8.stop();
3442
3463
  }
3443
- }, _callee8, null, [[26,, 30, 33]]);
3464
+ }, _callee8, null, [[27,, 31, 34]]);
3444
3465
  }));
3445
3466
  return function (_x8) {
3446
3467
  return _ref23.apply(this, arguments);
@@ -3597,7 +3618,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3597
3618
  var _this19 = this;
3598
3619
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, function (payload) {
3599
3620
  if (_this19.audio) {
3600
- _this19.audio.handleServerLocalUnmuteRequired(_this19);
3621
+ _this19.audio.handleServerLocalUnmuteRequired(_this19, payload.unmuteAllowed);
3601
3622
  _triggerProxy.default.trigger(_this19, {
3602
3623
  file: 'meeting/index',
3603
3624
  function: 'setUpLocusInfoSelfListener'
@@ -8398,66 +8419,91 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8398
8419
  key: "publishStreams",
8399
8420
  value: (function () {
8400
8421
  var _publishStreams = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(streams) {
8401
- var _streams$screenShare, _streams$screenShare2, _streams$microphone, _streams$camera, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6, _streams$screenShare7, _streams$screenShare8;
8402
- var floorRequestNeeded, _streams$screenShare9;
8422
+ var _streams$screenShare, _streams$screenShare2, _streams$screenShare3, _streams$screenShare4, _streams$screenShare5, _streams$screenShare6;
8423
+ var streamChecks, _i, _streamChecks, _streamChecks$_i, stream, name, floorRequestNeeded, _streams$screenShare7;
8403
8424
  return _regenerator.default.wrap(function _callee37$(_context37) {
8404
8425
  while (1) switch (_context37.prev = _context37.next) {
8405
8426
  case 0:
8427
+ _loggerProxy.default.logger.info("Meeting:index#publishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8406
8428
  this.checkMediaConnection();
8407
8429
  if (!(!streams.microphone && !streams.camera && !((_streams$screenShare = streams.screenShare) !== null && _streams$screenShare !== void 0 && _streams$screenShare.audio) && !((_streams$screenShare2 = streams.screenShare) !== null && _streams$screenShare2 !== void 0 && _streams$screenShare2.video))) {
8408
- _context37.next = 3;
8430
+ _context37.next = 4;
8409
8431
  break;
8410
8432
  }
8411
8433
  return _context37.abrupt("return");
8412
- case 3:
8413
- if (!((streams === null || streams === void 0 ? void 0 : (_streams$microphone = streams.microphone) === null || _streams$microphone === void 0 ? void 0 : _streams$microphone.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$camera = streams.camera) === null || _streams$camera === void 0 ? void 0 : _streams$camera.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : (_streams$screenShare4 = _streams$screenShare3.audio) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.readyState) === 'ended' || (streams === null || streams === void 0 ? void 0 : (_streams$screenShare5 = streams.screenShare) === null || _streams$screenShare5 === void 0 ? void 0 : (_streams$screenShare6 = _streams$screenShare5.video) === null || _streams$screenShare6 === void 0 ? void 0 : _streams$screenShare6.readyState) === 'ended')) {
8414
- _context37.next = 5;
8434
+ case 4:
8435
+ streamChecks = [{
8436
+ stream: streams === null || streams === void 0 ? void 0 : streams.microphone,
8437
+ name: 'microphone'
8438
+ }, {
8439
+ stream: streams === null || streams === void 0 ? void 0 : streams.camera,
8440
+ name: 'camera'
8441
+ }, {
8442
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare3 = streams.screenShare) === null || _streams$screenShare3 === void 0 ? void 0 : _streams$screenShare3.audio,
8443
+ name: 'screenShare audio'
8444
+ }, {
8445
+ stream: streams === null || streams === void 0 ? void 0 : (_streams$screenShare4 = streams.screenShare) === null || _streams$screenShare4 === void 0 ? void 0 : _streams$screenShare4.video,
8446
+ name: 'screenShare video'
8447
+ }];
8448
+ _i = 0, _streamChecks = streamChecks;
8449
+ case 6:
8450
+ if (!(_i < _streamChecks.length)) {
8451
+ _context37.next = 13;
8415
8452
  break;
8416
8453
  }
8417
- throw new Error("Attempted to publish stream with ended readyState, correlationId=".concat(this.correlationId));
8418
- case 5:
8419
- floorRequestNeeded = false; // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting
8420
- if (!(this.isMultistream && (_streams$screenShare7 = streams.screenShare) !== null && _streams$screenShare7 !== void 0 && _streams$screenShare7.audio)) {
8454
+ _streamChecks$_i = _streamChecks[_i], stream = _streamChecks$_i.stream, name = _streamChecks$_i.name;
8455
+ if (!((stream === null || stream === void 0 ? void 0 : stream.readyState) === 'ended')) {
8421
8456
  _context37.next = 10;
8422
8457
  break;
8423
8458
  }
8424
- _context37.next = 9;
8459
+ throw new Error("Attempted to publish ".concat(name, " stream with ended readyState, correlationId=").concat(this.correlationId));
8460
+ case 10:
8461
+ _i++;
8462
+ _context37.next = 6;
8463
+ break;
8464
+ case 13:
8465
+ floorRequestNeeded = false; // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting
8466
+ if (!(this.isMultistream && (_streams$screenShare5 = streams.screenShare) !== null && _streams$screenShare5 !== void 0 && _streams$screenShare5.audio)) {
8467
+ _context37.next = 18;
8468
+ break;
8469
+ }
8470
+ _context37.next = 17;
8425
8471
  return this.setLocalShareAudioStream(streams.screenShare.audio);
8426
- case 9:
8472
+ case 17:
8427
8473
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8428
- case 10:
8429
- if (!((_streams$screenShare8 = streams.screenShare) !== null && _streams$screenShare8 !== void 0 && _streams$screenShare8.video)) {
8430
- _context37.next = 14;
8474
+ case 18:
8475
+ if (!((_streams$screenShare6 = streams.screenShare) !== null && _streams$screenShare6 !== void 0 && _streams$screenShare6.video)) {
8476
+ _context37.next = 22;
8431
8477
  break;
8432
8478
  }
8433
- _context37.next = 13;
8434
- return this.setLocalShareVideoStream((_streams$screenShare9 = streams.screenShare) === null || _streams$screenShare9 === void 0 ? void 0 : _streams$screenShare9.video);
8435
- case 13:
8479
+ _context37.next = 21;
8480
+ return this.setLocalShareVideoStream((_streams$screenShare7 = streams.screenShare) === null || _streams$screenShare7 === void 0 ? void 0 : _streams$screenShare7.video);
8481
+ case 21:
8436
8482
  floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;
8437
- case 14:
8483
+ case 22:
8438
8484
  if (!streams.microphone) {
8439
- _context37.next = 17;
8485
+ _context37.next = 25;
8440
8486
  break;
8441
8487
  }
8442
- _context37.next = 17;
8488
+ _context37.next = 25;
8443
8489
  return this.setLocalAudioStream(streams.microphone);
8444
- case 17:
8490
+ case 25:
8445
8491
  if (!streams.camera) {
8446
- _context37.next = 20;
8492
+ _context37.next = 28;
8447
8493
  break;
8448
8494
  }
8449
- _context37.next = 20;
8495
+ _context37.next = 28;
8450
8496
  return this.setLocalVideoStream(streams.camera);
8451
- case 20:
8497
+ case 28:
8452
8498
  if (this.isMultistream) {
8453
- _context37.next = 23;
8499
+ _context37.next = 31;
8454
8500
  break;
8455
8501
  }
8456
- _context37.next = 23;
8502
+ _context37.next = 31;
8457
8503
  return this.updateTranscodedMediaConnection();
8458
- case 23:
8504
+ case 31:
8459
8505
  if (!floorRequestNeeded) {
8460
- _context37.next = 29;
8506
+ _context37.next = 37;
8461
8507
  break;
8462
8508
  }
8463
8509
  this.localShareInstanceId = _uuid.default.v4();
@@ -8481,9 +8527,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8481
8527
  // we're sending the http request to Locus to request the screen share floor
8482
8528
  // only after the SDP update, because that's how it's always been done for transcoded meetings
8483
8529
  // and also if sharing from the start, we need confluence to have been created
8484
- _context37.next = 29;
8530
+ _context37.next = 37;
8485
8531
  return this.enqueueScreenShareFloorRequest();
8486
- case 29:
8532
+ case 37:
8487
8533
  case "end":
8488
8534
  return _context37.stop();
8489
8535
  }
@@ -8509,6 +8555,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8509
8555
  return _regenerator.default.wrap(function _callee38$(_context38) {
8510
8556
  while (1) switch (_context38.prev = _context38.next) {
8511
8557
  case 0:
8558
+ _loggerProxy.default.logger.info("Meeting:index#unpublishStreams --> called with: ".concat((0, _stringify.default)(streams)));
8512
8559
  this.checkMediaConnection();
8513
8560
  promises = [];
8514
8561
  _iterator = _createForOfIteratorHelper(streams.filter(function (t) {
@@ -8538,9 +8585,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8538
8585
  if (!this.isMultistream) {
8539
8586
  promises.push(this.updateTranscodedMediaConnection());
8540
8587
  }
8541
- _context38.next = 7;
8588
+ _context38.next = 8;
8542
8589
  return _promise.default.all(promises);
8543
- case 7:
8590
+ case 8:
8544
8591
  // we're allowing for the SDK to support just audio share as well
8545
8592
  // so a share could be active with only video, only audio, or both
8546
8593
  // we're only releasing the floor if both streams have ended
@@ -8557,7 +8604,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8557
8604
  // nothing to do here, error is logged already inside releaseScreenShareFloor()
8558
8605
  }
8559
8606
  }
8560
- case 8:
8607
+ case 9:
8561
8608
  case "end":
8562
8609
  return _context38.stop();
8563
8610
  }