@webex/plugin-meetings 3.8.1-next.38 → 3.8.1-next.39
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 +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +26 -5
- package/dist/meeting/index.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +13 -13
- package/src/meeting/index.ts +21 -0
- package/test/unit/spec/meeting/index.js +53 -0
package/dist/webinar/index.js
CHANGED
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-rooms": "3.8.1-next.
|
46
|
+
"@webex/plugin-rooms": "3.8.1-next.11",
|
47
47
|
"@webex/test-helper-chai": "3.8.1-next.11",
|
48
48
|
"@webex/test-helper-mocha": "3.8.1-next.11",
|
49
49
|
"@webex/test-helper-mock-webex": "3.8.1-next.11",
|
@@ -63,20 +63,20 @@
|
|
63
63
|
"@webex/common": "3.8.1-next.11",
|
64
64
|
"@webex/event-dictionary-ts": "^1.0.1819",
|
65
65
|
"@webex/internal-media-core": "2.18.5",
|
66
|
-
"@webex/internal-plugin-conversation": "3.8.1-next.
|
67
|
-
"@webex/internal-plugin-device": "3.8.1-next.
|
68
|
-
"@webex/internal-plugin-llm": "3.8.1-next.
|
69
|
-
"@webex/internal-plugin-mercury": "3.8.1-next.
|
70
|
-
"@webex/internal-plugin-metrics": "3.8.1-next.
|
71
|
-
"@webex/internal-plugin-support": "3.8.1-next.
|
72
|
-
"@webex/internal-plugin-user": "3.8.1-next.
|
73
|
-
"@webex/internal-plugin-voicea": "3.8.1-next.
|
66
|
+
"@webex/internal-plugin-conversation": "3.8.1-next.14",
|
67
|
+
"@webex/internal-plugin-device": "3.8.1-next.12",
|
68
|
+
"@webex/internal-plugin-llm": "3.8.1-next.13",
|
69
|
+
"@webex/internal-plugin-mercury": "3.8.1-next.12",
|
70
|
+
"@webex/internal-plugin-metrics": "3.8.1-next.12",
|
71
|
+
"@webex/internal-plugin-support": "3.8.1-next.14",
|
72
|
+
"@webex/internal-plugin-user": "3.8.1-next.12",
|
73
|
+
"@webex/internal-plugin-voicea": "3.8.1-next.39",
|
74
74
|
"@webex/media-helpers": "3.8.1-next.16",
|
75
|
-
"@webex/plugin-people": "3.8.1-next.
|
76
|
-
"@webex/plugin-rooms": "3.8.1-next.
|
75
|
+
"@webex/plugin-people": "3.8.1-next.12",
|
76
|
+
"@webex/plugin-rooms": "3.8.1-next.11",
|
77
77
|
"@webex/ts-sdp": "^1.8.1",
|
78
78
|
"@webex/web-capabilities": "^1.6.0",
|
79
|
-
"@webex/webex-core": "3.8.1-next.
|
79
|
+
"@webex/webex-core": "3.8.1-next.12",
|
80
80
|
"ampersand-collection": "^2.0.2",
|
81
81
|
"bowser": "^2.11.0",
|
82
82
|
"btoa": "^1.2.1",
|
@@ -92,5 +92,5 @@
|
|
92
92
|
"//": [
|
93
93
|
"TODO: upgrade jwt-decode when moving to node 18"
|
94
94
|
],
|
95
|
-
"version": "3.8.1-next.
|
95
|
+
"version": "3.8.1-next.39"
|
96
96
|
}
|
package/src/meeting/index.ts
CHANGED
@@ -8398,6 +8398,10 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
8398
8398
|
}
|
8399
8399
|
|
8400
8400
|
if (whiteboard) {
|
8401
|
+
// @ts-ignore
|
8402
|
+
this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
|
8403
|
+
key: 'internal.client.share.initiated',
|
8404
|
+
});
|
8401
8405
|
// @ts-ignore
|
8402
8406
|
this.webex.internal.newMetrics.submitClientEvent({
|
8403
8407
|
name: 'client.share.initiated',
|
@@ -8457,11 +8461,17 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
8457
8461
|
const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');
|
8458
8462
|
|
8459
8463
|
if (whiteboard) {
|
8464
|
+
// @ts-ignore
|
8465
|
+
this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
|
8466
|
+
key: 'internal.client.share.stopped',
|
8467
|
+
});
|
8460
8468
|
// @ts-ignore
|
8461
8469
|
this.webex.internal.newMetrics.submitClientEvent({
|
8462
8470
|
name: 'client.share.stopped',
|
8463
8471
|
payload: {
|
8464
8472
|
mediaType: 'whiteboard',
|
8473
|
+
// @ts-ignore
|
8474
|
+
shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),
|
8465
8475
|
},
|
8466
8476
|
options: {
|
8467
8477
|
meetingId: this.id,
|
@@ -8619,12 +8629,18 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
8619
8629
|
}
|
8620
8630
|
this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
|
8621
8631
|
if (content) {
|
8632
|
+
// @ts-ignore
|
8633
|
+
this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
|
8634
|
+
key: 'internal.client.share.stopped',
|
8635
|
+
});
|
8622
8636
|
// @ts-ignore
|
8623
8637
|
this.webex.internal.newMetrics.submitClientEvent({
|
8624
8638
|
name: 'client.share.stopped',
|
8625
8639
|
payload: {
|
8626
8640
|
mediaType: 'share',
|
8627
8641
|
shareInstanceId: this.localShareInstanceId,
|
8642
|
+
// @ts-ignore
|
8643
|
+
shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),
|
8628
8644
|
},
|
8629
8645
|
options: {meetingId: this.id},
|
8630
8646
|
});
|
@@ -9601,6 +9617,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
9601
9617
|
this.shareCAEventSentStatus.transmitStart = false;
|
9602
9618
|
this.shareCAEventSentStatus.transmitStop = false;
|
9603
9619
|
|
9620
|
+
// @ts-ignore
|
9621
|
+
this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({
|
9622
|
+
key: 'internal.client.share.initiated',
|
9623
|
+
});
|
9624
|
+
|
9604
9625
|
// @ts-ignore
|
9605
9626
|
this.webex.internal.newMetrics.submitClientEvent({
|
9606
9627
|
name: 'client.share.initiated',
|
@@ -8120,6 +8120,7 @@ describe('plugin-meetings', () => {
|
|
8120
8120
|
|
8121
8121
|
meeting.requestScreenShareFloor = sinon.stub().resolves({});
|
8122
8122
|
meeting.releaseScreenShareFloor = sinon.stub().resolves({});
|
8123
|
+
webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
|
8123
8124
|
meeting.mediaProperties.mediaDirection = {
|
8124
8125
|
sendAudio: 'fake value', // using non-boolean here so that we can check that these values are untouched in tests
|
8125
8126
|
sendVideo: 'fake value',
|
@@ -8201,6 +8202,12 @@ describe('plugin-meetings', () => {
|
|
8201
8202
|
payload: {mediaType: 'share', shareInstanceId: meeting.localShareInstanceId},
|
8202
8203
|
options: {meetingId: meeting.id},
|
8203
8204
|
});
|
8205
|
+
|
8206
|
+
// ensure the share start timestamp is saved
|
8207
|
+
assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
|
8208
|
+
key: 'internal.client.share.initiated',
|
8209
|
+
});
|
8210
|
+
|
8204
8211
|
assert.equal(meeting.mediaProperties.mediaDirection.sendShare, true);
|
8205
8212
|
|
8206
8213
|
assert.equal(meeting.shareCAEventSentStatus.transmitStart, false);
|
@@ -8219,6 +8226,11 @@ describe('plugin-meetings', () => {
|
|
8219
8226
|
options: {meetingId: meeting.id},
|
8220
8227
|
});
|
8221
8228
|
|
8229
|
+
// ensure the share start timestamp is saved
|
8230
|
+
assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
|
8231
|
+
key: 'internal.client.share.initiated',
|
8232
|
+
});
|
8233
|
+
|
8222
8234
|
assert.calledWith(
|
8223
8235
|
meeting.sendSlotManager.getSlot(MediaType.AudioSlides).publishStream,
|
8224
8236
|
stream
|
@@ -10492,6 +10504,8 @@ describe('plugin-meetings', () => {
|
|
10492
10504
|
meeting.mediaProperties = {mediaDirection: {sendShare: true}};
|
10493
10505
|
meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
|
10494
10506
|
(meeting.deviceUrl = 'deviceUrl.com'), (meeting.localShareInstanceId = '1234-5678');
|
10507
|
+
webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
|
10508
|
+
webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1000);
|
10495
10509
|
});
|
10496
10510
|
it('should call changeMeetingFloor()', async () => {
|
10497
10511
|
meeting.screenShareFloorState = 'GRANTED';
|
@@ -10509,6 +10523,22 @@ describe('plugin-meetings', () => {
|
|
10509
10523
|
assert.exists(share.then);
|
10510
10524
|
await share;
|
10511
10525
|
assert.calledOnce(meeting.meetingRequest.changeMeetingFloor);
|
10526
|
+
|
10527
|
+
// ensure the share stop timestamp is saved
|
10528
|
+
assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
|
10529
|
+
key: 'internal.client.share.stopped',
|
10530
|
+
});
|
10531
|
+
|
10532
|
+
// ensure the CA share stopped metric is submitted with duration
|
10533
|
+
assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
|
10534
|
+
name: 'client.share.stopped',
|
10535
|
+
payload: {
|
10536
|
+
mediaType: 'share',
|
10537
|
+
shareInstanceId: meeting.localShareInstanceId,
|
10538
|
+
shareDuration: 1000,
|
10539
|
+
},
|
10540
|
+
options: {meetingId: meeting.id},
|
10541
|
+
});
|
10512
10542
|
});
|
10513
10543
|
it('should not call changeMeetingFloor() if someone else already has the floor', async () => {
|
10514
10544
|
// change selfId so that it doesn't match the beneficiary id from meeting.locusInfo.mediaShares
|
@@ -12081,6 +12111,7 @@ describe('plugin-meetings', () => {
|
|
12081
12111
|
meeting.locusInfo.self = {url: url1};
|
12082
12112
|
meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
|
12083
12113
|
meeting.deviceUrl = 'deviceUrl.com';
|
12114
|
+
webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
|
12084
12115
|
});
|
12085
12116
|
it('should have #startWhiteboardShare', () => {
|
12086
12117
|
assert.exists(meeting.startWhiteboardShare);
|
@@ -12108,6 +12139,11 @@ describe('plugin-meetings', () => {
|
|
12108
12139
|
payload: {mediaType: 'whiteboard'},
|
12109
12140
|
options: {meetingId: meeting.id},
|
12110
12141
|
});
|
12142
|
+
|
12143
|
+
// ensure the share start timestamp is saved
|
12144
|
+
assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
|
12145
|
+
key: 'internal.client.share.initiated',
|
12146
|
+
});
|
12111
12147
|
});
|
12112
12148
|
});
|
12113
12149
|
describe('#stopWhiteboardShare', () => {
|
@@ -12119,6 +12155,8 @@ describe('plugin-meetings', () => {
|
|
12119
12155
|
meeting.locusInfo.self = {url: url1};
|
12120
12156
|
meeting.meetingRequest.changeMeetingFloor = sinon.stub().returns(Promise.resolve());
|
12121
12157
|
meeting.deviceUrl = 'deviceUrl.com';
|
12158
|
+
webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp = sinon.stub();
|
12159
|
+
webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration = sinon.stub().returns(1000);
|
12122
12160
|
});
|
12123
12161
|
it('should stop the whiteboard share', async () => {
|
12124
12162
|
const whiteboardShare = meeting.stopWhiteboardShare();
|
@@ -12133,6 +12171,21 @@ describe('plugin-meetings', () => {
|
|
12133
12171
|
uri: url1,
|
12134
12172
|
});
|
12135
12173
|
assert.calledOnce(meeting.meetingRequest.changeMeetingFloor);
|
12174
|
+
|
12175
|
+
// ensure the share stop timestamp is saved
|
12176
|
+
assert.calledWith(webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp, {
|
12177
|
+
key: 'internal.client.share.stopped',
|
12178
|
+
});
|
12179
|
+
|
12180
|
+
// ensure the CA share stopped metric is submitted with duration
|
12181
|
+
assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
|
12182
|
+
name: 'client.share.stopped',
|
12183
|
+
payload: {
|
12184
|
+
mediaType: 'whiteboard',
|
12185
|
+
shareDuration: 1000,
|
12186
|
+
},
|
12187
|
+
options: {meetingId: meeting.id},
|
12188
|
+
});
|
12136
12189
|
});
|
12137
12190
|
});
|
12138
12191
|
});
|