@webex/plugin-meetings 3.9.0-next.1 → 3.9.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.9.0-next.1"
461
+ version: "3.9.0-next.2"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -92,5 +92,5 @@
92
92
  "//": [
93
93
  "TODO: upgrade jwt-decode when moving to node 18"
94
94
  ],
95
- "version": "3.9.0-next.1"
95
+ "version": "3.9.0-next.2"
96
96
  }
@@ -3149,6 +3149,23 @@ export default class Meeting extends StatelessWebexPlugin {
3149
3149
  },
3150
3150
  EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD
3151
3151
  );
3152
+ // @ts-ignore
3153
+ this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
3154
+ key: 'internal.client.share.stopped',
3155
+ });
3156
+ // @ts-ignore
3157
+ this.webex.internal.newMetrics.submitClientEvent({
3158
+ name: 'client.share.stopped',
3159
+ payload: {
3160
+ mediaType: 'whiteboard',
3161
+ shareDuration:
3162
+ // @ts-ignore
3163
+ this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),
3164
+ },
3165
+ options: {
3166
+ meetingId: this.id,
3167
+ },
3168
+ });
3152
3169
  break;
3153
3170
 
3154
3171
  case SHARE_STATUS.NO_SHARE:
@@ -12262,6 +12262,7 @@ describe('plugin-meetings', () => {
12262
12262
  meeting.deviceUrl = 'deviceUrl.com';
12263
12263
  webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
12264
12264
  webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1000);
12265
+ webex.internal.newMetrics.submitClientEvent = sinon.stub();
12265
12266
  });
12266
12267
  it('should stop the whiteboard share', async () => {
12267
12268
  const whiteboardShare = meeting.stopWhiteboardShare();
@@ -12363,6 +12364,9 @@ describe('plugin-meetings', () => {
12363
12364
  meeting.selfId = '9528d952-e4de-46cf-8157-fd4823b98377';
12364
12365
  meeting.deviceUrl = 'my-web-url';
12365
12366
  meeting.locusInfo.info = {isWebinar: false};
12367
+ webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
12368
+ webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1500);
12369
+ webex.internal.newMetrics.submitClientEvent = sinon.stub();
12366
12370
  });
12367
12371
 
12368
12372
  const USER_IDS = {
@@ -13508,7 +13512,54 @@ describe('plugin-meetings', () => {
13508
13512
  payloadTestHelper([data1, data2, data3]);
13509
13513
  });
13510
13514
  });
13511
- });
13515
+
13516
+ it('should send share stopped metric when whiteboard sharing stops', () => {
13517
+ // Start whiteboard sharing (this won't trigger metrics)
13518
+ const data1 = generateData(
13519
+ blankPayload,
13520
+ true, // isGranting: true
13521
+ false, // isContent: false (whiteboard)
13522
+ USER_IDS.ME,
13523
+ RESOURCE_URLS.WHITEBOARD_A
13524
+ );
13525
+
13526
+ // Stop whiteboard sharing (this should trigger metrics)
13527
+ const data2 = generateData(
13528
+ data1.payload,
13529
+ false, // isGranting: false (stopping share)
13530
+ false, // isContent: false (whiteboard)
13531
+ USER_IDS.ME
13532
+ );
13533
+
13534
+ // Trigger the events
13535
+ meeting.locusInfo.emit(
13536
+ {function: 'test', file: 'test'},
13537
+ EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,
13538
+ data1.payload
13539
+ );
13540
+
13541
+ meeting.locusInfo.emit(
13542
+ {function: 'test', file: 'test'},
13543
+ EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,
13544
+ data2.payload
13545
+ );
13546
+
13547
+ // Verify metrics were called when whiteboard sharing stopped
13548
+ assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
13549
+ key: 'internal.client.share.stopped',
13550
+ });
13551
+
13552
+ assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
13553
+ name: 'client.share.stopped',
13554
+ payload: {
13555
+ mediaType: 'whiteboard',
13556
+ shareDuration: 1500, // mocked return value
13557
+ },
13558
+ options: {
13559
+ meetingId: meeting.id,
13560
+ },
13561
+ });
13562
+ });
13512
13563
 
13513
13564
  describe('handleShareVideoStreamMuteStateChange', () => {
13514
13565
  it('should emit MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE event with correct fields', () => {
@@ -13535,6 +13586,7 @@ describe('plugin-meetings', () => {
13535
13586
  });
13536
13587
  });
13537
13588
  });
13589
+ });
13538
13590
 
13539
13591
  describe('#startKeepAlive', () => {
13540
13592
  let clock;