@webex/calling 3.12.0-next.4 → 3.12.0-next.40

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 (204) hide show
  1. package/dist/CallingClient/CallingClient.js +463 -205
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.test.js +170 -77
  4. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  5. package/dist/CallingClient/calling/call.js +589 -445
  6. package/dist/CallingClient/calling/call.js.map +1 -1
  7. package/dist/CallingClient/calling/call.test.js +695 -445
  8. package/dist/CallingClient/calling/call.test.js.map +1 -1
  9. package/dist/CallingClient/calling/callManager.js +53 -30
  10. package/dist/CallingClient/calling/callManager.js.map +1 -1
  11. package/dist/CallingClient/calling/callManager.test.js +35 -0
  12. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  13. package/dist/CallingClient/calling/types.js +2 -0
  14. package/dist/CallingClient/calling/types.js.map +1 -1
  15. package/dist/CallingClient/constants.js +25 -3
  16. package/dist/CallingClient/constants.js.map +1 -1
  17. package/dist/CallingClient/line/index.js +4 -1
  18. package/dist/CallingClient/line/index.js.map +1 -1
  19. package/dist/CallingClient/line/line.test.js +16 -1
  20. package/dist/CallingClient/line/line.test.js.map +1 -1
  21. package/dist/CallingClient/registration/register.js +712 -406
  22. package/dist/CallingClient/registration/register.js.map +1 -1
  23. package/dist/CallingClient/registration/register.test.js +202 -21
  24. package/dist/CallingClient/registration/register.test.js.map +1 -1
  25. package/dist/CallingClient/registration/types.js.map +1 -1
  26. package/dist/CallingClient/registration/webWorker.js +41 -104
  27. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  28. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  29. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  30. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  31. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  32. package/dist/CallingClient/utils/constants.js +46 -0
  33. package/dist/CallingClient/utils/constants.js.map +1 -0
  34. package/dist/CallingClient/utils/index.js +63 -0
  35. package/dist/CallingClient/utils/index.js.map +1 -0
  36. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  37. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  38. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +211 -0
  39. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  40. package/dist/CallingClient/utils/request.js +354 -0
  41. package/dist/CallingClient/utils/request.js.map +1 -0
  42. package/dist/CallingClient/utils/request.test.js +881 -0
  43. package/dist/CallingClient/utils/request.test.js.map +1 -0
  44. package/dist/CallingClient/utils/types.js +7 -0
  45. package/dist/CallingClient/utils/types.js.map +1 -0
  46. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  47. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  48. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  49. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  50. package/dist/Contacts/ContactsClient.js +13 -11
  51. package/dist/Contacts/ContactsClient.js.map +1 -1
  52. package/dist/Contacts/ContactsClient.test.js +3 -8
  53. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  54. package/dist/Events/types.js +1 -11
  55. package/dist/Events/types.js.map +1 -1
  56. package/dist/Metrics/index.js +63 -2
  57. package/dist/Metrics/index.js.map +1 -1
  58. package/dist/Metrics/index.test.js +357 -1
  59. package/dist/Metrics/index.test.js.map +1 -1
  60. package/dist/Metrics/types.js +19 -1
  61. package/dist/Metrics/types.js.map +1 -1
  62. package/dist/SDKConnector/types.js.map +1 -1
  63. package/dist/common/Utils.js +138 -44
  64. package/dist/common/Utils.js.map +1 -1
  65. package/dist/common/testUtil.js +8 -4
  66. package/dist/common/testUtil.js.map +1 -1
  67. package/dist/common/types.js +2 -0
  68. package/dist/common/types.js.map +1 -1
  69. package/dist/mobius-socket/config.js +24 -0
  70. package/dist/mobius-socket/config.js.map +1 -0
  71. package/dist/mobius-socket/errors.js +143 -0
  72. package/dist/mobius-socket/errors.js.map +1 -0
  73. package/dist/mobius-socket/errors.test.js +20 -0
  74. package/dist/mobius-socket/errors.test.js.map +1 -0
  75. package/dist/mobius-socket/index.js +57 -0
  76. package/dist/mobius-socket/index.js.map +1 -0
  77. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  78. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  79. package/dist/mobius-socket/mobius-socket.js +841 -0
  80. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  81. package/dist/mobius-socket/mobius-socket.test.js +1845 -0
  82. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  83. package/dist/mobius-socket/socket/constants.js +55 -0
  84. package/dist/mobius-socket/socket/constants.js.map +1 -0
  85. package/dist/mobius-socket/socket/index.js +15 -0
  86. package/dist/mobius-socket/socket/index.js.map +1 -0
  87. package/dist/mobius-socket/socket/socket-base.js +604 -0
  88. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  89. package/dist/mobius-socket/socket/socket.js +19 -0
  90. package/dist/mobius-socket/socket/socket.js.map +1 -0
  91. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  92. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  93. package/dist/mobius-socket/socket/types.js +7 -0
  94. package/dist/mobius-socket/socket/types.js.map +1 -0
  95. package/dist/mobius-socket/socket.test.js +727 -0
  96. package/dist/mobius-socket/socket.test.js.map +1 -0
  97. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  98. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  99. package/dist/mobius-socket/test/promise-tick.js +28 -0
  100. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  101. package/dist/mobius-socket/types.js +7 -0
  102. package/dist/mobius-socket/types.js.map +1 -0
  103. package/dist/module/CallingClient/CallingClient.js +141 -10
  104. package/dist/module/CallingClient/calling/call.js +177 -61
  105. package/dist/module/CallingClient/calling/callManager.js +27 -7
  106. package/dist/module/CallingClient/calling/types.js +2 -0
  107. package/dist/module/CallingClient/constants.js +21 -0
  108. package/dist/module/CallingClient/line/index.js +2 -2
  109. package/dist/module/CallingClient/registration/register.js +234 -62
  110. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  111. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  112. package/dist/module/CallingClient/utils/constants.js +30 -0
  113. package/dist/module/CallingClient/utils/index.js +5 -0
  114. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  115. package/dist/module/CallingClient/utils/request.js +165 -0
  116. package/dist/module/CallingClient/utils/types.js +1 -0
  117. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  118. package/dist/module/Contacts/ContactsClient.js +1 -1
  119. package/dist/module/Events/types.js +0 -10
  120. package/dist/module/Metrics/index.js +48 -1
  121. package/dist/module/Metrics/types.js +18 -0
  122. package/dist/module/common/Utils.js +52 -12
  123. package/dist/module/common/testUtil.js +5 -1
  124. package/dist/module/common/types.js +2 -0
  125. package/dist/module/mobius-socket/config.js +15 -0
  126. package/dist/module/mobius-socket/errors.js +58 -0
  127. package/dist/module/mobius-socket/index.js +24 -0
  128. package/dist/module/mobius-socket/mobius-socket.js +589 -0
  129. package/dist/module/mobius-socket/socket/constants.js +26 -0
  130. package/dist/module/mobius-socket/socket/index.js +4 -0
  131. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  132. package/dist/module/mobius-socket/socket/socket.js +9 -0
  133. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  134. package/dist/module/mobius-socket/socket/types.js +1 -0
  135. package/dist/module/mobius-socket/types.js +1 -0
  136. package/dist/types/CallingClient/CallingClient.d.ts +7 -0
  137. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  138. package/dist/types/CallingClient/calling/call.d.ts +12 -0
  139. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  140. package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
  141. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  142. package/dist/types/CallingClient/calling/types.d.ts +34 -9
  143. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  144. package/dist/types/CallingClient/constants.d.ts +21 -0
  145. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  146. package/dist/types/CallingClient/line/index.d.ts +1 -1
  147. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  148. package/dist/types/CallingClient/registration/register.d.ts +7 -1
  149. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  150. package/dist/types/CallingClient/registration/types.d.ts +4 -2
  151. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  152. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  153. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  154. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  155. package/dist/types/CallingClient/utils/constants.d.ts +30 -0
  156. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  157. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  158. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  159. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  160. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  161. package/dist/types/CallingClient/utils/request.d.ts +24 -0
  162. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  163. package/dist/types/CallingClient/utils/types.d.ts +29 -0
  164. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  165. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  166. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  167. package/dist/types/Events/types.d.ts +4 -11
  168. package/dist/types/Events/types.d.ts.map +1 -1
  169. package/dist/types/Metrics/index.d.ts.map +1 -1
  170. package/dist/types/Metrics/types.d.ts +19 -2
  171. package/dist/types/Metrics/types.d.ts.map +1 -1
  172. package/dist/types/SDKConnector/types.d.ts +24 -0
  173. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  174. package/dist/types/common/Utils.d.ts +9 -2
  175. package/dist/types/common/Utils.d.ts.map +1 -1
  176. package/dist/types/common/testUtil.d.ts +4 -1
  177. package/dist/types/common/testUtil.d.ts.map +1 -1
  178. package/dist/types/common/types.d.ts +3 -0
  179. package/dist/types/common/types.d.ts.map +1 -1
  180. package/dist/types/mobius-socket/config.d.ts +17 -0
  181. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  182. package/dist/types/mobius-socket/errors.d.ts +32 -0
  183. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  184. package/dist/types/mobius-socket/index.d.ts +14 -0
  185. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  186. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  187. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  188. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  189. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  190. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  191. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  192. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  193. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  194. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  195. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  196. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  197. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  198. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  199. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  200. package/dist/types/mobius-socket/types.d.ts +21 -0
  201. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  202. package/package.json +20 -5
  203. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  204. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -41,6 +41,7 @@ var _CallerId = require("./CallerId");
41
41
  var _types5 = require("../../Metrics/types");
42
42
  var _Metrics = require("../../Metrics");
43
43
  var _constants2 = require("../../common/constants");
44
+ var _request = require("../utils/request");
44
45
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
45
46
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
46
47
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
@@ -92,10 +93,193 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
92
93
  // Used in WxCC calls
93
94
  (0, _defineProperty2.default)(_this, "serviceIndicator", void 0);
94
95
  (0, _defineProperty2.default)(_this, "mediaNegotiationCompleted", void 0);
96
+ (0, _defineProperty2.default)(_this, "connectPending", void 0);
95
97
  (0, _defineProperty2.default)(_this, "receivedRoapOKSeq", void 0);
96
98
  (0, _defineProperty2.default)(_this, "localAudioStream", void 0);
97
99
  (0, _defineProperty2.default)(_this, "rtcMetrics", void 0);
98
100
  (0, _defineProperty2.default)(_this, "callKeepaliveRetryCount", 0);
