@webex/plugin-meetings 3.3.1-next.28 → 3.3.1-next.29

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.
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
62
62
  updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
63
63
  this.set('canManageWebcast', canManageWebcast);
64
64
  },
65
- version: "3.3.1-next.28"
65
+ version: "3.3.1-next.29"
66
66
  });
67
67
  var _default = exports.default = Webinar;
68
68
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -43,13 +43,13 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-meetings": "3.3.1-next.28",
47
- "@webex/plugin-rooms": "3.3.1-next.6",
48
- "@webex/test-helper-chai": "3.3.1-next.5",
49
- "@webex/test-helper-mocha": "3.3.1-next.5",
50
- "@webex/test-helper-mock-webex": "3.3.1-next.5",
51
- "@webex/test-helper-retry": "3.3.1-next.5",
52
- "@webex/test-helper-test-users": "3.3.1-next.5",
46
+ "@webex/plugin-meetings": "3.3.1-next.29",
47
+ "@webex/plugin-rooms": "3.3.1-next.7",
48
+ "@webex/test-helper-chai": "3.3.1-next.6",
49
+ "@webex/test-helper-mocha": "3.3.1-next.6",
50
+ "@webex/test-helper-mock-webex": "3.3.1-next.6",
51
+ "@webex/test-helper-retry": "3.3.1-next.6",
52
+ "@webex/test-helper-test-users": "3.3.1-next.6",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -61,21 +61,21 @@
61
61
  "typescript": "^4.7.4"
62
62
  },
63
63
  "dependencies": {
64
- "@webex/common": "3.3.1-next.5",
64
+ "@webex/common": "3.3.1-next.6",
65
65
  "@webex/internal-media-core": "2.7.3",
66
- "@webex/internal-plugin-conversation": "3.3.1-next.6",
67
- "@webex/internal-plugin-device": "3.3.1-next.5",
68
- "@webex/internal-plugin-llm": "3.3.1-next.7",
69
- "@webex/internal-plugin-mercury": "3.3.1-next.6",
70
- "@webex/internal-plugin-metrics": "3.3.1-next.5",
71
- "@webex/internal-plugin-support": "3.3.1-next.6",
72
- "@webex/internal-plugin-user": "3.3.1-next.5",
73
- "@webex/internal-plugin-voicea": "3.3.1-next.28",
74
- "@webex/media-helpers": "3.3.1-next.10",
75
- "@webex/plugin-people": "3.3.1-next.6",
76
- "@webex/plugin-rooms": "3.3.1-next.6",
66
+ "@webex/internal-plugin-conversation": "3.3.1-next.7",
67
+ "@webex/internal-plugin-device": "3.3.1-next.6",
68
+ "@webex/internal-plugin-llm": "3.3.1-next.8",
69
+ "@webex/internal-plugin-mercury": "3.3.1-next.7",
70
+ "@webex/internal-plugin-metrics": "3.3.1-next.6",
71
+ "@webex/internal-plugin-support": "3.3.1-next.7",
72
+ "@webex/internal-plugin-user": "3.3.1-next.6",
73
+ "@webex/internal-plugin-voicea": "3.3.1-next.29",
74
+ "@webex/media-helpers": "3.3.1-next.11",
75
+ "@webex/plugin-people": "3.3.1-next.7",
76
+ "@webex/plugin-rooms": "3.3.1-next.7",
77
77
  "@webex/web-capabilities": "^1.4.0",
78
- "@webex/webex-core": "3.3.1-next.5",
78
+ "@webex/webex-core": "3.3.1-next.6",
79
79
  "ampersand-collection": "^2.0.2",
80
80
  "bowser": "^2.11.0",
81
81
  "btoa": "^1.2.1",
@@ -91,5 +91,5 @@
91
91
  "//": [
92
92
  "TODO: upgrade jwt-decode when moving to node 18"
93
93
  ],
94
- "version": "3.3.1-next.28"
94
+ "version": "3.3.1-next.29"
95
95
  }
@@ -6353,6 +6353,11 @@ export default class Meeting extends StatelessWebexPlugin {
6353
6353
  'unknown',
6354
6354
  iceConnected,
6355
6355
  turnServerUsed: this.turnServerUsed,
6356
+ unreachable:
6357
+ // @ts-ignore
6358
+ await this.webex.meetings.reachability
6359
+ .isWebexMediaBackendUnreachable()
6360
+ .catch(() => false),
6356
6361
  }),
6357
6362
  }
6358
6363
  ),
