@webex/plugin-meetings 3.7.0-next.9 → 3.7.0-wxcc.1
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/annotation/index.js +17 -0
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/join-forbidden-error.js +52 -0
- package/dist/common/errors/join-forbidden-error.js.map +1 -0
- package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
- package/dist/common/errors/join-webinar-error.js.map +1 -0
- package/dist/common/errors/multistream-not-supported-error.js +53 -0
- package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +46 -5
- package/dist/constants.js.map +1 -1
- package/dist/index.js +16 -11
- package/dist/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +14 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +30 -17
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +2 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +960 -832
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +9 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +16 -16
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +96 -33
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +1 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.js +103 -54
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +2 -0
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/util.js +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +39 -28
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMedia.js +30 -15
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +24 -0
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/roap/index.js +10 -8
- package/dist/roap/index.js.map +1 -1
- package/dist/types/annotation/index.d.ts +5 -0
- package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
- package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
- package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
- package/dist/types/constants.d.ts +38 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/locus-info/index.d.ts +2 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +19 -12
- package/dist/types/meeting/locusMediaRequest.d.ts +4 -0
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +1 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +27 -4
- package/dist/types/meetings/index.d.ts +16 -1
- package/dist/types/meetings/meetings.types.d.ts +8 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +7 -0
- package/dist/types/metrics/constants.d.ts +2 -1
- package/dist/types/multistream/sendSlotManager.d.ts +8 -1
- package/dist/webinar/index.js +354 -3
- package/dist/webinar/index.js.map +1 -1
- package/package.json +23 -22
- package/src/annotation/index.ts +16 -0
- package/src/common/errors/join-forbidden-error.ts +26 -0
- package/src/common/errors/join-webinar-error.ts +24 -0
- package/src/common/errors/multistream-not-supported-error.ts +30 -0
- package/src/config.ts +1 -1
- package/src/constants.ts +43 -3
- package/src/index.ts +5 -3
- package/src/locus-info/index.ts +20 -3
- package/src/locus-info/selfUtils.ts +19 -6
- package/src/meeting/in-meeting-actions.ts +4 -0
- package/src/meeting/index.ts +259 -80
- package/src/meeting/locusMediaRequest.ts +7 -0
- package/src/meeting/request.ts +26 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +8 -10
- package/src/meeting-info/meeting-info-v2.ts +74 -11
- package/src/meeting-info/utilv2.ts +3 -1
- package/src/meetings/index.ts +73 -20
- package/src/meetings/meetings.types.ts +10 -0
- package/src/meetings/util.ts +2 -1
- package/src/member/index.ts +9 -0
- package/src/member/types.ts +8 -0
- package/src/member/util.ts +34 -24
- package/src/metrics/constants.ts +2 -1
- package/src/multistream/remoteMedia.ts +28 -15
- package/src/multistream/sendSlotManager.ts +31 -0
- package/src/roap/index.ts +10 -8
- package/src/webinar/index.ts +197 -3
- package/test/unit/spec/annotation/index.ts +46 -1
- package/test/unit/spec/locus-info/index.js +292 -60
- package/test/unit/spec/locus-info/selfConstant.js +7 -0
- package/test/unit/spec/locus-info/selfUtils.js +91 -1
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +722 -105
- package/test/unit/spec/meeting/utils.js +22 -19
- package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
- package/test/unit/spec/meeting-info/utilv2.js +17 -0
- package/test/unit/spec/meetings/index.js +150 -13
- package/test/unit/spec/meetings/utils.js +10 -0
- package/test/unit/spec/member/util.js +52 -11
- package/test/unit/spec/multistream/remoteMedia.ts +11 -7
- package/test/unit/spec/roap/index.ts +47 -0
- package/test/unit/spec/webinar/index.ts +457 -0
- package/dist/common/errors/webinar-registration-error.js.map +0 -1
- package/src/common/errors/webinar-registration-error.ts +0 -27
package/src/constants.ts
CHANGED
|
@@ -36,6 +36,8 @@ export const HOST = 'host';
|
|
|
36
36
|
|
|
37
37
|
export const JOIN = 'join';
|
|
38
38
|
|
|
39
|
+
export const JOIN_LINK_MTID = 'MTID';
|
|
40
|
+
|
|
39
41
|
export const LEAVE = 'leave';
|
|
40
42
|
export const LIVE = 'live';
|
|
41
43
|
export const LOCAL = 'local';
|
|
@@ -104,6 +106,7 @@ export const _ON_HOLD_LOBBY_ = 'ON_HOLD_LOBBY';
|
|
|
104
106
|
export const _MEETING_LINK_ = 'MEETING_LINK';
|
|
105
107
|
export const _MEETING_UUID_ = 'MEETING_UUID';
|
|
106
108
|
export const _MEETING_ = 'MEETING';
|
|
109
|
+
export const _SPACE_SHARE_ = 'SPACE_SHARE';
|
|
107
110
|
export const _MEETING_CENTER_ = 'MEETING_CENTER';
|
|
108
111
|
export const _MEETING_ID_ = 'MEETING_ID';
|
|
109
112
|
|
|
@@ -198,6 +201,9 @@ export const RETRY_TIMEOUT = 3000;
|
|
|
198
201
|
|
|
199
202
|
export const ICE_AND_DTLS_CONNECTION_TIMEOUT = 20000;
|
|
200
203
|
export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
|
|
204
|
+
export const WEBINAR_ERROR_WEBCAST = [403026];
|
|
205
|
+
export const WEBINAR_ERROR_REGISTRATIONID = [403037, 403137];
|
|
206
|
+
export const JOIN_BEFORE_HOST = 403003;
|
|
201
207
|
|
|
202
208
|
// ******************** REGEX **********************
|
|
203
209
|
// Please alphabetize
|
|
@@ -303,6 +309,7 @@ export const EVENT_TRIGGERS = {
|
|
|
303
309
|
MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',
|
|
304
310
|
MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
|
|
305
311
|
MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',
|
|
312
|
+
MEETING_SELF_BRB_UPDATE: 'meeting:self:brbUpdate',
|
|
306
313
|
MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
|
|
307
314
|
MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
|
|
308
315
|
MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
|
|
@@ -325,6 +332,7 @@ export const EVENT_TRIGGERS = {
|
|
|
325
332
|
MEETING_RECONNECTION_FAILURE: 'meeting:reconnectionFailure',
|
|
326
333
|
MEETING_UNLOCKED: 'meeting:unlocked',
|
|
327
334
|
MEETING_LOCKED: 'meeting:locked',
|
|
335
|
+
MEETING_RESOURCE_LINKS_UPDATE: 'meeting:resourceLinks:update',
|
|
328
336
|
MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',
|
|
329
337
|
MEETING_INFO_UPDATED: 'meeting:meetingInfoUpdated',
|
|
330
338
|
MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',
|
|
@@ -383,6 +391,13 @@ export const EVENT_TYPES = {
|
|
|
383
391
|
ERROR: 'error',
|
|
384
392
|
};
|
|
385
393
|
|
|
394
|
+
export const HEADERS = {
|
|
395
|
+
CONTENT_TYPE: 'Content-Type',
|
|
396
|
+
CONTENT_TYPE_VALUE: {
|
|
397
|
+
APPLICATION_JSON: 'application/json',
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
|
|
386
401
|
// Handles the reason when meeting gets destroyed
|
|
387
402
|
// host removed you from the meeting
|
|
388
403
|
// You are the host and you left the meeting
|
|
@@ -529,11 +544,21 @@ export const ERROR_DICTIONARY = {
|
|
|
529
544
|
'Reconnection was not started, because there is one already in progress or reconnections are disabled in config.',
|
|
530
545
|
CODE: 15,
|
|
531
546
|
},
|
|
532
|
-
|
|
533
|
-
NAME: '
|
|
534
|
-
MESSAGE: 'An error occurred while the webinar
|
|
547
|
+
JoinWebinarError: {
|
|
548
|
+
NAME: 'JoinWebinarError',
|
|
549
|
+
MESSAGE: 'An error occurred while the join webinar.',
|
|
535
550
|
CODE: 16,
|
|
536
551
|
},
|
|
552
|
+
MULTISTREAM_NOT_SUPPORTED: {
|
|
553
|
+
NAME: 'MultistreamNotSupported',
|
|
554
|
+
MESSAGE: 'Client asked for multistream backend (Homer), but got something else instead',
|
|
555
|
+
CODE: 17,
|
|
556
|
+
},
|
|
557
|
+
JoinForbiddenError: {
|
|
558
|
+
NAME: 'JoinForbiddenError',
|
|
559
|
+
MESSAGE: 'Meeting join forbidden.',
|
|
560
|
+
CODE: 18,
|
|
561
|
+
},
|
|
537
562
|
};
|
|
538
563
|
|
|
539
564
|
export const FLOOR_ACTION = {
|
|
@@ -709,6 +734,7 @@ export const LOCUSINFO = {
|
|
|
709
734
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
710
735
|
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
711
736
|
SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
|
|
737
|
+
SELF_MEETING_BRB_CHANGED: 'SELF_MEETING_BRB_CHANGED',
|
|
712
738
|
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
713
739
|
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
714
740
|
LINKS_RESOURCES: 'LINKS_RESOURCES',
|
|
@@ -954,6 +980,7 @@ export const DISPLAY_HINTS = {
|
|
|
954
980
|
DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
|
|
955
981
|
DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
|
|
956
982
|
DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
|
|
983
|
+
DISABLE_BREAKOUT_START: 'DISABLE_BREAKOUT_START',
|
|
957
984
|
|
|
958
985
|
// participants list
|
|
959
986
|
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
@@ -1310,6 +1337,10 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1310
1337
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1311
1338
|
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1312
1339
|
WEBINAR_REGISTRATION: 'WEBINAR_REGISTRATION', // webinar need registration
|
|
1340
|
+
NEED_JOIN_WITH_WEBCAST: 'NEED_JOIN_WITH_WEBCAST', // webinar need using webcast join
|
|
1341
|
+
WEBINAR_NEED_REGISTRATIONID: 'WEBINAR_NEED_REGISTRATIONID', // webinar need registrationID
|
|
1342
|
+
NOT_REACH_JBH: 'NOT_REACH_JBH', // Meeting is not allow to access since not reach JBH (join before host) time
|
|
1343
|
+
JOIN_FORBIDDEN: 'JOIN_FORBIDDEN', // meeting is not allow join
|
|
1313
1344
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1314
1345
|
};
|
|
1315
1346
|
|
|
@@ -1369,3 +1400,12 @@ export const DESTINATION_TYPE = {
|
|
|
1369
1400
|
} as const;
|
|
1370
1401
|
|
|
1371
1402
|
export type DESTINATION_TYPE = Enum<typeof DESTINATION_TYPE>;
|
|
1403
|
+
|
|
1404
|
+
export const INITIAL_REGISTRATION_STATUS = {
|
|
1405
|
+
fetchWebexSite: false,
|
|
1406
|
+
getGeoHint: false,
|
|
1407
|
+
startReachability: false,
|
|
1408
|
+
deviceRegister: false,
|
|
1409
|
+
mercuryConnect: false,
|
|
1410
|
+
checkH264Support: false,
|
|
1411
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ import CaptchaError from './common/errors/captcha-error';
|
|
|
8
8
|
import IntentToJoinError from './common/errors/intent-to-join';
|
|
9
9
|
import PasswordError from './common/errors/password-error';
|
|
10
10
|
import PermissionError from './common/errors/permission';
|
|
11
|
-
import
|
|
11
|
+
import JoinWebinarError from './common/errors/join-webinar-error';
|
|
12
12
|
import {
|
|
13
13
|
ReclaimHostEmptyWrongKeyError,
|
|
14
14
|
ReclaimHostIsHostAlreadyError,
|
|
@@ -27,7 +27,6 @@ registerPlugin('meetings', Meetings, {
|
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
export {
|
|
30
|
-
getDevices,
|
|
31
30
|
LocalStream,
|
|
32
31
|
LocalDisplayStream,
|
|
33
32
|
LocalSystemAudioStream,
|
|
@@ -41,12 +40,15 @@ export {
|
|
|
41
40
|
LocalCameraStream,
|
|
42
41
|
createMicrophoneStream,
|
|
43
42
|
createCameraStream,
|
|
43
|
+
createCameraAndMicrophoneStreams,
|
|
44
44
|
createDisplayStream,
|
|
45
45
|
createDisplayStreamWithAudio,
|
|
46
|
+
createDisplayMedia,
|
|
46
47
|
FacingMode,
|
|
47
48
|
DisplaySurface,
|
|
48
49
|
PresetCameraConstraints,
|
|
49
50
|
type VideoContentHint,
|
|
51
|
+
type StreamState,
|
|
50
52
|
} from '@webex/media-helpers';
|
|
51
53
|
|
|
52
54
|
export default Meetings;
|
|
@@ -69,7 +71,7 @@ export {
|
|
|
69
71
|
ReclaimHostEmptyWrongKeyError,
|
|
70
72
|
Meeting,
|
|
71
73
|
MeetingInfoUtil,
|
|
72
|
-
|
|
74
|
+
JoinWebinarError,
|
|
73
75
|
};
|
|
74
76
|
|
|
75
77
|
export {RemoteMedia} from './multistream/remoteMedia';
|
package/src/locus-info/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
_SIP_BRIDGE_,
|
|
11
11
|
MEETING_STATE,
|
|
12
12
|
_MEETING_,
|
|
13
|
+
_SPACE_SHARE_,
|
|
13
14
|
LOCUSINFO,
|
|
14
15
|
LOCUS,
|
|
15
16
|
_LEFT_,
|
|
@@ -489,7 +490,8 @@ export default class LocusInfo extends EventsScope {
|
|
|
489
490
|
isMeetingActive() {
|
|
490
491
|
if (
|
|
491
492
|
this.parsedLocus.fullState.type === _CALL_ ||
|
|
492
|
-
this.parsedLocus.fullState.type === _SIP_BRIDGE_
|
|
493
|
+
this.parsedLocus.fullState.type === _SIP_BRIDGE_ ||
|
|
494
|
+
this.parsedLocus.fullState.type === _SPACE_SHARE_
|
|
493
495
|
) {
|
|
494
496
|
// @ts-ignore
|
|
495
497
|
const partner = this.getLocusPartner(this.participants, this.self);
|
|
@@ -1283,12 +1285,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
1283
1285
|
/**
|
|
1284
1286
|
* handles when the locus.mediaShares is updated
|
|
1285
1287
|
* @param {Object} mediaShares the locus.mediaShares property
|
|
1288
|
+
* @param {boolean} forceUpdate force to update the mediaShares
|
|
1286
1289
|
* @returns {undefined}
|
|
1287
1290
|
* @memberof LocusInfo
|
|
1288
1291
|
* emits internal event locus_info_update_media_shares
|
|
1289
1292
|
*/
|
|
1290
|
-
updateMediaShares(mediaShares: object) {
|
|
1291
|
-
if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {
|
|
1293
|
+
updateMediaShares(mediaShares: object, forceUpdate = false) {
|
|
1294
|
+
if (mediaShares && (!isEqual(this.mediaShares, mediaShares) || forceUpdate)) {
|
|
1292
1295
|
const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);
|
|
1293
1296
|
|
|
1294
1297
|
this.updateMeeting(parsedMediaShares.current);
|
|
@@ -1303,6 +1306,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1303
1306
|
{
|
|
1304
1307
|
current: parsedMediaShares.current,
|
|
1305
1308
|
previous: parsedMediaShares.previous,
|
|
1309
|
+
forceUpdate,
|
|
1306
1310
|
}
|
|
1307
1311
|
);
|
|
1308
1312
|
}
|
|
@@ -1393,6 +1397,19 @@ export default class LocusInfo extends EventsScope {
|
|
|
1393
1397
|
);
|
|
1394
1398
|
}
|
|
1395
1399
|
|
|
1400
|
+
if (parsedSelves.updates.brbChanged) {
|
|
1401
|
+
this.emitScoped(
|
|
1402
|
+
{
|
|
1403
|
+
file: 'locus-info',
|
|
1404
|
+
function: 'updateSelf',
|
|
1405
|
+
},
|
|
1406
|
+
LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED,
|
|
1407
|
+
{
|
|
1408
|
+
brb: parsedSelves.current.brb,
|
|
1409
|
+
}
|
|
1410
|
+
);
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1396
1413
|
if (parsedSelves.updates.interpretationChanged) {
|
|
1397
1414
|
this.emitScoped(
|
|
1398
1415
|
{
|
|
@@ -66,6 +66,7 @@ SelfUtils.parse = (self: any, deviceId: string) => {
|
|
|
66
66
|
breakoutSessions: SelfUtils.getBreakoutSessions(self),
|
|
67
67
|
breakout: SelfUtils.getBreakout(self),
|
|
68
68
|
interpretation: SelfUtils.getInterpretation(self),
|
|
69
|
+
brb: SelfUtils.getBrb(self),
|
|
69
70
|
};
|
|
70
71
|
}
|
|
71
72
|
|
|
@@ -75,6 +76,7 @@ SelfUtils.parse = (self: any, deviceId: string) => {
|
|
|
75
76
|
SelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;
|
|
76
77
|
SelfUtils.getBreakout = (self) => self?.controls?.breakout;
|
|
77
78
|
SelfUtils.getInterpretation = (self) => self?.controls?.interpretation;
|
|
79
|
+
SelfUtils.getBrb = (self) => self?.controls?.brb;
|
|
78
80
|
|
|
79
81
|
SelfUtils.getLayout = (self) =>
|
|
80
82
|
Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;
|
|
@@ -97,7 +99,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
|
|
|
97
99
|
const current = newSelf && SelfUtils.parse(newSelf, deviceId);
|
|
98
100
|
const updates: any = {};
|
|
99
101
|
|
|
100
|
-
updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
|
|
102
|
+
updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(previous, current);
|
|
101
103
|
updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
|
|
102
104
|
updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
|
|
103
105
|
updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
|
|
@@ -128,6 +130,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
|
|
|
128
130
|
updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;
|
|
129
131
|
updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
|
|
130
132
|
updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);
|
|
133
|
+
updates.brbChanged = SelfUtils.brbChanged(previous, current);
|
|
131
134
|
|
|
132
135
|
return {
|
|
133
136
|
previous,
|
|
@@ -159,6 +162,9 @@ SelfUtils.breakoutsChanged = (previous, current) =>
|
|
|
159
162
|
SelfUtils.interpretationChanged = (previous, current) =>
|
|
160
163
|
!isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation;
|
|
161
164
|
|
|
165
|
+
SelfUtils.brbChanged = (previous, current) =>
|
|
166
|
+
!isEqual(previous?.brb, current?.brb) && current?.brb !== undefined;
|
|
167
|
+
|
|
162
168
|
SelfUtils.isMediaInactive = (previous, current) => {
|
|
163
169
|
if (
|
|
164
170
|
previous &&
|
|
@@ -324,16 +330,23 @@ SelfUtils.isLocusUserAdmitted = (check: any) =>
|
|
|
324
330
|
check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;
|
|
325
331
|
|
|
326
332
|
/**
|
|
327
|
-
* @param {Object}
|
|
333
|
+
* @param {Object} oldSelf
|
|
334
|
+
* @param {Object} changedSelf
|
|
328
335
|
* @returns {Boolean}
|
|
329
336
|
* @throws {Error} when self is undefined
|
|
330
337
|
*/
|
|
331
|
-
SelfUtils.isUserUnadmitted = (
|
|
332
|
-
if (!
|
|
333
|
-
throw new ParameterError(
|
|
338
|
+
SelfUtils.isUserUnadmitted = (oldSelf: object, changedSelf: object) => {
|
|
339
|
+
if (!changedSelf) {
|
|
340
|
+
throw new ParameterError(
|
|
341
|
+
'changedSelf must be defined to determine if self is unadmitted as guest.'
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
if (SelfUtils.isLocusUserUnadmitted(oldSelf)) {
|
|
346
|
+
return false;
|
|
334
347
|
}
|
|
335
348
|
|
|
336
|
-
return SelfUtils.isLocusUserUnadmitted(
|
|
349
|
+
return SelfUtils.isLocusUserUnadmitted(changedSelf);
|
|
337
350
|
};
|
|
338
351
|
|
|
339
352
|
SelfUtils.moderatorChanged = (oldSelf, changedSelf) => {
|
|
@@ -47,6 +47,7 @@ interface IInMeetingActions {
|
|
|
47
47
|
waitingForOthersToJoin?: boolean;
|
|
48
48
|
canSendReactions?: boolean;
|
|
49
49
|
canManageBreakout?: boolean;
|
|
50
|
+
canStartBreakout?: boolean;
|
|
50
51
|
canBroadcastMessageToBreakout?: boolean;
|
|
51
52
|
canAdmitLobbyToBreakout?: boolean;
|
|
52
53
|
isBreakoutPreassignmentsEnabled?: boolean;
|
|
@@ -180,6 +181,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
180
181
|
|
|
181
182
|
canManageBreakout = null;
|
|
182
183
|
|
|
184
|
+
canStartBreakout = null;
|
|
185
|
+
|
|
183
186
|
canBroadcastMessageToBreakout = null;
|
|
184
187
|
|
|
185
188
|
canAdmitLobbyToBreakout = null;
|
|
@@ -324,6 +327,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
324
327
|
waitingForOthersToJoin: this.waitingForOthersToJoin,
|
|
325
328
|
canSendReactions: this.canSendReactions,
|
|
326
329
|
canManageBreakout: this.canManageBreakout,
|
|
330
|
+
canStartBreakout: this.canStartBreakout,
|
|
327
331
|
canBroadcastMessageToBreakout: this.canBroadcastMessageToBreakout,
|
|
328
332
|
canAdmitLobbyToBreakout: this.canAdmitLobbyToBreakout,
|
|
329
333
|
isBreakoutPreassignmentsEnabled: this.isBreakoutPreassignmentsEnabled,
|