@webex/plugin-meetings 3.12.0-next.91 → 3.12.0-next.93

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 (38) hide show
  1. package/dist/aiEnableRequest/index.js +1 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webex-errors.js +47 -5
  5. package/dist/common/errors/webex-errors.js.map +1 -1
  6. package/dist/interpretation/index.js +1 -1
  7. package/dist/interpretation/siLanguage.js +1 -1
  8. package/dist/locus-info/index.js +14 -5
  9. package/dist/locus-info/index.js.map +1 -1
  10. package/dist/media/MediaConnectionAwaiter.js +15 -2
  11. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  12. package/dist/media/index.js +5 -1
  13. package/dist/media/index.js.map +1 -1
  14. package/dist/meeting/index.js +458 -365
  15. package/dist/meeting/index.js.map +1 -1
  16. package/dist/reachability/clusterReachability.js.map +1 -1
  17. package/dist/reachability/index.js +111 -70
  18. package/dist/reachability/index.js.map +1 -1
  19. package/dist/types/common/errors/webex-errors.d.ts +31 -2
  20. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  21. package/dist/types/meeting/index.d.ts +18 -3
  22. package/dist/types/reachability/clusterReachability.d.ts +3 -3
  23. package/dist/types/reachability/index.d.ts +9 -2
  24. package/dist/webinar/index.js +1 -1
  25. package/package.json +3 -3
  26. package/src/common/errors/webex-errors.ts +47 -3
  27. package/src/locus-info/index.ts +15 -5
  28. package/src/media/MediaConnectionAwaiter.ts +21 -4
  29. package/src/media/index.ts +7 -1
  30. package/src/meeting/index.ts +100 -27
  31. package/src/reachability/clusterReachability.ts +3 -2
  32. package/src/reachability/index.ts +28 -1
  33. package/test/unit/spec/common/errors/webex-errors.ts +62 -0
  34. package/test/unit/spec/locus-info/index.js +44 -0
  35. package/test/unit/spec/media/MediaConnectionAwaiter.ts +55 -0
  36. package/test/unit/spec/media/index.ts +61 -0
  37. package/test/unit/spec/meeting/index.js +290 -8
  38. package/test/unit/spec/reachability/index.ts +69 -0
@@ -191,7 +191,7 @@ var AIEnableRequest = _webexCore.WebexPlugin.extend({
191
191
  method: _constants.HTTP_VERBS.PUT
192
192
  });
193
193
  },
194
- version: "3.12.0-next.91"
194
+ version: "3.12.0-next.93"
195
195
  });
196
196
  var _default = exports.default = AIEnableRequest;
197
197
  //# sourceMappingURL=index.js.map
@@ -214,7 +214,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
214
214
  sessionId: this.sessionId
215
215
  });
216
216
  },
217
- version: "3.12.0-next.91"
217
+ version: "3.12.0-next.93"
218
218
  });
219
219
  var _default = exports.default = Breakout;
220
220
  //# sourceMappingURL=breakout.js.map
@@ -1133,7 +1133,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
1133
1133
  this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
1134
1134
  }
1135
1135
  },
1136
- version: "3.12.0-next.91"
1136
+ version: "3.12.0-next.93"
1137
1137
  });
1138
1138
  var _default = exports.default = Breakouts;
1139
1139
  //# sourceMappingURL=index.js.map
@@ -6,8 +6,9 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
6
6
  _Object$defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.UserNotJoinedError = exports.UserInLobbyError = exports.SpaceIDDeprecatedError = exports.SdpResponseTimeoutError = exports.NoMediaEstablishedYetError = exports.MeetingNotActiveError = exports.IceGatheringFailed = exports.AddMediaFailed = void 0;
9
+ exports.UserNotJoinedError = exports.UserInLobbyError = exports.SpaceIDDeprecatedError = exports.SdpResponseTimeoutError = exports.NoMediaEstablishedYetError = exports.MeetingNotActiveError = exports.MediaConnectionTimedOutError = exports.IceGatheringFailed = exports.AddMediaFailed = void 0;
10
10
  exports.createMeetingsError = createMeetingsError;
