@webex/plugin-meetings 3.4.0-next.17 → 3.4.0-next.18

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.
@@ -333,6 +333,7 @@ type FetchMeetingInfoParams = {
333
333
  * @class Meeting
334
334
  */
335
335
  export default class Meeting extends StatelessWebexPlugin {
336
+ #private;
336
337
  attrs: any;
337
338
  audio: any;
338
339
  breakouts: any;
@@ -487,6 +488,12 @@ export default class Meeting extends StatelessWebexPlugin {
487
488
  * @param {string} correlationId
488
489
  */
489
490
  set correlationId(correlationId: string);
491
+ /**
492
+ * Getter - Returns isoLocalClientMeetingJoinTime
493
+ * This will be set once on meeting join, and not updated again
494
+ * @returns {string | undefined}
495
+ */
496
+ get isoLocalClientMeetingJoinTime(): string | undefined;
490
497
  /**
491
498
  * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
492
499
  * @param {any} info
@@ -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.4.0-next.17"
65
+ version: "3.4.0-next.18"
66
66
  });
67
67
  var _default = exports.default = Webinar;
68
68
  //# 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-meetings": "3.4.0-next.17",
46
+ "@webex/plugin-meetings": "3.4.0-next.18",
47
47
  "@webex/plugin-rooms": "3.4.0-next.6",
48
48
  "@webex/test-helper-chai": "3.4.0-next.6",
49
49
  "@webex/test-helper-mocha": "3.4.0-next.6",
@@ -70,7 +70,7 @@
70
70
  "@webex/internal-plugin-metrics": "3.4.0-next.6",
71
71
  "@webex/internal-plugin-support": "3.4.0-next.6",
72
72
  "@webex/internal-plugin-user": "3.4.0-next.6",
73
- "@webex/internal-plugin-voicea": "3.4.0-next.17",
73
+ "@webex/internal-plugin-voicea": "3.4.0-next.18",
74
74
  "@webex/media-helpers": "3.4.0-next.9",
75
75
  "@webex/plugin-people": "3.4.0-next.6",
76
76
  "@webex/plugin-rooms": "3.4.0-next.6",
@@ -91,5 +91,5 @@
91
91
  "//": [
92
92
  "TODO: upgrade jwt-decode when moving to node 18"
93
93
  ],
94
- "version": "3.4.0-next.17"
94
+ "version": "3.4.0-next.18"
95
95
  }
@@ -538,6 +538,7 @@ export default class Meeting extends StatelessWebexPlugin {
538
538
  id: string;
539
539
  isMultistream: boolean;
540
540
  locusUrl: string;
541
+ #isoLocalClientMeetingJoinTime?: string;
541
542
  mediaConnections: any[];
542
543
  mediaId?: string;
543
544
  meetingFiniteStateMachine: any;
@@ -1521,6 +1522,17 @@ export default class Meeting extends StatelessWebexPlugin {
1521
1522
  * @memberof Meeting
1522
1523
  */
1523
1524
  this.iceCandidatesCount = 0;
1525
+
1526
+ /**
1527
+ * Start time of meeting as an ISO string
1528
+ * based on browser time, so can only be used to compute durations client side
1529
+ * undefined if meeting has not been joined, set once on meeting join, and not updated again
1530
+ * @instance
1531
+ * @type {string}
1532
+ * @private
1533
+ * @memberof Meeting
1534
+ */
1535
+ this.#isoLocalClientMeetingJoinTime = undefined;
1524
1536
  }
1525
1537
 
1526
1538
  /**
@@ -1569,6 +1581,15 @@ export default class Meeting extends StatelessWebexPlugin {
1569
1581
  this.callStateForMetrics.correlationId = correlationId;
1570
1582
  }
1571
1583
 
1584
+ /**
1585
+ * Getter - Returns isoLocalClientMeetingJoinTime
1586
+ * This will be set once on meeting join, and not updated again
1587
+ * @returns {string | undefined}
1588
+ */
1589
+ get isoLocalClientMeetingJoinTime(): string | undefined {
1590
+ return this.#isoLocalClientMeetingJoinTime;
1591
+ }
1592
+
1572
1593
  /**
1573
1594
  * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
1574
1595
  * @param {any} info
@@ -5235,6 +5256,8 @@ export default class Meeting extends StatelessWebexPlugin {
5235
5256
  // @ts-ignore
5236
5257
  this.webex.internal.device.meetingStarted();
5237
5258
 
5259
+ this.#isoLocalClientMeetingJoinTime = new Date().toISOString();
5260
+
5238
5261
  LoggerProxy.logger.log('Meeting:index#join --> Success');
5239
5262
 
5240
5263
  Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.JOIN_SUCCESS, {
@@ -331,6 +331,7 @@ describe('plugin-meetings', () => {
331
331
  assert.isNull(meeting.partner);
332
332
  assert.isNull(meeting.type);
333
333
  assert.isNull(meeting.owner);
334
+ assert.isUndefined(meeting.isoLocalClientMeetingJoinTime);
334
335
  assert.isNull(meeting.hostId);
335
336
  assert.isNull(meeting.policy);
336
337
  assert.instanceOf(meeting.meetingRequest, MeetingRequest);
@@ -1587,6 +1588,10 @@ describe('plugin-meetings', () => {
1587
1588
  sandbox.stub(MeetingUtil, 'joinMeeting').returns(Promise.resolve(joinMeetingResult));
1588
1589
  });
1589
1590
 
1591
+ afterEach(() => {
1592
+ assert.exists(meeting.isoLocalClientMeetingJoinTime);
1593
+ });
1594
+
1590
1595
  it('should join the meeting and return promise', async () => {
1591
1596
  const join = meeting.join({pstnAudioType: 'dial-in'});
1592
1597
  meeting.config.enableAutomaticLLM = true;