@webex/plugin-meetings 3.8.0-next.70 → 3.8.0-next.72
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 +70 -6
- package/dist/breakouts/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 +12 -11
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +53 -26
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/types/locus-info/index.d.ts +2 -3
- package/dist/types/locus-info/selfUtils.d.ts +19 -50
- package/dist/webinar/index.js +1 -1
- package/package.json +3 -3
- package/src/breakouts/index.ts +69 -0
- package/src/locus-info/index.ts +15 -11
- package/src/locus-info/selfUtils.ts +73 -23
- package/test/unit/spec/breakouts/index.ts +167 -95
- package/test/unit/spec/locus-info/index.js +113 -73
- package/test/unit/spec/locus-info/selfUtils.js +98 -24
@@ -18,14 +18,19 @@ var SelfUtils = {
|
|
18
18
|
* parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id
|
19
19
|
* @param {Object} self
|
20
20
|
* @param {String} deviceId
|
21
|
+
* @param {Array} participants
|
21
22
|
* @returns {undefined}
|
22
23
|
*/
|
23
|
-
parse: function parse(self, deviceId) {
|
24
|
+
parse: function parse(self, deviceId, participants) {
|
24
25
|
if (self) {
|
25
|
-
var _joinedWith$intent;
|
26
|
+
var _joinedWith$intent, _participants$find;
|
26
27
|
var joinedWith = self.devices.find(function (device) {
|
27
28
|
return deviceId === device.url;
|
28
29
|
});
|
30
|
+
var pairedWith = (joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent = joinedWith.intent) === null || _joinedWith$intent === void 0 ? void 0 : _joinedWith$intent.type) === _constants._OBSERVE_ && (participants === null || participants === void 0 ? void 0 : (_participants$find = participants.find(function (participant) {
|
31
|
+
var _joinedWith$intent2;
|
32
|
+
return participant.url === (joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent2 = joinedWith.intent) === null || _joinedWith$intent2 === void 0 ? void 0 : _joinedWith$intent2.associatedWith);
|
33
|
+
})) === null || _participants$find === void 0 ? void 0 : _participants$find.devices[0]);
|
29
34
|
var pstnDevices = self.devices.filter(function (device) {
|
30
35
|
return PSTN_DEVICE_TYPE === device.deviceType;
|
31
36
|
});
|
@@ -48,6 +53,7 @@ var SelfUtils = {
|
|
48
53
|
// TODO: give a proper name . With same device as login or different login`
|
49
54
|
// Some times we might have joined with both mobile and web
|
50
55
|
joinedWith: joinedWith,
|
56
|
+
pairedWith: pairedWith,
|
51
57
|
pstnDevices: pstnDevices,
|
52
58
|
// current media stats is for the current device who has joined
|
53
59
|
currentMediaStatus: SelfUtils.getMediaStatus(joinedWith === null || joinedWith === void 0 ? void 0 : joinedWith.mediaSessions),
|
@@ -58,7 +64,7 @@ var SelfUtils = {
|
|
58
64
|
selfUrl: self.url,
|
59
65
|
removed: self.removed,
|
60
66
|
roles: SelfUtils.getRoles(self),
|
61
|
-
isUserUnadmitted:
|
67
|
+
isUserUnadmitted: SelfUtils.isLocusUserUnadmitted(self === null || self === void 0 ? void 0 : self.state, joinedWith, pairedWith),
|
62
68
|
layout: SelfUtils.getLayout(self),
|
63
69
|
canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),
|
64
70
|
isSharingBlocked: SelfUtils.isSharingBlocked(self),
|
@@ -105,12 +111,12 @@ var SelfUtils = {
|
|
105
111
|
isSharingBlocked: function isSharingBlocked(self) {
|
106
112
|
return !!(self !== null && self !== void 0 && self.isSharingBlocked);
|
107
113
|
},
|
108
|
-
getSelves: function getSelves(
|
109
|
-
var previous =
|
110
|
-
var current = newSelf && SelfUtils.parse(newSelf, deviceId);
|
114
|
+
getSelves: function getSelves(oldParsedSelf, newSelf, deviceId, participants) {
|
115
|
+
var previous = oldParsedSelf;
|
116
|
+
var current = newSelf && SelfUtils.parse(newSelf, deviceId, participants);
|
111
117
|
var updates = {};
|
112
|
-
updates.
|
113
|
-
updates.
|
118
|
+
updates.hasUserEnteredLobby = SelfUtils.hasUserEnteredLobby(previous, current);
|
119
|
+
updates.hasUserBeenAdmitted = SelfUtils.hasUserBeenAdmitted(previous, current);
|
114
120
|
updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
|
115
121
|
updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
|
116
122
|
updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(previous, current);
|
@@ -261,35 +267,54 @@ var SelfUtils = {
|
|
261
267
|
return oldSelf.joinedWith && oldSelf.joinedWith.state === _constants._JOINED_ && changedSelf.joinedWith && changedSelf.joinedWith.state === _constants._LEFT_ && (changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.INACTIVE || changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.MEDIA_RELEASED);
|
262
268
|
},
|
263
269
|
/**
|
264
|
-
* @param {
|
265
|
-
* @
|
270
|
+
* @param {String | undefined} state meeting state
|
271
|
+
* @param {any} joinedWith device that user has joined with
|
272
|
+
* @param {any} pairedWith device that user is paired with
|
273
|
+
* @returns {Boolean | undefined} true if user is in lobby, false if not, undefined if it cannot be determined
|
266
274
|
*/
|
267
|
-
isLocusUserUnadmitted: function isLocusUserUnadmitted(
|
268
|
-
var
|
269
|
-
|
275
|
+
isLocusUserUnadmitted: function isLocusUserUnadmitted(state, joinedWith, pairedWith) {
|
276
|
+
var _joinedWith$intent3, _joinedWith$intent4;
|
277
|
+
if (state === undefined) {
|
278
|
+
return undefined;
|
279
|
+
}
|
280
|
+
if ((joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent3 = joinedWith.intent) === null || _joinedWith$intent3 === void 0 ? void 0 : _joinedWith$intent3.type) === _constants._OBSERVE_ && pairedWith) {
|
281
|
+
var _pairedWith$intent;
|
282
|
+
// we are paired with a device, so need to check the lobby state for that device
|
283
|
+
return ((_pairedWith$intent = pairedWith.intent) === null || _pairedWith$intent === void 0 ? void 0 : _pairedWith$intent.type) === _constants._WAIT_ && state === _constants._IDLE_;
|
284
|
+
}
|
285
|
+
return (joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent4 = joinedWith.intent) === null || _joinedWith$intent4 === void 0 ? void 0 : _joinedWith$intent4.type) === _constants._WAIT_ && state === _constants._IDLE_;
|
270
286
|
},
|
271
287
|
/**
|
272
|
-
* @param {
|
288
|
+
* @param {String | undefined} state meeting state
|
289
|
+
* @param {any} joinedWith device that user has joined with
|
290
|
+
* @param {any} pairedWith device that user is paired with
|
273
291
|
* @returns {Boolean}
|
274
292
|
*/
|
275
|
-
isLocusUserAdmitted: function isLocusUserAdmitted(
|
276
|
-
var
|
277
|
-
|
293
|
+
isLocusUserAdmitted: function isLocusUserAdmitted(state, joinedWith, pairedWith) {
|
294
|
+
var _joinedWith$intent5, _joinedWith$intent6;
|
295
|
+
if (state === undefined) {
|
296
|
+
return undefined;
|
297
|
+
}
|
298
|
+
if ((joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent5 = joinedWith.intent) === null || _joinedWith$intent5 === void 0 ? void 0 : _joinedWith$intent5.type) === _constants._OBSERVE_ && pairedWith) {
|
299
|
+
var _pairedWith$intent2;
|
300
|
+
// we are paired with a device, so need to check the lobby state for that device
|
301
|
+
return ((_pairedWith$intent2 = pairedWith.intent) === null || _pairedWith$intent2 === void 0 ? void 0 : _pairedWith$intent2.type) !== _constants._WAIT_ && state === _constants._JOINED_;
|
302
|
+
}
|
303
|
+
return (joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent6 = joinedWith.intent) === null || _joinedWith$intent6 === void 0 ? void 0 : _joinedWith$intent6.type) !== _constants._WAIT_ && state === _constants._JOINED_;
|
278
304
|
},
|
279
305
|
/**
|
280
306
|
* @param {Object} oldSelf
|
281
307
|
* @param {Object} changedSelf
|
282
|
-
* @returns {Boolean}
|
308
|
+
* @returns {Boolean} true if user has just been placed in the lobby
|
283
309
|
* @throws {Error} when self is undefined
|
284
310
|
*/
|
285
|
-
|
311
|
+
hasUserEnteredLobby: function hasUserEnteredLobby(oldSelf, changedSelf) {
|
286
312
|
if (!changedSelf) {
|
287
313
|
throw new _parameter.default('changedSelf must be defined to determine if self is unadmitted as guest.');
|
288
314
|
}
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
return SelfUtils.isLocusUserUnadmitted(changedSelf);
|
315
|
+
var wasInLobby = SelfUtils.isLocusUserUnadmitted(oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.state, oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.joinedWith, oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.pairedWith);
|
316
|
+
var isInLobby = SelfUtils.isLocusUserUnadmitted(changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.state, changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.joinedWith, changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.pairedWith);
|
317
|
+
return !wasInLobby && isInLobby;
|
293
318
|
},
|
294
319
|
moderatorChanged: function moderatorChanged(oldSelf, changedSelf) {
|
295
320
|
if (!oldSelf) {
|
@@ -326,10 +351,10 @@ var SelfUtils = {
|
|
326
351
|
/**
|
327
352
|
* @param {Object} oldSelf
|
328
353
|
* @param {Object} changedSelf
|
329
|
-
* @returns {Boolean}
|
354
|
+
* @returns {Boolean} true if the user has just been admitted from lobby into the meeting
|
330
355
|
* @throws {Error} if changed self was undefined
|
331
356
|
*/
|
332
|
-
|
357
|
+
hasUserBeenAdmitted: function hasUserBeenAdmitted(oldSelf, changedSelf) {
|
333
358
|
if (!oldSelf) {
|
334
359
|
// if there was no previous locus, it couldn't have been admitted yet
|
335
360
|
return false;
|
@@ -337,7 +362,9 @@ var SelfUtils = {
|
|
337
362
|
if (!changedSelf) {
|
338
363
|
throw new _parameter.default('New self must be defined to determine if self transitioned to admitted as guest.');
|
339
364
|
}
|
340
|
-
|
365
|
+
var wasInLobby = SelfUtils.isLocusUserUnadmitted(oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.state, oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.joinedWith, oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.pairedWith);
|
366
|
+
var isAdmitted = SelfUtils.isLocusUserAdmitted(changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.state, changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.joinedWith, changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.pairedWith);
|
367
|
+
return wasInLobby && isAdmitted && isAdmitted !== undefined;
|
341
368
|
},
|
342
369
|
videoMutedByOthersChanged: function videoMutedByOthersChanged(oldSelf, changedSelf) {
|
343
370
|
if (!changedSelf) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_lodash","require","_constants","_parameter","_interopRequireDefault","PSTN_DEVICE_TYPE","SelfUtils","parse","self","deviceId","_joinedWith$intent","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequestedTimeStamp","getLocalAudioUnmuteRequestedTimeStamp","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","interpretation","getInterpretation","brb","getBrb","_self$controls","_self$controls$breako","controls","sessions","_self$controls2","_self$controls3","_self$controls4","_self$controls5","_isArray","default","layouts","undefined","_self$controls6","_self$controls6$role","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isRolesChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","interpretationChanged","brbChanged","isJoined","_JOINED_","isEqual","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls7","_self$controls7$audio","requestedToUnmute","_self$controls8","_self$controls8$audio","Date","lastModifiedRequestedToUnmute","disallowUnmute","_self$controls9","_self$controls9$audio","audioStatus","videoStatus","slides","videoSlidesStatus","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","_check$joinedWith","_check$joinedWith$int","isLocusUserAdmitted","_check$joinedWith2","_check$joinedWith2$in","ParameterError","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","_joinedDevice$replace","breakoutMoveId","_default","exports"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\nconst SelfUtils = {\n /**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\n parse: (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n interpretation: SelfUtils.getInterpretation(self),\n brb: SelfUtils.getBrb(self),\n };\n }\n\n return null;\n },\n\n getBreakoutSessions: (self) => self?.controls?.breakout?.sessions,\n getBreakout: (self) => self?.controls?.breakout,\n getInterpretation: (self) => self?.controls?.interpretation,\n getBrb: (self) => self?.controls?.brb,\n\n getLayout: (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined,\n\n getRoles: (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []),\n\n canNotViewTheParticipantList: (self) => !!self?.canNotViewTheParticipantList,\n\n isSharingBlocked: (self) => !!self?.isSharingBlocked,\n\n getSelves: (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(previous, current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);\n updates.brbChanged = SelfUtils.brbChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n },\n\n /**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\n isJoined: (self: any) => self?.state === _JOINED_,\n\n /**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\n layoutChanged: (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout,\n\n breakoutsChanged: (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout,\n\n interpretationChanged: (previous, current) =>\n !isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation,\n\n brbChanged: (previous, current) =>\n !isEqual(previous?.brb, current?.brb) && current?.brb !== undefined,\n\n isMediaInactive: (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n },\n\n getLastModified: (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n },\n\n getModifiedBy: (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n },\n\n /**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\n getSelfIdentity: (self: any) => {\n if (!self || !self.person) {\n return null;\n }\n\n return self.person.id;\n },\n\n /**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\n getRemoteVideoMuted: (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n },\n\n /**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\n getRemoteMuted: (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n },\n\n getLocalAudioUnmuteRequested: (self) => !!self?.controls?.audio?.requestedToUnmute,\n\n // requestedToUnmute timestamp\n getLocalAudioUnmuteRequestedTimeStamp: (self) =>\n Date.parse(self?.controls?.audio?.lastModifiedRequestedToUnmute) || 0,\n\n getUnmuteAllowed: (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n },\n\n getLocalAudioUnmuteRequired: (self) => !!self?.controls?.audio?.localAudioUnmuteRequired,\n\n getStatus: (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n }),\n\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\n wasMediaInactiveOrReleased: (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED),\n\n /**\n * @param {Object} check\n * @returns {Boolean}\n */\n isLocusUserUnadmitted: (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_,\n\n /**\n * @param {Object} check\n * @returns {Boolean}\n */\n isLocusUserAdmitted: (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_,\n\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\n isUserUnadmitted: (oldSelf: any, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'changedSelf must be defined to determine if self is unadmitted as guest.'\n );\n }\n\n if (SelfUtils.isLocusUserUnadmitted(oldSelf)) {\n return false;\n }\n\n return SelfUtils.isLocusUserUnadmitted(changedSelf);\n },\n\n moderatorChanged: (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n },\n\n /**\n * determine whether the roles of self is changed or not\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\n isRolesChanged: (oldSelf, changedSelf) => {\n if (!changedSelf) {\n // no new self means no change\n return false;\n }\n\n return !isEqual(oldSelf?.roles, changedSelf?.roles);\n },\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\n isDeviceObserving: (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_,\n\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\n isUserAdmitted: (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n },\n\n videoMutedByOthersChanged: (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n },\n\n mutedByOthersChanged: (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n // there is no need to trigger user update if no one muted user\n if (changedSelf.selfIdentity === changedSelf.modifiedBy) {\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n },\n\n localAudioUnmuteRequestedByServer: (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return (\n changedSelf.localAudioUnmuteRequested &&\n changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp\n );\n },\n\n localAudioUnmuteRequiredByServer: (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n },\n\n /**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\n getSipUrl: (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n },\n\n getMediaStatus: (mediaSessions = []): {audio: any; video: any; share: any} => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n },\n\n getReplacedBreakoutMoveId: (self: any, deviceId: string) => {\n if (self && Array.isArray(self.devices)) {\n const joinedDevice = self.devices.find((device) => deviceId === device.url);\n if (Array.isArray(joinedDevice?.replaces)) {\n return joinedDevice.replaces[0]?.breakoutMoveId;\n }\n }\n\n return null;\n },\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_lodash","require","_constants","_parameter","_interopRequireDefault","PSTN_DEVICE_TYPE","SelfUtils","parse","self","deviceId","participants","_joinedWith$intent","_participants$find","joinedWith","devices","find","device","url","pairedWith","intent","type","_OBSERVE_","participant","_joinedWith$intent2","associatedWith","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequestedTimeStamp","getLocalAudioUnmuteRequestedTimeStamp","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","isLocusUserUnadmitted","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","interpretation","getInterpretation","brb","getBrb","_self$controls","_self$controls$breako","controls","sessions","_self$controls2","_self$controls3","_self$controls4","_self$controls5","_isArray","default","layouts","undefined","_self$controls6","_self$controls6$role","role","reduce","hasRole","push","getSelves","oldParsedSelf","newSelf","previous","current","updates","hasUserEnteredLobby","hasUserBeenAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isRolesChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","interpretationChanged","brbChanged","isJoined","_JOINED_","isEqual","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls7","_self$controls7$audio","requestedToUnmute","_self$controls8","_self$controls8$audio","Date","lastModifiedRequestedToUnmute","disallowUnmute","_self$controls9","_self$controls9$audio","audioStatus","videoStatus","slides","videoSlidesStatus","oldSelf","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","_joinedWith$intent3","_joinedWith$intent4","_pairedWith$intent","_WAIT_","_IDLE_","isLocusUserAdmitted","_joinedWith$intent5","_joinedWith$intent6","_pairedWith$intent2","ParameterError","wasInLobby","isInLobby","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","isAdmitted","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","_joinedDevice$replace","breakoutMoveId","_default","exports"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\nconst SelfUtils = {\n /**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @param {Array} participants\n * @returns {undefined}\n */\n parse: (self: any, deviceId: string, participants: Array<any>) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pairedWith =\n joinedWith?.intent?.type === _OBSERVE_ &&\n participants?.find((participant) => participant.url === joinedWith?.intent?.associatedWith)\n ?.devices[0];\n\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pairedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: SelfUtils.isLocusUserUnadmitted(self?.state, joinedWith, pairedWith),\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n interpretation: SelfUtils.getInterpretation(self),\n brb: SelfUtils.getBrb(self),\n };\n }\n\n return null;\n },\n\n getBreakoutSessions: (self) => self?.controls?.breakout?.sessions,\n getBreakout: (self) => self?.controls?.breakout,\n getInterpretation: (self) => self?.controls?.interpretation,\n getBrb: (self) => self?.controls?.brb,\n\n getLayout: (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined,\n\n getRoles: (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []),\n\n canNotViewTheParticipantList: (self) => !!self?.canNotViewTheParticipantList,\n\n isSharingBlocked: (self) => !!self?.isSharingBlocked,\n\n getSelves: (oldParsedSelf, newSelf, deviceId, participants: Array<any>) => {\n const previous = oldParsedSelf;\n const current = newSelf && SelfUtils.parse(newSelf, deviceId, participants);\n const updates: any = {};\n\n updates.hasUserEnteredLobby = SelfUtils.hasUserEnteredLobby(previous, current);\n updates.hasUserBeenAdmitted = SelfUtils.hasUserBeenAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);\n updates.brbChanged = SelfUtils.brbChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n },\n\n /**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\n isJoined: (self: any) => self?.state === _JOINED_,\n\n /**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\n layoutChanged: (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout,\n\n breakoutsChanged: (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout,\n\n interpretationChanged: (previous, current) =>\n !isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation,\n\n brbChanged: (previous, current) =>\n !isEqual(previous?.brb, current?.brb) && current?.brb !== undefined,\n\n isMediaInactive: (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n },\n\n getLastModified: (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n },\n\n getModifiedBy: (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n },\n\n /**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\n getSelfIdentity: (self: any) => {\n if (!self || !self.person) {\n return null;\n }\n\n return self.person.id;\n },\n\n /**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\n getRemoteVideoMuted: (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n },\n\n /**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\n getRemoteMuted: (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n },\n\n getLocalAudioUnmuteRequested: (self) => !!self?.controls?.audio?.requestedToUnmute,\n\n // requestedToUnmute timestamp\n getLocalAudioUnmuteRequestedTimeStamp: (self) =>\n Date.parse(self?.controls?.audio?.lastModifiedRequestedToUnmute) || 0,\n\n getUnmuteAllowed: (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n },\n\n getLocalAudioUnmuteRequired: (self) => !!self?.controls?.audio?.localAudioUnmuteRequired,\n\n getStatus: (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n }),\n\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\n wasMediaInactiveOrReleased: (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED),\n\n /**\n * @param {String | undefined} state meeting state\n * @param {any} joinedWith device that user has joined with\n * @param {any} pairedWith device that user is paired with\n * @returns {Boolean | undefined} true if user is in lobby, false if not, undefined if it cannot be determined\n */\n isLocusUserUnadmitted: (state?: string, joinedWith?: any, pairedWith?: any) => {\n if (state === undefined) {\n return undefined;\n }\n if (joinedWith?.intent?.type === _OBSERVE_ && pairedWith) {\n // we are paired with a device, so need to check the lobby state for that device\n return pairedWith.intent?.type === _WAIT_ && state === _IDLE_;\n }\n\n return joinedWith?.intent?.type === _WAIT_ && state === _IDLE_;\n },\n\n /**\n * @param {String | undefined} state meeting state\n * @param {any} joinedWith device that user has joined with\n * @param {any} pairedWith device that user is paired with\n * @returns {Boolean}\n */\n isLocusUserAdmitted: (state?: string, joinedWith?: any, pairedWith?: any) => {\n if (state === undefined) {\n return undefined;\n }\n\n if (joinedWith?.intent?.type === _OBSERVE_ && pairedWith) {\n // we are paired with a device, so need to check the lobby state for that device\n return pairedWith.intent?.type !== _WAIT_ && state === _JOINED_;\n }\n\n return joinedWith?.intent?.type !== _WAIT_ && state === _JOINED_;\n },\n\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean} true if user has just been placed in the lobby\n * @throws {Error} when self is undefined\n */\n hasUserEnteredLobby: (oldSelf: any, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'changedSelf must be defined to determine if self is unadmitted as guest.'\n );\n }\n\n const wasInLobby = SelfUtils.isLocusUserUnadmitted(\n oldSelf?.state,\n oldSelf?.joinedWith,\n oldSelf?.pairedWith\n );\n\n const isInLobby = SelfUtils.isLocusUserUnadmitted(\n changedSelf?.state,\n changedSelf?.joinedWith,\n changedSelf?.pairedWith\n );\n\n return !wasInLobby && isInLobby;\n },\n\n moderatorChanged: (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n },\n\n /**\n * determine whether the roles of self is changed or not\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\n isRolesChanged: (oldSelf, changedSelf) => {\n if (!changedSelf) {\n // no new self means no change\n return false;\n }\n\n return !isEqual(oldSelf?.roles, changedSelf?.roles);\n },\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\n isDeviceObserving: (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_,\n\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean} true if the user has just been admitted from lobby into the meeting\n * @throws {Error} if changed self was undefined\n */\n hasUserBeenAdmitted: (oldSelf: any, changedSelf: any) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n const wasInLobby = SelfUtils.isLocusUserUnadmitted(\n oldSelf?.state,\n oldSelf?.joinedWith,\n oldSelf?.pairedWith\n );\n\n const isAdmitted = SelfUtils.isLocusUserAdmitted(\n changedSelf?.state,\n changedSelf?.joinedWith,\n changedSelf?.pairedWith\n );\n\n return wasInLobby && isAdmitted && isAdmitted !== undefined;\n },\n\n videoMutedByOthersChanged: (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n },\n\n mutedByOthersChanged: (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n // there is no need to trigger user update if no one muted user\n if (changedSelf.selfIdentity === changedSelf.modifiedBy) {\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n },\n\n localAudioUnmuteRequestedByServer: (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return (\n changedSelf.localAudioUnmuteRequested &&\n changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp\n );\n },\n\n localAudioUnmuteRequiredByServer: (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n },\n\n /**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\n getSipUrl: (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n },\n\n getMediaStatus: (mediaSessions = []): {audio: any; video: any; share: any} => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n },\n\n getReplacedBreakoutMoveId: (self: any, deviceId: string) => {\n if (self && Array.isArray(self.devices)) {\n const joinedDevice = self.devices.find((device) => deviceId === device.url);\n if (Array.isArray(joinedDevice?.replaces)) {\n return joinedDevice.replaces[0]?.breakoutMoveId;\n }\n }\n\n return null;\n },\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
|
@@ -250,13 +250,12 @@ export default class LocusInfo extends EventsScope {
|
|
250
250
|
updateReplace(replace: object): void;
|
251
251
|
/**
|
252
252
|
* handles when the locus.self is updated
|
253
|
-
* @param {Object} self the locus.
|
254
|
-
* @param {Array} participants the locus.participants property
|
253
|
+
* @param {Object} self the new locus.self
|
255
254
|
* @returns {undefined}
|
256
255
|
* @memberof LocusInfo
|
257
256
|
* emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
|
258
257
|
*/
|
259
|
-
updateSelf(self: any
|
258
|
+
updateSelf(self: any): void;
|
260
259
|
/**
|
261
260
|
* handles when the locus.url is updated
|
262
261
|
* @param {String} url
|
@@ -3,9 +3,10 @@ declare const SelfUtils: {
|
|
3
3
|
* parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id
|
4
4
|
* @param {Object} self
|
5
5
|
* @param {String} deviceId
|
6
|
+
* @param {Array} participants
|
6
7
|
* @returns {undefined}
|
7
8
|
*/
|
8
|
-
parse: (self: any, deviceId: string) => {
|
9
|
+
parse: (self: any, deviceId: string, participants: Array<any>) => {
|
9
10
|
remoteVideoMuted: any;
|
10
11
|
remoteMuted: any;
|
11
12
|
unmuteAllowed: boolean;
|
@@ -23,6 +24,7 @@ declare const SelfUtils: {
|
|
23
24
|
};
|
24
25
|
state: any;
|
25
26
|
joinedWith: any;
|
27
|
+
pairedWith: any;
|
26
28
|
pstnDevices: any;
|
27
29
|
currentMediaStatus: {
|
28
30
|
audio: any;
|
@@ -52,46 +54,8 @@ declare const SelfUtils: {
|
|
52
54
|
getRoles: (self: any) => any;
|
53
55
|
canNotViewTheParticipantList: (self: any) => boolean;
|
54
56
|
isSharingBlocked: (self: any) => boolean;
|
55
|
-
getSelves: (
|
56
|
-
previous:
|
57
|
-
remoteVideoMuted: any;
|
58
|
-
remoteMuted: any;
|
59
|
-
unmuteAllowed: boolean;
|
60
|
-
localAudioUnmuteRequested: boolean;
|
61
|
-
localAudioUnmuteRequestedTimeStamp: number;
|
62
|
-
localAudioUnmuteRequired: boolean;
|
63
|
-
lastModified: any;
|
64
|
-
modifiedBy: any;
|
65
|
-
guest: any;
|
66
|
-
moderator: any;
|
67
|
-
mediaStatus: {
|
68
|
-
audio: any;
|
69
|
-
video: any;
|
70
|
-
slides: any;
|
71
|
-
};
|
72
|
-
state: any;
|
73
|
-
joinedWith: any;
|
74
|
-
pstnDevices: any;
|
75
|
-
currentMediaStatus: {
|
76
|
-
audio: any;
|
77
|
-
video: any;
|
78
|
-
share: any;
|
79
|
-
};
|
80
|
-
creator: any;
|
81
|
-
selfId: any;
|
82
|
-
selfIdentity: any;
|
83
|
-
selfUrl: any;
|
84
|
-
removed: any;
|
85
|
-
roles: any;
|
86
|
-
isUserUnadmitted: boolean;
|
87
|
-
layout: any;
|
88
|
-
canNotViewTheParticipantList: boolean;
|
89
|
-
isSharingBlocked: boolean;
|
90
|
-
breakoutSessions: any;
|
91
|
-
breakout: any;
|
92
|
-
interpretation: any;
|
93
|
-
brb: any;
|
94
|
-
};
|
57
|
+
getSelves: (oldParsedSelf: any, newSelf: any, deviceId: any, participants: Array<any>) => {
|
58
|
+
previous: any;
|
95
59
|
current: {
|
96
60
|
remoteVideoMuted: any;
|
97
61
|
remoteMuted: any;
|
@@ -110,6 +74,7 @@ declare const SelfUtils: {
|
|
110
74
|
};
|
111
75
|
state: any;
|
112
76
|
joinedWith: any;
|
77
|
+
pairedWith: any;
|
113
78
|
pstnDevices: any;
|
114
79
|
currentMediaStatus: {
|
115
80
|
audio: any;
|
@@ -187,22 +152,26 @@ declare const SelfUtils: {
|
|
187
152
|
*/
|
188
153
|
wasMediaInactiveOrReleased: (oldSelf: any, changedSelf: any) => boolean;
|
189
154
|
/**
|
190
|
-
* @param {
|
191
|
-
* @
|
155
|
+
* @param {String | undefined} state meeting state
|
156
|
+
* @param {any} joinedWith device that user has joined with
|
157
|
+
* @param {any} pairedWith device that user is paired with
|
158
|
+
* @returns {Boolean | undefined} true if user is in lobby, false if not, undefined if it cannot be determined
|
192
159
|
*/
|
193
|
-
isLocusUserUnadmitted: (
|
160
|
+
isLocusUserUnadmitted: (state?: string, joinedWith?: any, pairedWith?: any) => boolean;
|
194
161
|
/**
|
195
|
-
* @param {
|
162
|
+
* @param {String | undefined} state meeting state
|
163
|
+
* @param {any} joinedWith device that user has joined with
|
164
|
+
* @param {any} pairedWith device that user is paired with
|
196
165
|
* @returns {Boolean}
|
197
166
|
*/
|
198
|
-
isLocusUserAdmitted: (
|
167
|
+
isLocusUserAdmitted: (state?: string, joinedWith?: any, pairedWith?: any) => boolean;
|
199
168
|
/**
|
200
169
|
* @param {Object} oldSelf
|
201
170
|
* @param {Object} changedSelf
|
202
|
-
* @returns {Boolean}
|
171
|
+
* @returns {Boolean} true if user has just been placed in the lobby
|
203
172
|
* @throws {Error} when self is undefined
|
204
173
|
*/
|
205
|
-
|
174
|
+
hasUserEnteredLobby: (oldSelf: any, changedSelf: any) => boolean;
|
206
175
|
moderatorChanged: (oldSelf: any, changedSelf: any) => boolean;
|
207
176
|
/**
|
208
177
|
* determine whether the roles of self is changed or not
|
@@ -221,10 +190,10 @@ declare const SelfUtils: {
|
|
221
190
|
/**
|
222
191
|
* @param {Object} oldSelf
|
223
192
|
* @param {Object} changedSelf
|
224
|
-
* @returns {Boolean}
|
193
|
+
* @returns {Boolean} true if the user has just been admitted from lobby into the meeting
|
225
194
|
* @throws {Error} if changed self was undefined
|
226
195
|
*/
|
227
|
-
|
196
|
+
hasUserBeenAdmitted: (oldSelf: any, changedSelf: any) => boolean;
|
228
197
|
videoMutedByOthersChanged: (oldSelf: any, changedSelf: any) => boolean;
|
229
198
|
mutedByOthersChanged: (oldSelf: any, changedSelf: any) => boolean;
|
230
199
|
localAudioUnmuteRequestedByServer: (oldSelf: any, changedSelf: any) => boolean;
|
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-meetings": "3.8.0-next.
|
46
|
+
"@webex/plugin-meetings": "3.8.0-next.72",
|
47
47
|
"@webex/plugin-rooms": "3.8.0-next.24",
|
48
48
|
"@webex/test-helper-chai": "3.8.0-next.20",
|
49
49
|
"@webex/test-helper-mocha": "3.8.0-next.20",
|
@@ -71,7 +71,7 @@
|
|
71
71
|
"@webex/internal-plugin-metrics": "3.8.0-next.20",
|
72
72
|
"@webex/internal-plugin-support": "3.8.0-next.24",
|
73
73
|
"@webex/internal-plugin-user": "3.8.0-next.20",
|
74
|
-
"@webex/internal-plugin-voicea": "3.8.0-next.
|
74
|
+
"@webex/internal-plugin-voicea": "3.8.0-next.72",
|
75
75
|
"@webex/media-helpers": "3.8.0-next.24",
|
76
76
|
"@webex/plugin-people": "3.8.0-next.22",
|
77
77
|
"@webex/plugin-rooms": "3.8.0-next.24",
|
@@ -93,5 +93,5 @@
|
|
93
93
|
"//": [
|
94
94
|
"TODO: upgrade jwt-decode when moving to node 18"
|
95
95
|
],
|
96
|
-
"version": "3.8.0-next.
|
96
|
+
"version": "3.8.0-next.72"
|
97
97
|
}
|
package/src/breakouts/index.ts
CHANGED
@@ -45,6 +45,8 @@ const Breakouts = WebexPlugin.extend({
|
|
45
45
|
intervalID: 'number',
|
46
46
|
meetingId: 'string',
|
47
47
|
canManageBreakouts: 'boolean', // appear the ability to manage breakouts
|
48
|
+
mainGroupId: 'string', // appears from the moment you enable breakouts
|
49
|
+
mainSessionId: 'string', // appears from the moment you enable breakouts
|
48
50
|
},
|
49
51
|
children: {
|
50
52
|
currentBreakoutSession: Breakout,
|
@@ -544,6 +546,28 @@ const Breakouts = WebexPlugin.extend({
|
|
544
546
|
}
|
545
547
|
},
|
546
548
|
|
549
|
+
/**
|
550
|
+
* set main group id
|
551
|
+
* @param {Object} breakoutInfo -- breakout groups
|
552
|
+
* @returns {void}
|
553
|
+
*/
|
554
|
+
_setMainGroupId(breakoutInfo) {
|
555
|
+
if (breakoutInfo?.body?.mainGroupId) {
|
556
|
+
this.set('mainGroupId', breakoutInfo.body.mainGroupId);
|
557
|
+
}
|
558
|
+
},
|
559
|
+
|
560
|
+
/**
|
561
|
+
* set main session id
|
562
|
+
* @param {Object} breakoutInfo -- breakout groups
|
563
|
+
* @returns {void}
|
564
|
+
*/
|
565
|
+
_setMainSessionId(breakoutInfo) {
|
566
|
+
if (breakoutInfo?.body?.mainSessionId) {
|
567
|
+
this.set('mainSessionId', breakoutInfo.body.mainSessionId);
|
568
|
+
}
|
569
|
+
},
|
570
|
+
|
547
571
|
/**
|
548
572
|
* Create new breakout sessions
|
549
573
|
* @param {object} params -- breakout session group
|
@@ -567,6 +591,8 @@ const Breakouts = WebexPlugin.extend({
|
|
567
591
|
});
|
568
592
|
|
569
593
|
this._setManageGroups(breakoutInfo);
|
594
|
+
this._setMainGroupId(breakoutInfo);
|
595
|
+
this._setMainSessionId(breakoutInfo);
|
570
596
|
|
571
597
|
// clear edit lock info after save breakout session info
|
572
598
|
this._clearEditLockInfo();
|
@@ -630,6 +656,8 @@ const Breakouts = WebexPlugin.extend({
|
|
630
656
|
});
|
631
657
|
|
632
658
|
this._setManageGroups(breakoutInfo);
|
659
|
+
this._setMainGroupId(breakoutInfo);
|
660
|
+
this._setMainSessionId(breakoutInfo);
|
633
661
|
|
634
662
|
return breakoutInfo;
|
635
663
|
},
|
@@ -665,6 +693,8 @@ const Breakouts = WebexPlugin.extend({
|
|
665
693
|
});
|
666
694
|
|
667
695
|
this._setManageGroups(breakoutInfo);
|
696
|
+
this._setMainGroupId(breakoutInfo);
|
697
|
+
this._setMainSessionId(breakoutInfo);
|
668
698
|
|
669
699
|
return breakoutInfo;
|
670
700
|
},
|
@@ -718,6 +748,9 @@ const Breakouts = WebexPlugin.extend({
|
|
718
748
|
});
|
719
749
|
|
720
750
|
this._setManageGroups(breakout);
|
751
|
+
this._setMainGroupId(breakout);
|
752
|
+
this._setMainSessionId(breakout);
|
753
|
+
|
721
754
|
if (editlock && breakout.body?.editlock?.token) {
|
722
755
|
this.set('editLock', breakout.body.editlock);
|
723
756
|
this.keepEditLockAlive();
|
@@ -916,6 +949,42 @@ const Breakouts = WebexPlugin.extend({
|
|
916
949
|
body,
|
917
950
|
});
|
918
951
|
},
|
952
|
+
/**
|
953
|
+
* Move participants to main session lobby
|
954
|
+
* @param {Array} sessions
|
955
|
+
* @param {string} sessions[].participants - Participant IDs to move
|
956
|
+
* @returns {void}
|
957
|
+
*/
|
958
|
+
moveToLobby(sessions: Array<{participants: string[]}>) {
|
959
|
+
if (!this.mainGroupId || !this.mainSessionId) {
|
960
|
+
throw new Error(
|
961
|
+
'Main group ID and session ID must be available to move participants to lobby'
|
962
|
+
);
|
963
|
+
}
|
964
|
+
|
965
|
+
const updatedSessions = sessions.map((item) => {
|
966
|
+
return {
|
967
|
+
id: this.mainSessionId,
|
968
|
+
participants: item.participants,
|
969
|
+
targetState: 'LOBBY',
|
970
|
+
};
|
971
|
+
});
|
972
|
+
|
973
|
+
const body = {
|
974
|
+
groups: [
|
975
|
+
{
|
976
|
+
id: this.mainGroupId,
|
977
|
+
sessions: updatedSessions,
|
978
|
+
},
|
979
|
+
],
|
980
|
+
};
|
981
|
+
|
982
|
+
return this.request({
|
983
|
+
method: HTTP_VERBS.PUT,
|
984
|
+
uri: `${this.url}/dynamicAssign`,
|
985
|
+
body,
|
986
|
+
});
|
987
|
+
},
|
919
988
|
/**
|
920
989
|
* trigger ASK_RETURN_TO_MAIN event when main session requested
|
921
990
|
* @param {Object} breakout
|