101
+ (0, _defineProperty2.default)(_this, "apiRequest", void 0);
102
+ (0, _defineProperty2.default)(_this, "handleMediaRoapEvent", /*#__PURE__*/function () {
103
+ var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(event) {
104
+ var _event$roapMessage, _event$roapMessage2;
105
+ var mediaOk, sdpVideoPortZero, _t;
106
+ return _regenerator.default.wrap(function (_context) {
107
+ while (1) switch (_context.prev = _context.next) {
108
+ case 0:
109
+ _Logger.default.info("ROAP message to send (rcv from MEDIA-SDK) :\n \n type: ".concat((_event$roapMessage = event.roapMessage) === null || _event$roapMessage === void 0 ? void 0 : _event$roapMessage.messageType, ", seq: ").concat(event.roapMessage.seq, " , version: ").concat(event.roapMessage.version), {
110
+ file: _constants.CALL_FILE,
111
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
112
+ });
113
+ _Logger.default.info("SDP message to send : \n ".concat((_event$roapMessage2 = event.roapMessage) === null || _event$roapMessage2 === void 0 ? void 0 : _event$roapMessage2.sdp), {
114
+ file: _constants.CALL_FILE,
115
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
116
+ });
117
+ _t = event.roapMessage.messageType;
118
+ _context.next = _t === _types4.RoapScenario.OK ? 1 : _t === _types4.RoapScenario.OFFER ? 2 : _t === _types4.RoapScenario.ANSWER ? 4 : _t === _types4.RoapScenario.ERROR ? 6 : _t === _types4.RoapScenario.OFFER_RESPONSE ? 7 : 9;
119
+ break;
120
+ case 1:
121
+ mediaOk = {
122
+ received: false,
123
+ message: event.roapMessage
124
+ };
125
+ _this.sendMediaStateMachineEvt({
126
+ type: 'E_ROAP_OK',
127
+ data: mediaOk
128
+ });
129
+ return _context.abrupt("continue", 9);
130
+ case 2:
131
+ if (event.roapMessage.sdp) {
132
+ _context.next = 3;
133
+ break;
134
+ }
135
+ _Logger.default.warn('Received OFFER without SDP from media SDK', {
136
+ file: _constants.CALL_FILE,
137
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
138
+ });
139
+ return _context.abrupt("continue", 9);
140
+ case 3:
141
+ // TODO: Remove these after the Media-Core adds the fix
142
+ // Check if at least one IPv6 "c=" line is present
143
+ _Logger.default.info("before modifying sdp: ".concat(event.roapMessage.sdp), {
144
+ file: _constants.CALL_FILE,
145
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
146
+ });
147
+ event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
148
+ sdpVideoPortZero = event.roapMessage.sdp.replace(/^m=(video) (?:\d+) /gim, 'm=$1 0 ');
149
+ _Logger.default.info("after modification sdp: ".concat(sdpVideoPortZero), {
150
+ file: _constants.CALL_FILE,
151
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
152
+ });
153
+ event.roapMessage.sdp = sdpVideoPortZero;
154
+ _this.localRoapMessage = event.roapMessage;
155
+ _this.sendCallStateMachineEvt({
156
+ type: 'E_SEND_CALL_SETUP',
157
+ data: event.roapMessage
158
+ });
159
+ return _context.abrupt("continue", 9);
160
+ case 4:
161
+ if (event.roapMessage.sdp) {
162
+ _context.next = 5;
163
+ break;
164
+ }
165
+ _Logger.default.warn('Received OFFER without SDP from media SDK', {
166
+ file: _constants.CALL_FILE,
167
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
168
+ });
169
+ return _context.abrupt("continue", 9);
170
+ case 5:
171
+ event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
172
+ _this.localRoapMessage = event.roapMessage;
173
+ if (_this.connectPending) {
174
+ _this.sendCallStateMachineEvt({
175
+ type: 'E_SEND_CALL_CONNECT'
176
+ });
177
+ }
178
+ _this.sendMediaStateMachineEvt({
179
+ type: 'E_SEND_ROAP_ANSWER',
180
+ data: event.roapMessage
181
+ });
182
+ return _context.abrupt("continue", 9);
183
+ case 6:
184
+ _this.sendMediaStateMachineEvt({
185
+ type: 'E_ROAP_ERROR',
186
+ data: event.roapMessage
187
+ });
188
+ return _context.abrupt("continue", 9);
189
+ case 7:
190
+ if (event.roapMessage.sdp) {
191
+ _context.next = 8;
192
+ break;
193
+ }
194
+ _Logger.default.warn('Received OFFER without SDP from media SDK', {
195
+ file: _constants.CALL_FILE,
196
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
197
+ });
198
+ return _context.abrupt("continue", 9);
199
+ case 8:
200
+ event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
201
+ _this.localRoapMessage = event.roapMessage;
202
+ if (_this.connectPending) {
203
+ _this.sendCallStateMachineEvt({
204
+ type: 'E_SEND_CALL_CONNECT'
205
+ });
206
+ }
207
+ _this.sendMediaStateMachineEvt({
208
+ type: 'E_SEND_ROAP_OFFER',
209
+ data: event.roapMessage
210
+ });
211
+ return _context.abrupt("continue", 9);
212
+ case 9:
213
+ case "end":
214
+ return _context.stop();
215
+ }
216
+ }, _callee);
217
+ }));
218
+ return function (_x) {
219
+ return _ref.apply(this, arguments);
220
+ };
221
+ }());
222
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
223
+ (0, _defineProperty2.default)(_this, "handleRemoteTrackAdded", function (event) {
224
+ if (event.type === _types3.MEDIA_CONNECTION_EVENT_KEYS.MEDIA_TYPE_AUDIO) {
225
+ _this.emit(_types3.CALL_EVENT_KEYS.REMOTE_MEDIA, event.track);
226
+ }
227
+ });
228
+ (0, _defineProperty2.default)(_this, "handleIceGatheringStateChanged", function (event) {
229
+ var iceGatheringState = Call.getPeerConnectionStateFromEvent(event, 'iceGatheringState');
230
+ _Logger.default.info("ICE gathering state changed to: ".concat(iceGatheringState), {
231
+ file: _constants.CALL_FILE,
232
+ method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
233
+ });
234
+ _this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, _types5.MEDIA_CONNECTION_ACTION.ICE_GATHERING_STATE_CHANGED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, iceGatheringState);
235
+ });
236
+ (0, _defineProperty2.default)(_this, "handlePeerConnectionStateChanged", function (event) {
237
+ var connectionState = Call.getPeerConnectionStateFromEvent(event, 'connectionState');
238
+ _Logger.default.info("Peer connection state changed to: ".concat(connectionState), {
239
+ file: _constants.CALL_FILE,
240
+ method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
241
+ });
242
+ _this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, _types5.MEDIA_CONNECTION_ACTION.PEER_CONNECTION_STATE_CHANGED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, connectionState);
243
+ });
244
+ (0, _defineProperty2.default)(_this, "handleIceConnectionStateChanged", function (event) {
245
+ var iceConnectionState = Call.getPeerConnectionStateFromEvent(event, 'iceConnectionState');
246
+ _Logger.default.info("ICE connection state changed to: ".concat(iceConnectionState), {
247
+ file: _constants.CALL_FILE,
248
+ method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
249
+ });
250
+ _this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, _types5.MEDIA_CONNECTION_ACTION.ICE_CONNECTION_STATE_CHANGED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, iceConnectionState);
251
+ });
252
+ (0, _defineProperty2.default)(_this, "handleIceCandidateError", function (event) {
253
+ var _event$address, _event$port;
254
+ var iceErrorPayload = {
255
+ address: (_event$address = event.address) !== null && _event$address !== void 0 ? _event$address : null,
256
+ errorCode: event.errorCode,
257
+ errorText: event.errorText,
258
+ port: (_event$port = event.port) !== null && _event$port !== void 0 ? _event$port : null,
259
+ url: event.url
260
+ };
261
+ _Logger.default.warn("ICE candidate error occurred: ".concat((0, _stringify.default)(iceErrorPayload)), {
262
+ file: _constants.CALL_FILE,
263
+ method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
264
+ });
265
+ var callError = (0, _CallError.createCallError)("ICE candidate error occurred: ".concat((0, _stringify.default)(iceErrorPayload)), {
266
+ file: _constants.CALL_FILE,
267
+ method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
268
+ }, _types.ERROR_TYPE.CALL_ERROR, _this.correlationId, _types.ERROR_LAYER.MEDIA);
269
+ _this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, _types5.MEDIA_CONNECTION_ACTION.ICE_CANDIDATE_ERROR, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, undefined, callError);
270
+ });
271
+ (0, _defineProperty2.default)(_this, "handleRoapFailure", function (error) {
272
+ var failureMessage = error.message || 'Unknown ROAP failure received from media SDK';
273
+ _Logger.default.warn("ROAP failure occurred: ".concat(failureMessage), {
274
+ file: _constants.CALL_FILE,
275
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
276
+ });
277
+ var callError = (0, _CallError.createCallError)("ROAP failure occurred: ".concat(failureMessage), {
278
+ file: _constants.CALL_FILE,
279
+ method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
280
+ }, _types.ERROR_TYPE.CALL_ERROR, _this.correlationId, _types.ERROR_LAYER.MEDIA);
281
+ _this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, _types5.MEDIA_CONNECTION_ACTION.ROAP_FAILURE, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, undefined, callError);
282
+ });
99
283
  (0, _defineProperty2.default)(_this, "callKeepaliveRetryCallback", function (interval) {
100
284
  if (_this.callKeepaliveRetryCount === _constants.MAX_CALL_KEEPALIVE_RETRY_COUNT) {
101
285
  _Logger.default.warn("Max keepalive retry attempts reached. Aborting call keepalive for callId: ".concat(_this.callId), {
@@ -105,35 +289,35 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
105
289
  return;
106
290
  }
107
291
  _this.callKeepaliveRetryCount += 1;
108
- setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
109
- var _t;
110
- return _regenerator.default.wrap(function (_context) {
111
- while (1) switch (_context.prev = _context.next) {
292
+ setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
293
+ var _t2;
294
+ return _regenerator.default.wrap(function (_context2) {
295
+ while (1) switch (_context2.prev = _context2.next) {
112
296
  case 0:
113
- _context.prev = 0;
114
- _context.next = 1;
297
+ _context2.prev = 0;
298
+ _context2.next = 1;
115
299
  return _this.postStatus();
116
300
  case 1:
117
301
  _this.scheduleCallKeepaliveInterval();
118
- _context.next = 3;
302
+ _context2.next = 3;
119
303
  break;
120
304
  case 2:
121
- _context.prev = 2;
122
- _t = _context["catch"](0);
123
- _context.next = 3;
124
- return _this.handleCallKeepaliveError(_t);
305
+ _context2.prev = 2;
306
+ _t2 = _context2["catch"](0);
307
+ _context2.next = 3;
308
+ return _this.handleCallKeepaliveError(_t2);
125
309
  case 3:
126
310
  case "end":
127
- return _context.stop();
311
+ return _context2.stop();
128
312
  }
129
- }, _callee, null, [[0, 2]]);
313
+ }, _callee2, null, [[0, 2]]);
130
314
  })), interval * 1000);
131
315
  });