@@ -101,6 +101,7 @@ import {
101
101
  import {
102
102
  DTLS_HANDSHAKE_FAILED_CLIENT_CODE,
103
103
  ICE_FAILED_WITHOUT_TURN_TLS_CLIENT_CODE,
104
+ ICE_AND_REACHABILITY_FAILED_CLIENT_CODE,
104
105
  ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
105
106
  ICE_FAILURE_CLIENT_CODE,
106
107
  MISSING_ROAP_ANSWER_CLIENT_CODE,
@@ -2218,8 +2219,13 @@ describe('plugin-meetings', () => {
2218
2219
  it('should reject if waitForMediaConnectionConnected() rejects after turn server retry', async () => {
2219
2220
  const FAKE_ERROR = {fatal: true};
2220
2221
  const getErrorPayloadForClientErrorCodeStub =
2222
+
2221
2223
  (webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode =
2222
2224
  sinon.stub().returns(FAKE_ERROR));
2225
+ webex.meetings.reachability = {
2226
+ isWebexMediaBackendUnreachable: sinon.stub().resolves(false),
2227
+ getReachabilityMetrics: sinon.stub().resolves(),
2228
+ };
2223
2229
  const MOCK_CLIENT_ERROR_CODE = 2004;
2224
2230
  const generateClientErrorCodeForIceFailureStub = sinon
2225
2231
  .stub(CallDiagnosticUtils, 'generateClientErrorCodeForIceFailure')
@@ -2273,11 +2279,13 @@ describe('plugin-meetings', () => {
2273
2279
  signalingState: 'unknown',
2274
2280
  iceConnected: false,
2275
2281
  turnServerUsed: false,
2282
+ unreachable: false,
2276
2283
  });
2277
2284
  assert.calledWith(generateClientErrorCodeForIceFailureStub, {
2278
2285
  signalingState: 'unknown',
2279
2286
  iceConnected: false,
2280
2287
  turnServerUsed: true,
2288
+ unreachable: false,
2281
2289
  });
2282
2290
 
2283
2291
  assert.calledTwice(getErrorPayloadForClientErrorCodeStub);
@@ -2414,6 +2422,10 @@ describe('plugin-meetings', () => {
2414
2422
 
2415
2423
  it('should resolve if waitForMediaConnectionConnected() rejects the first time but resolves the second time', async () => {
2416
2424
  const FAKE_ERROR = {fatal: true};
2425
+ webex.meetings.reachability = {
2426
+ isWebexMediaBackendUnreachable: sinon.stub().onCall(0).rejects().onCall(1).resolves(true).onCall(2).resolves(false),
2427
+ getReachabilityMetrics: sinon.stub().resolves({}),
2428
+ }
2417
2429
  const getErrorPayloadForClientErrorCodeStub =
2418
2430
  (webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode =
2419
2431
  sinon.stub().returns(FAKE_ERROR));
@@ -2473,6 +2485,7 @@ describe('plugin-meetings', () => {
2473
2485
  signalingState: 'unknown',
2474
2486
  iceConnected: undefined,
2475
2487
  turnServerUsed: false,
2488
+ unreachable: false,
2476
2489
  });
2477
2490
 
2478
2491
  assert.calledOnce(getErrorPayloadForClientErrorCodeStub);
@@ -3131,10 +3144,18 @@ describe('plugin-meetings', () => {
3131
3144
  clientErrorCode: ICE_FAILED_WITH_TURN_TLS_CLIENT_CODE,
3132
3145
  expectedErrorPayload: {
3133
3146
  errorDescription: ERROR_DESCRIPTIONS.ICE_FAILED_WITH_TURN_TLS,
3147
+ category: 'media',
3148
+ },
3149
+ },
3150
+ {
3151
+ clientErrorCode: ICE_AND_REACHABILITY_FAILED_CLIENT_CODE,
3152
+ unreachable: true,
3153
+ expectedErrorPayload: {
3154
+ errorDescription: ERROR_DESCRIPTIONS.ICE_AND_REACHABILITY_FAILED,
3134
3155
  category: 'network',
3135
3156
  },
3136
3157
  },
3137
- ].forEach(({clientErrorCode, expectedErrorPayload}) => {
3158
+ ].forEach(({clientErrorCode, expectedErrorPayload, unreachable}) => {
3138
3159
  it(`should handle all ice failures correctly for ${clientErrorCode}`, async () => {
3139
3160
  // setting the method to the real implementation
3140
3161
  // because newMetrics is mocked completely in the webex-mock
@@ -3143,6 +3164,10 @@ describe('plugin-meetings', () => {
3143
3164
  webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode =
3144
3165
  CD.getErrorPayloadForClientErrorCode;
3145
3166
 
3167
+ webex.meetings.reachability = {
3168
+ isWebexMediaBackendUnreachable: sinon.stub().resolves(unreachable || false),
3169
+ };
3170
+
3146
3171
  const generateClientErrorCodeForIceFailureStub = sinon
3147
3172
  .stub(CallDiagnosticUtils, 'generateClientErrorCodeForIceFailure')
3148
3173
  .returns(clientErrorCode);
@@ -3166,6 +3191,7 @@ describe('plugin-meetings', () => {
3166
3191
  signalingState: 'unknown',
3167
3192
  iceConnected: false,
3168
3193
  turnServerUsed: true,
3194
+ unreachable: unreachable || false,
3169
3195
  });
3170
3196
 
3171
3197
  const submitClientEventCalls = webex.internal.newMetrics.submitClientEvent.getCalls();