11
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/wrapNativeSuper"));
11
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
13
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
@@ -158,22 +159,63 @@ WebExMeetingsErrors[IceGatheringFailed.CODE] = IceGatheringFailed;
158
159
  var AddMediaFailed = exports.AddMediaFailed = /*#__PURE__*/function (_WebexMeetingsError7) {
159
160
  /**
160
161
  * Creates a new AddMediaFailed error
161
- * @param {Error} [cause] - The underlying error that caused the media addition to fail
162
+ * @param {Object} options
163
+ * @param {Error} [options.cause] - The underlying error that caused the media addition to fail
164
+ * @param {string} [options.connectionType] - The ICE connection type at the time of failure (e.g. 'UDP', 'TURN-TLS')
165
+ * @param {number} [options.selectedCandidatePairChanges] - Number of times the selected candidate pair changed
166
+ * @param {number} [options.numTransports] - Number of ICE transports
167
+ * @param {boolean} [options.iceConnected] - Whether ICE connection was established before the failure
162
168
  */
163
- function AddMediaFailed(cause) {
169
+ function AddMediaFailed() {
164
170
  var _this;
171
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
165
172
  (0, _classCallCheck2.default)(this, AddMediaFailed);
166
173
  _this = _callSuper(this, AddMediaFailed, [AddMediaFailed.CODE, 'Failed to add media']);
167
174
  (0, _defineProperty2.default)(_this, "cause", void 0);
168
- _this.cause = cause;
175
+ (0, _defineProperty2.default)(_this, "connectionType", void 0);
176
+ (0, _defineProperty2.default)(_this, "selectedCandidatePairChanges", void 0);
177
+ (0, _defineProperty2.default)(_this, "numTransports", void 0);
178
+ (0, _defineProperty2.default)(_this, "iceConnected", void 0);
179
+ _this.cause = options.cause;
180
+ _this.connectionType = options.connectionType;
181
+ _this.selectedCandidatePairChanges = options.selectedCandidatePairChanges;
182
+ _this.numTransports = options.numTransports;
183
+ _this.iceConnected = options.iceConnected;
169
184
  return _this;
170
185
  }
186
+
187
+ /**
188
+ * Returns true if the failure was due to a DTLS handshake failure
189
+ * (ICE connected successfully but the overall media connection failed).
190
+ */
171
191
  (0, _inherits2.default)(AddMediaFailed, _WebexMeetingsError7);
172
- return (0, _createClass2.default)(AddMediaFailed);
192
+ return (0, _createClass2.default)(AddMediaFailed, [{
193
+ key: "isDtlsHandshakeFailure",
194
+ get: function get() {
195
+ return this.iceConnected === true;
196
+ }
197
+ }]);
173
198
  }(_webexMeetingsError.default);
174
199
  (0, _defineProperty2.default)(AddMediaFailed, "CODE", 30203);
175
200
  WebExMeetingsErrors[AddMediaFailed.CODE] = AddMediaFailed;
176
201
 
202
+ /**
203
+ * @class MediaConnectionTimedOutError
204
+ * @classdesc Internal error thrown when the media connection times out waiting to connect.
205
+ */
206
+ var MediaConnectionTimedOutError = exports.MediaConnectionTimedOutError = /*#__PURE__*/function (_Error) {
207
+ function MediaConnectionTimedOutError(message, iceConnected) {
208
+ var _this2;
209
+ (0, _classCallCheck2.default)(this, MediaConnectionTimedOutError);
210
+ _this2 = _callSuper(this, MediaConnectionTimedOutError, [message]);
211
+ (0, _defineProperty2.default)(_this2, "iceConnected", void 0);
212
+ _this2.name = 'MediaConnectionTimedOutError';
213
+ _this2.iceConnected = iceConnected;
214
+ return _this2;
215
+ }
216
+ (0, _inherits2.default)(MediaConnectionTimedOutError, _Error);
217
+ return (0, _createClass2.default)(MediaConnectionTimedOutError);
218
+ }(/*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
177
219
  /**
178
220
  * @class SdpResponseTimeoutError
179
221
  * @classdesc Raised whenever we timeout waiting for remote SDP answer
@@ -1 +1 @@
1
- {"version":3,"names":["_webexMeetingsError","_interopRequireDefault","require","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","WebExMeetingsErrors","createMeetingsError","code","message","WebexMeetingsError","MeetingNotActiveError","exports","_WebexMeetingsError","_classCallCheck2","CODE","_inherits2","_createClass2","_defineProperty2","UserNotJoinedError","_WebexMeetingsError2","NoMediaEstablishedYetError","_WebexMeetingsError3","UserInLobbyError","_WebexMeetingsError4","SpaceIDDeprecatedError","_WebexMeetingsError5","IceGatheringFailed","_WebexMeetingsError6","AddMediaFailed","_WebexMeetingsError7","cause","_this","SdpResponseTimeoutError","_WebexMeetingsError8"],"sources":["webex-errors.ts"],"sourcesContent":["// The document would auto generate the doc for errors\n\n// 1) Error codes for Oauth, login, mercury should be separated out (Code range)\n// 2) Errors from the actual locus server or other server in case, we can use the same error code as locus and redirect it\n// 3) Any errors we generate from the SDK can be split into various categories\n// Parameter validation, user action, connection, media specific(They can have different range)\n\n// TODO: all the errors from the server need to be captured\n\n// add a way to log and send metrics if needed\nimport WebexMeetingsError from './webex-meetings-error';\n\nconst WebExMeetingsErrors = {};\n\n/**\n * Create a {@link WebexMeetingsError} for a given code and message.\n * @private\n * @param {number} [code] - Error code\n * @param {string} [message] - Error message\n * @returns {WebexMeetingsError}\n */\nexport function createMeetingsError(code?: number, message?: string) {\n code = typeof code === 'number' ? code : 0;\n message = typeof message === 'string' && message ? message : 'Unknown error';\n\n return WebExMeetingsErrors[code]\n ? new WebExMeetingsErrors[code]()\n : new WebexMeetingsError(code, message);\n}\n\n/**\n * @class MeetingNotActiveError\n * @classdesc Raised whenever Meeting has already ended and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30101\n * @property {string} message - 'Meeting has already Ended or not Active'\n */\nclass MeetingNotActiveError extends WebexMeetingsError {\n static CODE = 30101;\n\n constructor() {\n super(MeetingNotActiveError.CODE, 'Meeting has already Ended or not Active');\n }\n}\n\nexport {MeetingNotActiveError};\nWebExMeetingsErrors[MeetingNotActiveError.CODE] = MeetingNotActiveError;\n\n/**\n * @class UserNotJoinedError\n * @classdesc Raised whenever the user has already left the meeting and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30102\n * @property {string} message - 'User has already left the meeting'\n */\nclass UserNotJoinedError extends WebexMeetingsError {\n static CODE = 30102;\n\n constructor() {\n super(\n UserNotJoinedError.CODE,\n 'User currently not in meeting. Please join a meeting before adding media.'\n );\n }\n}\n\nexport {UserNotJoinedError};\nWebExMeetingsErrors[UserNotJoinedError.CODE] = UserNotJoinedError;\n\n/**\n * @class NoMediaEstablishedYetError\n * @classdesc Raised whenever the user has not established media yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30103\n * @property {string} message - error message\n */\nclass NoMediaEstablishedYetError extends WebexMeetingsError {\n static CODE = 30103;\n\n // eslint-disable-next-line require-jsdoc\n constructor() {\n super(\n NoMediaEstablishedYetError.CODE,\n 'Webrtc media connection is missing, call addMedia() first'\n );\n }\n}\n\nexport {NoMediaEstablishedYetError};\nWebExMeetingsErrors[NoMediaEstablishedYetError.CODE] = NoMediaEstablishedYetError;\n\n/**\n * @class UserInLobbyError\n * @classdesc Raised whenever the user is in lobby and not joined yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30104\n * @property {string} message - 'user is still in the lobby or not joined'\n */\nclass UserInLobbyError extends WebexMeetingsError {\n static CODE = 30104;\n\n constructor() {\n super(UserInLobbyError.CODE, 'user is still in the lobby or not joined');\n }\n}\n\nexport {UserInLobbyError};\nWebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;\n\n/**\n * @class SpaceIDDeprecatedError\n * @classdesc Raised whenever the user passes Space ID as destination for create meeting.\n * @extends WebexMeetingsError\n * @property {number} code - 30105\n * @property {string} message - Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'\n */\nclass SpaceIDDeprecatedError extends WebexMeetingsError {\n static CODE = 30105;\n\n constructor() {\n super(\n SpaceIDDeprecatedError.CODE,\n 'Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'\n );\n }\n}\n\nexport {SpaceIDDeprecatedError};\nWebExMeetingsErrors[SpaceIDDeprecatedError.CODE] = SpaceIDDeprecatedError;\n\n/**\n * @class IceGatheringFailed\n * @classdesc Raised whenever ice gathering fails.\n * @extends WebexMeetingsError\n * @property {number} code - 30202\n * @property {string} message - 'user failed ice gathering check network/firewall'\n */\nclass IceGatheringFailed extends WebexMeetingsError {\n static CODE = 30202;\n\n constructor() {\n super(IceGatheringFailed.CODE, 'iceConnection: gethering ice candidate failed');\n }\n}\n\nexport {IceGatheringFailed};\nWebExMeetingsErrors[IceGatheringFailed.CODE] = IceGatheringFailed;\n\n/**\n * @class AddMediaFailed\n * @classdesc Raised whenever we fail to successfully add media to a meeting\n * @extends WebexMeetingsError\n * @property {number} code - 30203\n * @property {string} message - 'Failed to add media'\n * @property {Error} [cause] - The underlying error that caused the failure\n */\nclass AddMediaFailed extends WebexMeetingsError {\n static CODE = 30203;\n cause?: Error;\n\n /**\n * Creates a new AddMediaFailed error\n * @param {Error} [cause] - The underlying error that caused the media addition to fail\n */\n constructor(cause?: Error) {\n super(AddMediaFailed.CODE, 'Failed to add media');\n this.cause = cause;\n }\n}\nexport {AddMediaFailed};\nWebExMeetingsErrors[AddMediaFailed.CODE] = AddMediaFailed;\n\n/**\n * @class SdpResponseTimeoutError\n * @classdesc Raised whenever we timeout waiting for remote SDP answer\n * @extends WebexMeetingsError\n * @property {number} code - 30204\n * @property {string} message - 'Timed out waiting for REMOTE SDP ANSWER'\n */\nclass SdpResponseTimeoutError extends WebexMeetingsError {\n static CODE = 30204;\n\n // eslint-disable-next-line require-jsdoc\n constructor() {\n super(SdpResponseTimeoutError.CODE, 'Timed out waiting for REMOTE SDP ANSWER');\n }\n}\n\nexport {SdpResponseTimeoutError};\nWebExMeetingsErrors[SdpResponseTimeoutError.CODE] = SdpResponseTimeoutError;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_webexMeetingsError","_interopRequireDefault","require","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","WebExMeetingsErrors","createMeetingsError","code","message","WebexMeetingsError","MeetingNotActiveError","exports","_WebexMeetingsError","_classCallCheck2","CODE","_inherits2","_createClass2","_defineProperty2","UserNotJoinedError","_WebexMeetingsError2","NoMediaEstablishedYetError","_WebexMeetingsError3","UserInLobbyError","_WebexMeetingsError4","SpaceIDDeprecatedError","_WebexMeetingsError5","IceGatheringFailed","_WebexMeetingsError6","AddMediaFailed","_WebexMeetingsError7","_this","options","arguments","length","undefined","cause","connectionType","selectedCandidatePairChanges","numTransports","iceConnected","key","get","MediaConnectionTimedOutError","_Error","_this2","name","_wrapNativeSuper2","Error","SdpResponseTimeoutError","_WebexMeetingsError8"],"sources":["webex-errors.ts"],"sourcesContent":["// The document would auto generate the doc for errors\n\n// 1) Error codes for Oauth, login, mercury should be separated out (Code range)\n// 2) Errors from the actual locus server or other server in case, we can use the same error code as locus and redirect it\n// 3) Any errors we generate from the SDK can be split into various categories\n// Parameter validation, user action, connection, media specific(They can have different range)\n\n// TODO: all the errors from the server need to be captured\n\n// add a way to log and send metrics if needed\nimport WebexMeetingsError from './webex-meetings-error';\n\nconst WebExMeetingsErrors = {};\n\n/**\n * Create a {@link WebexMeetingsError} for a given code and message.\n * @private\n * @param {number} [code] - Error code\n * @param {string} [message] - Error message\n * @returns {WebexMeetingsError}\n */\nexport function createMeetingsError(code?: number, message?: string) {\n code = typeof code === 'number' ? code : 0;\n message = typeof message === 'string' && message ? message : 'Unknown error';\n\n return WebExMeetingsErrors[code]\n ? new WebExMeetingsErrors[code]()\n : new WebexMeetingsError(code, message);\n}\n\n/**\n * @class MeetingNotActiveError\n * @classdesc Raised whenever Meeting has already ended and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30101\n * @property {string} message - 'Meeting has already Ended or not Active'\n */\nclass MeetingNotActiveError extends WebexMeetingsError {\n static CODE = 30101;\n\n constructor() {\n super(MeetingNotActiveError.CODE, 'Meeting has already Ended or not Active');\n }\n}\n\nexport {MeetingNotActiveError};\nWebExMeetingsErrors[MeetingNotActiveError.CODE] = MeetingNotActiveError;\n\n/**\n * @class UserNotJoinedError\n * @classdesc Raised whenever the user has already left the meeting and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30102\n * @property {string} message - 'User has already left the meeting'\n */\nclass UserNotJoinedError extends WebexMeetingsError {\n static CODE = 30102;\n\n constructor() {\n super(\n UserNotJoinedError.CODE,\n 'User currently not in meeting. Please join a meeting before adding media.'\n );\n }\n}\n\nexport {UserNotJoinedError};\nWebExMeetingsErrors[UserNotJoinedError.CODE] = UserNotJoinedError;\n\n/**\n * @class NoMediaEstablishedYetError\n * @classdesc Raised whenever the user has not established media yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30103\n * @property {string} message - error message\n */\nclass NoMediaEstablishedYetError extends WebexMeetingsError {\n static CODE = 30103;\n\n // eslint-disable-next-line require-jsdoc\n constructor() {\n super(\n NoMediaEstablishedYetError.CODE,\n 'Webrtc media connection is missing, call addMedia() first'\n );\n }\n}\n\nexport {NoMediaEstablishedYetError};\nWebExMeetingsErrors[NoMediaEstablishedYetError.CODE] = NoMediaEstablishedYetError;\n\n/**\n * @class UserInLobbyError\n * @classdesc Raised whenever the user is in lobby and not joined yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30104\n * @property {string} message - 'user is still in the lobby or not joined'\n */\nclass UserInLobbyError extends WebexMeetingsError {\n static CODE = 30104;\n\n constructor() {\n super(UserInLobbyError.CODE, 'user is still in the lobby or not joined');\n }\n}\n\nexport {UserInLobbyError};\nWebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;\n\n/**\n * @class SpaceIDDeprecatedError\n * @classdesc Raised whenever the user passes Space ID as destination for create meeting.\n * @extends WebexMeetingsError\n * @property {number} code - 30105\n * @property {string} message - Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'\n */\nclass SpaceIDDeprecatedError extends WebexMeetingsError {\n static CODE = 30105;\n\n constructor() {\n super(\n SpaceIDDeprecatedError.CODE,\n 'Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'\n );\n }\n}\n\nexport {SpaceIDDeprecatedError};\nWebExMeetingsErrors[SpaceIDDeprecatedError.CODE] = SpaceIDDeprecatedError;\n\n/**\n * @class IceGatheringFailed\n * @classdesc Raised whenever ice gathering fails.\n * @extends WebexMeetingsError\n * @property {number} code - 30202\n * @property {string} message - 'user failed ice gathering check network/firewall'\n */\nclass IceGatheringFailed extends WebexMeetingsError {\n static CODE = 30202;\n\n constructor() {\n super(IceGatheringFailed.CODE, 'iceConnection: gethering ice candidate failed');\n }\n}\n\nexport {IceGatheringFailed};\nWebExMeetingsErrors[IceGatheringFailed.CODE] = IceGatheringFailed;\n\n/**\n * @class AddMediaFailed\n * @classdesc Raised whenever we fail to successfully add media to a meeting\n * @extends WebexMeetingsError\n * @property {number} code - 30203\n * @property {string} message - 'Failed to add media'\n * @property {Error} [cause] - The underlying error that caused the failure\n */\nclass AddMediaFailed extends WebexMeetingsError {\n static CODE = 30203;\n cause?: Error;\n connectionType?: string;\n selectedCandidatePairChanges?: number;\n numTransports?: number;\n iceConnected?: boolean;\n\n /**\n * Creates a new AddMediaFailed error\n * @param {Object} options\n * @param {Error} [options.cause] - The underlying error that caused the media addition to fail\n * @param {string} [options.connectionType] - The ICE connection type at the time of failure (e.g. 'UDP', 'TURN-TLS')\n * @param {number} [options.selectedCandidatePairChanges] - Number of times the selected candidate pair changed\n * @param {number} [options.numTransports] - Number of ICE transports\n * @param {boolean} [options.iceConnected] - Whether ICE connection was established before the failure\n */\n constructor(\n options: {\n cause?: Error;\n connectionType?: string;\n selectedCandidatePairChanges?: number;\n numTransports?: number;\n iceConnected?: boolean;\n } = {}\n ) {\n super(AddMediaFailed.CODE, 'Failed to add media');\n this.cause = options.cause;\n this.connectionType = options.connectionType;\n this.selectedCandidatePairChanges = options.selectedCandidatePairChanges;\n this.numTransports = options.numTransports;\n this.iceConnected = options.iceConnected;\n }\n\n /**\n * Returns true if the failure was due to a DTLS handshake failure\n * (ICE connected successfully but the overall media connection failed).\n */\n get isDtlsHandshakeFailure(): boolean {\n return this.iceConnected === true;\n }\n}\nexport {AddMediaFailed};\nWebExMeetingsErrors[AddMediaFailed.CODE] = AddMediaFailed;\n\n/**\n * @class MediaConnectionTimedOutError\n * @classdesc Internal error thrown when the media connection times out waiting to connect.\n */\nclass MediaConnectionTimedOutError extends Error {\n iceConnected: boolean;\n\n constructor(message: string, iceConnected: boolean) {\n super(message);\n this.name = 'MediaConnectionTimedOutError';\n this.iceConnected = iceConnected;\n }\n}\nexport {MediaConnectionTimedOutError};\n\n/**\n * @class SdpResponseTimeoutError\n * @classdesc Raised whenever we timeout waiting for remote SDP answer\n * @extends WebexMeetingsError\n * @property {number} code - 30204\n * @property {string} message - 'Timed out waiting for REMOTE SDP ANSWER'\n */\nclass SdpResponseTimeoutError extends WebexMeetingsError {\n static CODE = 30204;\n\n // eslint-disable-next-line require-jsdoc\n constructor() {\n super(SdpResponseTimeoutError.CODE, 'Timed out waiting for REMOTE SDP ANSWER');\n }\n}\n\nexport {SdpResponseTimeoutError};\nWebExMeetingsErrors[SdpResponseTimeoutError.CODE] = SdpResponseTimeoutError;\n"],"mappings":"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","ignoreList":[]}
@@ -381,7 +381,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
381
381
  throw error;
382
382
  });
383
383
  },