132
316
  (0, _defineProperty2.default)(_this, "handleCallKeepaliveError", /*#__PURE__*/function () {
133
- var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(err) {
317
+ var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(err) {
134
318
  var error, abort;
135
- return _regenerator.default.wrap(function (_context2) {
136
- while (1) switch (_context2.prev = _context2.next) {
319
+ return _regenerator.default.wrap(function (_context3) {
320
+ while (1) switch (_context3.prev = _context3.next) {
137
321
  case 0:
138
322
  error = err;
139
323
  /* We are clearing the timer here as all are error scenarios. Only scenario where
@@ -145,13 +329,13 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
145
329
  if (_this.sessionTimer) {
146
330
  clearInterval(_this.sessionTimer);
147
331
  }
148
- _context2.next = 1;
332
+ _context3.next = 1;
149
333
  return (0, _Utils.handleCallErrors)(function (callError) {
150
334
  _this.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, callError);
151
335
  _this.submitCallErrorMetric(callError);
152
336
  }, _types.ERROR_LAYER.CALL_CONTROL, _this.callKeepaliveRetryCallback, _this.getCorrelationId(), error, 'handleCallEstablished', _constants.CALL_FILE);
153
337
  case 1:
154
- abort = _context2.sent;
338
+ abort = _context3.sent;
155
339
  if (abort) {
156
340
  _this.sendCallStateMachineEvt({
157
341
  type: 'E_SEND_CALL_DISCONNECT'
@@ -159,7 +343,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
159
343
  _this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, _this.getCorrelationId());
160
344
  _this.callKeepaliveRetryCount = 0;
161
345
  }
162
- _context2.next = 2;
346
+ _context3.next = 2;
163
347
  return (0, _Utils.uploadLogs)({
164
348
  correlationId: _this.correlationId,
165
349
  callId: _this.callId,
@@ -167,12 +351,12 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
167
351
  });
168
352
  case 2:
169
353
  case "end":
170
- return _context2.stop();
354
+ return _context3.stop();
171
355
  }
172
- }, _callee2);
356
+ }, _callee3);
173
357
  }));
174
- return function (_x) {
175
- return _ref2.apply(this, arguments);
358
+ return function (_x2) {
359
+ return _ref3.apply(this, arguments);
176
360
  };
177
361
  }());
178
362
  (0, _defineProperty2.default)(_this, "scheduleCallKeepaliveInterval", function () {
@@ -181,29 +365,29 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
181
365
  method: 'scheduleCallKeepaliveInterval'
182
366
  };
183
367
  clearInterval(_this.sessionTimer);
184
- _this.sessionTimer = setInterval(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
185
- var res, _t2;
186
- return _regenerator.default.wrap(function (_context3) {
187
- while (1) switch (_context3.prev = _context3.next) {
368
+ _this.sessionTimer = setInterval(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
369
+ var res, _t3;
370
+ return _regenerator.default.wrap(function (_context4) {
371
+ while (1) switch (_context4.prev = _context4.next) {
188
372
  case 0:
189
- _context3.prev = 0;
190
- _context3.next = 1;
373
+ _context4.prev = 0;
374
+ _context4.next = 1;
191
375
  return _this.postStatus();
192
376
  case 1:
193
- res = _context3.sent;
377
+ res = _context4.sent;
194
378
  _Logger.default.info("Session refresh successful", loggerContext);
195
- _context3.next = 3;
379
+ _context4.next = 3;
196
380
  break;
197
381
  case 2:
198
- _context3.prev = 2;
199
- _t2 = _context3["catch"](0);
200
- _context3.next = 3;
201
- return _this.handleCallKeepaliveError(_t2);
382
+ _context4.prev = 2;
383
+ _t3 = _context4["catch"](0);
384
+ _context4.next = 3;
385
+ return _this.handleCallKeepaliveError(_t3);
202
386
  case 3:
203
387
  case "end":
204
- return _context3.stop();
388
+ return _context4.stop();
205
389
  }
206
- }, _callee3, null, [[0, 2]]);
390
+ }, _callee4, null, [[0, 2]]);
207
391
  })), _constants.DEFAULT_SESSION_TIMER);
208
392
  });
209
393
  /**
@@ -213,34 +397,34 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
213
397
  * @returns {Promise<void>}
214
398
  */
215
399
  (0, _defineProperty2.default)(_this, "forceSendStatsReport", /*#__PURE__*/function () {
216
- var _ref5 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(_ref4) {
217
- var callFrom, loggerContext, errorInfo, errorStatus, _t3;
218
- return _regenerator.default.wrap(function (_context4) {
219
- while (1) switch (_context4.prev = _context4.next) {
400
+ var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(_ref5) {
401
+ var callFrom, loggerContext, errorInfo, errorStatus, _t4;
402
+ return _regenerator.default.wrap(function (_context5) {
403
+ while (1) switch (_context5.prev = _context5.next) {
220
404
  case 0:
221
- callFrom = _ref4.callFrom;
405
+ callFrom = _ref5.callFrom;
222
406
  loggerContext = {
223
407
  file: _constants.CALL_FILE,
224
408
  method: _constants.METHODS.FORCE_SEND_STATS_REPORT
225
409
  };
226
- _context4.prev = 1;
227
- _context4.next = 2;
410
+ _context5.prev = 1;
411
+ _context5.next = 2;
228
412
  return _this.mediaConnection.forceRtcMetricsSend();
229
413
  case 2:
230
414
  _Logger.default.info("Successfully uploaded available webrtc telemetry statistics", loggerContext);
231
415
  _Logger.default.info("callFrom: ".concat(callFrom), loggerContext);
232
- _context4.next = 5;
416
+ _context5.next = 5;
233
417
  break;
234
418
  case 3:
235
- _context4.prev = 3;
236
- _t3 = _context4["catch"](1);
237
- errorInfo = _t3;
238
- _context4.next = 4;
419
+ _context5.prev = 3;
420
+ _t4 = _context5["catch"](1);
421
+ errorInfo = _t4;
422
+ _context5.next = 4;
239
423
  return (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
240
424
  case 4:
241
- errorStatus = _context4.sent;
425
+ errorStatus = _context5.sent;
242
426
  _Logger.default.error("Failed to upload webrtc telemetry statistics. ".concat((0, _stringify.default)(errorStatus)), loggerContext);
243
- _context4.next = 5;
427
+ _context5.next = 5;
244
428
  return (0, _Utils.uploadLogs)({
245
429
  correlationId: _this.correlationId,
246
430
  callId: _this.callId,
@@ -248,12 +432,12 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
248
432
  });
249
433
  case 5:
250
434
  case "end":
251
- return _context4.stop();
435
+ return _context5.stop();
252
436
  }
253
- }, _callee4, null, [[1, 3]]);
437
+ }, _callee5, null, [[1, 3]]);
254
438
  }));
255
- return function (_x2) {
256
- return _ref5.apply(this, arguments);
439
+ return function (_x3) {
440
+ return _ref6.apply(this, arguments);
257
441
  };
258
442
  }());
259
443
  /**
@@ -301,10 +485,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
301
485
  * @param roapMessage
302
486
  */
303
487
  (0, _defineProperty2.default)(_this, "post", /*#__PURE__*/function () {
304
- var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(roapMessage) {
488
+ var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(roapMessage) {
305
489
  var basePayload;
306
- return _regenerator.default.wrap(function (_context5) {
307
- while (1) switch (_context5.prev = _context5.next) {
490
+ return _regenerator.default.wrap(function (_context6) {
491
+ while (1) switch (_context6.prev = _context6.next) {
308
492
  case 0:
309
493
  basePayload = {
310
494
  device: {
@@ -316,7 +500,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
316
500
  mediaId: (0, _uuid.v4)()
317
501
  }
318
502
  };
319
- return _context5.abrupt("return", _this.webex.request({
503
+ return _context6.abrupt("return", _this.apiRequest.makeRequest({
320
504
  uri: "".concat(_this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(_this.deviceId, "/").concat(_constants.CALL_ENDPOINT_RESOURCE),
321
505
  method: _types2.HTTP_METHODS.POST,
322
506
  service: _types2.ALLOWED_SERVICES.MOBIUS,
@@ -330,12 +514,12 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
330
514
  }));
331
515
  case 1:
332
516
  case "end":
333
- return _context5.stop();
517
+ return _context6.stop();
334
518
  }
335
- }, _callee5);
519
+ }, _callee6);
336
520
  }));
337
- return function (_x3) {
338
- return _ref6.apply(this, arguments);
521
+ return function (_x4) {
522
+ return _ref7.apply(this, arguments);
339
523
  };
340
524
  }());
341
525
  (0, _defineProperty2.default)(_this, "onEffectEnabled", function () {
@@ -485,6 +669,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
485
669
  _this.mobiusUrl = activeUrl;
486
670
  _this.receivedRoapOKSeq = 0;
487
671
  _this.mediaNegotiationCompleted = false;
672
+ _this.connectPending = false;
488
673
  _Logger.default.info("Webex Calling Url:- ".concat(_this.mobiusUrl), {
489
674
  file: _constants.CALL_FILE,
490
675
  method: _constants.METHODS.CONSTRUCTOR
@@ -506,6 +691,9 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
506
691
  _this.rtcMetrics = new _internalPluginMetrics.RtcMetrics(_this.webex, {
507
692
  callId: _this.callId
508
693
  }, _this.correlationId);
694
+ _this.apiRequest = _request.APIRequest.getInstance({
695
+ webex: _this.webex
696
+ });
509
697
  var callMachine = (0, _xstate.createMachine)({
510
698
  schema: {
511
699
  context: {},
@@ -690,6 +878,13 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
690
878
  }
691
879
  },
692
880
  on: {
881
+ E_SEND_CALL_CONNECT: {
882
+ cond: function cond() {
883
+ return _this.connectPending;
884
+ },
885
+ target: 'S_SEND_CALL_CONNECT',
886
+ actions: ['outgoingCallConnect']
887
+ },
693
888
  E_CALL_ESTABLISHED: {
694
889
  target: 'S_CALL_ESTABLISHED',
695
890
  actions: ['callEstablished']
@@ -1244,22 +1439,22 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1244
1439
  }, {
1245
1440
  key: "handleOutgoingCallSetup",
1246
1441
  value: (function () {
1247
- var _handleOutgoingCallSetup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(event) {
1442
+ var _handleOutgoingCallSetup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(event) {
1248
1443
  var _this2 = this;
1249
- var message, response, errData, _t4;
1250
- return _regenerator.default.wrap(function (_context6) {
1251
- while (1) switch (_context6.prev = _context6.next) {
1444
+ var message, response, errData, _t5;
1445
+ return _regenerator.default.wrap(function (_context7) {
1446
+ while (1) switch (_context7.prev = _context7.next) {
1252
1447
  case 0:
1253
1448
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1254
1449
  file: _constants.CALL_FILE,
1255
1450
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
1256
1451
  });
1257
1452
  message = event.data;
1258
- _context6.prev = 1;
1259
- _context6.next = 2;
1453
+ _context7.prev = 1;
1454
+ _context7.next = 2;
1260
1455
  return this.post(message);
1261
1456
  case 2:
1262
- response = _context6.sent;
1457
+ response = _context7.sent;
1263
1458
  _Logger.default.info("Response: ".concat((0, _stringify.default)(response)), {
1264
1459
  file: _constants.CALL_FILE,
1265
1460
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
@@ -1273,16 +1468,16 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1273
1468
  file: _constants.CALL_FILE,
1274
1469
  method: this.handleOutgoingCallSetup.name
1275
1470
  });
1276
- _context6.next = 4;
1471
+ _context7.next = 4;
1277
1472
  break;
1278
1473
  case 3:
1279
- _context6.prev = 3;
1280
- _t4 = _context6["catch"](1);
1281
- _Logger.default.error("Failed to setup the call: ".concat((0, _stringify.default)(_t4)), {
1474
+ _context7.prev = 3;
1475
+ _t5 = _context7["catch"](1);
1476
+ _Logger.default.error("Failed to setup the call: ".concat((0, _stringify.default)(_t5)), {
1282
1477
  file: _constants.CALL_FILE,
1283
1478
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
1284
1479
  });
1285
- errData = _t4;
1480
+ errData = _t5;
1286
1481
  (0, _Utils.handleCallErrors)(function (error) {
1287
1482
  _this2.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
1288
1483
  _this2.submitCallErrorMetric(error);
@@ -1296,7 +1491,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1296
1491
  function (interval) {
1297
1492
  return undefined;
1298
1493
  }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP, _constants.CALL_FILE);
1299
- _context6.next = 4;
1494
+ _context7.next = 4;
1300
1495
  return (0, _Utils.uploadLogs)({
1301
1496
  correlationId: this.correlationId,
1302
1497
  callId: this.callId,
@@ -1304,11 +1499,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1304
1499
  });
1305
1500
  case 4:
1306
1501
  case "end":
1307
- return _context6.stop();
1502
+ return _context7.stop();
1308
1503
  }
1309
- }, _callee6, this, [[1, 3]]);
1504
+ }, _callee7, this, [[1, 3]]);
1310
1505
  }));
1311
- function handleOutgoingCallSetup(_x4) {
1506
+ function handleOutgoingCallSetup(_x5) {
1312
1507
  return _handleOutgoingCallSetup.apply(this, arguments);
1313
1508
  }
1314
1509
  return handleOutgoingCallSetup;
@@ -1323,21 +1518,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1323
1518
  }, {
1324
1519
  key: "handleCallHold",
1325
1520
  value: (function () {
1326
- var _handleCallHold = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(event) {
1521
+ var _handleCallHold = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(event) {
1327
1522
  var _this3 = this;
1328
- var response, errData, _t5;
1329
- return _regenerator.default.wrap(function (_context8) {
1330
- while (1) switch (_context8.prev = _context8.next) {
1523
+ var response, errData, _t6;
1524
+ return _regenerator.default.wrap(function (_context9) {
1525
+ while (1) switch (_context9.prev = _context9.next) {
1331
1526
  case 0:
1332
1527
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1333
1528
  file: _constants.CALL_FILE,
1334
1529
  method: _constants.METHODS.HANDLE_CALL_HOLD
1335
1530
  });
1336
- _context8.prev = 1;
1337
- _context8.next = 2;
1531
+ _context9.prev = 1;
1532
+ _context9.next = 2;
1338
1533
  return this.postSSRequest(undefined, _types3.SUPPLEMENTARY_SERVICES.HOLD);
1339
1534
  case 2:
1340
- response = _context8.sent;
1535
+ response = _context9.sent;
1341
1536
  _Logger.default.log("Response code: ".concat(response.statusCode), {
1342
1537
  file: _constants.CALL_FILE,
1343
1538
  method: _constants.METHODS.HANDLE_CALL_HOLD
@@ -1348,10 +1543,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1348
1543
  * received from Mobius and forwarded towards calling client
1349
1544
  */
1350
1545
  if (this.isHeld() === false) {
1351
- this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
1546
+ this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
1352
1547
  var errorContext, callError;
1353
- return _regenerator.default.wrap(function (_context7) {
1354
- while (1) switch (_context7.prev = _context7.next) {
1548
+ return _regenerator.default.wrap(function (_context8) {
1549
+ while (1) switch (_context8.prev = _context8.next) {
1355
1550
  case 0:
1356
1551
  errorContext = {
1357
1552
  file: _constants.CALL_FILE,
@@ -1366,21 +1561,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1366
1561
  _this3.submitCallErrorMetric(callError);
1367
1562
  case 1:
1368
1563
  case "end":
1369
- return _context7.stop();
1564
+ return _context8.stop();
1370
1565
  }
1371
- }, _callee7);
1566
+ }, _callee8);
1372
1567
  })), _constants.SUPPLEMENTARY_SERVICES_TIMEOUT);
1373
1568
  }
1374
- _context8.next = 4;
1569
+ _context9.next = 4;
1375
1570
  break;
1376
1571
  case 3:
1377
- _context8.prev = 3;
1378
- _t5 = _context8["catch"](1);
1379
- _Logger.default.error("Failed to put the call on hold: ".concat((0, _stringify.default)(_t5)), {
1572
+ _context9.prev = 3;
1573
+ _t6 = _context9["catch"](1);
1574
+ _Logger.default.error("Failed to put the call on hold: ".concat((0, _stringify.default)(_t6)), {
1380
1575
  file: _constants.CALL_FILE,
1381
1576
  method: _constants.METHODS.HANDLE_CALL_HOLD
1382
1577
  });
1383
- errData = _t5;
1578
+ errData = _t6;
1384
1579
  (0, _Utils.handleCallErrors)(function (error) {
1385
1580
  _this3.emit(_types3.CALL_EVENT_KEYS.HOLD_ERROR, error);
1386
1581
  _this3.submitCallErrorMetric(error);
@@ -1394,7 +1589,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1394
1589
  function (interval) {
1395
1590
  return undefined;
1396
1591
  }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_CALL_HOLD, _constants.CALL_FILE);
1397
- _context8.next = 4;
1592
+ _context9.next = 4;
1398
1593
  return (0, _Utils.uploadLogs)({
1399
1594
  correlationId: this.correlationId,
1400
1595
  callId: this.callId,
@@ -1402,11 +1597,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1402
1597
  });
1403
1598
  case 4:
1404
1599
  case "end":
1405
- return _context8.stop();
1600
+ return _context9.stop();
1406
1601
  }
1407
- }, _callee8, this, [[1, 3]]);
1602
+ }, _callee9, this, [[1, 3]]);
1408
1603
  }));
1409
- function handleCallHold(_x5) {
1604
+ function handleCallHold(_x6) {
1410
1605
  return _handleCallHold.apply(this, arguments);
1411
1606
  }
1412
1607
  return handleCallHold;
@@ -1421,21 +1616,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1421
1616
  }, {
1422
1617
  key: "handleCallResume",
1423
1618
  value: (function () {
1424
- var _handleCallResume = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(event) {
1619
+ var _handleCallResume = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(event) {
1425
1620
  var _this4 = this;
1426
- var response, errData, _t6;
1427
- return _regenerator.default.wrap(function (_context0) {
1428
- while (1) switch (_context0.prev = _context0.next) {
1621
+ var response, errData, _t7;
1622
+ return _regenerator.default.wrap(function (_context1) {
1623
+ while (1) switch (_context1.prev = _context1.next) {
1429
1624
  case 0:
1430
1625
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1431
1626
  file: _constants.CALL_FILE,
1432
1627
  method: _constants.METHODS.HANDLE_CALL_RESUME
1433
1628
  });
1434
- _context0.prev = 1;
1435
- _context0.next = 2;
1629
+ _context1.prev = 1;
1630
+ _context1.next = 2;
1436
1631
  return this.postSSRequest(undefined, _types3.SUPPLEMENTARY_SERVICES.RESUME);
1437
1632
  case 2:
1438
- response = _context0.sent;
1633
+ response = _context1.sent;
1439
1634
  _Logger.default.log("Response code: ".concat(response.statusCode), {
1440
1635
  file: _constants.CALL_FILE,
1441
1636
  method: _constants.METHODS.HANDLE_CALL_RESUME
@@ -1446,10 +1641,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1446
1641
  * received from Mobius on resuming the call and forwarded towards calling client
1447
1642
  */
1448
1643
  if (this.isHeld() === true) {
1449
- this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9() {
1644
+ this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
1450
1645
  var errorContext, callError;
1451
- return _regenerator.default.wrap(function (_context9) {
1452
- while (1) switch (_context9.prev = _context9.next) {
1646
+ return _regenerator.default.wrap(function (_context0) {
1647
+ while (1) switch (_context0.prev = _context0.next) {
1453
1648
  case 0:
1454
1649
  errorContext = {
1455
1650
  file: _constants.CALL_FILE,
@@ -1464,21 +1659,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1464
1659
  _this4.submitCallErrorMetric(callError);
1465
1660
  case 1:
1466
1661
  case "end":
1467
- return _context9.stop();
1662
+ return _context0.stop();
1468
1663
  }
1469
- }, _callee9);
1664
+ }, _callee0);
1470
1665
  })), _constants.SUPPLEMENTARY_SERVICES_TIMEOUT);
1471
1666
  }
1472
- _context0.next = 4;
1667
+ _context1.next = 4;
1473
1668
  break;
1474
1669
  case 3:
1475
- _context0.prev = 3;
1476
- _t6 = _context0["catch"](1);
1477
- _Logger.default.error("Failed to resume the call: ".concat((0, _stringify.default)(_t6)), {
1670
+ _context1.prev = 3;
1671
+ _t7 = _context1["catch"](1);
1672
+ _Logger.default.error("Failed to resume the call: ".concat((0, _stringify.default)(_t7)), {
1478
1673
  file: _constants.CALL_FILE,
1479
1674
  method: _constants.METHODS.HANDLE_CALL_RESUME
1480
1675
  });
1481
- errData = _t6;
1676
+ errData = _t7;
1482
1677
  (0, _Utils.handleCallErrors)(function (error) {
1483
1678
  _this4.emit(_types3.CALL_EVENT_KEYS.RESUME_ERROR, error);
1484
1679
  _this4.submitCallErrorMetric(error);
@@ -1492,7 +1687,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1492
1687
  function (interval) {
1493
1688
  return undefined;
1494
1689
  }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_CALL_RESUME, _constants.CALL_FILE);
1495
- _context0.next = 4;
1690
+ _context1.next = 4;
1496
1691
  return (0, _Utils.uploadLogs)({
1497
1692
  correlationId: this.correlationId,
1498
1693
  callId: this.callId,
@@ -1500,11 +1695,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1500
1695
  });
1501
1696
  case 4:
1502
1697
  case "end":
1503
- return _context0.stop();
1698
+ return _context1.stop();
1504
1699
  }
1505
- }, _callee0, this, [[1, 3]]);
1700
+ }, _callee1, this, [[1, 3]]);
1506
1701
  }));
1507
- function handleCallResume(_x6) {
1702
+ function handleCallResume(_x7) {
1508
1703
  return _handleCallResume.apply(this, arguments);
1509
1704
  }
1510
1705
  return handleCallResume;
@@ -1593,35 +1788,35 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1593
1788
  }, {
1594
1789
  key: "handleOutgoingCallAlerting",
1595
1790
  value: (function () {
1596
- var _handleOutgoingCallAlerting = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(event) {
1791
+ var _handleOutgoingCallAlerting = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(event) {
1597
1792
  var _this5 = this;
1598
- var res, errData, _t7;
1599
- return _regenerator.default.wrap(function (_context1) {
1600
- while (1) switch (_context1.prev = _context1.next) {
1793
+ var res, errData, _t8;
1794
+ return _regenerator.default.wrap(function (_context10) {
1795
+ while (1) switch (_context10.prev = _context10.next) {
1601
1796
  case 0:
1602
1797
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1603
1798
  file: _constants.CALL_FILE,
1604
1799
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
1605
1800
  });
1606
- _context1.prev = 1;
1607
- _context1.next = 2;
1801
+ _context10.prev = 1;
1802
+ _context10.next = 2;
1608
1803
  return this.patch(_types4.MobiusCallState.ALERTING);
1609
1804
  case 2:
1610
- res = _context1.sent;
1805
+ res = _context10.sent;
1611
1806
  _Logger.default.log("PATCH response: ".concat(res.statusCode), {
1612
1807
  file: _constants.CALL_FILE,
1613
1808
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
1614
1809
  });
1615
- _context1.next = 4;
1810
+ _context10.next = 4;
1616
1811
  break;
1617
1812
  case 3:
1618
- _context1.prev = 3;
1619
- _t7 = _context1["catch"](1);
1620
- _Logger.default.error("Failed to signal call progression: ".concat((0, _stringify.default)(_t7)), {
1813
+ _context10.prev = 3;
1814
+ _t8 = _context10["catch"](1);
1815
+ _Logger.default.error("Failed to signal call progression: ".concat((0, _stringify.default)(_t8)), {
1621
1816
  file: _constants.CALL_FILE,
1622
1817
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
1623
1818
  });
1624
- errData = _t7;
1819
+ errData = _t8;
1625
1820
  (0, _Utils.handleCallErrors)(function (error) {
1626
1821
  _this5.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
1627
1822
  _this5.submitCallErrorMetric(error);
@@ -1635,7 +1830,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1635
1830
  function (interval) {
1636
1831
  return undefined;
1637
1832
  }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING, _constants.CALL_FILE);
1638
- _context1.next = 4;
1833
+ _context10.next = 4;
1639
1834
  return (0, _Utils.uploadLogs)({
1640
1835
  correlationId: this.correlationId,
1641
1836
  callId: this.callId,
@@ -1643,11 +1838,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1643
1838
  });
1644
1839
  case 4:
1645
1840
  case "end":
1646
- return _context1.stop();
1841
+ return _context10.stop();
1647
1842
  }
1648
- }, _callee1, this, [[1, 3]]);
1843
+ }, _callee10, this, [[1, 3]]);
1649
1844
  }));
1650
- function handleOutgoingCallAlerting(_x7) {
1845
+ function handleOutgoingCallAlerting(_x8) {
1651
1846
  return _handleOutgoingCallAlerting.apply(this, arguments);
1652
1847
  }
1653
1848
  return handleOutgoingCallAlerting;
@@ -1688,12 +1883,13 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1688
1883
  }, {
1689
1884
  key: "handleOutgoingCallConnect",
1690
1885
  value: (function () {
1691
- var _handleOutgoingCallConnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(event) {
1886
+ var _handleOutgoingCallConnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(event) {
1692
1887
  var _this6 = this;
1693
- var res, errData, _t8;
1694
- return _regenerator.default.wrap(function (_context10) {
1695
- while (1) switch (_context10.prev = _context10.next) {
1888
+ var res, errData, _t9;
1889
+ return _regenerator.default.wrap(function (_context11) {
1890
+ while (1) switch (_context11.prev = _context11.next) {
1696
1891
  case 0:
1892
+ this.connectPending = false;
1697
1893
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1698
1894
  file: _constants.CALL_FILE,
1699
1895
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
@@ -1701,38 +1897,39 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1701
1897
 
1702
1898
  /* We should have received an Offer by now */
1703
1899
  if (this.remoteRoapMessage) {
1704
- _context10.next = 1;
1900
+ _context11.next = 1;
1705
1901
  break;
1706
1902
  }
1707
1903
  _Logger.default.warn('Offer not yet received from remote end... Exiting', {
1708
1904
  file: _constants.CALL_FILE,
1709
1905
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
1710
1906
  });
1711
- return _context10.abrupt("return");
1907
+ this.connectPending = true;
1908
+ return _context11.abrupt("return");
1712
1909
  case 1:
1713
- _context10.prev = 1;
1910
+ _context11.prev = 1;
1714
1911
  /* Start Offer/Answer as we might have buffered the offer by now */
1715
1912
  this.mediaConnection.roapMessageReceived(this.remoteRoapMessage);
1716
1913
 
1717
1914
  /* send call_connect PATCH */
1718
- _context10.next = 2;
1915
+ _context11.next = 2;
1719
1916
  return this.patch(_types4.MobiusCallState.CONNECTED);
1720
1917
  case 2:
1721
- res = _context10.sent;
1918
+ res = _context11.sent;
1722
1919
  _Logger.default.log("PATCH response: ".concat(res.statusCode), {
1723
1920
  file: _constants.CALL_FILE,
1724
1921
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
1725
1922
  });
1726
- _context10.next = 4;
1923
+ _context11.next = 4;
1727
1924
  break;
1728
1925
  case 3:
1729
- _context10.prev = 3;
1730
- _t8 = _context10["catch"](1);
1731
- _Logger.default.error("Failed to connect the call: ".concat((0, _stringify.default)(_t8)), {
1926
+ _context11.prev = 3;
1927
+ _t9 = _context11["catch"](1);
1928
+ _Logger.default.error("Failed to connect the call: ".concat((0, _stringify.default)(_t9)), {
1732
1929
  file: _constants.CALL_FILE,
1733
1930
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
1734
1931
  });
1735
- errData = _t8;
1932
+ errData = _t9;
1736
1933
  (0, _Utils.handleCallErrors)(function (error) {
1737
1934
  _this6.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
1738
1935
  _this6.submitCallErrorMetric(error);
@@ -1746,7 +1943,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1746
1943
  function (interval) {
1747
1944
  return undefined;
1748
1945
  }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT, _constants.CALL_FILE);
1749
- _context10.next = 4;
1946
+ _context11.next = 4;
1750
1947
  return (0, _Utils.uploadLogs)({
1751
1948
  correlationId: this.correlationId,
1752
1949
  callId: this.callId,
@@ -1754,11 +1951,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1754
1951
  });
1755
1952
  case 4:
1756
1953
  case "end":
1757
- return _context10.stop();
1954
+ return _context11.stop();
1758
1955
  }
1759
- }, _callee10, this, [[1, 3]]);
1956
+ }, _callee11, this, [[1, 3]]);
1760
1957
  }));
1761
- function handleOutgoingCallConnect(_x8) {
1958
+ function handleOutgoingCallConnect(_x9) {
1762
1959
  return _handleOutgoingCallConnect.apply(this, arguments);
1763
1960
  }
1764
1961
  return handleOutgoingCallConnect;
@@ -1773,10 +1970,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1773
1970
  }, {
1774
1971
  key: "handleIncomingCallDisconnect",
1775
1972
  value: (function () {
1776
- var _handleIncomingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(event) {
1777
- var response, _t9;
1778
- return _regenerator.default.wrap(function (_context11) {
1779
- while (1) switch (_context11.prev = _context11.next) {
1973
+ var _handleIncomingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(event) {
1974
+ var response, _t0;
1975
+ return _regenerator.default.wrap(function (_context12) {
1976
+ while (1) switch (_context12.prev = _context12.next) {
1780
1977
  case 0:
1781
1978
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1782
1979
  file: _constants.CALL_FILE,
@@ -1784,21 +1981,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1784
1981
  });
1785
1982
  this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
1786
1983
  this.setDisconnectReason();
1787
- _context11.prev = 1;
1788
- _context11.next = 2;
1984
+ _context12.prev = 1;
1985
+ _context12.next = 2;
1789
1986
  return this.delete();
1790
1987
  case 2:
1791
- response = _context11.sent;
1988
+ response = _context12.sent;
1792
1989
  _Logger.default.log("Response code: ".concat(response.statusCode), {
1793
1990
  file: _constants.CALL_FILE,
1794
1991
  method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1795
1992
  });
1796
- _context11.next = 4;
1993
+ _context12.next = 4;
1797
1994
  break;
1798
1995
  case 3:
1799
- _context11.prev = 3;
1800
- _t9 = _context11["catch"](1);
1801
- _Logger.default.warn("Failed to delete the call: ".concat((0, _stringify.default)(_t9)), {
1996
+ _context12.prev = 3;
1997
+ _t0 = _context12["catch"](1);
1998
+ _Logger.default.warn("Failed to delete the call: ".concat((0, _stringify.default)(_t0)), {
1802
1999
  file: _constants.CALL_FILE,
1803
2000
  method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
1804
2001
  });
@@ -1820,6 +2017,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1820
2017
 
1821
2018
  /* istanbul ignore else */
1822
2019
  if (this.mediaConnection) {
2020
+ this.unregisterMediaConnectionListeners();
1823
2021
  this.mediaConnection.close();
1824
2022
  _Logger.default.info('Closing media channel', {
1825
2023
  file: _constants.CALL_FILE,
@@ -1834,11 +2032,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1834
2032
  });
1835
2033
  case 5:
1836
2034
  case "end":
1837
- return _context11.stop();
2035
+ return _context12.stop();
1838
2036
  }
1839
- }, _callee11, this, [[1, 3]]);
2037
+ }, _callee12, this, [[1, 3]]);
1840
2038
  }));
1841
- function handleIncomingCallDisconnect(_x9) {
2039
+ function handleIncomingCallDisconnect(_x0) {
1842
2040
  return _handleIncomingCallDisconnect.apply(this, arguments);
1843
2041
  }
1844
2042
  return handleIncomingCallDisconnect;
@@ -1853,21 +2051,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1853
2051
  }, {
1854
2052
  key: "handleOutgoingCallDisconnect",
1855
2053
  value: (function () {
1856
- var _handleOutgoingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(event) {
1857
- var response, _t0;
1858
- return _regenerator.default.wrap(function (_context12) {
1859
- while (1) switch (_context12.prev = _context12.next) {
2054
+ var _handleOutgoingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(event) {
2055
+ var response, _t1;
2056
+ return _regenerator.default.wrap(function (_context13) {
2057
+ while (1) switch (_context13.prev = _context13.next) {
1860
2058
  case 0:
1861
2059
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1862
2060
  file: _constants.CALL_FILE,
1863
2061
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1864
2062
  });
1865
2063
  this.setDisconnectReason();
1866
- _context12.prev = 1;
1867
- _context12.next = 2;
2064
+ _context13.prev = 1;
2065
+ _context13.next = 2;
1868
2066
  return this.delete();
1869
2067
  case 2:
1870
- response = _context12.sent;
2068
+ response = _context13.sent;
1871
2069
  _Logger.default.log("Response code: ".concat(response.statusCode), {
1872
2070
  file: _constants.CALL_FILE,
1873
2071
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
@@ -1876,11 +2074,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1876
2074
  file: _constants.CALL_FILE,
1877
2075
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
1878
2076
  });
1879
- _context12.next = 4;
2077
+ _context13.next = 4;
1880
2078
  break;
1881
2079
  case 3:
1882
- _context12.prev = 3;
1883
- _t0 = _context12["catch"](1);
2080
+ _context13.prev = 3;
2081
+ _t1 = _context13["catch"](1);
1884
2082
  _Logger.default.warn('Failed to delete the call', {
1885
2083
  file: _constants.CALL_FILE,
1886
2084
  method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
@@ -1903,6 +2101,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1903
2101
 
1904
2102
  /* istanbul ignore else */
1905
2103
  if (this.mediaConnection) {
2104
+ this.unregisterMediaConnectionListeners();
1906
2105
  this.mediaConnection.close();
1907
2106
  _Logger.default.info('Closing media channel', {
1908
2107
  file: _constants.CALL_FILE,
@@ -1917,11 +2116,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1917
2116
  });
1918
2117
  case 5:
1919
2118
  case "end":
1920
- return _context12.stop();
2119
+ return _context13.stop();
1921
2120
  }
1922
- }, _callee12, this, [[1, 3]]);
2121
+ }, _callee13, this, [[1, 3]]);
1923
2122
  }));
1924
- function handleOutgoingCallDisconnect(_x0) {
2123
+ function handleOutgoingCallDisconnect(_x1) {
1925
2124
  return _handleOutgoingCallDisconnect.apply(this, arguments);
1926
2125
  }
1927
2126
  return handleOutgoingCallDisconnect;
@@ -1957,10 +2156,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1957
2156
  }, {
1958
2157
  key: "handleUnknownState",
1959
2158
  value: (function () {
1960
- var _handleUnknownState = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(event) {
1961
- var eventData, response, _t1;
1962
- return _regenerator.default.wrap(function (_context13) {
1963
- while (1) switch (_context13.prev = _context13.next) {
2159
+ var _handleUnknownState = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(event) {
2160
+ var eventData, response, _t10;
2161
+ return _regenerator.default.wrap(function (_context14) {
2162
+ while (1) switch (_context14.prev = _context14.next) {
1964
2163
  case 0:
1965
2164
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
1966
2165
  file: _constants.CALL_FILE,
@@ -1981,21 +2180,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
1981
2180
  /* We need to clear the call at Mobius too. For delete failure
1982
2181
  * error handling is not required
1983
2182
  */
1984
- _context13.prev = 1;
2183
+ _context14.prev = 1;
1985
2184
  this.setDisconnectReason();
1986
- _context13.next = 2;
2185
+ _context14.next = 2;
1987
2186
  return this.delete();
1988
2187
  case 2:
1989
- response = _context13.sent;
2188
+ response = _context14.sent;
1990
2189
  _Logger.default.log("Response code: ".concat(response.statusCode), {
1991
2190
  file: _constants.CALL_FILE,
1992
2191
  method: _constants.METHODS.HANDLE_UNKNOWN_STATE
1993
2192
  });
1994
- _context13.next = 4;
2193
+ _context14.next = 4;
1995
2194
  break;
1996
2195
  case 3:
1997
- _context13.prev = 3;
1998
- _t1 = _context13["catch"](1);
2196
+ _context14.prev = 3;
2197
+ _t10 = _context14["catch"](1);
1999
2198
  _Logger.default.warn('Failed to delete the call', {
2000
2199
  file: _constants.CALL_FILE,
2001
2200
  method: _constants.METHODS.HANDLE_UNKNOWN_STATE
@@ -2011,6 +2210,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2011
2210
  clearInterval(this.sessionTimer);
2012
2211
  }
2013
2212
  if (this.mediaConnection) {
2213
+ this.unregisterMediaConnectionListeners();
2014
2214
  this.mediaConnection.close();
2015
2215
  _Logger.default.info('Closing media channel', {
2016
2216
  file: _constants.CALL_FILE,
@@ -2025,11 +2225,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2025
2225
  });
2026
2226
  case 5:
2027
2227
  case "end":
2028
- return _context13.stop();
2228
+ return _context14.stop();
2029
2229
  }
2030
- }, _callee13, this, [[1, 3]]);
2230
+ }, _callee14, this, [[1, 3]]);
2031
2231
  }));
2032
- function handleUnknownState(_x1) {
2232
+ function handleUnknownState(_x10) {
2033
2233
  return _handleUnknownState.apply(this, arguments);
2034
2234
  }
2035
2235
  return handleUnknownState;
@@ -2098,27 +2298,27 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2098
2298
  }, {
2099
2299
  key: "handleRoapEstablished",
2100
2300
  value: (function () {
2101
- var _handleRoapEstablished = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(context, event) {
2301
+ var _handleRoapEstablished = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(context, event) {
2102
2302
  var _this8 = this;
2103
- var _ref9, received, message, res, errData, _t10;
2104
- return _regenerator.default.wrap(function (_context14) {
2105
- while (1) switch (_context14.prev = _context14.next) {
2303
+ var _ref0, received, message, res, errData, _t11;
2304
+ return _regenerator.default.wrap(function (_context15) {
2305
+ while (1) switch (_context15.prev = _context15.next) {
2106
2306
  case 0:
2107
2307
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2108
2308
  file: _constants.CALL_FILE,
2109
2309
  method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2110
2310
  });
2111
- _ref9 = event.data, received = _ref9.received, message = _ref9.message;
2311
+ _ref0 = event.data, received = _ref0.received, message = _ref0.message;
2112
2312
  this.receivedRoapOKSeq = message.seq;
2113
2313
  if (received) {
2114
- _context14.next = 5;
2314
+ _context15.next = 5;
2115
2315
  break;
2116
2316
  }
2117
2317
  _Logger.default.info('Sending Media Ok to the remote End', {
2118
2318
  file: _constants.CALL_FILE,
2119
2319
  method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2120
2320
  });
2121
- _context14.prev = 1;
2321
+ _context15.prev = 1;
2122
2322
  if (this.callStateMachine.state.value === 'S_RECV_CALL_PROGRESS' || this.callStateMachine.state.value === 'S_SEND_CALL_SETUP') {
2123
2323
  _Logger.default.info('Media negotiation completed before call connect. Setting media negotiation completed flag.', {
2124
2324
  file: _constants.CALL_FILE,
@@ -2127,10 +2327,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2127
2327
  this.mediaNegotiationCompleted = true;
2128
2328
  }
2129
2329
  message.seq = this.seq;
2130
- _context14.next = 2;
2330
+ _context15.next = 2;
2131
2331
  return this.postMedia(message);
2132
2332
  case 2:
2133
- res = _context14.sent;
2333
+ res = _context15.sent;
2134
2334
  _Logger.default.log("Response code: ".concat(res.statusCode), {
2135
2335
  file: _constants.CALL_FILE,
2136
2336
  method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
@@ -2141,16 +2341,16 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2141
2341
  type: 'E_CALL_ESTABLISHED'
2142
2342
  });
2143
2343
  }
2144
- _context14.next = 4;
2344
+ _context15.next = 4;
2145
2345
  break;
2146
2346
  case 3:
2147
- _context14.prev = 3;
2148
- _t10 = _context14["catch"](1);
2347
+ _context15.prev = 3;
2348
+ _t11 = _context15["catch"](1);
2149
2349
  _Logger.default.warn('Failed to process MediaOk request', {
2150
2350
  file: _constants.CALL_FILE,
2151
2351
  method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
2152
2352
  });
2153
- errData = _t10;
2353
+ errData = _t11;
2154
2354
  (0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
2155
2355
  /* Start retry if only it is a midcall case */
2156
2356
  /* istanbul ignore else */
@@ -2163,14 +2363,14 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2163
2363
  }, interval * 1000);
2164
2364
  }
2165
2365
  }, this.getCorrelationId(), errData, this.handleRoapEstablished.name, _constants.CALL_FILE);
2166
- _context14.next = 4;
2366
+ _context15.next = 4;
2167
2367
  return (0, _Utils.uploadLogs)({
2168
2368
  correlationId: this.correlationId,
2169
2369
  callId: this.callId,
2170
2370
  broadworksCorrelationInfo: this.broadworksCorrelationInfo
2171
2371
  });
2172
2372
  case 4:
2173
- _context14.next = 6;
2373
+ _context15.next = 6;
2174
2374
  break;
2175
2375
  case 5:
2176
2376
  _Logger.default.info('Notifying internal-media-core about ROAP OK message', {
@@ -2204,11 +2404,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2204
2404
  }
2205
2405
  case 6:
2206
2406
  case "end":
2207
- return _context14.stop();
2407
+ return _context15.stop();
2208
2408
  }
2209
- }, _callee14, this, [[1, 3]]);
2409
+ }, _callee15, this, [[1, 3]]);
2210
2410
  }));
2211
- function handleRoapEstablished(_x10, _x11) {
2411
+ function handleRoapEstablished(_x11, _x12) {
2212
2412
  return _handleRoapEstablished.apply(this, arguments);
2213
2413
  }
2214
2414
  return handleRoapEstablished;
@@ -2223,11 +2423,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2223
2423
  }, {
2224
2424
  key: "handleRoapError",
2225
2425
  value: (function () {
2226
- var _handleRoapError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(context, event) {
2426
+ var _handleRoapError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(context, event) {
2227
2427
  var _this9 = this;
2228
- var message, res, errData, _t11;
2229
- return _regenerator.default.wrap(function (_context15) {
2230
- while (1) switch (_context15.prev = _context15.next) {
2428
+ var message, res, errData, _t12;
2429
+ return _regenerator.default.wrap(function (_context16) {
2430
+ while (1) switch (_context16.prev = _context16.next) {
2231
2431
  case 0:
2232
2432
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2233
2433
  file: _constants.CALL_FILE,
@@ -2238,28 +2438,28 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2238
2438
  message = event.data;
2239
2439
  /* istanbul ignore else */
2240
2440
  if (!(message && message.messageType === 'ERROR')) {
2241
- _context15.next = 4;
2441
+ _context16.next = 4;
2242
2442
  break;
2243
2443
  }
2244
- _context15.prev = 1;
2245
- _context15.next = 2;
2444
+ _context16.prev = 1;
2445
+ _context16.next = 2;
2246
2446
  return this.postMedia(message);
2247
2447
  case 2:
2248
- res = _context15.sent;
2448
+ res = _context16.sent;
2249
2449
  _Logger.default.info("Response code: ".concat(res.statusCode), {
2250
2450
  file: _constants.CALL_FILE,
2251
2451
  method: _constants.METHODS.HANDLE_ROAP_ERROR
2252
2452
  });
2253
- _context15.next = 4;
2453
+ _context16.next = 4;
2254
2454
  break;
2255
2455
  case 3:
2256
- _context15.prev = 3;
2257
- _t11 = _context15["catch"](1);
2456
+ _context16.prev = 3;
2457
+ _t12 = _context16["catch"](1);
2258
2458
  _Logger.default.warn('Failed to communicate ROAP error to Webex Calling', {
2259
2459
  file: _constants.CALL_FILE,
2260
2460
  method: _constants.METHODS.HANDLE_ROAP_ERROR
2261
2461
  });
2262
- errData = _t11;
2462
+ errData = _t12;
2263
2463
  (0, _Utils.handleCallErrors)(function (error) {
2264
2464
  _this9.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
2265
2465
  _this9.submitCallErrorMetric(error);
@@ -2269,7 +2469,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2269
2469
  function (interval) {
2270
2470
  return undefined;
2271
2471
  }, this.getCorrelationId(), errData, this.handleRoapError.name, _constants.CALL_FILE);
2272
- _context15.next = 4;
2472
+ _context16.next = 4;
2273
2473
  return (0, _Utils.uploadLogs)({
2274
2474
  correlationId: this.correlationId,
2275
2475
  callId: this.callId,
@@ -2292,11 +2492,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2292
2492
  }
2293
2493
  case 5:
2294
2494
  case "end":
2295
- return _context15.stop();
2495
+ return _context16.stop();
2296
2496
  }
2297
- }, _callee15, this, [[1, 3]]);
2497
+ }, _callee16, this, [[1, 3]]);
2298
2498
  }));
2299
- function handleRoapError(_x12, _x13) {
2499
+ function handleRoapError(_x13, _x14) {
2300
2500
  return _handleRoapError.apply(this, arguments);
2301
2501
  }
2302
2502
  return handleRoapError;
@@ -2311,11 +2511,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2311
2511
  }, {
2312
2512
  key: "handleOutgoingRoapOffer",
2313
2513
  value: (function () {
2314
- var _handleOutgoingRoapOffer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(context, event) {
2514
+ var _handleOutgoingRoapOffer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17(context, event) {
2315
2515
  var _this0 = this;
2316
- var message, res, errData, _t12;
2317
- return _regenerator.default.wrap(function (_context16) {
2318
- while (1) switch (_context16.prev = _context16.next) {
2516
+ var message, res, errData, _t13;
2517
+ return _regenerator.default.wrap(function (_context17) {
2518
+ while (1) switch (_context17.prev = _context17.next) {
2319
2519
  case 0:
2320
2520
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2321
2521
  file: _constants.CALL_FILE,
@@ -2323,7 +2523,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2323
2523
  });
2324
2524
  message = event.data;
2325
2525
  if (message !== null && message !== void 0 && message.sdp) {
2326
- _context16.next = 1;
2526
+ _context17.next = 1;
2327
2527
  break;
2328
2528
  }
2329
2529
  _Logger.default.info('Initializing Offer...', {
@@ -2331,27 +2531,27 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2331
2531
  method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
2332
2532
  });
2333
2533
  this.mediaConnection.initiateOffer();
2334
- return _context16.abrupt("return");
2534
+ return _context17.abrupt("return");
2335
2535
  case 1:
2336
- _context16.prev = 1;
2337
- _context16.next = 2;
2536
+ _context17.prev = 1;
2537
+ _context17.next = 2;
2338
2538
  return this.postMedia(message);
2339
2539
  case 2:
2340
- res = _context16.sent;
2540
+ res = _context17.sent;
2341
2541
  _Logger.default.log("Response code: ".concat(res.statusCode), {
2342
2542
  file: _constants.CALL_FILE,
2343
2543
  method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
2344
2544
  });
2345
- _context16.next = 4;
2545
+ _context17.next = 4;
2346
2546
  break;
2347
2547
  case 3:
2348
- _context16.prev = 3;
2349
- _t12 = _context16["catch"](1);
2548
+ _context17.prev = 3;
2549
+ _t13 = _context17["catch"](1);
2350
2550
  _Logger.default.warn('Failed to send MediaOffer request', {
2351
2551
  file: _constants.CALL_FILE,
2352
2552
  method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
2353
2553
  });
2354
- errData = _t12;
2554
+ errData = _t13;
2355
2555
  (0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
2356
2556
  /* Start retry if only it is a midcall case */
2357
2557
  if (_this0.connected) {
@@ -2363,7 +2563,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2363
2563
  }, interval * 1000);
2364
2564
  }
2365
2565
  }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER, _constants.CALL_FILE);
2366
- _context16.next = 4;
2566
+ _context17.next = 4;
2367
2567
  return (0, _Utils.uploadLogs)({
2368
2568
  correlationId: this.correlationId,
2369
2569
  callId: this.callId,
@@ -2371,11 +2571,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2371
2571
  });
2372
2572
  case 4:
2373
2573
  case "end":
2374
- return _context16.stop();
2574
+ return _context17.stop();
2375
2575
  }
2376
- }, _callee16, this, [[1, 3]]);
2576
+ }, _callee17, this, [[1, 3]]);
2377
2577
  }));
2378
- function handleOutgoingRoapOffer(_x14, _x15) {
2578
+ function handleOutgoingRoapOffer(_x15, _x16) {
2379
2579
  return _handleOutgoingRoapOffer.apply(this, arguments);
2380
2580
  }
2381
2581
  return handleOutgoingRoapOffer;
@@ -2390,37 +2590,37 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2390
2590
  }, {
2391
2591
  key: "handleOutgoingRoapAnswer",
2392
2592
  value: (function () {
2393
- var _handleOutgoingRoapAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17(context, event) {
2593
+ var _handleOutgoingRoapAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(context, event) {
2394
2594
  var _this1 = this;
2395
- var message, res, errData, _t13;
2396
- return _regenerator.default.wrap(function (_context17) {
2397
- while (1) switch (_context17.prev = _context17.next) {
2595
+ var message, res, errData, _t14;
2596
+ return _regenerator.default.wrap(function (_context18) {
2597
+ while (1) switch (_context18.prev = _context18.next) {
2398
2598
  case 0:
2399
2599
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
2400
2600
  file: _constants.CALL_FILE,
2401
2601
  method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
2402
2602
  });
2403
2603
  message = event.data;
2404
- _context17.prev = 1;
2604
+ _context18.prev = 1;
2405
2605
  message.seq = this.seq;
2406
- _context17.next = 2;
2606
+ _context18.next = 2;
2407
2607
  return this.postMedia(message);
2408
2608
  case 2:
2409
- res = _context17.sent;
2609
+ res = _context18.sent;
2410
2610
  _Logger.default.log("Response code: ".concat(res.statusCode), {
2411
2611
  file: _constants.CALL_FILE,
2412
2612
  method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
2413
2613
  });
2414
- _context17.next = 4;
2614
+ _context18.next = 4;
2415
2615
  break;
2416
2616
  case 3:
2417
- _context17.prev = 3;
2418
- _t13 = _context17["catch"](1);
2617
+ _context18.prev = 3;
2618
+ _t14 = _context18["catch"](1);
2419
2619
  _Logger.default.warn('Failed to send MediaAnswer request', {
2420
2620
  file: _constants.CALL_FILE,
2421
2621
  method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
2422
2622
  });
2423
- errData = _t13;
2623
+ errData = _t14;
2424
2624
  (0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
2425
2625
  /* Start retry if only it is a midcall case */
2426
2626
  if (_this1.connected) {
@@ -2432,7 +2632,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2432
2632
  }, interval * 1000);
2433
2633
  }
2434
2634
  }, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER, _constants.CALL_FILE);
2435
- _context17.next = 4;
2635
+ _context18.next = 4;
2436
2636
  return (0, _Utils.uploadLogs)({
2437
2637
  correlationId: this.correlationId,
2438
2638
  callId: this.callId,
@@ -2440,11 +2640,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2440
2640
  });
2441
2641
  case 4:
2442
2642
  case "end":
2443
- return _context17.stop();
2643
+ return _context18.stop();
2444
2644
  }
2445
- }, _callee17, this, [[1, 3]]);
2645
+ }, _callee18, this, [[1, 3]]);
2446
2646
  }));
2447
- function handleOutgoingRoapAnswer(_x16, _x17) {
2647
+ function handleOutgoingRoapAnswer(_x17, _x18) {
2448
2648
  return _handleOutgoingRoapAnswer.apply(this, arguments);
2449
2649
  }
2450
2650
  return handleOutgoingRoapAnswer;
@@ -2604,10 +2804,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2604
2804
  * @param localAudioStream - The local audio stream for the call.
2605
2805
  */
2606
2806
  function () {
2607
- var _answer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(localAudioStream) {
2807
+ var _answer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19(localAudioStream) {
2608
2808
  var localAudioTrack;
2609
- return _regenerator.default.wrap(function (_context18) {
2610
- while (1) switch (_context18.prev = _context18.next) {
2809
+ return _regenerator.default.wrap(function (_context19) {
2810
+ while (1) switch (_context19.prev = _context19.next) {
2611
2811
  case 0:
2612
2812
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with stream"), {
2613
2813
  file: _constants.CALL_FILE,
@@ -2616,7 +2816,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2616
2816
  this.localAudioStream = localAudioStream;
2617
2817
  localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
2618
2818
  if (localAudioTrack) {
2619
- _context18.next = 1;
2819
+ _context19.next = 1;
2620
2820
  break;
2621
2821
  }
2622
2822
  _Logger.default.warn("Did not find a local track while answering the call ".concat(this.getCorrelationId()), {
@@ -2627,13 +2827,14 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2627
2827
  this.sendCallStateMachineEvt({
2628
2828
  type: 'E_SEND_CALL_DISCONNECT'
2629
2829
  });
2630
- return _context18.abrupt("return");
2830
+ return _context19.abrupt("return");
2631
2831
  case 1:
2632
2832
  localAudioTrack.enabled = true;
2633
2833
  if (!this.mediaConnection) {
2634
2834
  this.initMediaConnection(localAudioTrack);
2635
2835
  this.mediaRoapEventsListener();
2636
2836
  this.mediaTrackListener();
2837
+ this.mediaIceEventsListener();
2637
2838
  this.registerListeners(localAudioStream);
2638
2839
  }
2639
2840
  if (this.callStateMachine.state.value === 'S_SEND_CALL_PROGRESS') {
@@ -2648,11 +2849,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2648
2849
  }
2649
2850
  case 2:
2650
2851
  case "end":
2651
- return _context18.stop();
2852
+ return _context19.stop();
2652
2853
  }
2653
- }, _callee18, this);
2854
+ }, _callee19, this);
2654
2855
  }));
2655
- function answer(_x18) {
2856
+ function answer(_x19) {
2656
2857
  return _answer.apply(this, arguments);
2657
2858
  }
2658
2859
  return answer;
@@ -2665,10 +2866,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2665
2866
  }, {
2666
2867
  key: "dial",
2667
2868
  value: (function () {
2668
- var _dial = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19(localAudioStream) {
2869
+ var _dial = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(localAudioStream) {
2669
2870
  var localAudioTrack;
2670
- return _regenerator.default.wrap(function (_context19) {
2671
- while (1) switch (_context19.prev = _context19.next) {
2871
+ return _regenerator.default.wrap(function (_context20) {
2872
+ while (1) switch (_context20.prev = _context20.next) {
2672
2873
  case 0:
2673
2874
  _Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with stream"), {
2674
2875
  file: _constants.CALL_FILE,
@@ -2677,7 +2878,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2677
2878
  this.localAudioStream = localAudioStream;
2678
2879
  localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
2679
2880
  if (localAudioTrack) {
2680
- _context19.next = 1;
2881
+ _context20.next = 1;
2681
2882
  break;
2682
2883
  }
2683
2884
  _Logger.default.warn("Did not find a local track while dialing the call ".concat(this.getCorrelationId()), {
@@ -2686,13 +2887,14 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2686
2887
  });
2687
2888
  this.deleteCb(this.getCorrelationId());
2688
2889
  this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());
2689
- return _context19.abrupt("return");
2890
+ return _context20.abrupt("return");
2690
2891
  case 1:
2691
2892
  localAudioTrack.enabled = true;
2692
2893
  if (!this.mediaConnection) {
2693
2894
  this.initMediaConnection(localAudioTrack);
2694
2895
  this.mediaRoapEventsListener();
2695
2896
  this.mediaTrackListener();
2897
+ this.mediaIceEventsListener();
2696
2898
  this.registerListeners(localAudioStream);
2697
2899
  }
2698
2900
  if (this.mediaStateMachine.state.value === 'S_ROAP_IDLE') {
@@ -2707,11 +2909,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2707
2909
  }
2708
2910
  case 2:
2709
2911
  case "end":
2710
- return _context19.stop();
2912
+ return _context20.stop();
2711
2913
  }
2712
- }, _callee19, this);
2914
+ }, _callee20, this);
2713
2915
  }));
2714
- function dial(_x19) {
2916
+ function dial(_x20) {
2715
2917
  return _dial.apply(this, arguments);
2716
2918
  }
2717
2919
  return dial;
@@ -2725,17 +2927,15 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2725
2927
  * @param state -.
2726
2928
  */
2727
2929
  function () {
2728
- var _patch = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(state) {
2729
- return _regenerator.default.wrap(function (_context20) {
2730
- while (1) switch (_context20.prev = _context20.next) {
2930
+ var _patch = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(state) {
2931
+ return _regenerator.default.wrap(function (_context21) {
2932
+ while (1) switch (_context21.prev = _context21.next) {
2731
2933
  case 0:
2732
2934
  _Logger.default.info("Send a PATCH for ".concat(state, " to Webex Calling"), {
2733
2935
  file: _constants.CALL_FILE,
2734
2936
  method: 'patch'
2735
2937
  });
2736
- return _context20.abrupt("return", this.webex.request({
2737
- // Sample uri: http://localhost/api/v1/calling/web/devices/{deviceid}/calls/{callid}
2738
-
2938
+ return _context21.abrupt("return", this.apiRequest.makeRequest({
2739
2939
  uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId),
2740
2940
  method: _types2.HTTP_METHODS.PATCH,
2741
2941
  service: _types2.ALLOWED_SERVICES.MOBIUS,
@@ -2752,11 +2952,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2752
2952
  }));
2753
2953
  case 1:
2754
2954
  case "end":
2755
- return _context20.stop();
2955
+ return _context21.stop();
2756
2956
  }
2757
- }, _callee20, this);
2957
+ }, _callee21, this);
2758
2958
  }));
2759
- function patch(_x20) {
2959
+ function patch(_x21) {
2760
2960
  return _patch.apply(this, arguments);
2761
2961
  }
2762
2962
  return patch;
@@ -2771,10 +2971,10 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2771
2971
  }, {
2772
2972
  key: "postSSRequest",
2773
2973
  value: (function () {
2774
- var _postSSRequest = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(context, type) {
2775
- var request, transferContext, _t14;
2776
- return _regenerator.default.wrap(function (_context21) {
2777
- while (1) switch (_context21.prev = _context21.next) {
2974
+ var _postSSRequest = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(context, type) {
2975
+ var request, transferContext, _t15;
2976
+ return _regenerator.default.wrap(function (_context22) {
2977
+ while (1) switch (_context22.prev = _context22.next) {
2778
2978
  case 0:
2779
2979
  request = {
2780
2980
  uri: "".concat(this.mobiusUrl).concat(_constants2.SERVICES_ENDPOINT),
@@ -2789,15 +2989,15 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2789
2989
  callId: this.callId
2790
2990
  }
2791
2991
  };
2792
- _t14 = type;
2793
- _context21.next = _t14 === _types3.SUPPLEMENTARY_SERVICES.HOLD ? 1 : _t14 === _types3.SUPPLEMENTARY_SERVICES.RESUME ? 2 : _t14 === _types3.SUPPLEMENTARY_SERVICES.TRANSFER ? 3 : 4;
2992
+ _t15 = type;
2993
+ _context22.next = _t15 === _types3.SUPPLEMENTARY_SERVICES.HOLD ? 1 : _t15 === _types3.SUPPLEMENTARY_SERVICES.RESUME ? 2 : _t15 === _types3.SUPPLEMENTARY_SERVICES.TRANSFER ? 3 : 4;
2794
2994
  break;
2795
2995
  case 1:
2796
2996
  request.uri = "".concat(request.uri, "/").concat(_constants.CALL_HOLD_SERVICE, "/").concat(_constants.HOLD_ENDPOINT);
2797
- return _context21.abrupt("continue", 5);
2997
+ return _context22.abrupt("continue", 5);
2798
2998
  case 2:
2799
2999
  request.uri = "".concat(request.uri, "/").concat(_constants.CALL_HOLD_SERVICE, "/").concat(_constants.RESUME_ENDPOINT);
2800
- return _context21.abrupt("continue", 5);
3000
+ return _context22.abrupt("continue", 5);
2801
3001
  case 3:
2802
3002
  request.uri = "".concat(request.uri, "/").concat(_constants.CALL_TRANSFER_SERVICE, "/").concat(_constants.TRANSFER_ENDPOINT);
2803
3003
  transferContext = context;
@@ -2816,21 +3016,21 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2816
3016
  transferType: _types4.TransferType.CONSULT
2817
3017
  });
2818
3018
  }
2819
- return _context21.abrupt("continue", 5);
3019
+ return _context22.abrupt("continue", 5);
2820
3020
  case 4:
2821
3021
  _Logger.default.warn("Unknown type for PUT request: ".concat(type), {
2822
3022
  file: _constants.CALL_FILE,
2823
3023
  method: _constants.METHODS.POST_SS_REQUEST
2824
3024
  });
2825
3025
  case 5:
2826
- return _context21.abrupt("return", this.webex.request(request));
3026
+ return _context22.abrupt("return", this.apiRequest.makeRequest(request));
2827
3027
  case 6:
2828
3028
  case "end":
2829
- return _context21.stop();
3029
+ return _context22.stop();
2830
3030
  }
2831
- }, _callee21, this);
3031
+ }, _callee22, this);
2832
3032
  }));
2833
- function postSSRequest(_x21, _x22) {
3033
+ function postSSRequest(_x22, _x23) {
2834
3034
  return _postSSRequest.apply(this, arguments);
2835
3035
  }
2836
3036
  return postSSRequest;
@@ -2842,11 +3042,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2842
3042
  }, {
2843
3043
  key: "postStatus",
2844
3044
  value: (function () {
2845
- var _postStatus = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22() {
2846
- return _regenerator.default.wrap(function (_context22) {
2847
- while (1) switch (_context22.prev = _context22.next) {
3045
+ var _postStatus = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
3046
+ return _regenerator.default.wrap(function (_context23) {
3047
+ while (1) switch (_context23.prev = _context23.next) {
2848
3048
  case 0:
2849
- return _context22.abrupt("return", this.webex.request({
3049
+ return _context23.abrupt("return", this.apiRequest.makeRequest({
2850
3050
  uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId, "/").concat(_constants.CALL_STATUS_RESOURCE),
2851
3051
  method: _types2.HTTP_METHODS.POST,
2852
3052
  service: _types2.ALLOWED_SERVICES.MOBIUS,
@@ -2861,9 +3061,9 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2861
3061
  }));
2862
3062
  case 1:
2863
3063
  case "end":
2864
- return _context22.stop();
3064
+ return _context23.stop();
2865
3065
  }
2866
- }, _callee22, this);
3066
+ }, _callee23, this);
2867
3067
  }));
2868
3068
  function postStatus() {
2869
3069
  return _postStatus.apply(this, arguments);
@@ -2882,14 +3082,14 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2882
3082
  }, {
2883
3083
  key: "completeTransfer",
2884
3084
  value: (function () {
2885
- var _completeTransfer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23(transferType, transferCallId, transferTarget) {
3085
+ var _completeTransfer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24(transferType, transferCallId, transferTarget) {
2886
3086
  var _this11 = this;
2887
- var context, errData, _context23, _errData, _t15, _t16;
2888
- return _regenerator.default.wrap(function (_context24) {
2889
- while (1) switch (_context24.prev = _context24.next) {
3087
+ var context, errData, _context24, _errData, _t16, _t17;
3088
+ return _regenerator.default.wrap(function (_context25) {
3089
+ while (1) switch (_context25.prev = _context25.next) {
2890
3090
  case 0:
2891
3091
  if (!(transferType === _types4.TransferType.BLIND && transferTarget)) {
2892
- _context24.next = 5;
3092
+ _context25.next = 5;
2893
3093
  break;
2894
3094
  }
2895
3095
  /* blind transfer */
@@ -2902,8 +3102,8 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2902
3102
  transferorCallId: this.getCallId(),
2903
3103
  destination: transferTarget
2904
3104
  };
2905
- _context24.prev = 1;
2906
- _context24.next = 2;
3105
+ _context25.prev = 1;
3106
+ _context25.next = 2;
2907
3107
  return this.postSSRequest(context, _types3.SUPPLEMENTARY_SERVICES.TRANSFER);
2908
3108
  case 2:
2909
3109
  _Logger.default.info("Blind Transfer completed for correlationId ".concat(this.getCorrelationId()), {
@@ -2911,16 +3111,16 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2911
3111
  method: _constants.METHODS.COMPLETE_TRANSFER
2912
3112
  });
2913
3113
  this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, _types5.TRANSFER_ACTION.BLIND, _types5.METRIC_TYPE.BEHAVIORAL, this.getCallId(), this.getCorrelationId(), undefined);
2914
- _context24.next = 4;
3114
+ _context25.next = 4;
2915
3115
  break;
2916
3116
  case 3:
2917
- _context24.prev = 3;
2918
- _t15 = _context24["catch"](1);
3117
+ _context25.prev = 3;
3118
+ _t16 = _context25["catch"](1);
2919
3119
  _Logger.default.warn("Blind Transfer failed for correlationId ".concat(this.getCorrelationId()), {
2920
3120
  file: _constants.CALL_FILE,
2921
3121
  method: _constants.METHODS.COMPLETE_TRANSFER
2922
3122
  });
2923
- errData = _t15;
3123
+ errData = _t16;
2924
3124
  (0, _Utils.handleCallErrors)(function (error) {
2925
3125
  _this11.emit(_types3.CALL_EVENT_KEYS.TRANSFER_ERROR, error);
2926
3126
  _this11.submitCallErrorMetric(error, _types5.TRANSFER_ACTION.BLIND);
@@ -2930,18 +3130,18 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2930
3130
  function (interval) {
2931
3131
  return undefined;
2932
3132
  }, this.getCorrelationId(), errData, _constants.METHODS.COMPLETE_TRANSFER, _constants.CALL_FILE);
2933
- _context24.next = 4;
3133
+ _context25.next = 4;
2934
3134
  return (0, _Utils.uploadLogs)({
2935
3135
  correlationId: this.correlationId,
2936
3136
  callId: this.callId,
2937
3137
  broadworksCorrelationInfo: this.broadworksCorrelationInfo
2938
3138
  });
2939
3139
  case 4:
2940
- _context24.next = 11;
3140
+ _context25.next = 11;
2941
3141
  break;
2942
3142
  case 5:
2943
3143
  if (!(transferType === _types4.TransferType.CONSULT && transferCallId)) {
2944
- _context24.next = 10;
3144
+ _context25.next = 10;
2945
3145
  break;
2946
3146
  }
2947
3147
  /* Consult transfer */
@@ -2950,29 +3150,29 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2950
3150
  file: _constants.CALL_FILE,
2951
3151
  method: _constants.METHODS.COMPLETE_TRANSFER
2952
3152
  });
2953
- _context23 = {
3153
+ _context24 = {
2954
3154
  transferorCallId: this.getCallId(),
2955
3155
  transferToCallId: transferCallId
2956
3156
  };
2957
- _context24.prev = 6;
2958
- _context24.next = 7;
2959
- return this.postSSRequest(_context23, _types3.SUPPLEMENTARY_SERVICES.TRANSFER);
3157
+ _context25.prev = 6;
3158
+ _context25.next = 7;
3159
+ return this.postSSRequest(_context24, _types3.SUPPLEMENTARY_SERVICES.TRANSFER);
2960
3160
  case 7:
2961
3161
  _Logger.default.info("Consult Transfer completed for correlationId ".concat(this.getCorrelationId()), {
2962
3162
  file: _constants.CALL_FILE,
2963
3163
  method: _constants.METHODS.COMPLETE_TRANSFER
2964
3164
  });
2965
3165
  this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, _types5.TRANSFER_ACTION.CONSULT, _types5.METRIC_TYPE.BEHAVIORAL, this.getCallId(), this.getCorrelationId(), undefined);
2966
- _context24.next = 9;
3166
+ _context25.next = 9;
2967
3167
  break;
2968
3168
  case 8:
2969
- _context24.prev = 8;
2970
- _t16 = _context24["catch"](6);
3169
+ _context25.prev = 8;
3170
+ _t17 = _context25["catch"](6);
2971
3171
  _Logger.default.warn("Consult Transfer failed for correlationId ".concat(this.getCorrelationId()), {
2972
3172
  file: _constants.CALL_FILE,
2973
3173
  method: _constants.METHODS.COMPLETE_TRANSFER
2974
3174
  });
2975
- _errData = _t16;
3175
+ _errData = _t17;
2976
3176
  (0, _Utils.handleCallErrors)(function (error) {
2977
3177
  _this11.emit(_types3.CALL_EVENT_KEYS.TRANSFER_ERROR, error);
2978
3178
  _this11.submitCallErrorMetric(error, _types5.TRANSFER_ACTION.CONSULT);
@@ -2982,14 +3182,14 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2982
3182
  function (interval) {
2983
3183
  return undefined;
2984
3184
  }, this.getCorrelationId(), _errData, _constants.METHODS.COMPLETE_TRANSFER, _constants.CALL_FILE);
2985
- _context24.next = 9;
3185
+ _context25.next = 9;
2986
3186
  return (0, _Utils.uploadLogs)({
2987
3187
  correlationId: this.correlationId,
2988
3188
  callId: this.callId,
2989
3189
  broadworksCorrelationInfo: this.broadworksCorrelationInfo
2990
3190
  });
2991
3191
  case 9:
2992
- _context24.next = 11;
3192
+ _context25.next = 11;
2993
3193
  break;
2994
3194
  case 10:
2995
3195
  _Logger.default.warn("Invalid information received, transfer failed for correlationId: ".concat(this.getCorrelationId()), {
@@ -2998,11 +3198,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
2998
3198
  });
2999
3199
  case 11:
3000
3200
  case "end":
3001
- return _context24.stop();
3201
+ return _context25.stop();
3002
3202
  }
3003
- }, _callee23, this, [[1, 3], [6, 8]]);
3203
+ }, _callee24, this, [[1, 3], [6, 8]]);
3004
3204
  }));
3005
- function completeTransfer(_x23, _x24, _x25) {
3205
+ function completeTransfer(_x24, _x25, _x26) {
3006
3206
  return _completeTransfer.apply(this, arguments);
3007
3207
  }
3008
3208
  return completeTransfer;
@@ -3014,32 +3214,32 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3014
3214
  }, {
3015
3215
  key: "getCallStats",
3016
3216
  value: (function () {
3017
- var _getCallStats = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24() {
3018
- var stats, _t17;
3019
- return _regenerator.default.wrap(function (_context25) {
3020
- while (1) switch (_context25.prev = _context25.next) {
3217
+ var _getCallStats = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25() {
3218
+ var stats, _t18;
3219
+ return _regenerator.default.wrap(function (_context26) {
3220
+ while (1) switch (_context26.prev = _context26.next) {
3021
3221
  case 0:
3022
- _context25.prev = 0;
3023
- _context25.next = 1;
3222
+ _context26.prev = 0;
3223
+ _context26.next = 1;
3024
3224
  return this.mediaConnection.getStats();
3025
3225
  case 1:
3026
- stats = _context25.sent;
3027
- _context25.next = 3;
3226
+ stats = _context26.sent;
3227
+ _context26.next = 3;
3028
3228
  break;
3029
3229
  case 2:
3030
- _context25.prev = 2;
3031
- _t17 = _context25["catch"](0);
3230
+ _context26.prev = 2;
3231
+ _t18 = _context26["catch"](0);
3032
3232
  _Logger.default.warn('Stats collection failed, using dummy stats', {
3033
3233
  file: _constants.CALL_FILE,
3034
3234
  method: _constants.METHODS.GET_CALL_STATS
3035
3235
  });
3036
3236
  case 3:
3037
- return _context25.abrupt("return", (0, _Utils.parseMediaQualityStatistics)(stats));
3237
+ return _context26.abrupt("return", (0, _Utils.parseMediaQualityStatistics)(stats));
3038
3238
  case 4:
3039
3239
  case "end":
3040
- return _context25.stop();
3240
+ return _context26.stop();
3041
3241
  }
3042
- }, _callee24, this, [[0, 2]]);
3242
+ }, _callee25, this, [[0, 2]]);
3043
3243
  }));
3044
3244
  function getCallStats() {
3045
3245
  return _getCallStats.apply(this, arguments);
@@ -3055,15 +3255,15 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3055
3255
  }, {
3056
3256
  key: "postMedia",
3057
3257
  value: (function () {
3058
- var _postMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25(roapMessage) {
3059
- return _regenerator.default.wrap(function (_context26) {
3060
- while (1) switch (_context26.prev = _context26.next) {
3258
+ var _postMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(roapMessage) {
3259
+ return _regenerator.default.wrap(function (_context27) {
3260
+ while (1) switch (_context27.prev = _context27.next) {
3061
3261
  case 0:
3062
3262
  _Logger.default.log('Posting message to Webex Calling', {
3063
3263
  file: _constants.CALL_FILE,
3064
3264
  method: _constants.METHODS.POST_MEDIA
3065
3265
  });
3066
- return _context26.abrupt("return", this.webex.request({
3266
+ return _context27.abrupt("return", this.apiRequest.makeRequest({
3067
3267
  uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId, "/").concat(_constants.MEDIA_ENDPOINT_RESOURCE),
3068
3268
  method: _types2.HTTP_METHODS.POST,
3069
3269
  service: _types2.ALLOWED_SERVICES.MOBIUS,
@@ -3082,11 +3282,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3082
3282
  }));
3083
3283
  case 1:
3084
3284
  case "end":
3085
- return _context26.stop();
3285
+ return _context27.stop();
3086
3286
  }
3087
- }, _callee25, this);
3287
+ }, _callee26, this);
3088
3288
  }));
3089
- function postMedia(_x26) {
3289
+ function postMedia(_x27) {
3090
3290
  return _postMedia.apply(this, arguments);
3091
3291
  }
3092
3292
  return postMedia;
@@ -3099,90 +3299,8 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3099
3299
  }, {
3100
3300
  key: "mediaRoapEventsListener",
3101
3301
  value: function mediaRoapEventsListener() {
3102
- var _this12 = this;
3103
- this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND,
3104
- /*#__PURE__*/
3105
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3106
- function () {
3107
- var _ref0 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(event) {
3108
- var _event$roapMessage, _event$roapMessage2;
3109
- var mediaOk, sdpVideoPortZero, _t18;
3110
- return _regenerator.default.wrap(function (_context27) {
3111
- while (1) switch (_context27.prev = _context27.next) {
3112
- case 0:
3113
- _Logger.default.info("ROAP message to send (rcv from MEDIA-SDK) :\n \n type: ".concat((_event$roapMessage = event.roapMessage) === null || _event$roapMessage === void 0 ? void 0 : _event$roapMessage.messageType, ", seq: ").concat(event.roapMessage.seq, " , version: ").concat(event.roapMessage.version), {
3114
- file: _constants.CALL_FILE,
3115
- method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3116
- });
3117
- _Logger.default.info("SDP message to send : \n ".concat((_event$roapMessage2 = event.roapMessage) === null || _event$roapMessage2 === void 0 ? void 0 : _event$roapMessage2.sdp), {
3118
- file: _constants.CALL_FILE,
3119
- method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3120
- });
3121
- _t18 = event.roapMessage.messageType;
3122
- _context27.next = _t18 === _types4.RoapScenario.OK ? 1 : _t18 === _types4.RoapScenario.OFFER ? 2 : _t18 === _types4.RoapScenario.ANSWER ? 3 : _t18 === _types4.RoapScenario.ERROR ? 4 : _t18 === _types4.RoapScenario.OFFER_RESPONSE ? 5 : 6;
3123
- break;
3124
- case 1:
3125
- mediaOk = {
3126
- received: false,
3127
- message: event.roapMessage
3128
- };
3129
- _this12.sendMediaStateMachineEvt({
3130
- type: 'E_ROAP_OK',
3131
- data: mediaOk
3132
- });
3133
- return _context27.abrupt("continue", 6);
3134
- case 2:
3135
- // TODO: Remove these after the Media-Core adds the fix
3136
- // Check if at least one IPv6 "c=" line is present
3137
- _Logger.default.info("before modifying sdp: ".concat(event.roapMessage.sdp), {
3138
- file: _constants.CALL_FILE,
3139
- method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3140
- });
3141
- event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
3142
- sdpVideoPortZero = event.roapMessage.sdp.replace(/^m=(video) (?:\d+) /gim, 'm=$1 0 ');
3143
- _Logger.default.info("after modification sdp: ".concat(sdpVideoPortZero), {
3144
- file: _constants.CALL_FILE,
3145
- method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
3146
- });
3147
- event.roapMessage.sdp = sdpVideoPortZero;
3148
- _this12.localRoapMessage = event.roapMessage;
3149
- _this12.sendCallStateMachineEvt({
3150
- type: 'E_SEND_CALL_SETUP',
3151
- data: event.roapMessage
3152
- });
3153
- return _context27.abrupt("continue", 6);
3154
- case 3:
3155
- event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
3156
- _this12.localRoapMessage = event.roapMessage;
3157
- _this12.sendMediaStateMachineEvt({
3158
- type: 'E_SEND_ROAP_ANSWER',
3159
- data: event.roapMessage
3160
- });
3161
- return _context27.abrupt("continue", 6);
3162
- case 4:
3163
- _this12.sendMediaStateMachineEvt({
3164
- type: 'E_ROAP_ERROR',
3165
- data: event.roapMessage
3166
- });
3167
- return _context27.abrupt("continue", 6);
3168
- case 5:
3169
- event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
3170
- _this12.localRoapMessage = event.roapMessage;
3171
- _this12.sendMediaStateMachineEvt({
3172
- type: 'E_SEND_ROAP_OFFER',
3173
- data: event.roapMessage
3174
- });
3175
- return _context27.abrupt("continue", 6);
3176
- case 6:
3177
- case "end":
3178
- return _context27.stop();
3179
- }
3180
- }, _callee26);
3181
- }));
3182
- return function (_x27) {
3183
- return _ref0.apply(this, arguments);
3184
- };
3185
- }());
3302
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, this.handleMediaRoapEvent);
3303
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_FAILURE, this.handleRoapFailure);
3186
3304
  }
3187
3305
 
3188
3306
  /* istanbul ignore next */
@@ -3192,13 +3310,34 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3192
3310
  }, {
3193
3311
  key: "mediaTrackListener",
3194
3312
  value: function mediaTrackListener() {
3195
- var _this13 = this;
3196
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3197
- this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.REMOTE_TRACK_ADDED, function (e) {
3198
- if (e.type === _types3.MEDIA_CONNECTION_EVENT_KEYS.MEDIA_TYPE_AUDIO) {
3199
- _this13.emit(_types3.CALL_EVENT_KEYS.REMOTE_MEDIA, e.track);
3200
- }
3201
- });
3313
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.REMOTE_TRACK_ADDED, this.handleRemoteTrackAdded);
3314
+ }
3315
+
3316
+ /* istanbul ignore next */
3317
+ /**
3318
+ * Setup listeners for ICE-related media connection events.
3319
+ */
3320
+ }, {
3321
+ key: "mediaIceEventsListener",
3322
+ value: function mediaIceEventsListener() {
3323
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, this.handleIceGatheringStateChanged);
3324
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, this.handlePeerConnectionStateChanged);
3325
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, this.handleIceConnectionStateChanged);
3326
+ this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE_ERROR, this.handleIceCandidateError);
3327
+ }
3328
+ }, {
3329
+ key: "unregisterMediaConnectionListeners",
3330
+ value: function unregisterMediaConnectionListeners() {
3331
+ if (!this.mediaConnection || typeof this.mediaConnection.off !== 'function') {
3332
+ return;
3333
+ }
3334
+ this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, this.handleMediaRoapEvent);
3335
+ this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ROAP_FAILURE, this.handleRoapFailure);
3336
+ this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.REMOTE_TRACK_ADDED, this.handleRemoteTrackAdded);
3337
+ this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, this.handleIceGatheringStateChanged);
3338
+ this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, this.handlePeerConnectionStateChanged);
3339
+ this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, this.handleIceConnectionStateChanged);
3340
+ this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE_ERROR, this.handleIceCandidateError);
3202
3341
  }
3203
3342
  }, {
3204
3343
  key: "unregisterListeners",
@@ -3239,7 +3378,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3239
3378
  return this.getCallStats();
3240
3379
  case 1:
3241
3380
  disconnectMetrics = _context28.sent;
3242
- return _context28.abrupt("return", this.webex.request({
3381
+ return _context28.abrupt("return", this.apiRequest.makeRequest({
3243
3382
  uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId),
3244
3383
  method: _types2.HTTP_METHODS.DELETE,
3245
3384
  service: _types2.ALLOWED_SERVICES.MOBIUS,
@@ -3278,7 +3417,7 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3278
3417
  this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL_ERROR, transferMetricAction || this.callStateMachine.state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, error);
3279
3418
  } else {
3280
3419
  var _this$remoteRoapMessa2;
3281
- this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, this.mediaStateMachine.state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, this.localRoapMessage.sdp, (_this$remoteRoapMessa2 = this.remoteRoapMessage) === null || _this$remoteRoapMessa2 === void 0 ? void 0 : _this$remoteRoapMessa2.sdp, error);
3420
+ this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, this.mediaStateMachine.state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, this.localRoapMessage.sdp, (_this$remoteRoapMessa2 = this.remoteRoapMessage) === null || _this$remoteRoapMessa2 === void 0 ? void 0 : _this$remoteRoapMessa2.sdp, undefined, error);
3282
3421
  }
3283
3422
  }
3284
3423
 
@@ -3467,6 +3606,11 @@ var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
3467
3606
  }
3468
3607
  return handleTimeout;
3469
3608
  }())
3609
+ }], [{
3610
+ key: "getPeerConnectionStateFromEvent",
3611
+ value: function getPeerConnectionStateFromEvent(event, preferredKey) {
3612
+ return event[preferredKey] || event.state || 'unknown';
3613
+ }
3470
3614
  }]);
3471
3615
  }(_impl.Eventing);
3472
3616
  /**