@webex/calling 3.0.1-next.1 → 3.0.1-next.2

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.
@@ -21,6 +21,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
21
21
  var _internalMediaCore = require("@webex/internal-media-core");
22
22
  var _xstate = require("xstate");
23
23
  var _uuid = require("uuid");
24
+ var _webMediaEffects = require("@webex/web-media-effects");
24
25
  var _types = require("../../Errors/types");
25
26
  var _Utils = require("../../common/Utils");
26
27
  var _types2 = require("../../common/types");
@@ -87,6 +88,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
87
88
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "serviceIndicator", void 0);
88
89
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaNegotiationCompleted", void 0);
89
90
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "receivedRoapOKSeq", void 0);
91
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "localAudioStream", void 0);
90
92
  /**
91
93
  *
92
94
  */
@@ -163,6 +165,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
163
165
  return _ref.apply(this, arguments);
164
166
  };
165
167
  }());
168
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onEffectEnabled", function () {
169
+ _this.metricManager.submitBNRMetric(_types5.METRIC_EVENT.BNR_ENABLED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId);
170
+ });
171
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onEffectDisabled", function () {
172
+ _this.metricManager.submitBNRMetric(_types5.METRIC_EVENT.BNR_DISABLED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId);
173
+ });
174
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "registerEffectListener", function (addedEffect) {
175
+ if (_this.localAudioStream) {
176
+ var effect = _this.localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
177
+ if (effect === addedEffect) {
178
+ effect.on(_webMediaEffects.EffectEvent.Enabled, _this.onEffectEnabled);
179
+ effect.on(_webMediaEffects.EffectEvent.Disabled, _this.onEffectDisabled);
180
+ }
181
+ }
182
+ });
166
183
  /**
167
184
  *
168
185
  */
@@ -220,9 +237,19 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
220
237
  });
221
238
  return;
222
239
  }
223
- _this.mediaConnection.updateLocalTracks({
224
- audio: localAudioTrack
225
- });
240
+ try {
241
+ _this.mediaConnection.updateLocalTracks({
242
+ audio: localAudioTrack
243
+ });
244
+ _this.unregisterListeners();
245
+ _this.registerListeners(newAudioStream);
246
+ _this.localAudioStream = newAudioStream;
247
+ } catch (e) {
248
+ _Logger.default.warn("Unable to update media on call ".concat(_this.getCorrelationId(), ". Error: ").concat(e.message), {
249
+ file: _constants.CALL_FILE,
250
+ method: 'updateMedia'
251
+ });
252
+ }
226
253
  });
227
254
  _this.destination = destination;
228
255
  _this.direction = direction;
@@ -1478,6 +1505,9 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1478
1505
  case 12:
1479
1506
  this.deleteCb(this.correlationId);
1480
1507
 
1508
+ /* Clear the stream listeners */
1509
+ this.unregisterListeners();
1510
+
1481
1511
  /* istanbul ignore else */
1482
1512
  if (this.sessionTimer) {
1483
1513
  clearInterval(this.sessionTimer);
@@ -1498,7 +1528,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1498
1528
  type: 'E_CALL_CLEARED'
1499
1529
  });
1500
1530
  this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
1501
- case 18:
1531
+ case 19:
1502
1532
  case "end":
1503
1533
  return _context9.stop();
1504
1534
  }
@@ -1546,6 +1576,9 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1546
1576
  case 11:
1547
1577
  this.deleteCb(this.correlationId);
1548
1578
 
1579
+ /* Clear the stream listeners */
1580
+ this.unregisterListeners();
1581
+
1549
1582
  /* istanbul ignore else */
1550
1583
  if (this.sessionTimer) {
1551
1584
  clearInterval(this.sessionTimer);
@@ -1565,7 +1598,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1565
1598
  this.sendCallStateMachineEvt({
1566
1599
  type: 'E_CALL_CLEARED'
1567
1600
  });
1568
- case 16:
1601
+ case 17:
1569
1602
  case "end":
1570
1603
  return _context10.stop();
1571
1604
  }