384
- version: "3.12.0-next.91"
384
+ version: "3.12.0-next.93"
385
385
  });
386
386
  var _default = exports.default = SimultaneousInterpretation;
387
387
  //# sourceMappingURL=index.js.map
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
18
18
  languageCode: 'number',
19
19
  languageName: 'string'
20
20
  },
21
- version: "3.12.0-next.91"
21
+ version: "3.12.0-next.93"
22
22
  });
23
23
  var _default = exports.default = SILanguage;
24
24
  //# sourceMappingURL=siLanguage.js.map
@@ -492,7 +492,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
492
492
  this.updateControls(locus.controls, locus.self);
493
493
  this.updateLocusUrl(locus.url, _controlsUtils.default.isMainSessionDTO(locus));
494
494
  this.updateFullState(locus.fullState);
495
- this.updateMeetingInfo(locus.info);
495
+ this.updateMeetingInfo(locus.info, locus.self);
496
496
  this.updateEmbeddedApps(locus.embeddedApps);
497
497
  // self and participants generate sipUrl for 1:1 meeting
498
498
  this.updateSelf(locus.self);
@@ -2231,9 +2231,18 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
2231
2231
  value: function updateMeetingInfo(info, self) {
2232
2232
  var _this$parsedLocus$sel;
2233
2233
  var roles = self ? _selfUtils.default.getRoles(self) : ((_this$parsedLocus$sel = this.parsedLocus.self) === null || _this$parsedLocus$sel === void 0 ? void 0 : _this$parsedLocus$sel.roles) || [];
2234
- if (info && !(0, _lodash.isEqual)(this.info, info) || !(0, _lodash.isEqual)(this.roles, roles) && info) {
2235
- var isJoined = _selfUtils.default.isJoined(self || this.parsedLocus.self);
2236
- var parsedInfo = _infoUtils.default.getInfos(this.parsedLocus.info, info, roles, isJoined);
2234
+ var isJoined = _selfUtils.default.isJoined(self || this.parsedLocus.self);
2235
+
2236
+ // The parsed userDisplayHints depend on info, roles and isJoined, so we must recompute
2237
+ // whenever any of them changes. A common case is self transitioning to JOINED via a delta
2238
+ // that doesn't carry an info section - in that case we fall back to the previously stored
2239
+ // info so the hints get reparsed with the new joined state (e.g. VIEW_THE_PARTICIPANT_LIST).
2240
+ var infoToParse = info || this.info;
2241
+ var infoChanged = info && !(0, _lodash.isEqual)(this.info, info);
2242
+ var rolesChanged = !(0, _lodash.isEqual)(this.roles, roles);
2243
+ var isJoinedChanged = _selfUtils.default.isJoined(this.parsedLocus.self) !== isJoined;
2244
+ if (infoToParse && (infoChanged || rolesChanged || isJoinedChanged)) {
2245
+ var parsedInfo = _infoUtils.default.getInfos(this.parsedLocus.info, infoToParse, roles, isJoined);
2237
2246
  if (parsedInfo.updates.isLocked) {
2238
2247
  this.emitScoped({
2239
2248
  file: 'locus-info',
@@ -2246,7 +2255,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
2246
2255
  function: 'updateMeetingInfo'
2247
2256
  }, _constants.LOCUSINFO.EVENTS.MEETING_UNLOCKED, info);
2248
2257
  }
2249
- this.info = info;
2258
+ this.info = infoToParse;
2250
2259
  this.parsedLocus.info = parsedInfo.current;
2251
2260
  // Parses the info and adds necessary values
2252
2261
  this.updateMeeting(parsedInfo.current);