@webex/plugin-meetings 3.6.0-next.9 → 3.7.0
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/README.md +2 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +24 -2
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +10 -3
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +12 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +28 -4
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +2 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/index.js +61 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +19 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +536 -409
- package/dist/meeting/index.js.map +1 -1
- package/dist/meetings/index.js +2 -0
- package/dist/meetings/index.js.map +1 -1
- package/dist/members/index.js +3 -2
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +9 -5
- package/dist/members/util.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +227 -0
- package/dist/networkQualityMonitor/index.js.map +1 -0
- package/dist/reachability/index.js +3 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +2 -1
- package/dist/reachability/request.js.map +1 -1
- package/dist/rtcMetrics/constants.js +11 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +197 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/constants.d.ts +19 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/index.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +9 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
- package/dist/types/meeting/index.d.ts +12 -1
- package/dist/types/members/index.d.ts +2 -1
- package/dist/types/members/util.d.ts +3 -1
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +71 -0
- package/dist/webinar/index.js +32 -19
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/config.ts +1 -0
- package/src/constants.ts +25 -0
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/index.ts +19 -2
- package/src/controls-options-manager/types.ts +2 -0
- package/src/controls-options-manager/util.ts +12 -0
- package/src/locus-info/controlsUtils.ts +46 -2
- package/src/locus-info/fullState.ts +1 -0
- package/src/locus-info/index.ts +60 -0
- package/src/meeting/in-meeting-actions.ts +37 -0
- package/src/meeting/index.ts +114 -9
- package/src/meetings/index.ts +46 -39
- package/src/members/index.ts +4 -2
- package/src/members/util.ts +3 -1
- package/src/reachability/index.ts +3 -3
- package/src/reachability/request.ts +1 -0
- package/src/webinar/index.ts +31 -17
- package/test/unit/spec/controls-options-manager/index.js +56 -32
- package/test/unit/spec/controls-options-manager/util.js +44 -0
- package/test/unit/spec/locus-info/controlsUtils.js +80 -4
- package/test/unit/spec/locus-info/index.js +59 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
- package/test/unit/spec/meeting/index.js +222 -82
- package/test/unit/spec/meetings/index.js +16 -1
- package/test/unit/spec/members/index.js +25 -2
- package/test/unit/spec/members/request.js +37 -3
- package/test/unit/spec/members/utils.js +15 -1
- package/test/unit/spec/reachability/index.ts +1 -1
- package/test/unit/spec/reachability/request.js +13 -8
- package/test/unit/spec/webinar/index.ts +82 -16
|
@@ -1234,7 +1234,7 @@ describe('gatherReachability', () => {
|
|
|
1234
1234
|
assert.equal(receivedEvents['done'], 1);
|
|
1235
1235
|
|
|
1236
1236
|
// and that ip network detection was started
|
|
1237
|
-
assert.calledOnceWithExactly(webex.internal.device.ipNetworkDetector.detect);
|
|
1237
|
+
assert.calledOnceWithExactly(webex.internal.device.ipNetworkDetector.detect, true);
|
|
1238
1238
|
|
|
1239
1239
|
// finally, check the metrics - they should contain values from ipNetworkDetector
|
|
1240
1240
|
assert.calledWith(Metrics.sendBehavioralMetric, 'js_sdk_reachability_completed', {
|
|
@@ -57,18 +57,23 @@ describe('plugin-meetings/reachability', () => {
|
|
|
57
57
|
}
|
|
58
58
|
}));
|
|
59
59
|
|
|
60
|
+
webex.config.meetings.reachabilityGetClusterTimeout = 3000;
|
|
61
|
+
|
|
60
62
|
const res = await reachabilityRequest.getClusters(IP_VERSION.only_ipv4);
|
|
61
63
|
const requestParams = webex.request.getCall(0).args[0];
|
|
62
64
|
|
|
63
|
-
assert.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
assert.deepEqual(requestParams, {
|
|
66
|
+
method: 'GET',
|
|
67
|
+
resource: `clusters`,
|
|
68
|
+
api: 'calliopeDiscovery',
|
|
69
|
+
shouldRefreshAccessToken: false,
|
|
70
|
+
qs: {
|
|
71
|
+
JCSupport: 1,
|
|
72
|
+
ipver: 4,
|
|
73
|
+
},
|
|
74
|
+
timeout: 3000,
|
|
71
75
|
});
|
|
76
|
+
|
|
72
77
|
assert.deepEqual(res.clusters.clusterId, {udp: "testUDP", isVideoMesh: true})
|
|
73
78
|
assert.deepEqual(res.joinCookie, {anycastEntryPoint: "aws-eu-west-1"})
|
|
74
79
|
assert.calledOnceWithExactly(webex.internal.newMetrics.callDiagnosticLatencies.measureLatency, sinon.match.func, 'internal.get.cluster.time');
|
|
@@ -29,32 +29,98 @@ describe('plugin-meetings', () => {
|
|
|
29
29
|
});
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
describe('#
|
|
33
|
-
it('sets the webcast url', () => {
|
|
34
|
-
webinar.
|
|
32
|
+
describe('#updateWebcastUrl', () => {
|
|
33
|
+
it('sets the webcast instance url', () => {
|
|
34
|
+
webinar.updateWebcastUrl({resources: {webcastInstance: {url:'newUrl'}}});
|
|
35
35
|
|
|
36
|
-
assert.equal(webinar.
|
|
36
|
+
assert.equal(webinar.webcastInstanceUrl, 'newUrl');
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
describe('#webinarAttendeesSearchingUrlUpdate', () => {
|
|
41
|
-
it('sets the webinarAttendeesSearching url', () => {
|
|
42
|
-
webinar.webinarAttendeesSearchingUrlUpdate('newUrl');
|
|
43
|
-
|
|
44
|
-
assert.equal(webinar.webinarAttendeesSearchingUrl, 'newUrl');
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
40
|
|
|
48
41
|
describe('#updateCanManageWebcast', () => {
|
|
49
|
-
it('
|
|
50
|
-
webinar.
|
|
42
|
+
it('sets the webcast instance url when valid', () => {
|
|
43
|
+
webinar.updateWebcastUrl({resources: {webcastInstance: {url:'newUrl'}}});
|
|
44
|
+
assert.equal(webinar.webcastInstanceUrl, 'newUrl', 'webcast instance URL should be updated');
|
|
45
|
+
});
|
|
51
46
|
|
|
52
|
-
|
|
47
|
+
it('handles missing resources gracefully', () => {
|
|
48
|
+
webinar.updateWebcastUrl({});
|
|
49
|
+
assert.isUndefined(webinar.webcastInstanceUrl, 'webcast instance URL should be undefined');
|
|
50
|
+
});
|
|
53
51
|
|
|
54
|
-
|
|
52
|
+
it('handles missing webcastInstance gracefully', () => {
|
|
53
|
+
webinar.updateWebcastUrl({resources: {}});
|
|
54
|
+
assert.isUndefined(webinar.webcastInstanceUrl, 'webcast instance URL should be undefined');
|
|
55
|
+
});
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
it('handles missing URL gracefully', () => {
|
|
58
|
+
webinar.updateWebcastUrl({resources: {webcastInstance: {}}});
|
|
59
|
+
assert.isUndefined(webinar.webcastInstanceUrl, 'webcast instance URL should be undefined');
|
|
57
60
|
});
|
|
58
61
|
});
|
|
62
|
+
|
|
63
|
+
describe('#updateRoleChanged', () => {
|
|
64
|
+
it('updates roles when promoted from attendee to panelist', () => {
|
|
65
|
+
const payload = {
|
|
66
|
+
oldRoles: ['ATTENDEE'],
|
|
67
|
+
newRoles: ['PANELIST']
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const result = webinar.updateRoleChanged(payload);
|
|
71
|
+
|
|
72
|
+
assert.equal(webinar.selfIsPanelist, true, 'self should be a panelist');
|
|
73
|
+
assert.equal(webinar.selfIsAttendee, false, 'self should not be an attendee');
|
|
74
|
+
assert.equal(webinar.canManageWebcast, false, 'self should not have manage webcast capability');
|
|
75
|
+
assert.equal(result.isPromoted, true, 'should indicate promotion');
|
|
76
|
+
assert.equal(result.isDemoted, false, 'should not indicate demotion');
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('updates roles when demoted from panelist to attendee', () => {
|
|
80
|
+
const payload = {
|
|
81
|
+
oldRoles: ['PANELIST'],
|
|
82
|
+
newRoles: ['ATTENDEE']
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const result = webinar.updateRoleChanged(payload);
|
|
86
|
+
|
|
87
|
+
assert.equal(webinar.selfIsPanelist, false, 'self should not be a panelist');
|
|
88
|
+
assert.equal(webinar.selfIsAttendee, true, 'self should be an attendee');
|
|
89
|
+
assert.equal(webinar.canManageWebcast, false, 'self should not have manage webcast capability');
|
|
90
|
+
assert.equal(result.isPromoted, false, 'should not indicate promotion');
|
|
91
|
+
assert.equal(result.isDemoted, true, 'should indicate demotion');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('updates roles when promoted to moderator', () => {
|
|
95
|
+
const payload = {
|
|
96
|
+
oldRoles: ['PANELIST'],
|
|
97
|
+
newRoles: ['MODERATOR']
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const result = webinar.updateRoleChanged(payload);
|
|
101
|
+
|
|
102
|
+
assert.equal(webinar.selfIsPanelist, false, 'self should not be a panelist');
|
|
103
|
+
assert.equal(webinar.selfIsAttendee, false, 'self should not be an attendee');
|
|
104
|
+
assert.equal(webinar.canManageWebcast, true, 'self should have manage webcast capability');
|
|
105
|
+
assert.equal(result.isPromoted, false, 'should not indicate promotion');
|
|
106
|
+
assert.equal(result.isDemoted, false, 'should not indicate demotion');
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it('updates roles when unchanged (remains as panelist)', () => {
|
|
110
|
+
const payload = {
|
|
111
|
+
oldRoles: ['PANELIST'],
|
|
112
|
+
newRoles: ['PANELIST']
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const result = webinar.updateRoleChanged(payload);
|
|
116
|
+
|
|
117
|
+
assert.equal(webinar.selfIsPanelist, true, 'self should remain a panelist');
|
|
118
|
+
assert.equal(webinar.selfIsAttendee, false, 'self should not be an attendee');
|
|
119
|
+
assert.equal(webinar.canManageWebcast, false, 'self should not have manage webcast capability');
|
|
120
|
+
assert.equal(result.isPromoted, false, 'should not indicate promotion');
|
|
121
|
+
assert.equal(result.isDemoted, false, 'should not indicate demotion');
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
59
125
|
})
|
|
60
126
|
})
|