@@ -2279,9 +2312,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2279
2312
  return _regenerator.default.wrap(function _callee17$(_context17) {
2280
2313
  while (1) switch (_context17.prev = _context17.next) {
2281
2314
  case 0:
2315
+ this.localAudioStream = localAudioStream;
2282
2316
  localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
2283
2317
  if (localAudioTrack) {
2284
- _context17.next = 6;
2318
+ _context17.next = 7;
2285
2319
  break;
2286
2320
  }
2287
2321
  _Logger.default.warn("Did not find a local track while answering the call ".concat(this.getCorrelationId()), {
@@ -2293,13 +2327,13 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2293
2327
  type: 'E_SEND_CALL_DISCONNECT'
2294
2328
  });
2295
2329
  return _context17.abrupt("return");
2296
- case 6:
2330
+ case 7:
2297
2331
  localAudioTrack.enabled = true;
2298
2332
  if (!this.mediaConnection) {
2299
2333
  this.initMediaConnection(localAudioTrack);
2300
2334
  this.mediaRoapEventsListener();
2301
2335
  this.mediaTrackListener();
2302
- this.outputTrackUpdateListener(localAudioStream);
2336
+ this.registerListeners(localAudioStream);
2303
2337
  }
2304
2338
  if (this.callStateMachine.state.value === 'S_SEND_CALL_PROGRESS') {
2305
2339
  this.sendCallStateMachineEvt({
@@ -2311,7 +2345,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2311
2345
  method: 'answer'
2312
2346
  });
2313
2347
  }
2314
- case 9:
2348
+ case 10:
2315
2349
  case "end":
2316
2350
  return _context17.stop();
2317
2351
  }
@@ -2335,9 +2369,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2335
2369
  return _regenerator.default.wrap(function _callee18$(_context18) {
2336
2370
  while (1) switch (_context18.prev = _context18.next) {
2337
2371
  case 0:
2372
+ this.localAudioStream = localAudioStream;
2338
2373
  localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
2339
2374
  if (localAudioTrack) {
2340
- _context18.next = 6;
2375
+ _context18.next = 7;
2341
2376
  break;
2342
2377
  }
2343
2378
  _Logger.default.warn("Did not find a local track while dialing the call ".concat(this.getCorrelationId()), {
@@ -2347,13 +2382,13 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2347
2382
  this.deleteCb(this.getCorrelationId());
2348
2383
  this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());
2349
2384
  return _context18.abrupt("return");
2350
- case 6:
2385
+ case 7:
2351
2386
  localAudioTrack.enabled = true;
2352
2387
  if (!this.mediaConnection) {
2353
2388
  this.initMediaConnection(localAudioTrack);
2354
2389
  this.mediaRoapEventsListener();
2355
2390
  this.mediaTrackListener();
2356
- this.outputTrackUpdateListener(localAudioStream);
2391
+ this.registerListeners(localAudioStream);
2357
2392
  }
2358
2393
  if (this.mediaStateMachine.state.value === 'S_ROAP_IDLE') {
2359
2394
  this.sendMediaStateMachineEvt({
@@ -2365,7 +2400,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2365
2400
  method: 'dial'
2366
2401
  });
2367
2402
  }
2368
- case 9:
2403
+ case 10:
2369
2404
  case "end":
2370
2405
  return _context18.stop();
2371
2406
  }
@@ -2826,14 +2861,35 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2826
2861
  });
2827
2862
  }
2828
2863
  }, {
2829
- key: "outputTrackUpdateListener",
2830
- value: function outputTrackUpdateListener(localAudioStream) {
2864
+ key: "unregisterListeners",
2865
+ value: function unregisterListeners() {
2866
+ if (this.localAudioStream) {
2867
+ var effect = this.localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
2868
+ if (effect) {
2869
+ effect.off(_webMediaEffects.EffectEvent.Enabled, this.onEffectEnabled);
2870
+ effect.off(_webMediaEffects.EffectEvent.Disabled, this.onEffectDisabled);
2871
+ }
2872
+ this.localAudioStream.off(_internalMediaCore.LocalStreamEventNames.EffectAdded, this.registerEffectListener);
2873
+ }
2874
+ }
2875
+ }, {
2876
+ key: "registerListeners",
2877
+ value: function registerListeners(localAudioStream) {
2831
2878
  var _this16 = this;
2832
- localAudioStream.on(_internalMediaCore.LocalStreamEventNames.OutputTrackChange, function (track) {
2879
+ localAudioStream.on(_internalMediaCore.LocalStreamEventNames.OutputTrackChange, function (audioTrack) {
2833
2880
  _this16.mediaConnection.updateLocalTracks({
2834
- audio: track
2881
+ audio: audioTrack
2835
2882
  });
2836
2883
  });
2884
+ localAudioStream.on(_internalMediaCore.LocalStreamEventNames.EffectAdded, this.registerEffectListener);
2885
+ var effect = localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
2886
+ if (effect) {
2887
+ effect.on(_webMediaEffects.EffectEvent.Enabled, this.onEffectEnabled);
2888
+ effect.on(_webMediaEffects.EffectEvent.Disabled, this.onEffectDisabled);
2889
+ if (effect.isEnabled) {
2890
+ this.onEffectEnabled();
2891
+ }
2892
+ }
2837
2893
  }
2838
2894
  }, {
2839
2895
  key: "delete",