@webex/plugin-meetings 3.7.0-next.5 → 3.7.0-next.51
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/{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 +40 -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 +4 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +944 -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 +29 -17
- 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 +106 -55
- 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 +1 -1
- 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/recording-controller/enums.js +8 -4
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +18 -9
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +13 -9
- package/dist/recording-controller/util.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/{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 +34 -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 +4 -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 +4 -4
- package/dist/types/meetings/index.d.ts +19 -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 +1 -1
- package/dist/types/multistream/sendSlotManager.d.ts +8 -1
- package/dist/types/recording-controller/enums.d.ts +5 -2
- package/dist/types/recording-controller/index.d.ts +1 -0
- package/dist/types/recording-controller/util.d.ts +2 -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-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 +39 -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 +8 -0
- package/src/meeting/index.ts +246 -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 +23 -11
- package/src/meeting-info/utilv2.ts +3 -1
- package/src/meetings/index.ts +77 -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 +1 -1
- package/src/multistream/remoteMedia.ts +28 -15
- package/src/multistream/sendSlotManager.ts +31 -0
- package/src/recording-controller/enums.ts +5 -2
- package/src/recording-controller/index.ts +17 -4
- package/src/recording-controller/util.ts +20 -5
- 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 +4 -0
- package/test/unit/spec/meeting/index.js +689 -105
- package/test/unit/spec/meeting/utils.js +22 -19
- package/test/unit/spec/meeting-info/meetinginfov2.js +9 -4
- package/test/unit/spec/meeting-info/utilv2.js +17 -0
- package/test/unit/spec/meetings/index.js +153 -18
- 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/recording-controller/index.js +61 -5
- package/test/unit/spec/recording-controller/util.js +39 -3
- 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,8 @@ 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];
|
|
201
206
|
|
|
202
207
|
// ******************** REGEX **********************
|
|
203
208
|
// Please alphabetize
|
|
@@ -303,6 +308,7 @@ export const EVENT_TRIGGERS = {
|
|
|
303
308
|
MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',
|
|
304
309
|
MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
|
|
305
310
|
MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',
|
|
311
|
+
MEETING_SELF_BRB_UPDATE: 'meeting:self:brbUpdate',
|
|
306
312
|
MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
|
|
307
313
|
MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
|
|
308
314
|
MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
|
|
@@ -325,6 +331,7 @@ export const EVENT_TRIGGERS = {
|
|
|
325
331
|
MEETING_RECONNECTION_FAILURE: 'meeting:reconnectionFailure',
|
|
326
332
|
MEETING_UNLOCKED: 'meeting:unlocked',
|
|
327
333
|
MEETING_LOCKED: 'meeting:locked',
|
|
334
|
+
MEETING_RESOURCE_LINKS_UPDATE: 'meeting:resourceLinks:update',
|
|
328
335
|
MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',
|
|
329
336
|
MEETING_INFO_UPDATED: 'meeting:meetingInfoUpdated',
|
|
330
337
|
MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',
|
|
@@ -383,6 +390,13 @@ export const EVENT_TYPES = {
|
|
|
383
390
|
ERROR: 'error',
|
|
384
391
|
};
|
|
385
392
|
|
|
393
|
+
export const HEADERS = {
|
|
394
|
+
CONTENT_TYPE: 'Content-Type',
|
|
395
|
+
CONTENT_TYPE_VALUE: {
|
|
396
|
+
APPLICATION_JSON: 'application/json',
|
|
397
|
+
},
|
|
398
|
+
};
|
|
399
|
+
|
|
386
400
|
// Handles the reason when meeting gets destroyed
|
|
387
401
|
// host removed you from the meeting
|
|
388
402
|
// You are the host and you left the meeting
|
|
@@ -529,11 +543,16 @@ export const ERROR_DICTIONARY = {
|
|
|
529
543
|
'Reconnection was not started, because there is one already in progress or reconnections are disabled in config.',
|
|
530
544
|
CODE: 15,
|
|
531
545
|
},
|
|
532
|
-
|
|
533
|
-
NAME: '
|
|
534
|
-
MESSAGE: 'An error occurred while the webinar
|
|
546
|
+
JoinWebinarError: {
|
|
547
|
+
NAME: 'JoinWebinarError',
|
|
548
|
+
MESSAGE: 'An error occurred while the join webinar.',
|
|
535
549
|
CODE: 16,
|
|
536
550
|
},
|
|
551
|
+
MULTISTREAM_NOT_SUPPORTED: {
|
|
552
|
+
NAME: 'MultistreamNotSupported',
|
|
553
|
+
MESSAGE: 'Client asked for multistream backend (Homer), but got something else instead',
|
|
554
|
+
CODE: 17,
|
|
555
|
+
},
|
|
537
556
|
};
|
|
538
557
|
|
|
539
558
|
export const FLOOR_ACTION = {
|
|
@@ -709,6 +728,7 @@ export const LOCUSINFO = {
|
|
|
709
728
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
710
729
|
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
711
730
|
SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
|
|
731
|
+
SELF_MEETING_BRB_CHANGED: 'SELF_MEETING_BRB_CHANGED',
|
|
712
732
|
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
713
733
|
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
714
734
|
LINKS_RESOURCES: 'LINKS_RESOURCES',
|
|
@@ -904,6 +924,10 @@ export const DISPLAY_HINTS = {
|
|
|
904
924
|
RECORDING_CONTROL_PAUSE: 'RECORDING_CONTROL_PAUSE',
|
|
905
925
|
RECORDING_CONTROL_STOP: 'RECORDING_CONTROL_STOP',
|
|
906
926
|
RECORDING_CONTROL_RESUME: 'RECORDING_CONTROL_RESUME',
|
|
927
|
+
PREMISE_RECORDING_CONTROL_START: 'PREMISE_RECORDING_CONTROL_START',
|
|
928
|
+
PREMISE_RECORDING_CONTROL_PAUSE: 'PREMISE_RECORDING_CONTROL_PAUSE',
|
|
929
|
+
PREMISE_RECORDING_CONTROL_STOP: 'PREMISE_RECORDING_CONTROL_STOP',
|
|
930
|
+
PREMISE_RECORDING_CONTROL_RESUME: 'PREMISE_RECORDING_CONTROL_RESUME',
|
|
907
931
|
LOCK_CONTROL_UNLOCK: 'LOCK_CONTROL_UNLOCK',
|
|
908
932
|
LOCK_CONTROL_LOCK: 'LOCK_CONTROL_LOCK',
|
|
909
933
|
LOCK_STATUS_LOCKED: 'LOCK_STATUS_LOCKED',
|
|
@@ -950,6 +974,7 @@ export const DISPLAY_HINTS = {
|
|
|
950
974
|
DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
|
|
951
975
|
DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
|
|
952
976
|
DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
|
|
977
|
+
DISABLE_BREAKOUT_START: 'DISABLE_BREAKOUT_START',
|
|
953
978
|
|
|
954
979
|
// participants list
|
|
955
980
|
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
@@ -1306,6 +1331,8 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1306
1331
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1307
1332
|
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1308
1333
|
WEBINAR_REGISTRATION: 'WEBINAR_REGISTRATION', // webinar need registration
|
|
1334
|
+
NEED_JOIN_WITH_WEBCAST: 'NEED_JOIN_WITH_WEBCAST', // webinar need using webcast join
|
|
1335
|
+
WEBINAR_NEED_REGISTRATIONID: 'WEBINAR_NEED_REGISTRATIONID', // webinar need registrationID
|
|
1309
1336
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1310
1337
|
};
|
|
1311
1338
|
|
|
@@ -1365,3 +1392,12 @@ export const DESTINATION_TYPE = {
|
|
|
1365
1392
|
} as const;
|
|
1366
1393
|
|
|
1367
1394
|
export type DESTINATION_TYPE = Enum<typeof DESTINATION_TYPE>;
|
|
1395
|
+
|
|
1396
|
+
export const INITIAL_REGISTRATION_STATUS = {
|
|
1397
|
+
fetchWebexSite: false,
|
|
1398
|
+
getGeoHint: false,
|
|
1399
|
+
startReachability: false,
|
|
1400
|
+
deviceRegister: false,
|
|
1401
|
+
mercuryConnect: false,
|
|
1402
|
+
checkH264Support: false,
|
|
1403
|
+
};
|
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) => {
|
|
@@ -26,6 +26,7 @@ interface IInMeetingActions {
|
|
|
26
26
|
canStartRecording?: boolean;
|
|
27
27
|
canPauseRecording?: boolean;
|
|
28
28
|
canResumeRecording?: boolean;
|
|
29
|
+
isPremiseRecordingEnabled?: boolean;
|
|
29
30
|
canStopRecording?: boolean;
|
|
30
31
|
canRaiseHand?: boolean;
|
|
31
32
|
canLowerAllHands?: boolean;
|
|
@@ -46,6 +47,7 @@ interface IInMeetingActions {
|
|
|
46
47
|
waitingForOthersToJoin?: boolean;
|
|
47
48
|
canSendReactions?: boolean;
|
|
48
49
|
canManageBreakout?: boolean;
|
|
50
|
+
canStartBreakout?: boolean;
|
|
49
51
|
canBroadcastMessageToBreakout?: boolean;
|
|
50
52
|
canAdmitLobbyToBreakout?: boolean;
|
|
51
53
|
isBreakoutPreassignmentsEnabled?: boolean;
|
|
@@ -121,6 +123,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
121
123
|
|
|
122
124
|
canResumeRecording = null;
|
|
123
125
|
|
|
126
|
+
isPremiseRecordingEnabled = null;
|
|
127
|
+
|
|
124
128
|
canStopRecording = null;
|
|
125
129
|
|
|
126
130
|
canSetMuteOnEntry = null;
|
|
@@ -177,6 +181,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
177
181
|
|
|
178
182
|
canManageBreakout = null;
|
|
179
183
|
|
|
184
|
+
canStartBreakout = null;
|
|
185
|
+
|
|
180
186
|
canBroadcastMessageToBreakout = null;
|
|
181
187
|
|
|
182
188
|
canAdmitLobbyToBreakout = null;
|
|
@@ -301,6 +307,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
301
307
|
canPauseRecording: this.canPauseRecording,
|
|
302
308
|
canResumeRecording: this.canResumeRecording,
|
|
303
309
|
canStopRecording: this.canStopRecording,
|
|
310
|
+
isPremiseRecordingEnabled: this.isPremiseRecordingEnabled,
|
|
304
311
|
canRaiseHand: this.canRaiseHand,
|
|
305
312
|
canLowerAllHands: this.canLowerAllHands,
|
|
306
313
|
canLowerSomeoneElsesHand: this.canLowerSomeoneElsesHand,
|
|
@@ -320,6 +327,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
320
327
|
waitingForOthersToJoin: this.waitingForOthersToJoin,
|
|
321
328
|
canSendReactions: this.canSendReactions,
|
|
322
329
|
canManageBreakout: this.canManageBreakout,
|
|
330
|
+
canStartBreakout: this.canStartBreakout,
|
|
323
331
|
canBroadcastMessageToBreakout: this.canBroadcastMessageToBreakout,
|
|
324
332
|
canAdmitLobbyToBreakout: this.canAdmitLobbyToBreakout,
|
|
325
333
|
isBreakoutPreassignmentsEnabled: this.isBreakoutPreassignmentsEnabled,
|