@webex/plugin-meetings 3.0.0-beta.158 → 3.0.0-beta.159
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.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +2 -2
- package/dist/breakouts/index.js.map +1 -1
- package/dist/meeting/index.js +105 -131
- package/dist/meeting/index.js.map +1 -1
- package/dist/types/meeting/index.d.ts +8 -1
- package/package.json +19 -19
- package/src/breakouts/index.ts +1 -1
- package/src/meeting/index.ts +28 -29
- package/test/unit/spec/meeting/index.js +21 -0
|
@@ -38,7 +38,7 @@ export type AddMediaOptions = {
|
|
|
38
38
|
};
|
|
39
39
|
export declare const MEDIA_UPDATE_TYPE: {
|
|
40
40
|
TRANSCODED_MEDIA_CONNECTION: string;
|
|
41
|
-
|
|
41
|
+
SHARE_FLOOR_REQUEST: string;
|
|
42
42
|
UPDATE_MEDIA: string;
|
|
43
43
|
};
|
|
44
44
|
/**
|
|
@@ -391,6 +391,13 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
391
391
|
* @memberof Meeting
|
|
392
392
|
*/
|
|
393
393
|
constructor(attrs: any, options: object);
|
|
394
|
+
/**
|
|
395
|
+
* returns meeting is joined
|
|
396
|
+
* @private
|
|
397
|
+
* @memberof Meeting
|
|
398
|
+
* @returns {Boolean}
|
|
399
|
+
*/
|
|
400
|
+
private isJoined;
|
|
394
401
|
/**
|
|
395
402
|
* Fetches meeting information.
|
|
396
403
|
* @param {Object} options
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.159",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.159",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.159",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.159",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.159",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.159",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.159",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,19 +46,19 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.159",
|
|
50
50
|
"@webex/internal-media-core": "1.38.6",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
61
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.159",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.159",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.159",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.159",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.159",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.159",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.159",
|
|
58
|
+
"@webex/media-helpers": "3.0.0-beta.159",
|
|
59
|
+
"@webex/plugin-people": "3.0.0-beta.159",
|
|
60
|
+
"@webex/plugin-rooms": "3.0.0-beta.159",
|
|
61
|
+
"@webex/webex-core": "3.0.0-beta.159",
|
|
62
62
|
"ampersand-collection": "^2.0.2",
|
|
63
63
|
"bowser": "^2.11.0",
|
|
64
64
|
"btoa": "^1.2.1",
|
package/src/breakouts/index.ts
CHANGED
|
@@ -334,7 +334,7 @@ const Breakouts = WebexPlugin.extend({
|
|
|
334
334
|
url: params.url,
|
|
335
335
|
[BREAKOUTS.SESSION_STATES.ACTIVE]: false,
|
|
336
336
|
[BREAKOUTS.SESSION_STATES.ALLOWED]: false,
|
|
337
|
-
[BREAKOUTS.SESSION_STATES.
|
|
337
|
+
[BREAKOUTS.SESSION_STATES.ASSIGNED]: false,
|
|
338
338
|
[BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,
|
|
339
339
|
[BREAKOUTS.SESSION_STATES.REQUESTED]: false,
|
|
340
340
|
});
|
package/src/meeting/index.ts
CHANGED
|
@@ -160,7 +160,7 @@ export type AddMediaOptions = {
|
|
|
160
160
|
|
|
161
161
|
export const MEDIA_UPDATE_TYPE = {
|
|
162
162
|
TRANSCODED_MEDIA_CONNECTION: 'TRANSCODED_MEDIA_CONNECTION',
|
|
163
|
-
|
|
163
|
+
SHARE_FLOOR_REQUEST: 'SHARE_FLOOR_REQUEST',
|
|
164
164
|
UPDATE_MEDIA: 'UPDATE_MEDIA',
|
|
165
165
|
};
|
|
166
166
|
|
|
@@ -1213,6 +1213,16 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1213
1213
|
};
|
|
1214
1214
|
}
|
|
1215
1215
|
|
|
1216
|
+
/**
|
|
1217
|
+
* returns meeting is joined
|
|
1218
|
+
* @private
|
|
1219
|
+
* @memberof Meeting
|
|
1220
|
+
* @returns {Boolean}
|
|
1221
|
+
*/
|
|
1222
|
+
private isJoined() {
|
|
1223
|
+
return this.joinedWith?.state === 'JOINED';
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1216
1226
|
/**
|
|
1217
1227
|
* Fetches meeting information.
|
|
1218
1228
|
* @param {Object} options
|
|
@@ -1502,14 +1512,16 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1502
1512
|
});
|
|
1503
1513
|
|
|
1504
1514
|
this.breakouts.on(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN, () => {
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1515
|
+
if (this.isJoined()) {
|
|
1516
|
+
Trigger.trigger(
|
|
1517
|
+
this,
|
|
1518
|
+
{
|
|
1519
|
+
file: 'meeting/index',
|
|
1520
|
+
function: 'setUpBreakoutsListener',
|
|
1521
|
+
},
|
|
1522
|
+
EVENT_TRIGGERS.MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN
|
|
1523
|
+
);
|
|
1524
|
+
}
|
|
1513
1525
|
});
|
|
1514
1526
|
|
|
1515
1527
|
this.breakouts.on(BREAKOUTS.EVENTS.LEAVE_BREAKOUT, () => {
|
|
@@ -4178,7 +4190,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4178
4190
|
// @ts-ignore - Fix type
|
|
4179
4191
|
const {url, info: {datachannelUrl} = {}} = this.locusInfo;
|
|
4180
4192
|
|
|
4181
|
-
const isJoined = this.
|
|
4193
|
+
const isJoined = this.isJoined();
|
|
4182
4194
|
|
|
4183
4195
|
// @ts-ignore - Fix type
|
|
4184
4196
|
if (this.webex.internal.llm.isConnected()) {
|
|
@@ -5196,11 +5208,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5196
5208
|
)
|
|
5197
5209
|
.then(() => {
|
|
5198
5210
|
if (localTracks?.screenShare?.video) {
|
|
5199
|
-
this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.
|
|
5200
|
-
lambda: async () => {
|
|
5201
|
-
return this.requestScreenShareFloor();
|
|
5202
|
-
},
|
|
5203
|
-
});
|
|
5211
|
+
this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.SHARE_FLOOR_REQUEST);
|
|
5204
5212
|
}
|
|
5205
5213
|
})
|
|
5206
5214
|
.then(() => this.mediaProperties.getCurrentConnectionType())
|
|
@@ -5296,12 +5304,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5296
5304
|
* @private
|
|
5297
5305
|
* @memberof Meeting
|
|
5298
5306
|
*/
|
|
5299
|
-
private enqueueMediaUpdate(mediaUpdateType: string, options: any): Promise<void> {
|
|
5300
|
-
if (mediaUpdateType === MEDIA_UPDATE_TYPE.LAMBDA && typeof options?.lambda !== 'function') {
|
|
5301
|
-
return Promise.reject(
|
|
5302
|
-
new Error('lambda must be specified when enqueuing MEDIA_UPDATE_TYPE.LAMBDA')
|
|
5303
|
-
);
|
|
5304
|
-
}
|
|
5307
|
+
private enqueueMediaUpdate(mediaUpdateType: string, options: any = {}): Promise<void> {
|
|
5305
5308
|
const canUpdateMediaNow = this.canUpdateMedia();
|
|
5306
5309
|
|
|
5307
5310
|
return new Promise((resolve, reject) => {
|
|
@@ -5365,8 +5368,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5365
5368
|
case MEDIA_UPDATE_TYPE.TRANSCODED_MEDIA_CONNECTION:
|
|
5366
5369
|
mediaUpdate = this.updateTranscodedMediaConnection();
|
|
5367
5370
|
break;
|
|
5368
|
-
case MEDIA_UPDATE_TYPE.
|
|
5369
|
-
mediaUpdate =
|
|
5371
|
+
case MEDIA_UPDATE_TYPE.SHARE_FLOOR_REQUEST:
|
|
5372
|
+
mediaUpdate = this.requestScreenShareFloor();
|
|
5370
5373
|
break;
|
|
5371
5374
|
case MEDIA_UPDATE_TYPE.UPDATE_MEDIA:
|
|
5372
5375
|
mediaUpdate = this.updateMedia(options);
|
|
@@ -6641,7 +6644,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6641
6644
|
LoggerProxy.logger.info(`${LOG_HEADER} starting`);
|
|
6642
6645
|
|
|
6643
6646
|
if (!this.canUpdateMedia()) {
|
|
6644
|
-
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.TRANSCODED_MEDIA_CONNECTION
|
|
6647
|
+
return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.TRANSCODED_MEDIA_CONNECTION);
|
|
6645
6648
|
}
|
|
6646
6649
|
|
|
6647
6650
|
return this.mediaProperties.webrtcMediaConnection
|
|
@@ -6770,11 +6773,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6770
6773
|
// we're sending the http request to Locus to request the screen share floor
|
|
6771
6774
|
// only after the SDP update, because that's how it's always been done for transcoded meetings
|
|
6772
6775
|
// and also if sharing from the start, we need confluence to have been created
|
|
6773
|
-
await this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.
|
|
6774
|
-
lambda: async () => {
|
|
6775
|
-
return this.requestScreenShareFloor();
|
|
6776
|
-
},
|
|
6777
|
-
});
|
|
6776
|
+
await this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.SHARE_FLOOR_REQUEST);
|
|
6778
6777
|
}
|
|
6779
6778
|
}
|
|
6780
6779
|
|
|
@@ -2710,6 +2710,19 @@ describe('plugin-meetings', () => {
|
|
|
2710
2710
|
});
|
|
2711
2711
|
});
|
|
2712
2712
|
|
|
2713
|
+
describe("#isJoined", () => {
|
|
2714
|
+
it("should returns isJoined correctly", () => {
|
|
2715
|
+
meeting.joinedWith = undefined;
|
|
2716
|
+
assert.equal(meeting.isJoined(), false);
|
|
2717
|
+
|
|
2718
|
+
meeting.joinedWith = {state: "NOT_JOINED"};
|
|
2719
|
+
assert.equal(meeting.isJoined(), false);
|
|
2720
|
+
|
|
2721
|
+
meeting.joinedWith = {state: "JOINED"};
|
|
2722
|
+
assert.equal(meeting.isJoined(), true);
|
|
2723
|
+
});
|
|
2724
|
+
});
|
|
2725
|
+
|
|
2713
2726
|
describe('#fetchMeetingInfo', () => {
|
|
2714
2727
|
const FAKE_DESTINATION = 'something@somecompany.com';
|
|
2715
2728
|
const FAKE_TYPE = _SIP_URI_;
|
|
@@ -4463,8 +4476,16 @@ describe('plugin-meetings', () => {
|
|
|
4463
4476
|
);
|
|
4464
4477
|
});
|
|
4465
4478
|
|
|
4479
|
+
it('should not trigger ASK_RETURN_TO_MAIN before joined', () => {
|
|
4480
|
+
TriggerProxy.trigger.reset();
|
|
4481
|
+
meeting.joinedWith = {state: "NOT_JOINED"};
|
|
4482
|
+
meeting.breakouts.trigger('ASK_RETURN_TO_MAIN');
|
|
4483
|
+
assert.notCalled(TriggerProxy.trigger);
|
|
4484
|
+
});
|
|
4485
|
+
|
|
4466
4486
|
it('listens to the ask return to main event from breakouts and triggers the ask return to main event from meeting', () => {
|
|
4467
4487
|
TriggerProxy.trigger.reset();
|
|
4488
|
+
meeting.joinedWith = {state: "JOINED"};
|
|
4468
4489
|
meeting.breakouts.trigger('ASK_RETURN_TO_MAIN');
|
|
4469
4490
|
assert.calledWith(
|
|
4470
4491
|
TriggerProxy.trigger,
|