@webex/plugin-meetings 3.12.0-next.6 → 3.12.0-next.60
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/AGENTS.md +9 -0
- package/dist/aiEnableRequest/index.js +15 -2
- package/dist/aiEnableRequest/index.js.map +1 -1
- package/dist/breakouts/breakout.js +8 -3
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/index.js +26 -2
- package/dist/breakouts/index.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +6 -3
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +11 -1
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +38 -24
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js +91 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/constants.js +10 -1
- package/dist/hashTree/constants.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +716 -370
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/utils.js +22 -0
- package/dist/hashTree/utils.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/locusRetry.js +23 -8
- package/dist/interceptors/locusRetry.js.map +1 -1
- package/dist/interpretation/index.js +10 -1
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +4 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +289 -87
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/types.js +19 -0
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/index.js +3 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +1 -0
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +3 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +907 -535
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/util.js +19 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +231 -78
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +6 -1
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/request.js +39 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +79 -5
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +10 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +3 -0
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +4 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/codec/constants.js +63 -0
- package/dist/multistream/codec/constants.js.map +1 -0
- package/dist/multistream/mediaRequestManager.js +62 -15
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +9 -0
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/recording-controller/index.js +1 -3
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/controls-options-manager/constants.d.ts +6 -1
- package/dist/types/controls-options-manager/index.d.ts +10 -0
- package/dist/types/hashTree/constants.d.ts +1 -0
- package/dist/types/hashTree/hashTreeParser.d.ts +92 -16
- package/dist/types/hashTree/utils.d.ts +11 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +4 -4
- package/dist/types/locus-info/index.d.ts +46 -6
- package/dist/types/locus-info/types.d.ts +21 -1
- package/dist/types/media/properties.d.ts +1 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +87 -3
- package/dist/types/meeting/util.d.ts +8 -0
- package/dist/types/meetings/index.d.ts +30 -2
- package/dist/types/meetings/meetings.types.d.ts +15 -0
- package/dist/types/meetings/request.d.ts +14 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/member/util.d.ts +1 -0
- package/dist/types/metrics/constants.d.ts +3 -0
- package/dist/types/multistream/codec/constants.d.ts +7 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +22 -5
- package/dist/types/reactions/reactions.type.d.ts +3 -0
- package/dist/webinar/index.js +361 -235
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/aiEnableRequest/index.ts +16 -0
- package/src/breakouts/breakout.ts +3 -1
- package/src/breakouts/index.ts +31 -0
- package/src/config.ts +2 -0
- package/src/constants.ts +5 -1
- package/src/controls-options-manager/constants.ts +14 -1
- package/src/controls-options-manager/index.ts +47 -24
- package/src/controls-options-manager/util.ts +81 -1
- package/src/hashTree/constants.ts +9 -0
- package/src/hashTree/hashTreeParser.ts +429 -183
- package/src/hashTree/utils.ts +17 -0
- package/src/index.ts +5 -0
- package/src/interceptors/locusRetry.ts +25 -4
- package/src/interpretation/index.ts +25 -8
- package/src/locus-info/controlsUtils.ts +3 -1
- package/src/locus-info/index.ts +291 -97
- package/src/locus-info/types.ts +25 -1
- package/src/media/index.ts +3 -0
- package/src/media/properties.ts +1 -0
- package/src/meeting/in-meeting-actions.ts +4 -0
- package/src/meeting/index.ts +388 -33
- package/src/meeting/util.ts +20 -2
- package/src/meetings/index.ts +134 -44
- package/src/meetings/meetings.types.ts +19 -0
- package/src/meetings/request.ts +43 -0
- package/src/meetings/util.ts +97 -1
- package/src/member/index.ts +10 -0
- package/src/member/types.ts +1 -0
- package/src/member/util.ts +3 -0
- package/src/metrics/constants.ts +3 -0
- package/src/multistream/codec/constants.ts +58 -0
- package/src/multistream/mediaRequestManager.ts +119 -28
- package/src/multistream/receiveSlot.ts +18 -0
- package/src/reactions/reactions.type.ts +3 -0
- package/src/recording-controller/index.ts +1 -2
- package/src/webinar/index.ts +162 -21
- package/test/unit/spec/aiEnableRequest/index.ts +86 -0
- package/test/unit/spec/breakouts/breakout.ts +9 -3
- package/test/unit/spec/breakouts/index.ts +49 -0
- package/test/unit/spec/controls-options-manager/index.js +140 -29
- package/test/unit/spec/controls-options-manager/util.js +165 -0
- package/test/unit/spec/hashTree/hashTreeParser.ts +1508 -149
- package/test/unit/spec/hashTree/utils.ts +88 -1
- package/test/unit/spec/interceptors/locusRetry.ts +205 -4
- package/test/unit/spec/interpretation/index.ts +26 -4
- package/test/unit/spec/locus-info/controlsUtils.js +172 -57
- package/test/unit/spec/locus-info/index.js +475 -81
- package/test/unit/spec/media/index.ts +31 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +1131 -49
- package/test/unit/spec/meeting/muteState.js +3 -0
- package/test/unit/spec/meeting/utils.js +33 -0
- package/test/unit/spec/meetings/index.js +360 -10
- package/test/unit/spec/meetings/request.js +141 -0
- package/test/unit/spec/meetings/utils.js +189 -0
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +501 -37
- package/test/unit/spec/recording-controller/index.js +9 -8
- package/test/unit/spec/webinar/index.ts +141 -16
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import {assert} from '@webex/test-helper-chai';
|
|
2
2
|
import ControlsUtils from '@webex/plugin-meetings/src/locus-info/controlsUtils';
|
|
3
|
-
import controlsUtils from
|
|
4
|
-
import {
|
|
5
|
-
MEETING_STATE,
|
|
6
|
-
BREAKOUTS,
|
|
7
|
-
} from '../../../../src/constants';
|
|
3
|
+
import controlsUtils from '@webex/plugin-meetings/src/locus-info/controlsUtils';
|
|
4
|
+
import {MEETING_STATE, BREAKOUTS} from '../../../../src/constants';
|
|
8
5
|
|
|
9
6
|
const defaultControls = {
|
|
10
7
|
entryExitTone: {
|
|
@@ -82,17 +79,31 @@ describe('plugin-meetings', () => {
|
|
|
82
79
|
|
|
83
80
|
const parsedControls = ControlsUtils.parse(newControls);
|
|
84
81
|
|
|
85
|
-
assert.equal(
|
|
82
|
+
assert.equal(
|
|
83
|
+
parsedControls.reactions.showDisplayNameWithReactions,
|
|
84
|
+
newControls.reactions.showDisplayNameWithReactions
|
|
85
|
+
);
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
it('should parse the viewTheParticipantList control', () => {
|
|
89
|
-
const newControls = {
|
|
89
|
+
const newControls = {
|
|
90
|
+
viewTheParticipantList: {enabled: true, panelistEnabled: true, attendeeCount: false},
|
|
91
|
+
};
|
|
90
92
|
|
|
91
93
|
const parsedControls = ControlsUtils.parse(newControls);
|
|
92
94
|
|
|
93
|
-
assert.equal(
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
assert.equal(
|
|
96
|
+
parsedControls.viewTheParticipantList.enabled,
|
|
97
|
+
newControls.viewTheParticipantList.enabled
|
|
98
|
+
);
|
|
99
|
+
assert.equal(
|
|
100
|
+
parsedControls.viewTheParticipantList.panelistEnabled,
|
|
101
|
+
newControls.viewTheParticipantList.panelistEnabled
|
|
102
|
+
);
|
|
103
|
+
assert.equal(
|
|
104
|
+
parsedControls.viewTheParticipantList.attendeeCount,
|
|
105
|
+
newControls.viewTheParticipantList.attendeeCount
|
|
106
|
+
);
|
|
96
107
|
});
|
|
97
108
|
|
|
98
109
|
it('should parse the raiseHand control', () => {
|
|
@@ -125,7 +136,10 @@ describe('plugin-meetings', () => {
|
|
|
125
136
|
const parsedControls = ControlsUtils.parse(newControls);
|
|
126
137
|
|
|
127
138
|
assert.equal(parsedControls.meetingFull.meetingFull, newControls.meetingFull.meetingFull);
|
|
128
|
-
assert.equal(
|
|
139
|
+
assert.equal(
|
|
140
|
+
parsedControls.meetingFull.meetingPanelistFull,
|
|
141
|
+
newControls.meetingFull.meetingPanelistFull
|
|
142
|
+
);
|
|
129
143
|
});
|
|
130
144
|
|
|
131
145
|
it('should parse the practiceSession control', () => {
|
|
@@ -137,13 +151,28 @@ describe('plugin-meetings', () => {
|
|
|
137
151
|
});
|
|
138
152
|
|
|
139
153
|
it('should parse the videoLayout control', () => {
|
|
140
|
-
const newControls = {
|
|
154
|
+
const newControls = {
|
|
155
|
+
videoLayout: {
|
|
156
|
+
overrideDefault: true,
|
|
157
|
+
lockAttendeeViewOnStageOnly: false,
|
|
158
|
+
stageParameters: {},
|
|
159
|
+
},
|
|
160
|
+
};
|
|
141
161
|
|
|
142
162
|
const parsedControls = ControlsUtils.parse(newControls);
|
|
143
163
|
|
|
144
|
-
assert.equal(
|
|
145
|
-
|
|
146
|
-
|
|
164
|
+
assert.equal(
|
|
165
|
+
parsedControls.videoLayout.overrideDefault,
|
|
166
|
+
newControls.videoLayout.overrideDefault
|
|
167
|
+
);
|
|
168
|
+
assert.equal(
|
|
169
|
+
parsedControls.videoLayout.lockAttendeeViewOnStageOnly,
|
|
170
|
+
newControls.videoLayout.lockAttendeeViewOnStageOnly
|
|
171
|
+
);
|
|
172
|
+
assert.equal(
|
|
173
|
+
parsedControls.videoLayout.stageParameters,
|
|
174
|
+
newControls.videoLayout.stageParameters
|
|
175
|
+
);
|
|
147
176
|
});
|
|
148
177
|
|
|
149
178
|
it('should parse the annotationControl control', () => {
|
|
@@ -174,13 +203,77 @@ describe('plugin-meetings', () => {
|
|
|
174
203
|
});
|
|
175
204
|
|
|
176
205
|
it('should parse the hesiodLlmId in transcribe control', () => {
|
|
177
|
-
const newControls = {
|
|
206
|
+
const newControls = {
|
|
207
|
+
transcribe: {
|
|
208
|
+
hesiodLlmId: 'llm-123',
|
|
209
|
+
transcribing: true,
|
|
210
|
+
caption: true,
|
|
211
|
+
spokenLanguage: 'en-US',
|
|
212
|
+
},
|
|
213
|
+
};
|
|
178
214
|
|
|
179
215
|
const parsedControls = ControlsUtils.parse(newControls);
|
|
180
216
|
|
|
181
217
|
assert.equal(parsedControls.transcribe.hesiodLlmId, newControls.transcribe.hesiodLlmId);
|
|
182
218
|
});
|
|
183
219
|
|
|
220
|
+
it('should parse modifiedByServiceAppName from record meta when present', () => {
|
|
221
|
+
const newControls = {
|
|
222
|
+
record: {
|
|
223
|
+
recording: true,
|
|
224
|
+
paused: false,
|
|
225
|
+
meta: {lastModified: '2026-01-01', modifiedByServiceAppName: 'My Bot'},
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
230
|
+
|
|
231
|
+
assert.equal(parsedControls.record.modifiedByServiceAppName, 'My Bot');
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
it('should parse modifiedByServiceAppId from record meta when present', () => {
|
|
235
|
+
const newControls = {
|
|
236
|
+
record: {
|
|
237
|
+
recording: true,
|
|
238
|
+
paused: false,
|
|
239
|
+
meta: {lastModified: '2026-01-01', modifiedByServiceAppId: 'app-id-123'},
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
244
|
+
|
|
245
|
+
assert.equal(parsedControls.record.modifiedByServiceAppId, 'app-id-123');
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
it('should return undefined for modifiedByServiceAppName and modifiedByServiceAppId when absent from record meta', () => {
|
|
249
|
+
const newControls = {
|
|
250
|
+
record: {recording: true, paused: false, meta: {lastModified: '2026-01-01'}},
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
254
|
+
|
|
255
|
+
assert.isUndefined(parsedControls.record.modifiedByServiceAppName);
|
|
256
|
+
assert.isUndefined(parsedControls.record.modifiedByServiceAppId);
|
|
257
|
+
// existing fields still parsed correctly
|
|
258
|
+
assert.equal(parsedControls.record.recording, true);
|
|
259
|
+
assert.equal(parsedControls.record.paused, false);
|
|
260
|
+
assert.equal(parsedControls.record.lastModified, '2026-01-01');
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it('should handle record with no meta without throwing', () => {
|
|
264
|
+
const newControls = {
|
|
265
|
+
record: {recording: true, paused: false},
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
269
|
+
|
|
270
|
+
assert.equal(parsedControls.record.recording, true);
|
|
271
|
+
assert.equal(parsedControls.record.paused, false);
|
|
272
|
+
assert.isUndefined(parsedControls.record.lastModified);
|
|
273
|
+
assert.isUndefined(parsedControls.record.modifiedByServiceAppName);
|
|
274
|
+
assert.isUndefined(parsedControls.record.modifiedByServiceAppId);
|
|
275
|
+
});
|
|
276
|
+
|
|
184
277
|
describe('videoEnabled', () => {
|
|
185
278
|
it('returns expected', () => {
|
|
186
279
|
const result = ControlsUtils.parse({video: {enabled: true}});
|
|
@@ -246,19 +339,29 @@ describe('plugin-meetings', () => {
|
|
|
246
339
|
});
|
|
247
340
|
|
|
248
341
|
it('returns hasViewTheParticipantListChanged = true when changed', () => {
|
|
249
|
-
const oldControls = {
|
|
342
|
+
const oldControls = {
|
|
343
|
+
viewTheParticipantList: {enabled: true, panelistEnabled: true, attendeeCount: false},
|
|
344
|
+
};
|
|
250
345
|
|
|
251
|
-
let result = ControlsUtils.getControls(oldControls, {
|
|
346
|
+
let result = ControlsUtils.getControls(oldControls, {
|
|
347
|
+
viewTheParticipantList: {enabled: false, panelistEnabled: true, attendeeCount: false},
|
|
348
|
+
});
|
|
252
349
|
|
|
253
350
|
assert.equal(result.updates.hasViewTheParticipantListChanged, true);
|
|
254
351
|
|
|
255
|
-
result = ControlsUtils.getControls(oldControls, {
|
|
352
|
+
result = ControlsUtils.getControls(oldControls, {
|
|
353
|
+
viewTheParticipantList: {enabled: true, panelistEnabled: false, attendeeCount: false},
|
|
354
|
+
});
|
|
256
355
|
|
|
257
356
|
assert.equal(result.updates.hasViewTheParticipantListChanged, true);
|
|
258
|
-
result = ControlsUtils.getControls(oldControls, {
|
|
357
|
+
result = ControlsUtils.getControls(oldControls, {
|
|
358
|
+
viewTheParticipantList: {enabled: true, panelistEnabled: true, attendeeCount: true},
|
|
359
|
+
});
|
|
259
360
|
|
|
260
361
|
assert.equal(result.updates.hasViewTheParticipantListChanged, true);
|
|
261
|
-
result = ControlsUtils.getControls(oldControls, {
|
|
362
|
+
result = ControlsUtils.getControls(oldControls, {
|
|
363
|
+
viewTheParticipantList: {enabled: true, panelistEnabled: true, attendeeCount: false},
|
|
364
|
+
});
|
|
262
365
|
|
|
263
366
|
assert.equal(result.updates.hasViewTheParticipantListChanged, false);
|
|
264
367
|
});
|
|
@@ -294,7 +397,9 @@ describe('plugin-meetings', () => {
|
|
|
294
397
|
|
|
295
398
|
assert.equal(result.updates.hasMeetingFullChanged, true);
|
|
296
399
|
|
|
297
|
-
result = ControlsUtils.getControls(newControls, {
|
|
400
|
+
result = ControlsUtils.getControls(newControls, {
|
|
401
|
+
meetingFull: {meetingFull: true, meetingPanelistFull: true},
|
|
402
|
+
});
|
|
298
403
|
|
|
299
404
|
assert.equal(result.updates.hasMeetingFullChanged, true);
|
|
300
405
|
});
|
|
@@ -386,7 +491,10 @@ describe('plugin-meetings', () => {
|
|
|
386
491
|
interpretation: 'interpretation',
|
|
387
492
|
};
|
|
388
493
|
|
|
389
|
-
const {updates} = ControlsUtils.getControls(
|
|
494
|
+
const {updates} = ControlsUtils.getControls(
|
|
495
|
+
{interpretation: 'interpretation'},
|
|
496
|
+
newControls
|
|
497
|
+
);
|
|
390
498
|
|
|
391
499
|
assert.equal(updates.hasInterpretationChanged, false);
|
|
392
500
|
});
|
|
@@ -396,7 +504,10 @@ describe('plugin-meetings', () => {
|
|
|
396
504
|
manualCaptionControl: {enabled: false},
|
|
397
505
|
};
|
|
398
506
|
|
|
399
|
-
const {updates} = ControlsUtils.getControls(
|
|
507
|
+
const {updates} = ControlsUtils.getControls(
|
|
508
|
+
{manualCaptionControl: {enabled: true}},
|
|
509
|
+
newControls
|
|
510
|
+
);
|
|
400
511
|
|
|
401
512
|
assert.equal(updates.hasManualCaptionChanged, true);
|
|
402
513
|
});
|
|
@@ -406,7 +517,10 @@ describe('plugin-meetings', () => {
|
|
|
406
517
|
manualCaptionControl: {enabled: true},
|
|
407
518
|
};
|
|
408
519
|
|
|
409
|
-
const {updates} = ControlsUtils.getControls(
|
|
520
|
+
const {updates} = ControlsUtils.getControls(
|
|
521
|
+
{manualCaptionControl: {enabled: true}},
|
|
522
|
+
newControls
|
|
523
|
+
);
|
|
410
524
|
|
|
411
525
|
assert.equal(updates.hasManualCaptionChanged, false);
|
|
412
526
|
});
|
|
@@ -436,8 +550,8 @@ describe('plugin-meetings', () => {
|
|
|
436
550
|
});
|
|
437
551
|
|
|
438
552
|
it('returns false when previous spoken language is undefined and current is a invalid value', () => {
|
|
439
|
-
const previous = {
|
|
440
|
-
const current = {
|
|
553
|
+
const previous = {transcribe: undefined};
|
|
554
|
+
const current = {transcribe: {spokenLanguage: null}};
|
|
441
555
|
|
|
442
556
|
const {updates} = ControlsUtils.getControls(previous, current);
|
|
443
557
|
|
|
@@ -445,8 +559,8 @@ describe('plugin-meetings', () => {
|
|
|
445
559
|
});
|
|
446
560
|
|
|
447
561
|
it('detects spoken language change when previous is undefined and current is a valid value', () => {
|
|
448
|
-
const previous = {
|
|
449
|
-
const current = {
|
|
562
|
+
const previous = {transcribe: undefined};
|
|
563
|
+
const current = {transcribe: {spokenLanguage: 'en-US'}};
|
|
450
564
|
|
|
451
565
|
const {updates} = ControlsUtils.getControls(previous, current);
|
|
452
566
|
|
|
@@ -454,8 +568,8 @@ describe('plugin-meetings', () => {
|
|
|
454
568
|
});
|
|
455
569
|
|
|
456
570
|
it('returns false when spoken language changes to a same value', () => {
|
|
457
|
-
const previous = {
|
|
458
|
-
const current = {
|
|
571
|
+
const previous = {transcribe: {caption: true, spokenLanguage: 'en-US'}};
|
|
572
|
+
const current = {transcribe: {caption: true, spokenLanguage: 'en-US'}};
|
|
459
573
|
|
|
460
574
|
const {updates} = ControlsUtils.getControls(previous, current);
|
|
461
575
|
|
|
@@ -463,8 +577,8 @@ describe('plugin-meetings', () => {
|
|
|
463
577
|
});
|
|
464
578
|
|
|
465
579
|
it('returns true when spoken language changes to a different value', () => {
|
|
466
|
-
const previous = {
|
|
467
|
-
const current = {
|
|
580
|
+
const previous = {transcribe: {caption: true, spokenLanguage: 'en-US'}};
|
|
581
|
+
const current = {transcribe: {caption: true, spokenLanguage: 'fr-FR'}};
|
|
468
582
|
|
|
469
583
|
const {updates} = ControlsUtils.getControls(previous, current);
|
|
470
584
|
|
|
@@ -472,8 +586,8 @@ describe('plugin-meetings', () => {
|
|
|
472
586
|
});
|
|
473
587
|
|
|
474
588
|
it('returns false when previous hesiodLlmId is undefined and current is a invalid value', () => {
|
|
475
|
-
const previous = {
|
|
476
|
-
const current = {
|
|
589
|
+
const previous = {transcribe: undefined};
|
|
590
|
+
const current = {transcribe: {hesiodLlmId: null}};
|
|
477
591
|
|
|
478
592
|
const {updates} = ControlsUtils.getControls(previous, current);
|
|
479
593
|
|
|
@@ -481,8 +595,8 @@ describe('plugin-meetings', () => {
|
|
|
481
595
|
});
|
|
482
596
|
|
|
483
597
|
it('detects hesiodLlmId change when previous is undefined and current is a valid value', () => {
|
|
484
|
-
const previous = {
|
|
485
|
-
const current = {
|
|
598
|
+
const previous = {transcribe: undefined};
|
|
599
|
+
const current = {transcribe: {hesiodLlmId: '123a-456b'}};
|
|
486
600
|
|
|
487
601
|
const {updates} = ControlsUtils.getControls(previous, current);
|
|
488
602
|
|
|
@@ -512,7 +626,9 @@ describe('plugin-meetings', () => {
|
|
|
512
626
|
});
|
|
513
627
|
|
|
514
628
|
it('parses aiSummaryNotification into the transcribe block', () => {
|
|
515
|
-
const controls = {
|
|
629
|
+
const controls = {
|
|
630
|
+
transcribe: {transcribing: false, caption: false, aiSummaryNotification: true},
|
|
631
|
+
};
|
|
516
632
|
const parsed = ControlsUtils.parse(controls);
|
|
517
633
|
assert.equal(parsed.transcribe.aiSummaryNotification, true);
|
|
518
634
|
});
|
|
@@ -580,7 +696,8 @@ describe('plugin-meetings', () => {
|
|
|
580
696
|
const oldLocus = {};
|
|
581
697
|
const newLocus = {};
|
|
582
698
|
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
583
|
-
isReturnToMain: false,
|
|
699
|
+
isReturnToMain: false,
|
|
700
|
+
isJoinToBreakout: false,
|
|
584
701
|
});
|
|
585
702
|
});
|
|
586
703
|
|
|
@@ -588,7 +705,8 @@ describe('plugin-meetings', () => {
|
|
|
588
705
|
const oldLocus = {controls: {breakout: {sessionType: 'BREAKOUT'}}};
|
|
589
706
|
const newLocus = {controls: {breakout: {sessionType: 'MAIN'}}};
|
|
590
707
|
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
591
|
-
isReturnToMain: true,
|
|
708
|
+
isReturnToMain: true,
|
|
709
|
+
isJoinToBreakout: false,
|
|
592
710
|
});
|
|
593
711
|
});
|
|
594
712
|
|
|
@@ -596,55 +714,52 @@ describe('plugin-meetings', () => {
|
|
|
596
714
|
const oldLocus = {controls: {breakout: {sessionType: 'MAIN'}}};
|
|
597
715
|
const newLocus = {controls: {breakout: {sessionType: 'BREAKOUT'}}};
|
|
598
716
|
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
599
|
-
isReturnToMain: false,
|
|
717
|
+
isReturnToMain: false,
|
|
718
|
+
isJoinToBreakout: true,
|
|
600
719
|
});
|
|
601
720
|
});
|
|
602
721
|
|
|
603
722
|
it('if needUseCache conditions are met, return isJoinToBreakout as true', () => {
|
|
604
723
|
const oldLocus = {
|
|
605
|
-
self: {
|
|
606
|
-
controls: {
|
|
724
|
+
self: {isCreator: true},
|
|
725
|
+
controls: {breakout: {sessionType: BREAKOUTS.SESSION_TYPES.MAIN}},
|
|
607
726
|
};
|
|
608
727
|
|
|
609
728
|
const newLocus = {
|
|
610
|
-
participants: [
|
|
611
|
-
{ isCreator: true, state: MEETING_STATE.STATES.JOINED },
|
|
612
|
-
],
|
|
729
|
+
participants: [{isCreator: true, state: MEETING_STATE.STATES.JOINED}],
|
|
613
730
|
controls: {
|
|
614
731
|
breakout: {
|
|
615
732
|
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
|
616
|
-
groups: [{
|
|
733
|
+
groups: [{id: 'group1'}],
|
|
617
734
|
},
|
|
618
735
|
},
|
|
619
736
|
};
|
|
620
737
|
|
|
621
738
|
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
622
739
|
isReturnToMain: true,
|
|
623
|
-
isJoinToBreakout: false
|
|
740
|
+
isJoinToBreakout: false,
|
|
624
741
|
});
|
|
625
742
|
});
|
|
626
743
|
|
|
627
744
|
it('if needUseCache conditions are not met, return newLocus and isReturnToMain as false', () => {
|
|
628
745
|
const oldLocus = {
|
|
629
|
-
self: {
|
|
630
|
-
controls: {
|
|
746
|
+
self: {isCreator: false},
|
|
747
|
+
controls: {breakout: {sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT}},
|
|
631
748
|
};
|
|
632
749
|
|
|
633
750
|
const newLocus = {
|
|
634
|
-
participants: [
|
|
635
|
-
{ isCreator: true, state: MEETING_STATE.STATES.JOINED },
|
|
636
|
-
],
|
|
751
|
+
participants: [{isCreator: true, state: MEETING_STATE.STATES.JOINED}],
|
|
637
752
|
controls: {
|
|
638
753
|
breakout: {
|
|
639
754
|
sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT,
|
|
640
|
-
groups: []
|
|
755
|
+
groups: [],
|
|
641
756
|
},
|
|
642
757
|
},
|
|
643
758
|
};
|
|
644
759
|
|
|
645
760
|
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
646
761
|
isReturnToMain: false,
|
|
647
|
-
isJoinToBreakout: false
|
|
762
|
+
isJoinToBreakout: false,
|
|
648
763
|
});
|
|
649
764
|
});
|
|
650
765
|
});
|
|
@@ -652,7 +767,7 @@ describe('plugin-meetings', () => {
|
|
|
652
767
|
describe('#isMainSessionDTO', () => {
|
|
653
768
|
it('return false is sessionType is BREAKOUT', () => {
|
|
654
769
|
const locus = {
|
|
655
|
-
controls: {breakout: {sessionType: 'BREAKOUT'}}
|
|
770
|
+
controls: {breakout: {sessionType: 'BREAKOUT'}},
|
|
656
771
|
};
|
|
657
772
|
|
|
658
773
|
assert.equal(controlsUtils.isMainSessionDTO(locus), false);
|
|
@@ -660,7 +775,7 @@ describe('plugin-meetings', () => {
|
|
|
660
775
|
|
|
661
776
|
it('return true is sessionType is not BREAKOUT', () => {
|
|
662
777
|
const locus = {
|
|
663
|
-
controls: {breakout: {sessionType: 'MAIN'}}
|
|
778
|
+
controls: {breakout: {sessionType: 'MAIN'}},
|
|
664
779
|
};
|
|
665
780
|
|
|
666
781
|
assert.equal(controlsUtils.isMainSessionDTO(locus), true);
|