@webex/plugin-meetings 3.8.1-next.38 → 3.8.1-next.39

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.
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.1-next.38"
461
+ version: "3.8.1-next.39"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -43,7 +43,7 @@
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-rooms": "3.8.1-next.10",
46
+ "@webex/plugin-rooms": "3.8.1-next.11",
47
47
  "@webex/test-helper-chai": "3.8.1-next.11",
48
48
  "@webex/test-helper-mocha": "3.8.1-next.11",
49
49
  "@webex/test-helper-mock-webex": "3.8.1-next.11",
@@ -63,20 +63,20 @@
63
63
  "@webex/common": "3.8.1-next.11",
64
64
  "@webex/event-dictionary-ts": "^1.0.1819",
65
65
  "@webex/internal-media-core": "2.18.5",
66
- "@webex/internal-plugin-conversation": "3.8.1-next.13",
67
- "@webex/internal-plugin-device": "3.8.1-next.11",
68
- "@webex/internal-plugin-llm": "3.8.1-next.12",
69
- "@webex/internal-plugin-mercury": "3.8.1-next.11",
70
- "@webex/internal-plugin-metrics": "3.8.1-next.11",
71
- "@webex/internal-plugin-support": "3.8.1-next.13",
72
- "@webex/internal-plugin-user": "3.8.1-next.11",
73
- "@webex/internal-plugin-voicea": "3.8.1-next.38",
66
+ "@webex/internal-plugin-conversation": "3.8.1-next.14",
67
+ "@webex/internal-plugin-device": "3.8.1-next.12",
68
+ "@webex/internal-plugin-llm": "3.8.1-next.13",
69
+ "@webex/internal-plugin-mercury": "3.8.1-next.12",
70
+ "@webex/internal-plugin-metrics": "3.8.1-next.12",
71
+ "@webex/internal-plugin-support": "3.8.1-next.14",
72
+ "@webex/internal-plugin-user": "3.8.1-next.12",
73
+ "@webex/internal-plugin-voicea": "3.8.1-next.39",
74
74
  "@webex/media-helpers": "3.8.1-next.16",
75
- "@webex/plugin-people": "3.8.1-next.11",
76
- "@webex/plugin-rooms": "3.8.1-next.10",
75
+ "@webex/plugin-people": "3.8.1-next.12",
76
+ "@webex/plugin-rooms": "3.8.1-next.11",
77
77
  "@webex/ts-sdp": "^1.8.1",
78
78
  "@webex/web-capabilities": "^1.6.0",
79
- "@webex/webex-core": "3.8.1-next.11",
79
+ "@webex/webex-core": "3.8.1-next.12",
80
80
  "ampersand-collection": "^2.0.2",
81
81
  "bowser": "^2.11.0",
82
82
  "btoa": "^1.2.1",
@@ -92,5 +92,5 @@
92
92
  "//": [
93
93
  "TODO: upgrade jwt-decode when moving to node 18"
94
94
  ],
95
- "version": "3.8.1-next.38"
95
+ "version": "3.8.1-next.39"
96
96
  }
@@ -8398,6 +8398,10 @@ export default class Meeting extends StatelessWebexPlugin {
8398
8398
  }
8399
8399
 
8400
8400
  if (whiteboard) {
8401
+ // @ts-ignore
8402
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
8403
+ key: 'internal.client.share.initiated',
8404
+ });
8401
8405
  // @ts-ignore
