@webex/plugin-meetings 3.8.0-next.33 → 3.8.0-next.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +13 -7
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +2 -1
- package/dist/locus-info/index.js.map +1 -1
- package/dist/types/locus-info/index.d.ts +1 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +3 -3
- package/src/locus-info/controlsUtils.ts +24 -12
- package/src/locus-info/index.ts +5 -1
- package/test/unit/spec/locus-info/controlsUtils.js +61 -9
package/dist/breakouts/index.js
CHANGED
|
@@ -1046,7 +1046,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
1046
1046
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
|
1047
1047
|
}
|
|
1048
1048
|
},
|
|
1049
|
-
version: "3.8.0-next.
|
|
1049
|
+
version: "3.8.0-next.34"
|
|
1050
1050
|
});
|
|
1051
1051
|
var _default = exports.default = Breakouts;
|
|
1052
1052
|
//# sourceMappingURL=index.js.map
|
|
@@ -373,7 +373,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
373
373
|
throw error;
|
|
374
374
|
});
|
|
375
375
|
},
|
|
376
|
-
version: "3.8.0-next.
|
|
376
|
+
version: "3.8.0-next.34"
|
|
377
377
|
});
|
|
378
378
|
var _default = exports.default = SimultaneousInterpretation;
|
|
379
379
|
//# sourceMappingURL=index.js.map
|
|
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
|
|
|
18
18
|
languageCode: 'number',
|
|
19
19
|
languageName: 'string'
|
|
20
20
|
},
|
|
21
|
-
version: "3.8.0-next.
|
|
21
|
+
version: "3.8.0-next.34"
|
|
22
22
|
});
|
|
23
23
|
var _default = exports.default = SILanguage;
|
|
24
24
|
//# sourceMappingURL=siLanguage.js.map
|
|
@@ -193,30 +193,36 @@ ControlsUtils.getId = function (controls) {
|
|
|
193
193
|
* @returns {Boolean}
|
|
194
194
|
*/
|
|
195
195
|
ControlsUtils.isNeedReplaceMembers = function (oldControls, controls) {
|
|
196
|
+
var _oldControls$breakout, _controls$breakout, _oldControls$breakout2, _controls$breakout2;
|
|
196
197
|
// no breakout case
|
|
197
198
|
if (!(oldControls !== null && oldControls !== void 0 && oldControls.breakout) || !(controls !== null && controls !== void 0 && controls.breakout)) {
|
|
198
199
|
return false;
|
|
199
200
|
}
|
|
200
|
-
return oldControls.breakout.groupId !== controls.breakout.groupId || oldControls.breakout.sessionId !== controls.breakout.sessionId;
|
|
201
|
+
return (oldControls === null || oldControls === void 0 ? void 0 : (_oldControls$breakout = oldControls.breakout) === null || _oldControls$breakout === void 0 ? void 0 : _oldControls$breakout.groupId) !== (controls === null || controls === void 0 ? void 0 : (_controls$breakout = controls.breakout) === null || _controls$breakout === void 0 ? void 0 : _controls$breakout.groupId) || (oldControls === null || oldControls === void 0 ? void 0 : (_oldControls$breakout2 = oldControls.breakout) === null || _oldControls$breakout2 === void 0 ? void 0 : _oldControls$breakout2.sessionId) !== (controls === null || controls === void 0 ? void 0 : (_controls$breakout2 = controls.breakout) === null || _controls$breakout2 === void 0 ? void 0 : _controls$breakout2.sessionId);
|
|
201
202
|
};
|
|
202
203
|
|
|
203
204
|
/**
|
|
204
205
|
* determine the switch status between breakout session and main session.
|
|
205
|
-
* @param {
|
|
206
|
-
* @param {
|
|
206
|
+
* @param {LocusInfo} oldLocus
|
|
207
|
+
* @param {LocusInfo} newLocus
|
|
207
208
|
* @returns {Object}
|
|
208
209
|
*/
|
|
209
|
-
ControlsUtils.getSessionSwitchStatus = function (
|
|
210
|
+
ControlsUtils.getSessionSwitchStatus = function (oldLocus, newLocus) {
|
|
211
|
+
var _oldLocus$controls, _newLocus$controls, _oldLocus$self, _newLocus$participant, _newLocus$participant2, _newLocus$participant3, _newLocus$controls2, _newLocus$controls2$b, _newLocus$controls3, _newLocus$controls3$b, _newLocus$controls3$b2;
|
|
210
212
|
var status = {
|
|
211
213
|
isReturnToMain: false,
|
|
212
214
|
isJoinToBreakout: false
|
|
213
215
|
};
|
|
214
216
|
// no breakout case
|
|
215
|
-
if (!(
|
|
217
|
+
if (!((_oldLocus$controls = oldLocus.controls) !== null && _oldLocus$controls !== void 0 && _oldLocus$controls.breakout) || !((_newLocus$controls = newLocus.controls) !== null && _newLocus$controls !== void 0 && _newLocus$controls.breakout)) {
|
|
216
218
|
return status;
|
|
217
219
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
+
|
|
221
|
+
// It is used to fix the timing issue triggered when the creator leaves session to ensure that the member list is complete
|
|
222
|
+
var needUseCache = !!((_oldLocus$self = oldLocus.self) !== null && _oldLocus$self !== void 0 && _oldLocus$self.isCreator && ((_newLocus$participant = newLocus.participants) === null || _newLocus$participant === void 0 ? void 0 : _newLocus$participant.length) === 1 && (_newLocus$participant2 = newLocus.participants) !== null && _newLocus$participant2 !== void 0 && _newLocus$participant2[0].isCreator && ((_newLocus$participant3 = newLocus.participants) === null || _newLocus$participant3 === void 0 ? void 0 : _newLocus$participant3[0].state) === _constants.MEETING_STATE.STATES.JOINED && ((_newLocus$controls2 = newLocus.controls) === null || _newLocus$controls2 === void 0 ? void 0 : (_newLocus$controls2$b = _newLocus$controls2.breakout) === null || _newLocus$controls2$b === void 0 ? void 0 : _newLocus$controls2$b.sessionType) === _constants.BREAKOUTS.SESSION_TYPES.MAIN && (_newLocus$controls3 = newLocus.controls) !== null && _newLocus$controls3 !== void 0 && (_newLocus$controls3$b = _newLocus$controls3.breakout) !== null && _newLocus$controls3$b !== void 0 && (_newLocus$controls3$b2 = _newLocus$controls3$b.groups) !== null && _newLocus$controls3$b2 !== void 0 && _newLocus$controls3$b2.length);
|
|
223
|
+
var isReturnToMain = oldLocus.controls.breakout.sessionType === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT && newLocus.controls.breakout.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
|
|
224
|
+
status.isReturnToMain = needUseCache || isReturnToMain;
|
|
225
|
+
status.isJoinToBreakout = oldLocus.controls.breakout.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN && newLocus.controls.breakout.sessionType === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT;
|
|
220
226
|
return status;
|
|
221
227
|
};
|
|
222
228
|
ControlsUtils.isMainSessionDTO = function (locus) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_constants","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsUtils","parse","controls","parsedControls","record","modifiedBy","getId","paused","recording","lastModified","meta","meetingContainer","meetingContainerUrl","transcribe","transcribing","caption","manualCaptionControl","enabled","entryExitTone","mode","video","videoEnabled","muteOnEntry","shareControl","control","disallowUnmute","reactions","showDisplayNameWithReactions","viewTheParticipantList","_controls$viewThePart","_controls$viewThePart2","_controls$viewThePart3","_controls$viewThePart4","_controls$viewThePart5","_controls$viewThePart6","panelistEnabled","attendeeCount","raiseHand","webcastControl","streaming","meetingFull","_controls$meetingFull","_controls$meetingFull2","_controls$meetingFull3","_controls$meetingFull4","meetingPanelistFull","practiceSession","getControls","oldControls","newControls","_current$muteOnEntry","_previous$muteOnEntry","_current$shareControl","_previous$shareContro","_current$disallowUnmu","_previous$disallowUnm","_current$reactions","_previous$reactions","_current$reactions2","_previous$reactions2","_current$viewTheParti","_previous$viewThePart","_current$viewTheParti2","_previous$viewThePart2","_current$viewTheParti3","_previous$viewThePart3","_current$raiseHand","_previous$raiseHand","_current$video","_previous$video","_previous$record","_previous$record2","_current$record","_previous$record3","_current$record2","_previous$record4","_current$record3","_previous$meetingCont","_current$meetingConta","_previous$transcribe","_current$transcribe","_previous$transcribe2","_current$transcribe2","_previous$manualCapti","_current$manualCaptio","_previous$manualCapti2","_current$manualCaptio2","_newControls$video","_previous$webcastCont","_current$webcastContr","_previous$meetingFull","_current$meetingFull","_previous$meetingFull2","_current$meetingFull2","_previous$practiceSes","_current$practiceSess","previous","current","updates","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasRecordingPausedChanged","isEqual","hasRecordingChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","breakout","hasInterpretationChanged","interpretation","hasVideoEnabledChanged","undefined","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","videoLayout","isNeedReplaceMembers","groupId","sessionId","getSessionSwitchStatus","status","isReturnToMain","isJoinToBreakout","sessionType","BREAKOUTS","SESSION_TYPES","BREAKOUT","MAIN","isMainSessionDTO","locus","_locus$controls","_locus$controls$break","_default","exports"],"sources":["controlsUtils.ts"],"sourcesContent":["import {isEqual} from 'lodash';\nimport {BREAKOUTS} from '../constants';\n\nconst ControlsUtils: any = {};\n\n/**\n * Controls\n * @typedef {Object} LocusControls\n * @property {Object} record\n * @property {Boolean} record.recording\n * @property {Object} record.meta\n * @property {String} record.meta.modifiedBy\n */\n\n/**\n * parse the relevant host values that we care about: id\n * @param {LocusControls} controls\n * @returns {Object} parsedObject - parsed host or null if host was undefined\n * @returns {String} parsedObject.recordingId\n */\nControlsUtils.parse = (controls: any) => {\n const parsedControls = {...controls};\n\n if (controls && controls.record) {\n parsedControls.record = {\n modifiedBy: ControlsUtils.getId(controls),\n paused: controls.record.paused ? controls.record.paused : false,\n recording: controls.record.recording,\n lastModified: controls.record.meta.lastModified,\n };\n }\n\n if (controls && controls.meetingContainer) {\n parsedControls.meetingContainer = {\n meetingContainerUrl: controls.meetingContainer.meetingContainerUrl,\n };\n }\n\n if (controls && controls.transcribe) {\n parsedControls.transcribe = {\n transcribing: controls.transcribe.transcribing,\n caption: controls.transcribe.caption,\n };\n }\n\n if (controls && controls.manualCaptionControl) {\n parsedControls.manualCaptionControl = {\n enabled: controls.manualCaptionControl.enabled,\n };\n }\n\n if (controls && controls.entryExitTone) {\n parsedControls.entryExitTone = controls.entryExitTone.enabled\n ? controls.entryExitTone.mode\n : null;\n }\n\n if (controls && controls.video) {\n parsedControls.videoEnabled = controls.video.enabled;\n }\n\n if (controls?.muteOnEntry) {\n parsedControls.muteOnEntry = {enabled: controls.muteOnEntry.enabled};\n }\n\n if (controls?.shareControl) {\n parsedControls.shareControl = {control: controls.shareControl.control};\n }\n\n if (controls?.disallowUnmute) {\n parsedControls.disallowUnmute = {enabled: controls.disallowUnmute.enabled};\n }\n\n if (controls?.reactions) {\n parsedControls.reactions = {\n enabled: controls.reactions.enabled,\n showDisplayNameWithReactions: controls.reactions.showDisplayNameWithReactions,\n };\n }\n\n if (controls?.viewTheParticipantList) {\n parsedControls.viewTheParticipantList = {\n enabled: controls.viewTheParticipantList?.enabled ?? false,\n panelistEnabled: controls.viewTheParticipantList?.panelistEnabled ?? false,\n attendeeCount: controls.viewTheParticipantList?.attendeeCount ?? 0,\n };\n }\n\n if (controls?.raiseHand) {\n parsedControls.raiseHand = {enabled: controls.raiseHand.enabled};\n }\n\n if (controls?.video) {\n parsedControls.video = {enabled: controls.video.enabled};\n }\n\n if (controls?.webcastControl) {\n parsedControls.webcastControl = {streaming: controls.webcastControl.streaming};\n }\n\n if (controls?.meetingFull) {\n parsedControls.meetingFull = {\n meetingFull: controls.meetingFull?.meetingFull ?? false,\n meetingPanelistFull: controls.meetingFull?.meetingPanelistFull ?? false,\n };\n }\n\n if (controls?.practiceSession) {\n parsedControls.practiceSession = {\n enabled: controls.practiceSession.enabled,\n };\n }\n\n return parsedControls;\n};\n\n/**\n * parses and returns previous state vs current state and triggers the changes.\n * @param {LocusControls} oldControls previous state\n * @param {LocusControls} newControls current state\n * @returns {Object} combination of state plus the changes\n */\nControlsUtils.getControls = (oldControls: any, newControls: any) => {\n const previous = ControlsUtils.parse(oldControls);\n const current = ControlsUtils.parse(newControls);\n\n return {\n previous,\n current,\n updates: {\n hasMuteOnEntryChanged: current?.muteOnEntry?.enabled !== previous?.muteOnEntry?.enabled,\n\n hasShareControlChanged: current?.shareControl?.control !== previous?.shareControl?.control,\n\n hasDisallowUnmuteChanged:\n current?.disallowUnmute?.enabled !== previous?.disallowUnmute?.enabled,\n\n hasReactionsChanged: current?.reactions?.enabled !== previous?.reactions?.enabled,\n\n hasReactionDisplayNamesChanged:\n current?.reactions?.showDisplayNameWithReactions !==\n previous?.reactions?.showDisplayNameWithReactions,\n\n hasViewTheParticipantListChanged:\n current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled ||\n current?.viewTheParticipantList?.panelistEnabled !==\n previous?.viewTheParticipantList?.panelistEnabled ||\n current?.viewTheParticipantList?.attendeeCount !==\n previous?.viewTheParticipantList?.attendeeCount,\n\n hasRaiseHandChanged: current?.raiseHand?.enabled !== previous?.raiseHand?.enabled,\n\n hasVideoChanged: current?.video?.enabled !== previous?.video?.enabled,\n\n hasRecordingPausedChanged:\n current?.record &&\n !isEqual(previous?.record?.paused, current.record.paused) &&\n (previous?.record?.recording || current?.record?.recording), // see comments directly below\n\n hasRecordingChanged:\n current?.record &&\n !isEqual(previous?.record?.recording, current?.record?.recording) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.record?.recording || current?.record?.recording), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasMeetingContainerChanged:\n current?.meetingContainer &&\n !isEqual(\n previous?.meetingContainer?.meetingContainerUrl,\n current?.meetingContainer?.meetingContainerUrl\n ),\n\n hasTranscribeChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasManualCaptionChanged:\n current?.manualCaptionControl &&\n !isEqual(previous?.manualCaptionControl?.enabled, current?.manualCaptionControl?.enabled) &&\n (previous?.manualCaptionControl?.enabled || current?.manualCaptionControl?.enabled),\n\n hasEntryExitToneChanged: !!(\n newControls.entryExitTone &&\n !isEqual(previous?.entryExitTone, current?.entryExitTone) &&\n (previous?.entryExitTone || current?.entryExitTone)\n ),\n\n hasBreakoutChanged: !isEqual(previous?.breakout, current?.breakout),\n\n hasInterpretationChanged: !isEqual(previous?.interpretation, current?.interpretation),\n\n hasVideoEnabledChanged:\n newControls.video?.enabled !== undefined &&\n !isEqual(previous?.videoEnabled, current?.videoEnabled),\n\n hasWebcastChanged: !isEqual(\n previous?.webcastControl?.streaming,\n current?.webcastControl?.streaming\n ),\n\n hasMeetingFullChanged:\n !isEqual(previous?.meetingFull?.meetingFull, current?.meetingFull?.meetingFull) ||\n !isEqual(\n previous?.meetingFull?.meetingPanelistFull,\n current?.meetingFull?.meetingPanelistFull\n ),\n\n hasPracticeSessionEnabledChanged: !isEqual(\n !!previous?.practiceSession?.enabled,\n !!current?.practiceSession?.enabled\n ),\n\n hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),\n },\n };\n};\n\n/**\n * Extract the id from the record controls object\n * @param {LocusControls} controls\n * @returns {String|null}\n */\nControlsUtils.getId = (controls: any) => {\n if (controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n};\n\n/**\n * check whether to replace the meeting's members or not.\n * For case joined breakout session, need replace meeting's members\n * @param {LocusControls} oldControls\n * @param {LocusControls} controls\n * @returns {Boolean}\n */\nControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {\n // no breakout case\n if (!oldControls?.breakout || !controls?.breakout) {\n return false;\n }\n\n return (\n oldControls.breakout.groupId !== controls.breakout.groupId ||\n oldControls.breakout.sessionId !== controls.breakout.sessionId\n );\n};\n\n/**\n * determine the switch status between breakout session and main session.\n * @param {LocusControls} oldControls\n * @param {LocusControls} controls\n * @returns {Object}\n */\nControlsUtils.getSessionSwitchStatus = (oldControls: any, controls: any) => {\n const status = {isReturnToMain: false, isJoinToBreakout: false};\n // no breakout case\n if (!oldControls?.breakout || !controls?.breakout) {\n return status;\n }\n\n status.isReturnToMain =\n oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n status.isJoinToBreakout =\n oldControls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&\n controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n\n return status;\n};\n\nControlsUtils.isMainSessionDTO = (locus: any) => {\n return locus?.controls?.breakout?.sessionType !== BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\nexport default ControlsUtils;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_constants","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ControlsUtils","parse","controls","parsedControls","record","modifiedBy","getId","paused","recording","lastModified","meta","meetingContainer","meetingContainerUrl","transcribe","transcribing","caption","manualCaptionControl","enabled","entryExitTone","mode","video","videoEnabled","muteOnEntry","shareControl","control","disallowUnmute","reactions","showDisplayNameWithReactions","viewTheParticipantList","_controls$viewThePart","_controls$viewThePart2","_controls$viewThePart3","_controls$viewThePart4","_controls$viewThePart5","_controls$viewThePart6","panelistEnabled","attendeeCount","raiseHand","webcastControl","streaming","meetingFull","_controls$meetingFull","_controls$meetingFull2","_controls$meetingFull3","_controls$meetingFull4","meetingPanelistFull","practiceSession","getControls","oldControls","newControls","_current$muteOnEntry","_previous$muteOnEntry","_current$shareControl","_previous$shareContro","_current$disallowUnmu","_previous$disallowUnm","_current$reactions","_previous$reactions","_current$reactions2","_previous$reactions2","_current$viewTheParti","_previous$viewThePart","_current$viewTheParti2","_previous$viewThePart2","_current$viewTheParti3","_previous$viewThePart3","_current$raiseHand","_previous$raiseHand","_current$video","_previous$video","_previous$record","_previous$record2","_current$record","_previous$record3","_current$record2","_previous$record4","_current$record3","_previous$meetingCont","_current$meetingConta","_previous$transcribe","_current$transcribe","_previous$transcribe2","_current$transcribe2","_previous$manualCapti","_current$manualCaptio","_previous$manualCapti2","_current$manualCaptio2","_newControls$video","_previous$webcastCont","_current$webcastContr","_previous$meetingFull","_current$meetingFull","_previous$meetingFull2","_current$meetingFull2","_previous$practiceSes","_current$practiceSess","previous","current","updates","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasRecordingPausedChanged","isEqual","hasRecordingChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","breakout","hasInterpretationChanged","interpretation","hasVideoEnabledChanged","undefined","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","videoLayout","isNeedReplaceMembers","_oldControls$breakout","_controls$breakout","_oldControls$breakout2","_controls$breakout2","groupId","sessionId","getSessionSwitchStatus","oldLocus","newLocus","_oldLocus$controls","_newLocus$controls","_oldLocus$self","_newLocus$participant","_newLocus$participant2","_newLocus$participant3","_newLocus$controls2","_newLocus$controls2$b","_newLocus$controls3","_newLocus$controls3$b","_newLocus$controls3$b2","status","isReturnToMain","isJoinToBreakout","needUseCache","self","isCreator","participants","state","MEETING_STATE","STATES","JOINED","sessionType","BREAKOUTS","SESSION_TYPES","MAIN","groups","BREAKOUT","isMainSessionDTO","locus","_locus$controls","_locus$controls$break","_default","exports"],"sources":["controlsUtils.ts"],"sourcesContent":["import {isEqual} from 'lodash';\nimport {BREAKOUTS, MEETING_STATE} from '../constants';\n\nconst ControlsUtils: any = {};\n\n/**\n * Controls\n * @typedef {Object} LocusControls\n * @property {Object} record\n * @property {Boolean} record.recording\n * @property {Object} record.meta\n * @property {String} record.meta.modifiedBy\n */\n\n/**\n * parse the relevant host values that we care about: id\n * @param {LocusControls} controls\n * @returns {Object} parsedObject - parsed host or null if host was undefined\n * @returns {String} parsedObject.recordingId\n */\nControlsUtils.parse = (controls: any) => {\n const parsedControls = {...controls};\n\n if (controls && controls.record) {\n parsedControls.record = {\n modifiedBy: ControlsUtils.getId(controls),\n paused: controls.record.paused ? controls.record.paused : false,\n recording: controls.record.recording,\n lastModified: controls.record.meta.lastModified,\n };\n }\n\n if (controls && controls.meetingContainer) {\n parsedControls.meetingContainer = {\n meetingContainerUrl: controls.meetingContainer.meetingContainerUrl,\n };\n }\n\n if (controls && controls.transcribe) {\n parsedControls.transcribe = {\n transcribing: controls.transcribe.transcribing,\n caption: controls.transcribe.caption,\n };\n }\n\n if (controls && controls.manualCaptionControl) {\n parsedControls.manualCaptionControl = {\n enabled: controls.manualCaptionControl.enabled,\n };\n }\n\n if (controls && controls.entryExitTone) {\n parsedControls.entryExitTone = controls.entryExitTone.enabled\n ? controls.entryExitTone.mode\n : null;\n }\n\n if (controls && controls.video) {\n parsedControls.videoEnabled = controls.video.enabled;\n }\n\n if (controls?.muteOnEntry) {\n parsedControls.muteOnEntry = {enabled: controls.muteOnEntry.enabled};\n }\n\n if (controls?.shareControl) {\n parsedControls.shareControl = {control: controls.shareControl.control};\n }\n\n if (controls?.disallowUnmute) {\n parsedControls.disallowUnmute = {enabled: controls.disallowUnmute.enabled};\n }\n\n if (controls?.reactions) {\n parsedControls.reactions = {\n enabled: controls.reactions.enabled,\n showDisplayNameWithReactions: controls.reactions.showDisplayNameWithReactions,\n };\n }\n\n if (controls?.viewTheParticipantList) {\n parsedControls.viewTheParticipantList = {\n enabled: controls.viewTheParticipantList?.enabled ?? false,\n panelistEnabled: controls.viewTheParticipantList?.panelistEnabled ?? false,\n attendeeCount: controls.viewTheParticipantList?.attendeeCount ?? 0,\n };\n }\n\n if (controls?.raiseHand) {\n parsedControls.raiseHand = {enabled: controls.raiseHand.enabled};\n }\n\n if (controls?.video) {\n parsedControls.video = {enabled: controls.video.enabled};\n }\n\n if (controls?.webcastControl) {\n parsedControls.webcastControl = {streaming: controls.webcastControl.streaming};\n }\n\n if (controls?.meetingFull) {\n parsedControls.meetingFull = {\n meetingFull: controls.meetingFull?.meetingFull ?? false,\n meetingPanelistFull: controls.meetingFull?.meetingPanelistFull ?? false,\n };\n }\n\n if (controls?.practiceSession) {\n parsedControls.practiceSession = {\n enabled: controls.practiceSession.enabled,\n };\n }\n\n return parsedControls;\n};\n\n/**\n * parses and returns previous state vs current state and triggers the changes.\n * @param {LocusControls} oldControls previous state\n * @param {LocusControls} newControls current state\n * @returns {Object} combination of state plus the changes\n */\nControlsUtils.getControls = (oldControls: any, newControls: any) => {\n const previous = ControlsUtils.parse(oldControls);\n const current = ControlsUtils.parse(newControls);\n\n return {\n previous,\n current,\n updates: {\n hasMuteOnEntryChanged: current?.muteOnEntry?.enabled !== previous?.muteOnEntry?.enabled,\n\n hasShareControlChanged: current?.shareControl?.control !== previous?.shareControl?.control,\n\n hasDisallowUnmuteChanged:\n current?.disallowUnmute?.enabled !== previous?.disallowUnmute?.enabled,\n\n hasReactionsChanged: current?.reactions?.enabled !== previous?.reactions?.enabled,\n\n hasReactionDisplayNamesChanged:\n current?.reactions?.showDisplayNameWithReactions !==\n previous?.reactions?.showDisplayNameWithReactions,\n\n hasViewTheParticipantListChanged:\n current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled ||\n current?.viewTheParticipantList?.panelistEnabled !==\n previous?.viewTheParticipantList?.panelistEnabled ||\n current?.viewTheParticipantList?.attendeeCount !==\n previous?.viewTheParticipantList?.attendeeCount,\n\n hasRaiseHandChanged: current?.raiseHand?.enabled !== previous?.raiseHand?.enabled,\n\n hasVideoChanged: current?.video?.enabled !== previous?.video?.enabled,\n\n hasRecordingPausedChanged:\n current?.record &&\n !isEqual(previous?.record?.paused, current.record.paused) &&\n (previous?.record?.recording || current?.record?.recording), // see comments directly below\n\n hasRecordingChanged:\n current?.record &&\n !isEqual(previous?.record?.recording, current?.record?.recording) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.record?.recording || current?.record?.recording), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasMeetingContainerChanged:\n current?.meetingContainer &&\n !isEqual(\n previous?.meetingContainer?.meetingContainerUrl,\n current?.meetingContainer?.meetingContainerUrl\n ),\n\n hasTranscribeChanged:\n current?.transcribe &&\n !isEqual(previous?.transcribe?.transcribing, current?.transcribe?.transcribing) && // upon first join, previous?.record?.recording = undefined; thus, never going to be equal and will always return true\n (previous?.transcribe?.transcribing || current?.transcribe?.transcribing), // therefore, condition added to prevent false firings of #meeting:recording:stopped upon first joining a meeting\n\n hasManualCaptionChanged:\n current?.manualCaptionControl &&\n !isEqual(previous?.manualCaptionControl?.enabled, current?.manualCaptionControl?.enabled) &&\n (previous?.manualCaptionControl?.enabled || current?.manualCaptionControl?.enabled),\n\n hasEntryExitToneChanged: !!(\n newControls.entryExitTone &&\n !isEqual(previous?.entryExitTone, current?.entryExitTone) &&\n (previous?.entryExitTone || current?.entryExitTone)\n ),\n\n hasBreakoutChanged: !isEqual(previous?.breakout, current?.breakout),\n\n hasInterpretationChanged: !isEqual(previous?.interpretation, current?.interpretation),\n\n hasVideoEnabledChanged:\n newControls.video?.enabled !== undefined &&\n !isEqual(previous?.videoEnabled, current?.videoEnabled),\n\n hasWebcastChanged: !isEqual(\n previous?.webcastControl?.streaming,\n current?.webcastControl?.streaming\n ),\n\n hasMeetingFullChanged:\n !isEqual(previous?.meetingFull?.meetingFull, current?.meetingFull?.meetingFull) ||\n !isEqual(\n previous?.meetingFull?.meetingPanelistFull,\n current?.meetingFull?.meetingPanelistFull\n ),\n\n hasPracticeSessionEnabledChanged: !isEqual(\n !!previous?.practiceSession?.enabled,\n !!current?.practiceSession?.enabled\n ),\n\n hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),\n },\n };\n};\n\n/**\n * Extract the id from the record controls object\n * @param {LocusControls} controls\n * @returns {String|null}\n */\nControlsUtils.getId = (controls: any) => {\n if (controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n};\n\n/**\n * check whether to replace the meeting's members or not.\n * For case joined breakout session, need replace meeting's members\n * @param {LocusControls} oldControls\n * @param {LocusControls} controls\n * @returns {Boolean}\n */\nControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {\n // no breakout case\n if (!oldControls?.breakout || !controls?.breakout) {\n return false;\n }\n\n return (\n oldControls?.breakout?.groupId !== controls?.breakout?.groupId ||\n oldControls?.breakout?.sessionId !== controls?.breakout?.sessionId\n );\n};\n\n/**\n * determine the switch status between breakout session and main session.\n * @param {LocusInfo} oldLocus\n * @param {LocusInfo} newLocus\n * @returns {Object}\n */\nControlsUtils.getSessionSwitchStatus = (oldLocus: any, newLocus: any) => {\n const status = {isReturnToMain: false, isJoinToBreakout: false};\n // no breakout case\n if (!oldLocus.controls?.breakout || !newLocus.controls?.breakout) {\n return status;\n }\n\n // It is used to fix the timing issue triggered when the creator leaves session to ensure that the member list is complete\n const needUseCache = !!(\n oldLocus.self?.isCreator &&\n newLocus.participants?.length === 1 &&\n newLocus.participants?.[0].isCreator &&\n newLocus.participants?.[0].state === MEETING_STATE.STATES.JOINED &&\n newLocus.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&\n newLocus.controls?.breakout?.groups?.length\n );\n\n const isReturnToMain =\n oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n\n status.isReturnToMain = needUseCache || isReturnToMain;\n status.isJoinToBreakout =\n oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&\n newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;\n\n return status;\n};\n\nControlsUtils.isMainSessionDTO = (locus: any) => {\n return locus?.controls?.breakout?.sessionType !== BREAKOUTS.SESSION_TYPES.BREAKOUT;\n};\n\nexport default ControlsUtils;\n"],"mappings":"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"}
|
package/dist/locus-info/index.js
CHANGED
|
@@ -82,6 +82,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
|
|
|
82
82
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "services", void 0);
|
|
83
83
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resources", void 0);
|
|
84
84
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mainSessionLocusCache", void 0);
|
|
85
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "self", void 0);
|
|
85
86
|
_this.parsedLocus = {
|
|
86
87
|
states: []
|
|
87
88
|
};
|
|
@@ -1505,7 +1506,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
|
|
|
1505
1506
|
}, {
|
|
1506
1507
|
key: "getTheLocusToUpdate",
|
|
1507
1508
|
value: function getTheLocusToUpdate(newLocus) {
|
|
1508
|
-
var switchStatus = _controlsUtils.default.getSessionSwitchStatus(this
|
|
1509
|
+
var switchStatus = _controlsUtils.default.getSessionSwitchStatus(this, newLocus);
|
|
1509
1510
|
if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {
|
|
1510
1511
|
return (0, _lodash.cloneDeep)(this.mainSessionLocusCache);
|
|
1511
1512
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_loggerProxy","_interopRequireDefault","_eventsScope","_constants","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","LocusInfo","exports","_EventsScope","_inherits2","_super","updateMeeting","webex","meetingId","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","_createClass2","key","value","doLocusSync","meeting","_this2","isDelta","url","workingCopy","syncUrl","locusUrl","LoggerProxy","logger","info","concat","meetingRequest","getLocusDTO","catch","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_SYNC_FAILED","correlationId","reason","message","errorName","name","stack","code","err","meetings","destroy","MEETING_REMOVED_REASON","LOCUS_DTO_SYNC_FAILED","then","res","isEmpty","body","locusInfo","handleLocusDelta","onFullLocus","resume","applyLocusDeltaData","action","locus","_LocusDeltaParser$loc","loci","DESYNC","USE_CURRENT","USE_INCOMING","WAIT","LOCUS_URL_CHANGED","onDeltaLocus","_this3","onDeltaAction","parsedLoci","onDeltaEvent","init","_locus$links","_locus$links2","length","undefined","created","scheduledMeeting","participantsUrl","replaces","aclUrl","baseSequence","sequence","membership","identities","participants","deltaParticipants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","updateResources","resources","initialSetup","parse","data","eventType","getTheLocusToUpdate","LOCUSEVENT","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","emitScoped","scope","eventName","args","emit","error","isNewFullLocus","updateParticipantDeltas","isReplaceMembers","ControlsUtils","isNeedReplaceMembers","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","type","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","_locus$self","_locus$self2","_locus$links3","_locus$links4","state","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","getLocusPartner","find","participant","identity","_USER_","removed","partner","_SPACE_SHARE_","LOCUS","STATE","INACTIVE","warn","internal","newMetrics","submitClientEvent","options","DESTROY_MEETING","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","_this4","findParticipant","collection","item","person","id","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","_keys","forEach","reduce","existingParticipant","delta","status","changed","push","isReplace","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","isEqual","_ControlsUtils$getCon","getControls","_ControlsUtils$getCon2","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","hasVideoEnabledChanged","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasInterpretationChanged","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","current","LOCUSINFO","CONTROLS_MUTE_ON_ENTRY_CHANGED","muteOnEntry","CONTROLS_SHARE_CONTROL_CHANGED","shareControl","CONTROLS_DISALLOW_UNMUTE_CHANGED","disallowUnmute","CONTROLS_REACTIONS_CHANGED","reactions","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","viewTheParticipantList","CONTROLS_RAISE_HAND_CHANGED","raiseHand","CONTROLS_VIDEO_CHANGED","video","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","_current$transcribe","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","enabled","manualCaptionControl","CONTROLS_MEETING_MANUAL_CAPTION_UPDATED","breakout","breakoutMoveId","SelfUtils","getReplacedBreakoutMoveId","device","CONTROLS_MEETING_BREAKOUT_UPDATED","interpretation","CONTROLS_MEETING_INTERPRETATION_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","videoEnabled","unmuteVideoAllowed","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","unmuteAllowed","CONTROLS_WEBCAST_CHANGED","webcastControl","CONTROLS_MEETING_FULL_CHANGED","meetingFull","CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","practiceSession","CONTROLS_STAGE_VIEW_UPDATED","videoLayout","LINKS_SERVICES","LINKS_RESOURCES","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","_this$parsedLocus$sel","roles","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","MEETING_INFO_UPDATED","isInitializing","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","forceUpdate","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","element","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","breakoutsChanged","SELF_MEETING_BREAKOUTS_CHANGED","breakoutSessions","brbChanged","SELF_MEETING_BRB_CHANGED","brb","interpretationChanged","SELF_MEETING_INTERPRETATION_CHANGED","selfParticipantId","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","isRolesChanged","_parsedSelves$previou","_parsedSelves$current","SELF_ROLES_CHANGED","oldRoles","newRoles","isVideoMutedByOthersChanged","muted","remoteVideoMuted","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","remoteMuted","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","isUserUnadmitted","SELF_UNADMITTED_GUEST","isUserAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","_parsedSelves$current2","_parsedSelves$current3","_parsedSelves$current4","MEDIA_STATUS_CHANGE","currentMediaStatus","audio","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","LOCUS_INFO_UPDATE_URL","isMainSessionDTO","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","cloneDeep","_this$fullState","_this$mainSessionLocu","_this$mainSessionLocu2","isActive","ACTIVE","INITIALIZING","includes","clearMainSessionLocusCache","mergeParticipants","sourceParticipants","existIndex","findIndex","p","splice","mainLocus","_this5","locusClone","assignWith","objValue","srcValue","EventsScope"],"sources":["index.ts"],"sourcesContent":["import {isEqual, assignWith, cloneDeep, isEmpty} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\nimport {\n EVENTS,\n LOCUSEVENT,\n _USER_,\n _CALL_,\n _SIP_BRIDGE_,\n MEETING_STATE,\n _MEETING_,\n _SPACE_SHARE_,\n LOCUSINFO,\n LOCUS,\n _LEFT_,\n MEETING_REMOVED_REASON,\n CALL_REMOVED_REASON,\n RECORDING_STATE,\n} from '../constants';\nimport InfoUtils from './infoUtils';\nimport FullState from './fullState';\nimport SelfUtils from './selfUtils';\nimport HostUtils from './hostUtils';\nimport ControlsUtils from './controlsUtils';\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\nimport MediaSharesUtils from './mediaSharesUtils';\nimport LocusDeltaParser from './parser';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\n/**\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\n * @export\n * @private\n * @class LocusInfo\n */\nexport default class LocusInfo extends EventsScope {\n compareAndUpdateFlags: any;\n emitChange: any;\n locusParser: any;\n meetingId: any;\n parsedLocus: any;\n updateMeeting: any;\n webex: any;\n aclUrl: any;\n baseSequence: any;\n created: any;\n deltaParticipants: any;\n identities: any;\n membership: any;\n participants: any;\n participantsUrl: any;\n replaces: any;\n scheduledMeeting: any;\n sequence: any;\n controls: any;\n conversationUrl: any;\n embeddedApps: any;\n fullState: any;\n host: any;\n info: any;\n roles: any;\n mediaShares: any;\n replace: any;\n url: any;\n services: any;\n resources: any;\n mainSessionLocusCache: any;\n /**\n * Constructor\n * @param {function} updateMeeting callback to update the meeting object from an object\n * @param {object} webex\n * @param {string} meetingId\n * @returns {undefined}\n */\n constructor(updateMeeting, webex, meetingId) {\n super();\n this.parsedLocus = {\n states: [],\n };\n this.webex = webex;\n this.emitChange = false;\n this.compareAndUpdateFlags = {};\n this.meetingId = meetingId;\n this.updateMeeting = updateMeeting;\n this.locusParser = new LocusDeltaParser();\n }\n\n /**\n * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.\n *\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n private doLocusSync(meeting: any) {\n let isDelta;\n let url;\n\n if (this.locusParser.workingCopy.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n isDelta = false;\n }\n\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> doing Locus sync (getting ${\n isDelta ? 'delta' : 'full'\n } DTO)`\n );\n\n // return value ignored on purpose\n meeting.meetingRequest\n .getLocusDTO({url})\n .catch((e) => {\n if (isDelta) {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> delta sync failed, falling back to full sync'\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_SYNC_FAILED, {\n correlationId: meeting.correlationId,\n url,\n reason: e.message,\n errorName: e.name,\n stack: e.stack,\n code: e.code,\n });\n\n isDelta = false;\n\n return meeting.meetingRequest.getLocusDTO({url: meeting.locusUrl}).catch((err) => {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n throw err;\n });\n }\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n throw e;\n })\n .then((res) => {\n if (isDelta) {\n if (!isEmpty(res.body)) {\n meeting.locusInfo.handleLocusDelta(res.body, meeting);\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO'\n );\n }\n } else {\n meeting.locusInfo.onFullLocus(res.body);\n }\n // Notify parser to resume processing delta events.\n // Any deltas in the queue that have now been superseded by this sync will simply be ignored\n this.locusParser.resume();\n });\n }\n\n /**\n * Apply locus delta data to meeting\n * @param {string} action Locus delta action\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\n const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;\n\n switch (action) {\n case USE_INCOMING:\n meeting.locusInfo.onDeltaLocus(locus);\n break;\n case USE_CURRENT:\n case WAIT:\n // do nothing\n break;\n case DESYNC:\n case LOCUS_URL_CHANGED:\n this.doLocusSync(meeting);\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\n );\n }\n }\n\n /**\n * Adds locus delta to parser's queue\n * and registers a function handler\n * to recieve parsed actions from queue.\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n handleLocusDelta(locus: any, meeting: any) {\n // register a function to process delta actions\n if (!this.locusParser.onDeltaAction) {\n // delta action, along with associated loci\n // is passed into the function.\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\n this.applyLocusDeltaData(action, parsedLoci, meeting);\n };\n }\n // queue delta event with parser\n this.locusParser.onDeltaEvent(locus);\n }\n\n /**\n * @param {Locus} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n init(locus: any = {}) {\n this.created = locus.created || null;\n this.scheduledMeeting = locus.meeting || null;\n this.participantsUrl = locus.participantsUrl || null;\n this.replaces = locus.replaces || null;\n this.aclUrl = locus.aclUrl || null;\n this.baseSequence = locus.baseSequence || null;\n this.sequence = locus.sequence || null;\n this.membership = locus.membership || null;\n this.identities = locus.identities || null;\n this.participants = locus.participants || null;\n\n /**\n * Stores the delta values for a changed participant.\n *\n * @typedef {Object} DeltaParticipant\n * @property {Record<string, boolean>} delta - Contains changed streams.\n * @property {Object} person - Contains person data.\n */\n\n /**\n * Stored participant changes between the last event and the current event.\n * All previously stored events are overwritten between events.\n *\n * @instance\n * @type {Array<DeltaParticipant>}\n * @private\n * @member LocusInfo\n */\n this.deltaParticipants = [];\n\n this.updateLocusCache(locus);\n // above section only updates the locusInfo object\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\n this.updateParticipants(locus.participants);\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateControls(locus.controls, locus.self);\n this.updateLocusUrl(locus.url);\n this.updateFullState(locus.fullState);\n this.updateMeetingInfo(locus.info);\n this.updateEmbeddedApps(locus.embeddedApps);\n // self and participants generate sipUrl for 1:1 meeting\n this.updateSelf(locus.self, locus.participants);\n this.updateHostInfo(locus.host);\n this.updateMediaShares(locus.mediaShares);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n initialSetup(locus: object) {\n this.updateLocusCache(locus);\n this.onFullLocus(locus);\n\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} data\n * @returns {undefined}\n * @memberof LocusInfo\n */\n parse(meeting: any, data: any) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n const locus = this.getTheLocusToUpdate(data.locus);\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\n\n switch (eventType) {\n case LOCUSEVENT.PARTICIPANT_JOIN:\n case LOCUSEVENT.PARTICIPANT_LEFT:\n case LOCUSEVENT.CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\n case LOCUSEVENT.SELF_CHANGED:\n case LOCUSEVENT.PARTICIPANT_UPDATED:\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\n case LOCUSEVENT.PARTICIPANT_DECLINED:\n case LOCUSEVENT.FLOOR_GRANTED:\n case LOCUSEVENT.FLOOR_RELEASED:\n this.onFullLocus(locus, eventType);\n break;\n case LOCUSEVENT.DIFFERENCE:\n this.handleLocusDelta(locus, meeting);\n break;\n\n default:\n // Why will there be a event with no eventType ????\n // we may not need this, we can get full locus\n this.handleLocusDelta(locus, meeting);\n }\n }\n\n /**\n * @param {String} scope\n * @param {String} eventName\n * @param {Array} args\n * @returns {undefined}\n * @memberof LocusInfo\n */\n emitScoped(scope?: any, eventName?: string, args?: any) {\n return this.emit(scope, eventName, args);\n }\n\n /**\n * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType particulat locus event\n * @returns {object} null\n * @memberof LocusInfo\n */\n onFullLocus(locus: any, eventType?: string) {\n if (!locus) {\n LoggerProxy.logger.error(\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\n );\n }\n\n if (!this.locusParser.isNewFullLocus(locus)) {\n LoggerProxy.logger.info(\n `Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=${eventType}`\n );\n\n return;\n }\n\n this.updateParticipantDeltas(locus.participants);\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n this.handleOneOnOneEvent(eventType);\n this.updateEmbeddedApps(locus.embeddedApps);\n // set current (working copy) for parser\n this.locusParser.workingCopy = locus;\n }\n\n // used for ringing stops on one on one\n /**\n * @param {String} eventType\n * @returns {undefined}\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n handleOneOnOneEvent(eventType: string) {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // for 1:1 bob calls alice and alice declines, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: true,\n remoteAnswered: false,\n }\n );\n }\n // for 1:1 bob calls alice and alice answers, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: false,\n remoteAnswered: true,\n }\n );\n }\n }\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n onDeltaLocus(locus: any) {\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusInfo(locus) {\n if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {\n // When moved to a breakout session locus sends a message for the previous locus\n // indicating that we have been moved. It isn't helpful to continue parsing this\n // as it gets interpreted as if we have left the call\n return;\n }\n\n this.updateControls(locus.controls, locus.self);\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateCreated(locus.created);\n this.updateFullState(locus.fullState);\n this.updateHostInfo(locus.host);\n this.updateMeetingInfo(locus.info, locus.self);\n this.updateMediaShares(locus.mediaShares);\n this.updateParticipantsUrl(locus.participantsUrl);\n this.updateReplace(locus.replace);\n this.updateSelf(locus.self, locus.participants);\n this.updateLocusUrl(locus.url);\n this.updateAclUrl(locus.aclUrl);\n this.updateBasequence(locus.baseSequence);\n this.updateSequence(locus.sequence);\n this.updateMemberShip(locus.membership);\n this.updateIdentifiers(locus.identities);\n this.updateEmbeddedApps(locus.embeddedApps);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n this.compareAndUpdate();\n // update which required to compare different objects from locus\n }\n\n /**\n * @param {Array} participants\n * @param {Object} self\n * @returns {Array}\n * @memberof LocusInfo\n */\n getLocusPartner(participants: Array<any>, self: any) {\n if (!participants || participants.length === 0) {\n return null;\n }\n\n return (\n participants.find(\n (participant) =>\n self &&\n participant.identity !== self.identity &&\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\n // @ts-ignore\n ) || this.partner\n );\n }\n\n // TODO: all the leave states need to be checked\n /**\n * @returns {undefined}\n * @memberof LocusInfo\n */\n isMeetingActive() {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_ ||\n this.parsedLocus.fullState.type === _SPACE_SHARE_\n ) {\n // @ts-ignore\n const partner = this.getLocusPartner(this.participants, this.self);\n\n this.updateMeeting({partner});\n\n // Check if guest user needs to be checked here\n\n // 1) when bob declines call from bob, (bob='DECLINED')\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\n\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\n\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\n // TODO: update the meeting state\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\n shouldLeave: false,\n }\n );\n } else if (\n partner.state === MEETING_STATE.STATES.LEFT &&\n this.parsedLocus.self &&\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\n shouldLeave:\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\n }\n );\n } else if (\n this.parsedLocus.self &&\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\n (partner.state === MEETING_STATE.STATES.LEFT ||\n partner.state === MEETING_STATE.STATES.DECLINED ||\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.SELF_LEFT,\n shouldLeave: false,\n }\n );\n }\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\n if (\n this.fullState &&\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\n // @ts-ignore\n this.fullState.state === LOCUS.STATE.TERMINATING)\n ) {\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\n shouldLeave: false,\n }\n );\n } else if (this.fullState && this.fullState.removed) {\n // user has been dropped from a meeting\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\n shouldLeave: false,\n }\n );\n }\n // If you are guest and you are removed from the meeting\n // You wont get any further events\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\n // Check if we need to send an event\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\n shouldLeave: false,\n }\n );\n }\n } else {\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\n }\n }\n\n /**\n * checks if the host permissions have changed while in the meeting\n * This would be the case if your role as host or moderator has been updated\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareAndUpdate() {\n // TODO: check with locus team on host and moderator doc\n // use host as a validator if needed\n if (\n this.compareAndUpdateFlags.compareSelfAndHost ||\n this.compareAndUpdateFlags.compareHostAndSelf\n ) {\n this.compareSelfAndHost();\n }\n }\n\n /**\n * compared the self object to check if the user has host permissions\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareSelfAndHost() {\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\n if (\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\n this.parsedLocus.self.moderator\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: true,\n }\n );\n } else {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: false,\n }\n );\n }\n }\n\n /**\n * Update the deltaParticipants property of this object based on a list of\n * provided participants.\n *\n * @param {Array} [participants] - The participants to update against.\n * @returns {void}\n */\n updateParticipantDeltas(participants: Array<any> = []) {\n // Used to find a participant within a participants collection.\n const findParticipant = (participant, collection) =>\n collection.find((item) => item.person.id === participant.person.id);\n\n // Generates an object that indicates which state properties have changed.\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\n // Setup deltas.\n const deltas = {\n audioStatus: prevState.audioStatus !== newState.audioStatus,\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\n videoStatus: prevState.videoStatus !== newState.videoStatus,\n };\n\n // Clean the object\n Object.keys(deltas).forEach((key) => {\n if (deltas[key] !== true) {\n delete deltas[key];\n }\n });\n\n return deltas;\n };\n\n this.deltaParticipants = participants.reduce((collection, participant) => {\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\n\n const delta = generateDelta(existingParticipant.status, participant.status);\n\n const changed = Object.keys(delta).length > 0;\n\n if (changed) {\n collection.push({\n person: participant.person,\n delta,\n });\n }\n\n return collection;\n }, []);\n }\n\n /**\n * update meeting's members\n * @param {Object} participants new participants object\n * @param {Boolean} isReplace is replace the whole members\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object, isReplace?: boolean) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\n isReplace,\n }\n );\n }\n\n /**\n * @param {Object} controls\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateControls(controls: object, self: object) {\n if (controls && !isEqual(this.controls, controls)) {\n this.parsedLocus.controls = ControlsUtils.parse(controls);\n const {\n updates: {\n hasRecordingChanged,\n hasRecordingPausedChanged,\n hasMeetingContainerChanged,\n hasTranscribeChanged,\n hasManualCaptionChanged,\n hasEntryExitToneChanged,\n hasBreakoutChanged,\n hasVideoEnabledChanged,\n hasMuteOnEntryChanged,\n hasShareControlChanged,\n hasDisallowUnmuteChanged,\n hasReactionsChanged,\n hasReactionDisplayNamesChanged,\n hasViewTheParticipantListChanged,\n hasRaiseHandChanged,\n hasVideoChanged,\n hasInterpretationChanged,\n hasWebcastChanged,\n hasMeetingFullChanged,\n hasPracticeSessionEnabledChanged,\n hasStageViewChanged,\n },\n current,\n } = ControlsUtils.getControls(this.controls, controls);\n\n if (hasMuteOnEntryChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,\n {state: current.muteOnEntry}\n );\n }\n\n if (hasShareControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,\n {state: current.shareControl}\n );\n }\n\n if (hasDisallowUnmuteChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,\n {state: current.disallowUnmute}\n );\n }\n\n if (hasReactionsChanged || hasReactionDisplayNamesChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,\n {state: current.reactions}\n );\n }\n\n if (hasViewTheParticipantListChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,\n {state: current.viewTheParticipantList}\n );\n }\n\n if (hasRaiseHandChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,\n {state: current.raiseHand}\n );\n }\n\n if (hasVideoChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED,\n {state: current.video}\n );\n }\n\n if (hasRecordingChanged || hasRecordingPausedChanged) {\n let state = null;\n\n if (hasRecordingPausedChanged) {\n if (current.record.paused) {\n state = RECORDING_STATE.PAUSED;\n } else {\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\n }\n } else if (hasRecordingChanged) {\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n {\n state,\n modifiedBy: current.record.modifiedBy,\n lastModified: current.record.lastModified,\n }\n );\n }\n\n if (hasMeetingContainerChanged) {\n const {meetingContainerUrl} = current.meetingContainer;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n {\n meetingContainerUrl,\n }\n );\n }\n\n if (hasTranscribeChanged) {\n const {transcribing, caption} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n {\n transcribing,\n caption,\n }\n );\n }\n\n if (hasManualCaptionChanged) {\n const {enabled} = current.manualCaptionControl;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED,\n {\n enabled,\n }\n );\n }\n\n if (hasBreakoutChanged) {\n const {breakout} = current;\n breakout.breakoutMoveId = SelfUtils.getReplacedBreakoutMoveId(\n self,\n this.webex.internal.device.url\n );\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,\n {\n breakout,\n }\n );\n }\n\n if (hasInterpretationChanged) {\n const {interpretation} = current;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n {\n interpretation,\n }\n );\n }\n\n if (hasEntryExitToneChanged) {\n const {entryExitTone} = current;\n\n this.updateMeeting({entryExitTone});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\n {\n entryExitTone,\n }\n );\n }\n\n // videoEnabled is handled differently than other controls,\n // to fit with audio mute status logic\n if (hasVideoEnabledChanged) {\n const {videoEnabled} = current;\n\n this.updateMeeting({unmuteVideoAllowed: videoEnabled});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n // muted: not part of locus.controls\n unmuteAllowed: videoEnabled,\n }\n );\n }\n\n if (hasWebcastChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED,\n {state: current.webcastControl}\n );\n }\n\n if (hasMeetingFullChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED,\n {state: current.meetingFull}\n );\n }\n\n if (hasPracticeSessionEnabledChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,\n {state: current.practiceSession}\n );\n }\n\n if (hasStageViewChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED,\n {state: current.videoLayout}\n );\n }\n\n this.controls = controls;\n }\n }\n\n /**\n * @param {String} conversationUrl\n * @param {Object} info\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateConversationUrl(conversationUrl: string, info: any) {\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\n this.conversationUrl = conversationUrl;\n this.updateMeeting({conversationUrl});\n } else if (\n info &&\n info.conversationUrl &&\n !isEqual(this.conversationUrl, info.conversationUrl)\n ) {\n this.conversationUrl = info.conversationUrl;\n this.updateMeeting({conversationUrl: info.conversationUrl});\n }\n }\n\n /**\n * @param {Object} created\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateCreated(created: object) {\n if (created && !isEqual(this.created, created)) {\n this.created = created;\n }\n }\n\n /**\n * @param {Object} services\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\n if (services && !isEqual(this.services, services)) {\n this.services = services;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateServices',\n },\n LOCUSINFO.EVENTS.LINKS_SERVICES,\n {\n services,\n }\n );\n }\n }\n\n /**\n * @param {Object} resources\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateResources(resources: Record<'webcastInstance', {url: string}>) {\n if (resources && !isEqual(this.resources, resources)) {\n this.resources = resources;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateResources',\n },\n LOCUSINFO.EVENTS.LINKS_RESOURCES,\n {\n resources,\n }\n );\n }\n }\n\n /**\n * @param {Object} fullState\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateFullState(fullState: object) {\n if (fullState && !isEqual(this.fullState, fullState)) {\n const result = FullState.getFullState(this.fullState, fullState);\n\n this.updateMeeting(result.current);\n\n if (result.updates.meetingStateChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\n {\n previousState: result.previous && result.previous.meetingState,\n currentState: result.current.meetingState,\n }\n );\n }\n\n if (result.updates.meetingTypeChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\n {\n type: result.current.type,\n }\n );\n }\n this.parsedLocus.fullState = result.current;\n this.fullState = fullState;\n }\n }\n\n /**\n * handles when the locus.host is updated\n * @param {Object} host the locus.host property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_host\n */\n updateHostInfo(host: object) {\n if (host && !isEqual(this.host, host)) {\n const parsedHosts = HostUtils.getHosts(this.host, host);\n\n this.updateMeeting(parsedHosts.current);\n this.parsedLocus.host = parsedHosts.current;\n if (parsedHosts.updates.isNewHost) {\n this.compareAndUpdateFlags.compareSelfAndHost = true;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateHostInfo',\n },\n EVENTS.LOCUS_INFO_UPDATE_HOST,\n {\n newHost: parsedHosts.current,\n oldHost: parsedHosts.previous,\n }\n );\n }\n this.host = host;\n } else {\n this.compareAndUpdateFlags.compareSelfAndHost = false;\n }\n }\n\n /**\n * @param {Object} info\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMeetingInfo(info: object, self?: object) {\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\n if (\n (info && !isEqual(this.info, info)) ||\n (roles.length && !isEqual(this.roles, roles) && info)\n ) {\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\n\n if (parsedInfo.updates.isLocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_LOCKED,\n info\n );\n }\n if (parsedInfo.updates.isUnlocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\n info\n );\n }\n\n this.info = info;\n this.parsedLocus.info = parsedInfo.current;\n // Parses the info and adds necessary values\n this.updateMeeting(parsedInfo.current);\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,\n {\n isInitializing: !self, // if self is undefined, then the update is caused by locus init\n }\n );\n }\n this.roles = roles;\n }\n\n /**\n * @param {Object} embeddedApps\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateEmbeddedApps(embeddedApps: object) {\n // don't do anything if the arrays of apps haven't changed significantly\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\n return;\n }\n\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\n\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateEmbeddedApps',\n },\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\n parsedEmbeddedApps\n );\n this.embeddedApps = embeddedApps;\n }\n\n /**\n * handles when the locus.mediaShares is updated\n * @param {Object} mediaShares the locus.mediaShares property\n * @param {boolean} forceUpdate force to update the mediaShares\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_media_shares\n */\n updateMediaShares(mediaShares: object, forceUpdate = false) {\n if (mediaShares && (!isEqual(this.mediaShares, mediaShares) || forceUpdate)) {\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\n\n this.updateMeeting(parsedMediaShares.current);\n this.parsedLocus.mediaShares = parsedMediaShares.current;\n this.mediaShares = mediaShares;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMediaShares',\n },\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\n {\n current: parsedMediaShares.current,\n previous: parsedMediaShares.previous,\n forceUpdate,\n }\n );\n }\n }\n\n /**\n * @param {String} participantsUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateParticipantsUrl(participantsUrl: string) {\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\n this.participantsUrl = participantsUrl;\n }\n }\n\n /**\n * @param {Object} replace\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateReplace(replace: object) {\n if (replace && !isEqual(this.replace, replace)) {\n this.replace = replace;\n }\n }\n\n /**\n * handles when the locus.self is updated\n * @param {Object} self the locus.mediaShares property\n * @param {Array} participants the locus.participants property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\n */\n updateSelf(self: any, participants: Array<any>) {\n // @ts-ignore - check where this.self come from\n if (self && !isEqual(this.self, self)) {\n // @ts-ignore\n const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);\n\n this.updateMeeting(parsedSelves.current);\n this.parsedLocus.self = parsedSelves.current;\n\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\n\n if (element !== parsedSelves.current.state) {\n this.parsedLocus.states.push(parsedSelves.current.state);\n }\n\n // TODO: check if we need to save the sipUri here as well\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\n const result = SelfUtils.getSipUrl(\n this.getLocusPartner(participants, self),\n this.parsedLocus.fullState.type,\n this.parsedLocus.info.sipUri\n );\n\n if (result.sipUri) {\n this.updateMeeting(result);\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.compareAndUpdateFlags.compareHostAndSelf = true;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n\n if (parsedSelves.updates.layoutChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\n {layout: parsedSelves.current.layout}\n );\n }\n\n if (parsedSelves.updates.breakoutsChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,\n {breakoutSessions: parsedSelves.current.breakoutSessions}\n );\n }\n\n if (parsedSelves.updates.brbChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED,\n {\n brb: parsedSelves.current.brb,\n }\n );\n }\n\n if (parsedSelves.updates.interpretationChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED,\n {\n interpretation: parsedSelves.current.interpretation,\n selfParticipantId: parsedSelves.current.selfId,\n }\n );\n }\n\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\n {reason: self.reason}\n );\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\n self\n );\n }\n\n if (parsedSelves.updates.isRolesChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ROLES_CHANGED,\n {oldRoles: parsedSelves.previous?.roles, newRoles: parsedSelves.current?.roles}\n );\n }\n\n if (parsedSelves.updates.isVideoMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteVideoMuted,\n // unmuteAllowed: not part of .self\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.isMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\n {}\n );\n }\n if (parsedSelves.updates.isUserUnadmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\n self\n );\n }\n if (parsedSelves.updates.isUserAdmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\n self\n );\n }\n\n if (parsedSelves.updates.isMediaInactive) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n // @ts-ignore\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\n SelfUtils.getMediaStatus(self.mediaSessions)\n );\n }\n\n if (\n parsedSelves.updates.audioStateChange ||\n parsedSelves.updates.videoStateChange ||\n parsedSelves.updates.shareStateChange\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\n {\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\n }\n );\n }\n\n if (parsedSelves.updates.isUserObserving) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_OBSERVING\n );\n }\n\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\n );\n }\n\n if (parsedSelves.updates.isSharingBlockedChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\n );\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n EVENTS.LOCUS_INFO_UPDATE_SELF,\n {\n oldSelf: parsedSelves.previous,\n newSelf: parsedSelves.current,\n }\n );\n this.parsedLocus.self = parsedSelves.current;\n // @ts-ignore\n this.self = self;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n }\n\n /**\n * handles when the locus.url is updated\n * @param {String} url\n * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string) {\n if (url && this.url !== url) {\n this.url = url;\n this.updateMeeting({locusUrl: url});\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateLocusUrl',\n },\n EVENTS.LOCUS_INFO_UPDATE_URL,\n url\n );\n }\n }\n\n /**\n * @param {String} aclUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateAclUrl(aclUrl: string) {\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\n this.aclUrl = aclUrl;\n }\n }\n\n /**\n * @param {Number} baseSequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateBasequence(baseSequence: number) {\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\n this.baseSequence = baseSequence;\n }\n }\n\n /**\n * @param {Number} sequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateSequence(sequence: number) {\n if (sequence && !isEqual(this.sequence, sequence)) {\n this.sequence = sequence;\n }\n }\n\n /**\n * @param {Object} membership\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMemberShip(membership: object) {\n if (membership && !isEqual(this.membership, membership)) {\n this.membership = membership;\n }\n }\n\n /**\n * @param {Array} identities\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateIdentifiers(identities: Array<any>) {\n if (identities && !isEqual(this.identities, identities)) {\n this.identities = identities;\n }\n }\n\n /**\n * check the locus is main session's one or not, if is main session's, update main session cache\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusCache(locus: any) {\n const isMainSessionDTO = ControlsUtils.isMainSessionDTO(locus);\n if (isMainSessionDTO) {\n this.updateMainSessionLocusCache(locus);\n }\n }\n\n /**\n * if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)\n * if join breakout from main session, main session is not active for the attendee and remove main session locus cache\n * @param {Object} newLocus\n * @returns {Object}\n * @memberof LocusInfo\n */\n getTheLocusToUpdate(newLocus: any) {\n const switchStatus = ControlsUtils.getSessionSwitchStatus(this.controls, newLocus?.controls);\n if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {\n return cloneDeep(this.mainSessionLocusCache);\n }\n const isMainSessionDTO =\n this.mainSessionLocusCache && ControlsUtils.isMainSessionDTO(this.mainSessionLocusCache);\n\n if (isMainSessionDTO) {\n const isActive =\n [LOCUS.STATE.ACTIVE, LOCUS.STATE.INITIALIZING, LOCUS.STATE.TERMINATING].includes(\n this.fullState?.state\n ) && !this.mainSessionLocusCache?.self?.removed;\n\n if (!isActive) {\n this.clearMainSessionLocusCache();\n }\n }\n\n return newLocus;\n }\n\n /**\n * merge participants by participant id\n * @param {Array} participants\n * @param {Array} sourceParticipants\n * @returns {Array} merged participants\n * @memberof LocusInfo\n */\n // eslint-disable-next-line class-methods-use-this\n mergeParticipants(participants, sourceParticipants) {\n if (!sourceParticipants || !sourceParticipants.length) return participants;\n if (!participants || !participants.length) {\n return sourceParticipants;\n }\n sourceParticipants.forEach((participant) => {\n const existIndex = participants.findIndex((p) => p.id === participant.id);\n if (existIndex > -1) {\n participants.splice(existIndex, 1, participant);\n } else {\n participants.push(participant);\n }\n });\n\n return participants;\n }\n\n /**\n * need cache main sessions' participants since locus will not send the full list when cohost/host leave breakout\n * @param {Object} mainLocus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMainSessionLocusCache(mainLocus: any) {\n if (!mainLocus) {\n return;\n }\n const locusClone = cloneDeep(mainLocus);\n if (this.mainSessionLocusCache) {\n // shallow merge and do special merge for participants\n assignWith(this.mainSessionLocusCache, locusClone, (objValue, srcValue, key) => {\n if (key === 'participants') {\n return this.mergeParticipants(objValue, srcValue);\n }\n\n return srcValue || objValue;\n });\n } else {\n this.mainSessionLocusCache = locusClone;\n }\n }\n\n /**\n * clear main session cache\n * @returns {undefined}\n * @memberof LocusInfo\n */\n clearMainSessionLocusCache() {\n this.mainSessionLocusCache = null;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_loggerProxy","_interopRequireDefault","_eventsScope","_constants","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","LocusInfo","exports","_EventsScope","_inherits2","_super","updateMeeting","webex","meetingId","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","_createClass2","key","value","doLocusSync","meeting","_this2","isDelta","url","workingCopy","syncUrl","locusUrl","LoggerProxy","logger","info","concat","meetingRequest","getLocusDTO","catch","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_SYNC_FAILED","correlationId","reason","message","errorName","name","stack","code","err","meetings","destroy","MEETING_REMOVED_REASON","LOCUS_DTO_SYNC_FAILED","then","res","isEmpty","body","locusInfo","handleLocusDelta","onFullLocus","resume","applyLocusDeltaData","action","locus","_LocusDeltaParser$loc","loci","DESYNC","USE_CURRENT","USE_INCOMING","WAIT","LOCUS_URL_CHANGED","onDeltaLocus","_this3","onDeltaAction","parsedLoci","onDeltaEvent","init","_locus$links","_locus$links2","length","undefined","created","scheduledMeeting","participantsUrl","replaces","aclUrl","baseSequence","sequence","membership","identities","participants","deltaParticipants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","updateResources","resources","initialSetup","parse","data","eventType","getTheLocusToUpdate","LOCUSEVENT","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","emitScoped","scope","eventName","args","emit","error","isNewFullLocus","updateParticipantDeltas","isReplaceMembers","ControlsUtils","isNeedReplaceMembers","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","type","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","_locus$self","_locus$self2","_locus$links3","_locus$links4","state","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","getLocusPartner","find","participant","identity","_USER_","removed","partner","_SPACE_SHARE_","LOCUS","STATE","INACTIVE","warn","internal","newMetrics","submitClientEvent","options","DESTROY_MEETING","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","_this4","findParticipant","collection","item","person","id","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","_keys","forEach","reduce","existingParticipant","delta","status","changed","push","isReplace","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","isEqual","_ControlsUtils$getCon","getControls","_ControlsUtils$getCon2","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","hasVideoEnabledChanged","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasInterpretationChanged","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","current","LOCUSINFO","CONTROLS_MUTE_ON_ENTRY_CHANGED","muteOnEntry","CONTROLS_SHARE_CONTROL_CHANGED","shareControl","CONTROLS_DISALLOW_UNMUTE_CHANGED","disallowUnmute","CONTROLS_REACTIONS_CHANGED","reactions","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","viewTheParticipantList","CONTROLS_RAISE_HAND_CHANGED","raiseHand","CONTROLS_VIDEO_CHANGED","video","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","_current$transcribe","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","enabled","manualCaptionControl","CONTROLS_MEETING_MANUAL_CAPTION_UPDATED","breakout","breakoutMoveId","SelfUtils","getReplacedBreakoutMoveId","device","CONTROLS_MEETING_BREAKOUT_UPDATED","interpretation","CONTROLS_MEETING_INTERPRETATION_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","videoEnabled","unmuteVideoAllowed","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","unmuteAllowed","CONTROLS_WEBCAST_CHANGED","webcastControl","CONTROLS_MEETING_FULL_CHANGED","meetingFull","CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","practiceSession","CONTROLS_STAGE_VIEW_UPDATED","videoLayout","LINKS_SERVICES","LINKS_RESOURCES","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","_this$parsedLocus$sel","roles","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","MEETING_INFO_UPDATED","isInitializing","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","forceUpdate","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","element","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","breakoutsChanged","SELF_MEETING_BREAKOUTS_CHANGED","breakoutSessions","brbChanged","SELF_MEETING_BRB_CHANGED","brb","interpretationChanged","SELF_MEETING_INTERPRETATION_CHANGED","selfParticipantId","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","isRolesChanged","_parsedSelves$previou","_parsedSelves$current","SELF_ROLES_CHANGED","oldRoles","newRoles","isVideoMutedByOthersChanged","muted","remoteVideoMuted","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","remoteMuted","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","isUserUnadmitted","SELF_UNADMITTED_GUEST","isUserAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","_parsedSelves$current2","_parsedSelves$current3","_parsedSelves$current4","MEDIA_STATUS_CHANGE","currentMediaStatus","audio","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","LOCUS_INFO_UPDATE_URL","isMainSessionDTO","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","cloneDeep","_this$fullState","_this$mainSessionLocu","_this$mainSessionLocu2","isActive","ACTIVE","INITIALIZING","includes","clearMainSessionLocusCache","mergeParticipants","sourceParticipants","existIndex","findIndex","p","splice","mainLocus","_this5","locusClone","assignWith","objValue","srcValue","EventsScope"],"sources":["index.ts"],"sourcesContent":["import {isEqual, assignWith, cloneDeep, isEmpty} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\nimport {\n EVENTS,\n LOCUSEVENT,\n _USER_,\n _CALL_,\n _SIP_BRIDGE_,\n MEETING_STATE,\n _MEETING_,\n _SPACE_SHARE_,\n LOCUSINFO,\n LOCUS,\n _LEFT_,\n MEETING_REMOVED_REASON,\n CALL_REMOVED_REASON,\n RECORDING_STATE,\n BREAKOUTS,\n} from '../constants';\n\nimport InfoUtils from './infoUtils';\nimport FullState from './fullState';\nimport SelfUtils from './selfUtils';\nimport HostUtils from './hostUtils';\nimport ControlsUtils from './controlsUtils';\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\nimport MediaSharesUtils from './mediaSharesUtils';\nimport LocusDeltaParser from './parser';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\n/**\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\n * @export\n * @private\n * @class LocusInfo\n */\nexport default class LocusInfo extends EventsScope {\n compareAndUpdateFlags: any;\n emitChange: any;\n locusParser: any;\n meetingId: any;\n parsedLocus: any;\n updateMeeting: any;\n webex: any;\n aclUrl: any;\n baseSequence: any;\n created: any;\n deltaParticipants: any;\n identities: any;\n membership: any;\n participants: any;\n participantsUrl: any;\n replaces: any;\n scheduledMeeting: any;\n sequence: any;\n controls: any;\n conversationUrl: any;\n embeddedApps: any;\n fullState: any;\n host: any;\n info: any;\n roles: any;\n mediaShares: any;\n replace: any;\n url: any;\n services: any;\n resources: any;\n mainSessionLocusCache: any;\n self: any;\n /**\n * Constructor\n * @param {function} updateMeeting callback to update the meeting object from an object\n * @param {object} webex\n * @param {string} meetingId\n * @returns {undefined}\n */\n constructor(updateMeeting, webex, meetingId) {\n super();\n this.parsedLocus = {\n states: [],\n };\n this.webex = webex;\n this.emitChange = false;\n this.compareAndUpdateFlags = {};\n this.meetingId = meetingId;\n this.updateMeeting = updateMeeting;\n this.locusParser = new LocusDeltaParser();\n }\n\n /**\n * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.\n *\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n private doLocusSync(meeting: any) {\n let isDelta;\n let url;\n\n if (this.locusParser.workingCopy.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n isDelta = false;\n }\n\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> doing Locus sync (getting ${\n isDelta ? 'delta' : 'full'\n } DTO)`\n );\n\n // return value ignored on purpose\n meeting.meetingRequest\n .getLocusDTO({url})\n .catch((e) => {\n if (isDelta) {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> delta sync failed, falling back to full sync'\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_SYNC_FAILED, {\n correlationId: meeting.correlationId,\n url,\n reason: e.message,\n errorName: e.name,\n stack: e.stack,\n code: e.code,\n });\n\n isDelta = false;\n\n return meeting.meetingRequest.getLocusDTO({url: meeting.locusUrl}).catch((err) => {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n throw err;\n });\n }\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n throw e;\n })\n .then((res) => {\n if (isDelta) {\n if (!isEmpty(res.body)) {\n meeting.locusInfo.handleLocusDelta(res.body, meeting);\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO'\n );\n }\n } else {\n meeting.locusInfo.onFullLocus(res.body);\n }\n // Notify parser to resume processing delta events.\n // Any deltas in the queue that have now been superseded by this sync will simply be ignored\n this.locusParser.resume();\n });\n }\n\n /**\n * Apply locus delta data to meeting\n * @param {string} action Locus delta action\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\n const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;\n\n switch (action) {\n case USE_INCOMING:\n meeting.locusInfo.onDeltaLocus(locus);\n break;\n case USE_CURRENT:\n case WAIT:\n // do nothing\n break;\n case DESYNC:\n case LOCUS_URL_CHANGED:\n this.doLocusSync(meeting);\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\n );\n }\n }\n\n /**\n * Adds locus delta to parser's queue\n * and registers a function handler\n * to recieve parsed actions from queue.\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n handleLocusDelta(locus: any, meeting: any) {\n // register a function to process delta actions\n if (!this.locusParser.onDeltaAction) {\n // delta action, along with associated loci\n // is passed into the function.\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\n this.applyLocusDeltaData(action, parsedLoci, meeting);\n };\n }\n // queue delta event with parser\n this.locusParser.onDeltaEvent(locus);\n }\n\n /**\n * @param {Locus} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n init(locus: any = {}) {\n this.created = locus.created || null;\n this.scheduledMeeting = locus.meeting || null;\n this.participantsUrl = locus.participantsUrl || null;\n this.replaces = locus.replaces || null;\n this.aclUrl = locus.aclUrl || null;\n this.baseSequence = locus.baseSequence || null;\n this.sequence = locus.sequence || null;\n this.membership = locus.membership || null;\n this.identities = locus.identities || null;\n this.participants = locus.participants || null;\n\n /**\n * Stores the delta values for a changed participant.\n *\n * @typedef {Object} DeltaParticipant\n * @property {Record<string, boolean>} delta - Contains changed streams.\n * @property {Object} person - Contains person data.\n */\n\n /**\n * Stored participant changes between the last event and the current event.\n * All previously stored events are overwritten between events.\n *\n * @instance\n * @type {Array<DeltaParticipant>}\n * @private\n * @member LocusInfo\n */\n this.deltaParticipants = [];\n\n this.updateLocusCache(locus);\n // above section only updates the locusInfo object\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\n this.updateParticipants(locus.participants);\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateControls(locus.controls, locus.self);\n this.updateLocusUrl(locus.url);\n this.updateFullState(locus.fullState);\n this.updateMeetingInfo(locus.info);\n this.updateEmbeddedApps(locus.embeddedApps);\n // self and participants generate sipUrl for 1:1 meeting\n this.updateSelf(locus.self, locus.participants);\n this.updateHostInfo(locus.host);\n this.updateMediaShares(locus.mediaShares);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n initialSetup(locus: object) {\n this.updateLocusCache(locus);\n this.onFullLocus(locus);\n\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} data\n * @returns {undefined}\n * @memberof LocusInfo\n */\n parse(meeting: any, data: any) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n const locus = this.getTheLocusToUpdate(data.locus);\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\n\n switch (eventType) {\n case LOCUSEVENT.PARTICIPANT_JOIN:\n case LOCUSEVENT.PARTICIPANT_LEFT:\n case LOCUSEVENT.CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\n case LOCUSEVENT.SELF_CHANGED:\n case LOCUSEVENT.PARTICIPANT_UPDATED:\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\n case LOCUSEVENT.PARTICIPANT_DECLINED:\n case LOCUSEVENT.FLOOR_GRANTED:\n case LOCUSEVENT.FLOOR_RELEASED:\n this.onFullLocus(locus, eventType);\n break;\n case LOCUSEVENT.DIFFERENCE:\n this.handleLocusDelta(locus, meeting);\n break;\n\n default:\n // Why will there be a event with no eventType ????\n // we may not need this, we can get full locus\n this.handleLocusDelta(locus, meeting);\n }\n }\n\n /**\n * @param {String} scope\n * @param {String} eventName\n * @param {Array} args\n * @returns {undefined}\n * @memberof LocusInfo\n */\n emitScoped(scope?: any, eventName?: string, args?: any) {\n return this.emit(scope, eventName, args);\n }\n\n /**\n * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType particulat locus event\n * @returns {object} null\n * @memberof LocusInfo\n */\n onFullLocus(locus: any, eventType?: string) {\n if (!locus) {\n LoggerProxy.logger.error(\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\n );\n }\n\n if (!this.locusParser.isNewFullLocus(locus)) {\n LoggerProxy.logger.info(\n `Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=${eventType}`\n );\n\n return;\n }\n\n this.updateParticipantDeltas(locus.participants);\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n this.handleOneOnOneEvent(eventType);\n this.updateEmbeddedApps(locus.embeddedApps);\n // set current (working copy) for parser\n this.locusParser.workingCopy = locus;\n }\n\n // used for ringing stops on one on one\n /**\n * @param {String} eventType\n * @returns {undefined}\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n handleOneOnOneEvent(eventType: string) {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // for 1:1 bob calls alice and alice declines, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: true,\n remoteAnswered: false,\n }\n );\n }\n // for 1:1 bob calls alice and alice answers, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: false,\n remoteAnswered: true,\n }\n );\n }\n }\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n onDeltaLocus(locus: any) {\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(locus.participants, isReplaceMembers);\n this.isMeetingActive();\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusInfo(locus) {\n if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {\n // When moved to a breakout session locus sends a message for the previous locus\n // indicating that we have been moved. It isn't helpful to continue parsing this\n // as it gets interpreted as if we have left the call\n return;\n }\n\n this.updateControls(locus.controls, locus.self);\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateCreated(locus.created);\n this.updateFullState(locus.fullState);\n this.updateHostInfo(locus.host);\n this.updateMeetingInfo(locus.info, locus.self);\n this.updateMediaShares(locus.mediaShares);\n this.updateParticipantsUrl(locus.participantsUrl);\n this.updateReplace(locus.replace);\n this.updateSelf(locus.self, locus.participants);\n this.updateLocusUrl(locus.url);\n this.updateAclUrl(locus.aclUrl);\n this.updateBasequence(locus.baseSequence);\n this.updateSequence(locus.sequence);\n this.updateMemberShip(locus.membership);\n this.updateIdentifiers(locus.identities);\n this.updateEmbeddedApps(locus.embeddedApps);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n this.compareAndUpdate();\n // update which required to compare different objects from locus\n }\n\n /**\n * @param {Array} participants\n * @param {Object} self\n * @returns {Array}\n * @memberof LocusInfo\n */\n getLocusPartner(participants: Array<any>, self: any) {\n if (!participants || participants.length === 0) {\n return null;\n }\n\n return (\n participants.find(\n (participant) =>\n self &&\n participant.identity !== self.identity &&\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\n // @ts-ignore\n ) || this.partner\n );\n }\n\n // TODO: all the leave states need to be checked\n /**\n * @returns {undefined}\n * @memberof LocusInfo\n */\n isMeetingActive() {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_ ||\n this.parsedLocus.fullState.type === _SPACE_SHARE_\n ) {\n // @ts-ignore\n const partner = this.getLocusPartner(this.participants, this.self);\n\n this.updateMeeting({partner});\n\n // Check if guest user needs to be checked here\n\n // 1) when bob declines call from bob, (bob='DECLINED')\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\n\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\n\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\n // TODO: update the meeting state\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\n shouldLeave: false,\n }\n );\n } else if (\n partner.state === MEETING_STATE.STATES.LEFT &&\n this.parsedLocus.self &&\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\n shouldLeave:\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\n }\n );\n } else if (\n this.parsedLocus.self &&\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\n (partner.state === MEETING_STATE.STATES.LEFT ||\n partner.state === MEETING_STATE.STATES.DECLINED ||\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.SELF_LEFT,\n shouldLeave: false,\n }\n );\n }\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\n if (\n this.fullState &&\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\n // @ts-ignore\n this.fullState.state === LOCUS.STATE.TERMINATING)\n ) {\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\n shouldLeave: false,\n }\n );\n } else if (this.fullState && this.fullState.removed) {\n // user has been dropped from a meeting\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\n shouldLeave: false,\n }\n );\n }\n // If you are guest and you are removed from the meeting\n // You wont get any further events\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\n // Check if we need to send an event\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\n shouldLeave: false,\n }\n );\n }\n } else {\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\n }\n }\n\n /**\n * checks if the host permissions have changed while in the meeting\n * This would be the case if your role as host or moderator has been updated\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareAndUpdate() {\n // TODO: check with locus team on host and moderator doc\n // use host as a validator if needed\n if (\n this.compareAndUpdateFlags.compareSelfAndHost ||\n this.compareAndUpdateFlags.compareHostAndSelf\n ) {\n this.compareSelfAndHost();\n }\n }\n\n /**\n * compared the self object to check if the user has host permissions\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareSelfAndHost() {\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\n if (\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\n this.parsedLocus.self.moderator\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: true,\n }\n );\n } else {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: false,\n }\n );\n }\n }\n\n /**\n * Update the deltaParticipants property of this object based on a list of\n * provided participants.\n *\n * @param {Array} [participants] - The participants to update against.\n * @returns {void}\n */\n updateParticipantDeltas(participants: Array<any> = []) {\n // Used to find a participant within a participants collection.\n const findParticipant = (participant, collection) =>\n collection.find((item) => item.person.id === participant.person.id);\n\n // Generates an object that indicates which state properties have changed.\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\n // Setup deltas.\n const deltas = {\n audioStatus: prevState.audioStatus !== newState.audioStatus,\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\n videoStatus: prevState.videoStatus !== newState.videoStatus,\n };\n\n // Clean the object\n Object.keys(deltas).forEach((key) => {\n if (deltas[key] !== true) {\n delete deltas[key];\n }\n });\n\n return deltas;\n };\n\n this.deltaParticipants = participants.reduce((collection, participant) => {\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\n\n const delta = generateDelta(existingParticipant.status, participant.status);\n\n const changed = Object.keys(delta).length > 0;\n\n if (changed) {\n collection.push({\n person: participant.person,\n delta,\n });\n }\n\n return collection;\n }, []);\n }\n\n /**\n * update meeting's members\n * @param {Object} participants new participants object\n * @param {Boolean} isReplace is replace the whole members\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object, isReplace?: boolean) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\n isReplace,\n }\n );\n }\n\n /**\n * @param {Object} controls\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateControls(controls: object, self: object) {\n if (controls && !isEqual(this.controls, controls)) {\n this.parsedLocus.controls = ControlsUtils.parse(controls);\n const {\n updates: {\n hasRecordingChanged,\n hasRecordingPausedChanged,\n hasMeetingContainerChanged,\n hasTranscribeChanged,\n hasManualCaptionChanged,\n hasEntryExitToneChanged,\n hasBreakoutChanged,\n hasVideoEnabledChanged,\n hasMuteOnEntryChanged,\n hasShareControlChanged,\n hasDisallowUnmuteChanged,\n hasReactionsChanged,\n hasReactionDisplayNamesChanged,\n hasViewTheParticipantListChanged,\n hasRaiseHandChanged,\n hasVideoChanged,\n hasInterpretationChanged,\n hasWebcastChanged,\n hasMeetingFullChanged,\n hasPracticeSessionEnabledChanged,\n hasStageViewChanged,\n },\n current,\n } = ControlsUtils.getControls(this.controls, controls);\n\n if (hasMuteOnEntryChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,\n {state: current.muteOnEntry}\n );\n }\n\n if (hasShareControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,\n {state: current.shareControl}\n );\n }\n\n if (hasDisallowUnmuteChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,\n {state: current.disallowUnmute}\n );\n }\n\n if (hasReactionsChanged || hasReactionDisplayNamesChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,\n {state: current.reactions}\n );\n }\n\n if (hasViewTheParticipantListChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,\n {state: current.viewTheParticipantList}\n );\n }\n\n if (hasRaiseHandChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,\n {state: current.raiseHand}\n );\n }\n\n if (hasVideoChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED,\n {state: current.video}\n );\n }\n\n if (hasRecordingChanged || hasRecordingPausedChanged) {\n let state = null;\n\n if (hasRecordingPausedChanged) {\n if (current.record.paused) {\n state = RECORDING_STATE.PAUSED;\n } else {\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\n }\n } else if (hasRecordingChanged) {\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n {\n state,\n modifiedBy: current.record.modifiedBy,\n lastModified: current.record.lastModified,\n }\n );\n }\n\n if (hasMeetingContainerChanged) {\n const {meetingContainerUrl} = current.meetingContainer;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n {\n meetingContainerUrl,\n }\n );\n }\n\n if (hasTranscribeChanged) {\n const {transcribing, caption} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n {\n transcribing,\n caption,\n }\n );\n }\n\n if (hasManualCaptionChanged) {\n const {enabled} = current.manualCaptionControl;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED,\n {\n enabled,\n }\n );\n }\n\n if (hasBreakoutChanged) {\n const {breakout} = current;\n breakout.breakoutMoveId = SelfUtils.getReplacedBreakoutMoveId(\n self,\n this.webex.internal.device.url\n );\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,\n {\n breakout,\n }\n );\n }\n\n if (hasInterpretationChanged) {\n const {interpretation} = current;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n {\n interpretation,\n }\n );\n }\n\n if (hasEntryExitToneChanged) {\n const {entryExitTone} = current;\n\n this.updateMeeting({entryExitTone});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\n {\n entryExitTone,\n }\n );\n }\n\n // videoEnabled is handled differently than other controls,\n // to fit with audio mute status logic\n if (hasVideoEnabledChanged) {\n const {videoEnabled} = current;\n\n this.updateMeeting({unmuteVideoAllowed: videoEnabled});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n // muted: not part of locus.controls\n unmuteAllowed: videoEnabled,\n }\n );\n }\n\n if (hasWebcastChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED,\n {state: current.webcastControl}\n );\n }\n\n if (hasMeetingFullChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED,\n {state: current.meetingFull}\n );\n }\n\n if (hasPracticeSessionEnabledChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,\n {state: current.practiceSession}\n );\n }\n\n if (hasStageViewChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED,\n {state: current.videoLayout}\n );\n }\n\n this.controls = controls;\n }\n }\n\n /**\n * @param {String} conversationUrl\n * @param {Object} info\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateConversationUrl(conversationUrl: string, info: any) {\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\n this.conversationUrl = conversationUrl;\n this.updateMeeting({conversationUrl});\n } else if (\n info &&\n info.conversationUrl &&\n !isEqual(this.conversationUrl, info.conversationUrl)\n ) {\n this.conversationUrl = info.conversationUrl;\n this.updateMeeting({conversationUrl: info.conversationUrl});\n }\n }\n\n /**\n * @param {Object} created\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateCreated(created: object) {\n if (created && !isEqual(this.created, created)) {\n this.created = created;\n }\n }\n\n /**\n * @param {Object} services\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\n if (services && !isEqual(this.services, services)) {\n this.services = services;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateServices',\n },\n LOCUSINFO.EVENTS.LINKS_SERVICES,\n {\n services,\n }\n );\n }\n }\n\n /**\n * @param {Object} resources\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateResources(resources: Record<'webcastInstance', {url: string}>) {\n if (resources && !isEqual(this.resources, resources)) {\n this.resources = resources;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateResources',\n },\n LOCUSINFO.EVENTS.LINKS_RESOURCES,\n {\n resources,\n }\n );\n }\n }\n\n /**\n * @param {Object} fullState\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateFullState(fullState: object) {\n if (fullState && !isEqual(this.fullState, fullState)) {\n const result = FullState.getFullState(this.fullState, fullState);\n\n this.updateMeeting(result.current);\n\n if (result.updates.meetingStateChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\n {\n previousState: result.previous && result.previous.meetingState,\n currentState: result.current.meetingState,\n }\n );\n }\n\n if (result.updates.meetingTypeChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\n {\n type: result.current.type,\n }\n );\n }\n this.parsedLocus.fullState = result.current;\n this.fullState = fullState;\n }\n }\n\n /**\n * handles when the locus.host is updated\n * @param {Object} host the locus.host property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_host\n */\n updateHostInfo(host: object) {\n if (host && !isEqual(this.host, host)) {\n const parsedHosts = HostUtils.getHosts(this.host, host);\n\n this.updateMeeting(parsedHosts.current);\n this.parsedLocus.host = parsedHosts.current;\n if (parsedHosts.updates.isNewHost) {\n this.compareAndUpdateFlags.compareSelfAndHost = true;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateHostInfo',\n },\n EVENTS.LOCUS_INFO_UPDATE_HOST,\n {\n newHost: parsedHosts.current,\n oldHost: parsedHosts.previous,\n }\n );\n }\n this.host = host;\n } else {\n this.compareAndUpdateFlags.compareSelfAndHost = false;\n }\n }\n\n /**\n * @param {Object} info\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMeetingInfo(info: object, self?: object) {\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\n if (\n (info && !isEqual(this.info, info)) ||\n (roles.length && !isEqual(this.roles, roles) && info)\n ) {\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\n\n if (parsedInfo.updates.isLocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_LOCKED,\n info\n );\n }\n if (parsedInfo.updates.isUnlocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\n info\n );\n }\n\n this.info = info;\n this.parsedLocus.info = parsedInfo.current;\n // Parses the info and adds necessary values\n this.updateMeeting(parsedInfo.current);\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,\n {\n isInitializing: !self, // if self is undefined, then the update is caused by locus init\n }\n );\n }\n this.roles = roles;\n }\n\n /**\n * @param {Object} embeddedApps\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateEmbeddedApps(embeddedApps: object) {\n // don't do anything if the arrays of apps haven't changed significantly\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\n return;\n }\n\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\n\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateEmbeddedApps',\n },\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\n parsedEmbeddedApps\n );\n this.embeddedApps = embeddedApps;\n }\n\n /**\n * handles when the locus.mediaShares is updated\n * @param {Object} mediaShares the locus.mediaShares property\n * @param {boolean} forceUpdate force to update the mediaShares\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_media_shares\n */\n updateMediaShares(mediaShares: object, forceUpdate = false) {\n if (mediaShares && (!isEqual(this.mediaShares, mediaShares) || forceUpdate)) {\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\n\n this.updateMeeting(parsedMediaShares.current);\n this.parsedLocus.mediaShares = parsedMediaShares.current;\n this.mediaShares = mediaShares;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMediaShares',\n },\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\n {\n current: parsedMediaShares.current,\n previous: parsedMediaShares.previous,\n forceUpdate,\n }\n );\n }\n }\n\n /**\n * @param {String} participantsUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateParticipantsUrl(participantsUrl: string) {\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\n this.participantsUrl = participantsUrl;\n }\n }\n\n /**\n * @param {Object} replace\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateReplace(replace: object) {\n if (replace && !isEqual(this.replace, replace)) {\n this.replace = replace;\n }\n }\n\n /**\n * handles when the locus.self is updated\n * @param {Object} self the locus.mediaShares property\n * @param {Array} participants the locus.participants property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\n */\n updateSelf(self: any, participants: Array<any>) {\n // @ts-ignore - check where this.self come from\n if (self && !isEqual(this.self, self)) {\n // @ts-ignore\n const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);\n\n this.updateMeeting(parsedSelves.current);\n this.parsedLocus.self = parsedSelves.current;\n\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\n\n if (element !== parsedSelves.current.state) {\n this.parsedLocus.states.push(parsedSelves.current.state);\n }\n\n // TODO: check if we need to save the sipUri here as well\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\n const result = SelfUtils.getSipUrl(\n this.getLocusPartner(participants, self),\n this.parsedLocus.fullState.type,\n this.parsedLocus.info.sipUri\n );\n\n if (result.sipUri) {\n this.updateMeeting(result);\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.compareAndUpdateFlags.compareHostAndSelf = true;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n\n if (parsedSelves.updates.layoutChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\n {layout: parsedSelves.current.layout}\n );\n }\n\n if (parsedSelves.updates.breakoutsChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,\n {breakoutSessions: parsedSelves.current.breakoutSessions}\n );\n }\n\n if (parsedSelves.updates.brbChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED,\n {\n brb: parsedSelves.current.brb,\n }\n );\n }\n\n if (parsedSelves.updates.interpretationChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED,\n {\n interpretation: parsedSelves.current.interpretation,\n selfParticipantId: parsedSelves.current.selfId,\n }\n );\n }\n\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\n {reason: self.reason}\n );\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\n self\n );\n }\n\n if (parsedSelves.updates.isRolesChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ROLES_CHANGED,\n {oldRoles: parsedSelves.previous?.roles, newRoles: parsedSelves.current?.roles}\n );\n }\n\n if (parsedSelves.updates.isVideoMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteVideoMuted,\n // unmuteAllowed: not part of .self\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.isMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\n {}\n );\n }\n if (parsedSelves.updates.isUserUnadmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\n self\n );\n }\n if (parsedSelves.updates.isUserAdmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\n self\n );\n }\n\n if (parsedSelves.updates.isMediaInactive) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n // @ts-ignore\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\n SelfUtils.getMediaStatus(self.mediaSessions)\n );\n }\n\n if (\n parsedSelves.updates.audioStateChange ||\n parsedSelves.updates.videoStateChange ||\n parsedSelves.updates.shareStateChange\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\n {\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\n }\n );\n }\n\n if (parsedSelves.updates.isUserObserving) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_OBSERVING\n );\n }\n\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\n );\n }\n\n if (parsedSelves.updates.isSharingBlockedChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\n );\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n EVENTS.LOCUS_INFO_UPDATE_SELF,\n {\n oldSelf: parsedSelves.previous,\n newSelf: parsedSelves.current,\n }\n );\n this.parsedLocus.self = parsedSelves.current;\n // @ts-ignore\n this.self = self;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n }\n\n /**\n * handles when the locus.url is updated\n * @param {String} url\n * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string) {\n if (url && this.url !== url) {\n this.url = url;\n this.updateMeeting({locusUrl: url});\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateLocusUrl',\n },\n EVENTS.LOCUS_INFO_UPDATE_URL,\n url\n );\n }\n }\n\n /**\n * @param {String} aclUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateAclUrl(aclUrl: string) {\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\n this.aclUrl = aclUrl;\n }\n }\n\n /**\n * @param {Number} baseSequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateBasequence(baseSequence: number) {\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\n this.baseSequence = baseSequence;\n }\n }\n\n /**\n * @param {Number} sequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateSequence(sequence: number) {\n if (sequence && !isEqual(this.sequence, sequence)) {\n this.sequence = sequence;\n }\n }\n\n /**\n * @param {Object} membership\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMemberShip(membership: object) {\n if (membership && !isEqual(this.membership, membership)) {\n this.membership = membership;\n }\n }\n\n /**\n * @param {Array} identities\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateIdentifiers(identities: Array<any>) {\n if (identities && !isEqual(this.identities, identities)) {\n this.identities = identities;\n }\n }\n\n /**\n * check the locus is main session's one or not, if is main session's, update main session cache\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusCache(locus: any) {\n const isMainSessionDTO = ControlsUtils.isMainSessionDTO(locus);\n if (isMainSessionDTO) {\n this.updateMainSessionLocusCache(locus);\n }\n }\n\n /**\n * if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)\n * if join breakout from main session, main session is not active for the attendee and remove main session locus cache\n * @param {Object} newLocus\n * @returns {Object}\n * @memberof LocusInfo\n */\n getTheLocusToUpdate(newLocus: any) {\n const switchStatus = ControlsUtils.getSessionSwitchStatus(this, newLocus);\n\n if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {\n return cloneDeep(this.mainSessionLocusCache);\n }\n const isMainSessionDTO =\n this.mainSessionLocusCache && ControlsUtils.isMainSessionDTO(this.mainSessionLocusCache);\n\n if (isMainSessionDTO) {\n const isActive =\n [LOCUS.STATE.ACTIVE, LOCUS.STATE.INITIALIZING, LOCUS.STATE.TERMINATING].includes(\n this.fullState?.state\n ) && !this.mainSessionLocusCache?.self?.removed;\n\n if (!isActive) {\n this.clearMainSessionLocusCache();\n }\n }\n\n return newLocus;\n }\n\n /**\n * merge participants by participant id\n * @param {Array} participants\n * @param {Array} sourceParticipants\n * @returns {Array} merged participants\n * @memberof LocusInfo\n */\n // eslint-disable-next-line class-methods-use-this\n mergeParticipants(participants, sourceParticipants) {\n if (!sourceParticipants || !sourceParticipants.length) return participants;\n if (!participants || !participants.length) {\n return sourceParticipants;\n }\n sourceParticipants.forEach((participant) => {\n const existIndex = participants.findIndex((p) => p.id === participant.id);\n if (existIndex > -1) {\n participants.splice(existIndex, 1, participant);\n } else {\n participants.push(participant);\n }\n });\n\n return participants;\n }\n\n /**\n * need cache main sessions' participants since locus will not send the full list when cohost/host leave breakout\n * @param {Object} mainLocus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMainSessionLocusCache(mainLocus: any) {\n if (!mainLocus) {\n return;\n }\n const locusClone = cloneDeep(mainLocus);\n if (this.mainSessionLocusCache) {\n // shallow merge and do special merge for participants\n assignWith(this.mainSessionLocusCache, locusClone, (objValue, srcValue, key) => {\n if (key === 'participants') {\n return this.mergeParticipants(objValue, srcValue);\n }\n\n return srcValue || objValue;\n });\n } else {\n this.mainSessionLocusCache = locusClone;\n }\n }\n\n /**\n * clear main session cache\n * @returns {undefined}\n * @memberof LocusInfo\n */\n clearMainSessionLocusCache() {\n this.mainSessionLocusCache = null;\n }\n}\n"],"mappings":"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"}
|
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.34",
|
|
47
47
|
"@webex/plugin-rooms": "3.8.0-next.13",
|
|
48
48
|
"@webex/test-helper-chai": "3.8.0-next.11",
|
|
49
49
|
"@webex/test-helper-mocha": "3.8.0-next.11",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@webex/internal-plugin-metrics": "3.8.0-next.11",
|
|
72
72
|
"@webex/internal-plugin-support": "3.8.0-next.13",
|
|
73
73
|
"@webex/internal-plugin-user": "3.8.0-next.11",
|
|
74
|
-
"@webex/internal-plugin-voicea": "3.8.0-next.
|
|
74
|
+
"@webex/internal-plugin-voicea": "3.8.0-next.34",
|
|
75
75
|
"@webex/media-helpers": "3.8.0-next.12",
|
|
76
76
|
"@webex/plugin-people": "3.8.0-next.13",
|
|
77
77
|
"@webex/plugin-rooms": "3.8.0-next.13",
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"//": [
|
|
93
93
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
94
94
|
],
|
|
95
|
-
"version": "3.8.0-next.
|
|
95
|
+
"version": "3.8.0-next.34"
|
|
96
96
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {isEqual} from 'lodash';
|
|
2
|
-
import {BREAKOUTS} from '../constants';
|
|
2
|
+
import {BREAKOUTS, MEETING_STATE} from '../constants';
|
|
3
3
|
|
|
4
4
|
const ControlsUtils: any = {};
|
|
5
5
|
|
|
@@ -242,30 +242,42 @@ ControlsUtils.isNeedReplaceMembers = (oldControls: any, controls: any) => {
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
return (
|
|
245
|
-
oldControls
|
|
246
|
-
oldControls
|
|
245
|
+
oldControls?.breakout?.groupId !== controls?.breakout?.groupId ||
|
|
246
|
+
oldControls?.breakout?.sessionId !== controls?.breakout?.sessionId
|
|
247
247
|
);
|
|
248
248
|
};
|
|
249
249
|
|
|
250
250
|
/**
|
|
251
251
|
* determine the switch status between breakout session and main session.
|
|
252
|
-
* @param {
|
|
253
|
-
* @param {
|
|
252
|
+
* @param {LocusInfo} oldLocus
|
|
253
|
+
* @param {LocusInfo} newLocus
|
|
254
254
|
* @returns {Object}
|
|
255
255
|
*/
|
|
256
|
-
ControlsUtils.getSessionSwitchStatus = (
|
|
256
|
+
ControlsUtils.getSessionSwitchStatus = (oldLocus: any, newLocus: any) => {
|
|
257
257
|
const status = {isReturnToMain: false, isJoinToBreakout: false};
|
|
258
258
|
// no breakout case
|
|
259
|
-
if (!
|
|
259
|
+
if (!oldLocus.controls?.breakout || !newLocus.controls?.breakout) {
|
|
260
260
|
return status;
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
263
|
+
// It is used to fix the timing issue triggered when the creator leaves session to ensure that the member list is complete
|
|
264
|
+
const needUseCache = !!(
|
|
265
|
+
oldLocus.self?.isCreator &&
|
|
266
|
+
newLocus.participants?.length === 1 &&
|
|
267
|
+
newLocus.participants?.[0].isCreator &&
|
|
268
|
+
newLocus.participants?.[0].state === MEETING_STATE.STATES.JOINED &&
|
|
269
|
+
newLocus.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
|
|
270
|
+
newLocus.controls?.breakout?.groups?.length
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
const isReturnToMain =
|
|
274
|
+
oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&
|
|
275
|
+
newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
|
|
276
|
+
|
|
277
|
+
status.isReturnToMain = needUseCache || isReturnToMain;
|
|
266
278
|
status.isJoinToBreakout =
|
|
267
|
-
|
|
268
|
-
controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
|
|
279
|
+
oldLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.MAIN &&
|
|
280
|
+
newLocus.controls.breakout.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
|
|
269
281
|
|
|
270
282
|
return status;
|
|
271
283
|
};
|
package/src/locus-info/index.ts
CHANGED
|
@@ -17,7 +17,9 @@ import {
|
|
|
17
17
|
MEETING_REMOVED_REASON,
|
|
18
18
|
CALL_REMOVED_REASON,
|
|
19
19
|
RECORDING_STATE,
|
|
20
|
+
BREAKOUTS,
|
|
20
21
|
} from '../constants';
|
|
22
|
+
|
|
21
23
|
import InfoUtils from './infoUtils';
|
|
22
24
|
import FullState from './fullState';
|
|
23
25
|
import SelfUtils from './selfUtils';
|
|
@@ -67,6 +69,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
67
69
|
services: any;
|
|
68
70
|
resources: any;
|
|
69
71
|
mainSessionLocusCache: any;
|
|
72
|
+
self: any;
|
|
70
73
|
/**
|
|
71
74
|
* Constructor
|
|
72
75
|
* @param {function} updateMeeting callback to update the meeting object from an object
|
|
@@ -1706,7 +1709,8 @@ export default class LocusInfo extends EventsScope {
|
|
|
1706
1709
|
* @memberof LocusInfo
|
|
1707
1710
|
*/
|
|
1708
1711
|
getTheLocusToUpdate(newLocus: any) {
|
|
1709
|
-
const switchStatus = ControlsUtils.getSessionSwitchStatus(this
|
|
1712
|
+
const switchStatus = ControlsUtils.getSessionSwitchStatus(this, newLocus);
|
|
1713
|
+
|
|
1710
1714
|
if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {
|
|
1711
1715
|
return cloneDeep(this.mainSessionLocusCache);
|
|
1712
1716
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import {assert} from '@webex/test-helper-chai';
|
|
2
2
|
import ControlsUtils from '@webex/plugin-meetings/src/locus-info/controlsUtils';
|
|
3
3
|
import controlsUtils from "@webex/plugin-meetings/src/locus-info/controlsUtils";
|
|
4
|
+
import {
|
|
5
|
+
MEETING_STATE,
|
|
6
|
+
BREAKOUTS,
|
|
7
|
+
} from '../../../../src/constants';
|
|
4
8
|
|
|
5
9
|
const defaultControls = {
|
|
6
10
|
entryExitTone: {
|
|
@@ -432,28 +436,76 @@ describe('plugin-meetings', () => {
|
|
|
432
436
|
|
|
433
437
|
describe('getSessionSwitchStatus', () => {
|
|
434
438
|
it('if no breakout control, return switch status both false', () => {
|
|
435
|
-
const
|
|
436
|
-
const
|
|
437
|
-
assert.deepEqual(controlsUtils.getSessionSwitchStatus(
|
|
439
|
+
const oldLocus = {};
|
|
440
|
+
const newLocus = {};
|
|
441
|
+
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
438
442
|
isReturnToMain: false, isJoinToBreakout: false
|
|
439
443
|
});
|
|
440
444
|
});
|
|
441
445
|
|
|
442
446
|
it('if switch session from breakout to main, return isReturnToMain as true', () => {
|
|
443
|
-
const
|
|
444
|
-
const
|
|
445
|
-
assert.deepEqual(controlsUtils.getSessionSwitchStatus(
|
|
447
|
+
const oldLocus = {controls: {breakout: {sessionType: 'BREAKOUT'}}};
|
|
448
|
+
const newLocus = {controls: {breakout: {sessionType: 'MAIN'}}};
|
|
449
|
+
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
446
450
|
isReturnToMain: true, isJoinToBreakout: false
|
|
447
451
|
});
|
|
448
452
|
});
|
|
449
453
|
|
|
450
454
|
it('if switch session from main to breakout, return isJoinToBreakout as true', () => {
|
|
451
|
-
const
|
|
452
|
-
const
|
|
453
|
-
assert.deepEqual(controlsUtils.getSessionSwitchStatus(
|
|
455
|
+
const oldLocus = {controls: {breakout: {sessionType: 'MAIN'}}};
|
|
456
|
+
const newLocus = {controls: {breakout: {sessionType: 'BREAKOUT'}}};
|
|
457
|
+
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
454
458
|
isReturnToMain: false, isJoinToBreakout: true
|
|
455
459
|
});
|
|
456
460
|
});
|
|
461
|
+
|
|
462
|
+
it('if needUseCache conditions are met, return isJoinToBreakout as true', () => {
|
|
463
|
+
const oldLocus = {
|
|
464
|
+
self: { isCreator: true },
|
|
465
|
+
controls: { breakout: { sessionType: BREAKOUTS.SESSION_TYPES.MAIN} },
|
|
466
|
+
};
|
|
467
|
+
|
|
468
|
+
const newLocus = {
|
|
469
|
+
participants: [
|
|
470
|
+
{ isCreator: true, state: MEETING_STATE.STATES.JOINED },
|
|
471
|
+
],
|
|
472
|
+
controls: {
|
|
473
|
+
breakout: {
|
|
474
|
+
sessionType: BREAKOUTS.SESSION_TYPES.MAIN,
|
|
475
|
+
groups: [{ id: 'group1' }]
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
};
|
|
479
|
+
|
|
480
|
+
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
481
|
+
isReturnToMain: true,
|
|
482
|
+
isJoinToBreakout: false
|
|
483
|
+
});
|
|
484
|
+
});
|
|
485
|
+
|
|
486
|
+
it('if needUseCache conditions are not met, return newLocus and isReturnToMain as false', () => {
|
|
487
|
+
const oldLocus = {
|
|
488
|
+
self: { isCreator: false },
|
|
489
|
+
controls: { breakout: { sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT} },
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
const newLocus = {
|
|
493
|
+
participants: [
|
|
494
|
+
{ isCreator: true, state: MEETING_STATE.STATES.JOINED },
|
|
495
|
+
],
|
|
496
|
+
controls: {
|
|
497
|
+
breakout: {
|
|
498
|
+
sessionType: BREAKOUTS.SESSION_TYPES.BREAKOUT,
|
|
499
|
+
groups: []
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
};
|
|
503
|
+
|
|
504
|
+
assert.deepEqual(controlsUtils.getSessionSwitchStatus(oldLocus, newLocus), {
|
|
505
|
+
isReturnToMain: false,
|
|
506
|
+
isJoinToBreakout: false
|
|
507
|
+
});
|
|
508
|
+
});
|
|
457
509
|
});
|
|
458
510
|
|
|
459
511
|
describe('#isMainSessionDTO', () => {
|