@webex/plugin-meetings 3.8.1-next.28 → 3.8.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.
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.1-next.28"
461
+ version: "3.8.1-next.29"
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-meetings": "3.8.1-next.28",
46
+ "@webex/plugin-meetings": "3.8.1-next.29",
47
47
  "@webex/plugin-rooms": "3.8.1-next.7",
48
48
  "@webex/test-helper-chai": "3.8.1-next.10",
49
49
  "@webex/test-helper-mocha": "3.8.1-next.10",
@@ -71,7 +71,7 @@
71
71
  "@webex/internal-plugin-metrics": "3.8.1-next.10",
72
72
  "@webex/internal-plugin-support": "3.8.1-next.10",
73
73
  "@webex/internal-plugin-user": "3.8.1-next.10",
74
- "@webex/internal-plugin-voicea": "3.8.1-next.28",
74
+ "@webex/internal-plugin-voicea": "3.8.1-next.29",
75
75
  "@webex/media-helpers": "3.8.1-next.14",
76
76
  "@webex/plugin-people": "3.8.1-next.10",
77
77
  "@webex/plugin-rooms": "3.8.1-next.7",
@@ -93,5 +93,5 @@
93
93
  "//": [
94
94
  "TODO: upgrade jwt-decode when moving to node 18"
95
95
  ],
96
- "version": "3.8.1-next.28"
96
+ "version": "3.8.1-next.29"
97
97
  }
@@ -743,10 +743,11 @@ export default class Meeting extends StatelessWebexPlugin {
743
743
  /**
744
744
  * @param {Object} attrs
745
745
  * @param {Object} options
746
+ * @param {Function} callback - if provided, it will be called with the newly created meeting object as soon as the meeting.id is set
746
747
  * @constructor
747
748
  * @memberof Meeting
748
749
  */
749
- constructor(attrs: any, options: object) {
750
+ constructor(attrs: any, options: object, callback: (meeting: Meeting) => void) {
750
751
  super({}, options);
751
752
  /**
752
753
  * @instance
@@ -772,6 +773,11 @@ export default class Meeting extends StatelessWebexPlugin {
772
773
  * @memberof Meeting
773
774
  */
774
775
  this.id = uuid.v4();
776
+
777
+ if (callback) {
778
+ callback(this);
779
+ }
780
+
775
781
  /**
776
782
  * Call state used for metrics
777
783
  * @instance
@@ -1560,11 +1560,12 @@ export default class Meetings extends WebexPlugin {
1560
1560
  {
1561
1561
  // @ts-ignore
1562
1562
  parent: this.webex,
1563
+ },
1564
+ (newMeeting) => {
1565
+ this.meetingCollection.set(newMeeting);
1563
1566
  }
1564
1567
  );
1565
1568
 
1566
- this.meetingCollection.set(meeting);
1567
-
1568
1569
  try {
1569
1570
  // if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,
1570
1571
  // it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo
@@ -368,6 +368,35 @@ describe('plugin-meetings', () => {
368
368
  assert.instanceOf(meeting.simultaneousInterpretation, SimultaneousInterpretation);
369
369
  assert.instanceOf(meeting.webinar, Webinar);
370
370
  });
371
+
372
+ it('should call the callback with the meeting that has id already set', () => {
373
+ let meetingIdFromCallback;
374
+ // check that the meeting id is already set correctly at the time when the callback is called
375
+ const meetingCreationCallback = sinon.stub().callsFake((meeting) => {
376
+ meetingIdFromCallback = meeting.id;
377
+ });
378
+
379
+ meeting = new Meeting(
380
+ {
381
+ userId: uuid1,
382
+ resource: uuid2,
383
+ deviceUrl: uuid3,
384
+ locus: {url: url1},
385
+ destination: testDestination,
386
+ destinationType: DESTINATION_TYPE.MEETING_ID,
387
+ correlationId,
388
+ selfId: uuid1,
389
+ },
390
+ {
391
+ parent: webex,
392
+ },
393
+ meetingCreationCallback
394
+ );
395
+ assert.exists(meeting.id);
396
+ assert.calledOnceWithExactly(meetingCreationCallback, meeting);
397
+ assert.equal(meeting.id, meetingIdFromCallback);
398
+ });
399
+
371
400
  it('creates MediaRequestManager instances', () => {
372
401
  assert.instanceOf(meeting.mediaRequestManagers.audio, MediaRequestManager);
373
402
  assert.instanceOf(meeting.mediaRequestManagers.video, MediaRequestManager);
@@ -1716,6 +1716,7 @@ describe('plugin-meetings', () => {
1716
1716
  {file: 'meetings', function: 'fetchMeetingInfo'},
1717
1717
  'meeting:meetingInfoAvailable'
1718
1718
  );
1719
+ assert.equal(webex.meetings.meetingCollection.get(meeting.id), meeting);
1719
1720
  };
1720
1721
 
1721
1722
  it('creates the meeting from a successful meeting info fetch promise testing', async () => {