8402
8406
  this.webex.internal.newMetrics.submitClientEvent({
8403
8407
  name: 'client.share.initiated',
@@ -8457,11 +8461,17 @@ export default class Meeting extends StatelessWebexPlugin {
8457
8461
  const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');
8458
8462
 
8459
8463
  if (whiteboard) {
8464
+ // @ts-ignore
8465
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
8466
+ key: 'internal.client.share.stopped',
8467
+ });
8460
8468
  // @ts-ignore
8461
8469
  this.webex.internal.newMetrics.submitClientEvent({
8462
8470
  name: 'client.share.stopped',
8463
8471
  payload: {
8464
8472
  mediaType: 'whiteboard',
8473
+ // @ts-ignore
8474
+ shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),
8465
8475
  },
8466
8476
  options: {
8467
8477
  meetingId: this.id,
@@ -8619,12 +8629,18 @@ export default class Meeting extends StatelessWebexPlugin {
8619
8629
  }
8620
8630
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
8621
8631
  if (content) {
8632
+ // @ts-ignore
8633
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
8634
+ key: 'internal.client.share.stopped',
8635
+ });
8622
8636
  // @ts-ignore
8623
8637
  this.webex.internal.newMetrics.submitClientEvent({
8624
8638
  name: 'client.share.stopped',
8625
8639
  payload: {
8626
8640
  mediaType: 'share',
8627
8641
  shareInstanceId: this.localShareInstanceId,
8642
+ // @ts-ignore
8643
+ shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),
8628
8644
  },
8629
8645
  options: {meetingId: this.id},
8630
8646
  });
@@ -9601,6 +9617,11 @@ export default class Meeting extends StatelessWebexPlugin {
9601
9617
  this.shareCAEventSentStatus.transmitStart = false;
9602
9618
  this.shareCAEventSentStatus.transmitStop = false;
9603
9619
 
9620
+ // @ts-ignore
9621
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
9622
+ key: 'internal.client.share.initiated',
9623
+ });
9624
+
9604
9625
  // @ts-ignore
9605
9626
  this.webex.internal.newMetrics.submitClientEvent({
9606
9627
  name: 'client.share.initiated',
@@ -8120,6 +8120,7 @@ describe('plugin-meetings', () => {
8120
8120
 
8121
8121
  meeting.requestScreenShareFloor = sinon.stub().resolves({});
8122
8122
  meeting.releaseScreenShareFloor = sinon.stub().resolves({});
8123
+ webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
8123
8124
  meeting.mediaProperties.mediaDirection = {
8124
8125
  sendAudio: 'fake value', // using non-boolean here so that we can check that these values are untouched in tests
8125
8126
  sendVideo: 'fake value',
@@ -8201,6 +8202,12 @@ describe('plugin-meetings', () => {
8201
8202
  payload: {mediaType: 'share', shareInstanceId: meeting.localShareInstanceId},
8202
8203
  options: {meetingId: meeting.id},
8203
8204
  });
8205
+
8206
+ // ensure the share start timestamp is saved
8207
+ assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
8208
+ key: 'internal.client.share.initiated',
8209
+ });
8210
+
8204
8211
  assert.equal(meeting.mediaProperties.mediaDirection.sendShare, true);
8205
8212
 
8206
8213
  assert.equal(meeting.shareCAEventSentStatus.transmitStart, false);
@@ -8219,6 +8226,11 @@ describe('plugin-meetings', () => {
8219
8226
  options: {meetingId: meeting.id},
8220
8227
  });
8221
8228
 
8229
+ // ensure the share start timestamp is saved
8230
+ assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
8231
+ key: 'internal.client.share.initiated',
8232
+ });
8233
+
8222
8234
  assert.calledWith(
8223
8235
  meeting.sendSlotManager.getSlot(MediaType.AudioSlides).publishStream,
8224
8236
  stream
@@ -10492,6 +10504,8 @@ describe('plugin-meetings', () => {
10492
10504
  meeting.mediaProperties = {mediaDirection: {sendShare: true}};
10493
10505
  meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
10494
10506
  (meeting.deviceUrl = 'deviceUrl.com'), (meeting.localShareInstanceId = '1234-5678');
10507
+ webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
10508
+ webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1000);
10495
10509
  });
10496
10510
  it('should call changeMeetingFloor()', async () => {
10497
10511
  meeting.screenShareFloorState = 'GRANTED';
@@ -10509,6 +10523,22 @@ describe('plugin-meetings', () => {
10509
10523
  assert.exists(share.then);
10510
10524
  await share;
10511
10525
  assert.calledOnce(meeting.meetingRequest.changeMeetingFloor);
10526
+
10527
+ // ensure the share stop timestamp is saved
10528
+ assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
10529
+ key: 'internal.client.share.stopped',
10530
+ });
10531
+
10532
+ // ensure the CA share stopped metric is submitted with duration
10533
+ assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
10534
+ name: 'client.share.stopped',
10535
+ payload: {
10536
+ mediaType: 'share',
10537
+ shareInstanceId: meeting.localShareInstanceId,
10538
+ shareDuration: 1000,
10539
+ },
10540
+ options: {meetingId: meeting.id},
10541
+ });
10512
10542
  });
10513
10543
  it('should not call changeMeetingFloor() if someone else already has the floor', async () => {
10514
10544
  // change selfId so that it doesn't match the beneficiary id from meeting.locusInfo.mediaShares
@@ -12081,6 +12111,7 @@ describe('plugin-meetings', () => {
12081
12111
  meeting.locusInfo.self = {url: url1};
12082
12112
  meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
12083
12113
  meeting.deviceUrl = 'deviceUrl.com';
12114
+ webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
12084
12115
  });
12085
12116
  it('should have #startWhiteboardShare', () => {
12086
12117
  assert.exists(meeting.startWhiteboardShare);
@@ -12108,6 +12139,11 @@ describe('plugin-meetings', () => {
12108
12139
  payload: {mediaType: 'whiteboard'},
12109
12140
  options: {meetingId: meeting.id},
12110
12141
  });
12142
+
12143
+ // ensure the share start timestamp is saved
12144
+ assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
12145
+ key: 'internal.client.share.initiated',
12146
+ });
12111
12147
  });
12112
12148
  });
12113
12149
  describe('#stopWhiteboardShare', () => {
@@ -12119,6 +12155,8 @@ describe('plugin-meetings', () => {
12119
12155
  meeting.locusInfo.self = {url: url1};
12120
12156
  meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
12121
12157
  meeting.deviceUrl = 'deviceUrl.com';
12158
+ webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
12159
+ webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1000);
12122
12160
  });
12123
12161
  it('should stop the whiteboard share', async () => {
12124
12162
  const whiteboardShare = meeting.stopWhiteboardShare();
@@ -12133,6 +12171,21 @@ describe('plugin-meetings', () => {
12133
12171
  uri: url1,
12134
12172
  });
12135
12173
  assert.calledOnce(meeting.meetingRequest.changeMeetingFloor);
12174
+
12175
+ // ensure the share stop timestamp is saved
12176
+ assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
12177
+ key: 'internal.client.share.stopped',
12178
+ });
12179
+
12180
+ // ensure the CA share stopped metric is submitted with duration
12181
+ assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
12182
+ name: 'client.share.stopped',
12183
+ payload: {
12184
+ mediaType: 'whiteboard',
12185
+ shareDuration: 1000,
12186
+ },
12187
+ options: {meetingId: meeting.id},
12188
+ });
12136
12189
  });
12137
12190
  });
12138
12191
  });