@webex/plugin-meetings 3.5.0-next.24 → 3.5.0-next.26
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/meeting/util.js +5 -8
- package/dist/meeting/util.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +21 -21
- package/src/meeting/util.ts +21 -29
- package/test/unit/spec/meeting/index.js +7 -3
- package/test/unit/spec/meeting/utils.js +34 -84
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.5.0-next.
|
|
1049
|
+
version: "3.5.0-next.26"
|
|
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.5.0-next.
|
|
376
|
+
version: "3.5.0-next.26"
|
|
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.5.0-next.
|
|
21
|
+
version: "3.5.0-next.26"
|
|
22
22
|
});
|
|
23
23
|
var _default = exports.default = SILanguage;
|
|
24
24
|
//# sourceMappingURL=siLanguage.js.map
|
package/dist/meeting/util.js
CHANGED
|
@@ -154,7 +154,8 @@ var MeetingUtil = {
|
|
|
154
154
|
liveAnnotationSupported: options.liveAnnotationSupported,
|
|
155
155
|
ipVersion: MeetingUtil.getIpVersion(meeting.getWebexObject())
|
|
156
156
|
}).then(function (res) {
|
|
157
|
-
|
|
157
|
+
var parsed = MeetingUtil.parseLocusJoin(res);
|
|
158
|
+
meeting.setLocus(parsed);
|
|
158
159
|
webex.internal.newMetrics.submitClientEvent({
|
|
159
160
|
name: 'client.locus.join.response',
|
|
160
161
|
payload: {
|
|
@@ -165,10 +166,10 @@ var MeetingUtil = {
|
|
|
165
166
|
},
|
|
166
167
|
options: {
|
|
167
168
|
meetingId: meeting.id,
|
|
168
|
-
mediaConnections:
|
|
169
|
+
mediaConnections: parsed.mediaConnections
|
|
169
170
|
}
|
|
170
171
|
});
|
|
171
|
-
return
|
|
172
|
+
return parsed;
|
|
172
173
|
});
|
|
173
174
|
},
|
|
174
175
|
cleanUp: function cleanUp(meeting) {
|
|
@@ -299,13 +300,9 @@ var MeetingUtil = {
|
|
|
299
300
|
}
|
|
300
301
|
|
|
301
302
|
// normal join meeting, scenario A, D
|
|
302
|
-
return MeetingUtil.joinMeeting(meeting, options).
|
|
303
|
-
meeting.setLocus(response);
|
|
304
|
-
return _promise.default.resolve(response);
|
|
305
|
-
}).catch(function (err) {
|
|
303
|
+
return MeetingUtil.joinMeeting(meeting, options).catch(function (err) {
|
|
306
304
|
// joining a claimed PMR that is not my own, scenario B
|
|
307
305
|
if (MeetingUtil.isPinOrGuest(err)) {
|
|
308
|
-
// @ts-ignore
|
|
309
306
|
webex.internal.newMetrics.submitClientEvent({
|
|
310
307
|
name: 'client.pin.prompt',
|
|
311
308
|
options: {
|
package/dist/meeting/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_webexErrors","_loggerProxy","_interopRequireDefault","_constants","_browserDetection","_intentToJoin","_joinMeeting","_parameter","_permission","_passwordError","_captchaError","_triggerProxy","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","r","t","_Object$keys","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","mediaConnection","mediaId","remoteUpdateAudioVideo","meeting","audioMuted","videoMuted","_promise","reject","ParameterError","locusMediaRequest","send","type","selfUrl","sequence","locusInfo","muteOptions","then","_response$body","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","webex","_webex$internal$devic","internal","device","ipNetworkDetector","supportsIpV4","supportsIpV6","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","joinMeeting","options","_meeting$meetingInfo","getWebexObject","newMetrics","submitClientEvent","meetingId","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","locusClusterUrl","meetingInfo","correlationId","reachability","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","preferTranscoding","isMultistream","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","res","payload","trigger","identifiers","trackingId","headers","trackingid","cleanUp","meetingEnded","breakouts","simultaneousInterpretation","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","_meeting$config","config","enableAutomaticLLM","updateLLMConnection","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","catch","LoggerProxy","logger","error","concat","prepareLeaveMeetingOptions","defaultOptions","leaveMeeting","isUserInLeftState","UserNotJoinedError","leaveOptions","moveMeeting","declineMeeting","reason","_locusInfo$parsedLocu","_locusInfo$parsedLocu2","parsedLocus","state","_LEFT_","isUserInIdleState","_locusInfo$parsedLocu3","_locusInfo$parsedLocu4","_IDLE_","isUserInJoinedState","_locusInfo$parsedLocu5","_locusInfo$parsedLocu6","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","CaptchaError","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","setLocus","IntentToJoinError","JoinMeetingError","buildLeaveFetchRequestOptions","buildLeaveMeetingRequestOptions","getTrack","stream","audioTrack","videoTrack","audioTracks","videoTracks","getAudioTracks","getVideoTracks","_audioTracks","_audioTracks2","_slicedToArray2","_videoTracks","_videoTracks2","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","_locusInfo$parsedLocu7","_locusInfo$parsedLocu8","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","canManageBreakout","BREAKOUT_MANAGEMENT","canBroadcastMessageToBreakout","policies","BROADCAST_MESSAGE_TO_BREAKOUT","SELF_POLICY","SUPPORT_BROADCAST_MESSAGE","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","audioStream","LOG_HEADER","settings","getSettings","deviceId","log","_stringify","handleVideoLogging","videoStream","handleDeviceLogging","devices","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","canStartManualCaption","MANUAL_CAPTION_START","canStopManualCaption","MANUAL_CAPTION_STOP","isManualCaptionActive","MANUAL_CAPTION_STATUS_ACTIVE","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","canUserRenameOthers","CAN_RENAME_OTHERS","canShareWhiteBoard","SHARE_WHITEBOARD","addSequence","requestBody","_meeting$locusInfo","updateLocusWithDelta","_response$body2","handleLocusDelta","generateBuildLocusDeltaRequestOptions","originalMeeting","meetingRef","WeakRef","buildLocusDeltaRequestOptions","originalOptions","deref","cloneDeep","generateLocusDeltaRequest","locusDeltaRequest","selfSupportsFeature","feature","userPolicies","parseInterpretationInfo","_meetingInfo$meetingS","siInfo","updateMeetingSIEnabled","turnOnSimultaneousInterpretation","currentSIInterpreter","hostSIEnabled","meetingSiteSetting","enableHostInterpreterControlSI","updateHostSIEnabled","renameKey","obj","oldKey","newKey","_meeting$simultaneous","_meeting$simultaneous2","lanuagesInfo","siLanguages","_iterator","_step","language","updateInterpretation","Trigger","file","function","EVENT_TRIGGERS","MEETING_INTERPRETATION_UPDATE","getChangeMeetingFloorErrorPayload","errorPayload","errorDescription","shownToUser","LOCAL_SHARE_ERRORS","UNDEFINED","fatal","category","DEVICE_NOT_JOINED","NO_MEDIA_FOR_DEVICE","NO_CONFLUENCE_ID","CONTENT_SHARING_DISABLED","LOCUS_PARTICIPANT_DNE","CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD","_default","exports"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraStream, LocalMicrophoneStream} from '@webex/media-helpers';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n SELF_POLICY,\n EVENT_TRIGGERS,\n LOCAL_SHARE_ERRORS,\n IP_VERSION,\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport Trigger from '../common/events/trigger-proxy';\n\nconst MeetingUtil = {\n parseLocusJoin: (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n },\n\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n return meeting.locusMediaRequest\n .send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n })\n .then((response) => response?.body?.locus);\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n /**\n * Returns the current state of knowledge about whether we are on an ipv4-only or ipv6-only or mixed (ipv4 and ipv6) network.\n * The return value matches the possible values of \"ipver\" parameter used by the backend APIs.\n *\n * @param {Object} webex webex instance\n * @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend\n */\n getIpVersion(webex: any): IP_VERSION | undefined {\n const {supportsIpV4, supportsIpV6} = webex.internal.device.ipNetworkDetector;\n\n if (BrowserDetection().isBrowser('firefox')) {\n // our ipv6 solution relies on FQDN ICE candidates, but Firefox doesn't support them,\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1713128\n // so for Firefox we don't want the backend to activate the \"ipv6 feature\"\n return undefined;\n }\n\n if (supportsIpV4 && supportsIpV6) {\n return IP_VERSION.ipv4_and_ipv6;\n }\n\n if (supportsIpV4) {\n return IP_VERSION.only_ipv4;\n }\n\n if (supportsIpV6) {\n return IP_VERSION.only_ipv6;\n }\n\n return IP_VERSION.unknown;\n },\n\n joinMeeting: (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const webex = meeting.getWebexObject();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.request',\n options: {meetingId: meeting.id},\n });\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n locusClusterUrl: meeting.meetingInfo?.locusClusterUrl,\n correlationId: meeting.correlationId,\n reachability: options.reachability,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n preferTranscoding: !meeting.isMultistream,\n asResourceOccupant: options.asResourceOccupant,\n breakoutsSupported: options.breakoutsSupported,\n locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\n ipVersion: MeetingUtil.getIpVersion(meeting.getWebexObject()),\n })\n .then((res) => {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n trigger: 'loci-update',\n identifiers: {\n trackingId: res.headers.trackingid,\n },\n },\n options: {\n meetingId: meeting.id,\n mediaConnections: res.body.mediaConnections,\n },\n });\n\n return MeetingUtil.parseLocusJoin(res);\n });\n },\n\n cleanUp: (meeting) => {\n meeting.getWebexObject().internal.device.meetingEnded();\n\n meeting.breakouts.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\n meeting.locusMediaRequest = undefined;\n\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeRemoteStreams())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.cleanupLocalStreams();\n meeting.unsetRemoteStreams();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => {\n if (meeting.config?.enableAutomaticLLM) {\n meeting.updateLLMConnection();\n }\n });\n },\n\n disconnectPhoneAudio: (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest.disconnectPhoneAudio(options).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Returns options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} leave options\n */\n prepareLeaveMeetingOptions: (meeting, options: any = {}) => {\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n return {...defaultOptions, ...options};\n },\n\n // by default will leave on meeting's resourceId\n // if you explicity want it not to leave on resource id, pass\n // {resourceId: null}\n // TODO: chris, you can modify this however you want\n leaveMeeting: (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n joinMeetingOptions: (meeting, options: any = {}) => {\n const webex = meeting.getWebexObject();\n\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n return Promise.reject(new CaptchaError());\n }\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n return Promise.reject(new PasswordError());\n }\n\n if (options.pin) {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.collected',\n options: {\n meetingId: meeting.id,\n },\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options)\n .then((response) => {\n meeting.setLocus(response);\n\n return Promise.resolve(response);\n })\n .catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.prompt',\n options: {\n meetingId: meeting.id,\n },\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error(\n 'Meeting:util#joinMeetingOptions --> Error joining the call, ',\n err\n );\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n /**\n * Returns request options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} request options\n */\n buildLeaveFetchRequestOptions: (meeting, options: any = {}) => {\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest.buildLeaveMeetingRequestOptions(leaveOptions);\n },\n\n getTrack: (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n },\n\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n canBroadcastMessageToBreakout: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT) &&\n !!policies[SELF_POLICY.SUPPORT_BROADCAST_MESSAGE],\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n lockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n },\n\n unlockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n },\n\n handleAudioLogging: (audioStream?: LocalMicrophoneStream) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioStream) {\n const settings = audioStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleVideoLogging: (videoStream?: LocalCameraStream) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoStream) {\n const settings = videoStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleDeviceLogging: (devices = []) => {\n const LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';\n\n devices.forEach((device) => {\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${device.deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings', JSON.stringify(device));\n });\n },\n\n endMeetingForAll: (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n canStartManualCaption: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_START),\n\n canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),\n\n isManualCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STATUS_ACTIVE),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n canSendReactions: (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n },\n canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n canShareWhiteBoard: (displayHints) => displayHints.includes(DISPLAY_HINTS.SHARE_WHITEBOARD),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the delta locus\n * returned from requests that include the sequence information\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusWithDelta: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n const locus = response?.body?.locus;\n\n if (locus) {\n meeting.locusInfo.handleLocusDelta(locus, meeting);\n }\n\n return response;\n },\n\n generateBuildLocusDeltaRequestOptions: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return originalOptions;\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return options;\n };\n\n return buildLocusDeltaRequestOptions;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions =\n MeetingUtil.generateBuildLocusDeltaRequestOptions(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = buildLocusDeltaRequestOptions(originalOptions);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusWithDelta(meeting, response));\n };\n\n return locusDeltaRequest;\n },\n\n selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => {\n if (!userPolicies) {\n return true;\n }\n\n return userPolicies[feature];\n },\n\n parseInterpretationInfo: (meeting, meetingInfo) => {\n if (!meeting || !meetingInfo) {\n return;\n }\n const siInfo = meetingInfo.simultaneousInterpretation;\n meeting.simultaneousInterpretation.updateMeetingSIEnabled(\n !!meetingInfo.turnOnSimultaneousInterpretation,\n !!siInfo?.currentSIInterpreter\n );\n const hostSIEnabled = !!(\n meetingInfo.turnOnSimultaneousInterpretation &&\n meetingInfo?.meetingSiteSetting?.enableHostInterpreterControlSI\n );\n meeting.simultaneousInterpretation.updateHostSIEnabled(hostSIEnabled);\n\n function renameKey(obj, oldKey, newKey) {\n if (oldKey in obj) {\n obj[newKey] = obj[oldKey];\n delete obj[oldKey];\n }\n }\n if (siInfo) {\n const lanuagesInfo = cloneDeep(siInfo.siLanguages);\n for (const language of lanuagesInfo) {\n renameKey(language, 'languageCode', 'languageName');\n renameKey(language, 'languageGroupId', 'languageCode');\n }\n if (!meeting.simultaneousInterpretation?.siLanguages?.length) {\n meeting.simultaneousInterpretation.updateInterpretation({siLanguages: lanuagesInfo});\n }\n }\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'parseInterpretationInfo',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n },\n\n /**\n * Returns a CA-recognized error payload for the specified raw error message/reason.\n *\n * New errors can be added to this function for handling in the future\n *\n * @param {String} reason the raw error message\n * @returns {Array<object>} an array of payload objects\n */\n getChangeMeetingFloorErrorPayload: (reason: string) => {\n const errorPayload = {\n errorDescription: reason,\n name: 'locus.response',\n shownToUser: false,\n };\n if (reason.includes(LOCAL_SHARE_ERRORS.UNDEFINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.DEVICE_NOT_JOINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4050,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_MEDIA_FOR_DEVICE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'media',\n errorCode: 2048,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_CONFLUENCE_ID)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4064,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_SHARING_DISABLED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4065,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.LOCUS_PARTICIPANT_DNE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4066,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4067,\n },\n ];\n }\n\n // return unknown error\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n },\n};\n\nexport default MeetingUtil;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_webexErrors","_loggerProxy","_interopRequireDefault","_constants","_browserDetection","_intentToJoin","_joinMeeting","_parameter","_permission","_passwordError","_captchaError","_triggerProxy","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","r","t","_Object$keys","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","mediaConnection","mediaId","remoteUpdateAudioVideo","meeting","audioMuted","videoMuted","_promise","reject","ParameterError","locusMediaRequest","send","type","selfUrl","sequence","locusInfo","muteOptions","then","_response$body","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","webex","_webex$internal$devic","internal","device","ipNetworkDetector","supportsIpV4","supportsIpV6","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","joinMeeting","options","_meeting$meetingInfo","getWebexObject","newMetrics","submitClientEvent","meetingId","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","locusClusterUrl","meetingInfo","correlationId","reachability","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","preferTranscoding","isMultistream","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","res","setLocus","payload","trigger","identifiers","trackingId","headers","trackingid","cleanUp","meetingEnded","breakouts","simultaneousInterpretation","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","_meeting$config","config","enableAutomaticLLM","updateLLMConnection","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","catch","LoggerProxy","logger","error","concat","prepareLeaveMeetingOptions","defaultOptions","leaveMeeting","isUserInLeftState","UserNotJoinedError","leaveOptions","moveMeeting","declineMeeting","reason","_locusInfo$parsedLocu","_locusInfo$parsedLocu2","parsedLocus","state","_LEFT_","isUserInIdleState","_locusInfo$parsedLocu3","_locusInfo$parsedLocu4","_IDLE_","isUserInJoinedState","_locusInfo$parsedLocu5","_locusInfo$parsedLocu6","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","CaptchaError","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","IntentToJoinError","JoinMeetingError","buildLeaveFetchRequestOptions","buildLeaveMeetingRequestOptions","getTrack","stream","audioTrack","videoTrack","audioTracks","videoTracks","getAudioTracks","getVideoTracks","_audioTracks","_audioTracks2","_slicedToArray2","_videoTracks","_videoTracks2","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","_locusInfo$parsedLocu7","_locusInfo$parsedLocu8","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","canManageBreakout","BREAKOUT_MANAGEMENT","canBroadcastMessageToBreakout","policies","BROADCAST_MESSAGE_TO_BREAKOUT","SELF_POLICY","SUPPORT_BROADCAST_MESSAGE","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","audioStream","LOG_HEADER","settings","getSettings","deviceId","log","_stringify","handleVideoLogging","videoStream","handleDeviceLogging","devices","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","canStartManualCaption","MANUAL_CAPTION_START","canStopManualCaption","MANUAL_CAPTION_STOP","isManualCaptionActive","MANUAL_CAPTION_STATUS_ACTIVE","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","canUserRenameOthers","CAN_RENAME_OTHERS","canShareWhiteBoard","SHARE_WHITEBOARD","addSequence","requestBody","_meeting$locusInfo","updateLocusWithDelta","_response$body2","handleLocusDelta","generateBuildLocusDeltaRequestOptions","originalMeeting","meetingRef","WeakRef","buildLocusDeltaRequestOptions","originalOptions","deref","cloneDeep","generateLocusDeltaRequest","locusDeltaRequest","selfSupportsFeature","feature","userPolicies","parseInterpretationInfo","_meetingInfo$meetingS","siInfo","updateMeetingSIEnabled","turnOnSimultaneousInterpretation","currentSIInterpreter","hostSIEnabled","meetingSiteSetting","enableHostInterpreterControlSI","updateHostSIEnabled","renameKey","obj","oldKey","newKey","_meeting$simultaneous","_meeting$simultaneous2","lanuagesInfo","siLanguages","_iterator","_step","language","updateInterpretation","Trigger","file","function","EVENT_TRIGGERS","MEETING_INTERPRETATION_UPDATE","getChangeMeetingFloorErrorPayload","errorPayload","errorDescription","shownToUser","LOCAL_SHARE_ERRORS","UNDEFINED","fatal","category","DEVICE_NOT_JOINED","NO_MEDIA_FOR_DEVICE","NO_CONFLUENCE_ID","CONTENT_SHARING_DISABLED","LOCUS_PARTICIPANT_DNE","CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD","_default","exports"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraStream, LocalMicrophoneStream} from '@webex/media-helpers';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n SELF_POLICY,\n EVENT_TRIGGERS,\n LOCAL_SHARE_ERRORS,\n IP_VERSION,\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport Trigger from '../common/events/trigger-proxy';\n\nconst MeetingUtil = {\n parseLocusJoin: (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n },\n\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n return meeting.locusMediaRequest\n .send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n })\n .then((response) => response?.body?.locus);\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n /**\n * Returns the current state of knowledge about whether we are on an ipv4-only or ipv6-only or mixed (ipv4 and ipv6) network.\n * The return value matches the possible values of \"ipver\" parameter used by the backend APIs.\n *\n * @param {Object} webex webex instance\n * @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend\n */\n getIpVersion(webex: any): IP_VERSION | undefined {\n const {supportsIpV4, supportsIpV6} = webex.internal.device.ipNetworkDetector;\n\n if (BrowserDetection().isBrowser('firefox')) {\n // our ipv6 solution relies on FQDN ICE candidates, but Firefox doesn't support them,\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1713128\n // so for Firefox we don't want the backend to activate the \"ipv6 feature\"\n return undefined;\n }\n\n if (supportsIpV4 && supportsIpV6) {\n return IP_VERSION.ipv4_and_ipv6;\n }\n\n if (supportsIpV4) {\n return IP_VERSION.only_ipv4;\n }\n\n if (supportsIpV6) {\n return IP_VERSION.only_ipv6;\n }\n\n return IP_VERSION.unknown;\n },\n\n joinMeeting: (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const webex = meeting.getWebexObject();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.request',\n options: {meetingId: meeting.id},\n });\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n locusClusterUrl: meeting.meetingInfo?.locusClusterUrl,\n correlationId: meeting.correlationId,\n reachability: options.reachability,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n preferTranscoding: !meeting.isMultistream,\n asResourceOccupant: options.asResourceOccupant,\n breakoutsSupported: options.breakoutsSupported,\n locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\n ipVersion: MeetingUtil.getIpVersion(meeting.getWebexObject()),\n })\n .then((res) => {\n const parsed = MeetingUtil.parseLocusJoin(res);\n meeting.setLocus(parsed);\n\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n trigger: 'loci-update',\n identifiers: {\n trackingId: res.headers.trackingid,\n },\n },\n options: {\n meetingId: meeting.id,\n mediaConnections: parsed.mediaConnections,\n },\n });\n\n return parsed;\n });\n },\n\n cleanUp: (meeting) => {\n meeting.getWebexObject().internal.device.meetingEnded();\n\n meeting.breakouts.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\n meeting.locusMediaRequest = undefined;\n\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeRemoteStreams())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.cleanupLocalStreams();\n meeting.unsetRemoteStreams();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => {\n if (meeting.config?.enableAutomaticLLM) {\n meeting.updateLLMConnection();\n }\n });\n },\n\n disconnectPhoneAudio: (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest.disconnectPhoneAudio(options).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Returns options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} leave options\n */\n prepareLeaveMeetingOptions: (meeting, options: any = {}) => {\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n return {...defaultOptions, ...options};\n },\n\n // by default will leave on meeting's resourceId\n // if you explicity want it not to leave on resource id, pass\n // {resourceId: null}\n // TODO: chris, you can modify this however you want\n leaveMeeting: (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n joinMeetingOptions: (meeting, options: any = {}) => {\n const webex = meeting.getWebexObject();\n\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n return Promise.reject(new CaptchaError());\n }\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n return Promise.reject(new PasswordError());\n }\n\n if (options.pin) {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.collected',\n options: {\n meetingId: meeting.id,\n },\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options).catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.prompt',\n options: {\n meetingId: meeting.id,\n },\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n /**\n * Returns request options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} request options\n */\n buildLeaveFetchRequestOptions: (meeting, options: any = {}) => {\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest.buildLeaveMeetingRequestOptions(leaveOptions);\n },\n\n getTrack: (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n },\n\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n canBroadcastMessageToBreakout: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT) &&\n !!policies[SELF_POLICY.SUPPORT_BROADCAST_MESSAGE],\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n lockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n },\n\n unlockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n },\n\n handleAudioLogging: (audioStream?: LocalMicrophoneStream) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioStream) {\n const settings = audioStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleVideoLogging: (videoStream?: LocalCameraStream) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoStream) {\n const settings = videoStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleDeviceLogging: (devices = []) => {\n const LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';\n\n devices.forEach((device) => {\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${device.deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings', JSON.stringify(device));\n });\n },\n\n endMeetingForAll: (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n canStartManualCaption: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_START),\n\n canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),\n\n isManualCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STATUS_ACTIVE),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n canSendReactions: (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n },\n canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n canShareWhiteBoard: (displayHints) => displayHints.includes(DISPLAY_HINTS.SHARE_WHITEBOARD),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the delta locus\n * returned from requests that include the sequence information\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusWithDelta: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n const locus = response?.body?.locus;\n\n if (locus) {\n meeting.locusInfo.handleLocusDelta(locus, meeting);\n }\n\n return response;\n },\n\n generateBuildLocusDeltaRequestOptions: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return originalOptions;\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return options;\n };\n\n return buildLocusDeltaRequestOptions;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions =\n MeetingUtil.generateBuildLocusDeltaRequestOptions(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = buildLocusDeltaRequestOptions(originalOptions);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusWithDelta(meeting, response));\n };\n\n return locusDeltaRequest;\n },\n\n selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => {\n if (!userPolicies) {\n return true;\n }\n\n return userPolicies[feature];\n },\n\n parseInterpretationInfo: (meeting, meetingInfo) => {\n if (!meeting || !meetingInfo) {\n return;\n }\n const siInfo = meetingInfo.simultaneousInterpretation;\n meeting.simultaneousInterpretation.updateMeetingSIEnabled(\n !!meetingInfo.turnOnSimultaneousInterpretation,\n !!siInfo?.currentSIInterpreter\n );\n const hostSIEnabled = !!(\n meetingInfo.turnOnSimultaneousInterpretation &&\n meetingInfo?.meetingSiteSetting?.enableHostInterpreterControlSI\n );\n meeting.simultaneousInterpretation.updateHostSIEnabled(hostSIEnabled);\n\n function renameKey(obj, oldKey, newKey) {\n if (oldKey in obj) {\n obj[newKey] = obj[oldKey];\n delete obj[oldKey];\n }\n }\n if (siInfo) {\n const lanuagesInfo = cloneDeep(siInfo.siLanguages);\n for (const language of lanuagesInfo) {\n renameKey(language, 'languageCode', 'languageName');\n renameKey(language, 'languageGroupId', 'languageCode');\n }\n if (!meeting.simultaneousInterpretation?.siLanguages?.length) {\n meeting.simultaneousInterpretation.updateInterpretation({siLanguages: lanuagesInfo});\n }\n }\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'parseInterpretationInfo',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n },\n\n /**\n * Returns a CA-recognized error payload for the specified raw error message/reason.\n *\n * New errors can be added to this function for handling in the future\n *\n * @param {String} reason the raw error message\n * @returns {Array<object>} an array of payload objects\n */\n getChangeMeetingFloorErrorPayload: (reason: string) => {\n const errorPayload = {\n errorDescription: reason,\n name: 'locus.response',\n shownToUser: false,\n };\n if (reason.includes(LOCAL_SHARE_ERRORS.UNDEFINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.DEVICE_NOT_JOINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4050,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_MEDIA_FOR_DEVICE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'media',\n errorCode: 2048,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_CONFLUENCE_ID)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4064,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_SHARING_DISABLED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4065,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.LOCUS_PARTICIPANT_DNE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4066,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4067,\n },\n ];\n }\n\n // return unknown error\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n },\n};\n\nexport default MeetingUtil;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAaA,IAAAK,iBAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,aAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,YAAA,GAAAJ,sBAAA,CAAAH,OAAA;AACA,IAAAQ,UAAA,GAAAL,sBAAA,CAAAH,OAAA;AACA,IAAAS,WAAA,GAAAN,sBAAA,CAAAH,OAAA;AACA,IAAAU,cAAA,GAAAP,sBAAA,CAAAH,OAAA;AACA,IAAAW,aAAA,GAAAR,sBAAA,CAAAH,OAAA;AACA,IAAAY,aAAA,GAAAT,sBAAA,CAAAH,OAAA;AAAqD,SAAAa,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,OAAA,oBAAAH,CAAA,CAAAI,gBAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,cAAA,CAAAL,CAAA,MAAAE,EAAA,GAAAI,2BAAA,CAAAN,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAO,MAAA,qBAAAL,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAM,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAR,CAAA,CAAAO,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAb,CAAA,CAAAQ,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAR,EAAA,GAAAA,EAAA,CAAAmB,IAAA,CAAArB,CAAA,MAAAW,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAApB,EAAA,CAAAqB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAhB,EAAA,CAAAuB,MAAA,UAAAvB,EAAA,CAAAuB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAN,CAAA,EAAA0B,MAAA,SAAA1B,CAAA,qBAAAA,CAAA,sBAAA2B,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAArB,CAAA,EAAA+B,KAAA,aAAApB,CAAA,iBAAAX,CAAA,CAAAgC,WAAA,EAAArB,CAAA,GAAAX,CAAA,CAAAgC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAuB,WAAA,CAAAlC,CAAA,OAAAW,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAC,KAAA,CAAAF,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAAA,SAAAE,QAAA1B,CAAA,EAAA2B,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAA7B,CAAA,OAAA8B,6BAAA,QAAA5C,CAAA,GAAA4C,6BAAA,CAAA9B,CAAA,GAAA2B,CAAA,KAAAzC,CAAA,GAAAA,CAAA,CAAA6C,MAAA,WAAAJ,CAAA,WAAAK,gCAAA,CAAAhC,CAAA,EAAA2B,CAAA,EAAAM,UAAA,OAAAL,CAAA,CAAAM,IAAA,CAAAC,KAAA,CAAAP,CAAA,EAAA1C,CAAA,YAAA0C,CAAA;AAAA,SAAAQ,cAAApC,CAAA,aAAA2B,CAAA,MAAAA,CAAA,GAAAU,SAAA,CAAA5C,MAAA,EAAAkC,CAAA,UAAAC,CAAA,WAAAS,SAAA,CAAAV,CAAA,IAAAU,SAAA,CAAAV,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAZ,MAAA,CAAAc,CAAA,OAAAU,OAAA,WAAAX,CAAA,QAAAY,gBAAA,CAAAC,OAAA,EAAAxC,CAAA,EAAA2B,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAc,iCAAA,GAAAC,wBAAA,CAAA1C,CAAA,EAAAyC,iCAAA,CAAAb,CAAA,KAAAF,OAAA,CAAAZ,MAAA,CAAAc,CAAA,GAAAU,OAAA,WAAAX,CAAA,IAAAgB,sBAAA,CAAA3C,CAAA,EAAA2B,CAAA,EAAAK,gCAAA,CAAAJ,CAAA,EAAAD,CAAA,iBAAA3B,CAAA;AAErD,IAAM4C,WAAW,GAAG;EAClBC,cAAc,EAAE,SAAAA,eAACC,QAAQ,EAAK;IAC5B,IAAMC,MAAW,GAAG,CAAC,CAAC;;IAEtB;IACAA,MAAM,CAACC,KAAK,GAAGF,QAAQ,CAACG,IAAI,CAACD,KAAK;IAClCD,MAAM,CAACG,gBAAgB,GAAGJ,QAAQ,CAACG,IAAI,CAACC,gBAAgB;IACxDH,MAAM,CAACI,QAAQ,GAAGJ,MAAM,CAACC,KAAK,CAACI,GAAG;IAClCL,MAAM,CAACM,OAAO,GAAGN,MAAM,CAACC,KAAK,CAACI,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;IAClDR,MAAM,CAACS,MAAM,GAAGT,MAAM,CAACC,KAAK,CAACS,IAAI,CAACC,EAAE;;IAEpC;IACAX,MAAM,CAACG,gBAAgB,CAACZ,OAAO,CAAC,UAACqB,eAAe,EAAK;MACnD,IAAIA,eAAe,CAACC,OAAO,EAAE;QAC3Bb,MAAM,CAACa,OAAO,GAAGD,eAAe,CAACC,OAAO;MAC1C;IACF,CAAC,CAAC;IAEF,OAAOb,MAAM;EACf,CAAC;EAEDc,sBAAsB,EAAE,SAAAA,uBAACC,OAAO,EAAEC,UAAoB,EAAEC,UAAoB,EAAK;IAC/E,IAAI,CAACF,OAAO,EAAE;MACZ,OAAOG,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIC,kBAAc,CAAC,4BAA4B,CAAC,CAAC;IACzE;IAEA,IAAI,CAACL,OAAO,CAACM,iBAAiB,EAAE;MAC9B,OAAOH,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CACnB,IAAIC,kBAAc,CAChB,4EACF,CACF,CAAC;IACH;IAEA,OAAOL,OAAO,CAACM,iBAAiB,CAC7BC,IAAI,CAAC;MACJC,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAET,OAAO,CAACS,OAAO;MACxBX,OAAO,EAAEE,OAAO,CAACF,OAAO;MACxBY,QAAQ,EAAEV,OAAO,CAACW,SAAS,CAACD,QAAQ;MACpCE,WAAW,EAAE;QACXX,UAAU,EAAVA,UAAU;QACVC,UAAU,EAAVA;MACF;IACF,CAAC,CAAC,CACDW,IAAI,CAAC,UAAC7B,QAAQ;MAAA,IAAA8B,cAAA;MAAA,OAAK9B,QAAQ,aAARA,QAAQ,wBAAA8B,cAAA,GAAR9B,QAAQ,CAAEG,IAAI,cAAA2B,cAAA,uBAAdA,cAAA,CAAgB5B,KAAK;IAAA,EAAC;EAC9C,CAAC;EAED6B,QAAQ,EAAE,SAAAA,SAACC,IAAI;IAAA,OAAKA,IAAI,IAAIA,IAAI,CAACC,KAAK;EAAA;EAEtCC,WAAW,EAAE,SAAAA,YAACD,KAAK,EAAEvB,MAAM;IAAA,OAAKuB,KAAK,KAAKvB,MAAM;EAAA;EAEhDyB,YAAY,EAAE,SAAAA,aAAC3E,GAAG;IAAA,IAAA4E,SAAA;IAAA,OAAK,CAAA5E,GAAG,aAAHA,GAAG,wBAAA4E,SAAA,GAAH5E,GAAG,CAAE2C,IAAI,cAAAiC,SAAA,uBAATA,SAAA,CAAWC,SAAS,KAAIC,yBAAc,CAACC,QAAQ,CAAC/E,GAAG,CAAC2C,IAAI,CAACkC,SAAS,CAAC;EAAA;EAE1F;AACF;AACA;AACA;AACA;AACA;AACA;EACEG,YAAY,WAAAA,aAACC,KAAU,EAA0B;IAC/C,IAAAC,qBAAA,GAAqCD,KAAK,CAACE,QAAQ,CAACC,MAAM,CAACC,iBAAiB;MAArEC,YAAY,GAAAJ,qBAAA,CAAZI,YAAY;MAAEC,YAAY,GAAAL,qBAAA,CAAZK,YAAY;IAEjC,IAAI,IAAAC,yBAAgB,EAAC,CAAC,CAACC,SAAS,CAAC,SAAS,CAAC,EAAE;MAC3C;MACA;MACA;MACA,OAAOC,SAAS;IAClB;IAEA,IAAIJ,YAAY,IAAIC,YAAY,EAAE;MAChC,OAAOI,qBAAU,CAACC,aAAa;IACjC;IAEA,IAAIN,YAAY,EAAE;MAChB,OAAOK,qBAAU,CAACE,SAAS;IAC7B;IAEA,IAAIN,YAAY,EAAE;MAChB,OAAOI,qBAAU,CAACG,SAAS;IAC7B;IAEA,OAAOH,qBAAU,CAACI,OAAO;EAC3B,CAAC;EAEDC,WAAW,EAAE,SAAAA,YAACxC,OAAO,EAAEyC,OAAO,EAAK;IAAA,IAAAC,oBAAA;IACjC,IAAI,CAAC1C,OAAO,EAAE;MACZ,OAAOG,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIC,kBAAc,CAAC,4BAA4B,CAAC,CAAC;IACzE;IACA,IAAMoB,KAAK,GAAGzB,OAAO,CAAC2C,cAAc,CAAC,CAAC;;IAEtC;IACAlB,KAAK,CAACE,QAAQ,CAACiB,UAAU,CAACC,iBAAiB,CAAC;MAC1CxF,IAAI,EAAE,2BAA2B;MACjCoF,OAAO,EAAE;QAACK,SAAS,EAAE9C,OAAO,CAACJ;MAAE;IACjC,CAAC,CAAC;;IAEF;IACA;IACA;IACA,OAAOI,OAAO,CAAC+C,cAAc,CAC1BP,WAAW,CAAC;MACXQ,cAAc,EAAEhD,OAAO,CAACiD,cAAc,IAAIjD,OAAO,CAACkD,MAAM;MACxDC,aAAa,EAAEnD,OAAO,CAACmD,aAAa;MACpCC,SAAS,EAAEpD,OAAO,CAACoD,SAAS;MAC5B/D,QAAQ,EAAEW,OAAO,CAACX,QAAQ;MAC1BgE,eAAe,GAAAX,oBAAA,GAAE1C,OAAO,CAACsD,WAAW,cAAAZ,oBAAA,uBAAnBA,oBAAA,CAAqBW,eAAe;MACrDE,aAAa,EAAEvD,OAAO,CAACuD,aAAa;MACpCC,YAAY,EAAEf,OAAO,CAACe,YAAY;MAClCC,WAAW,EAAEhB,OAAO,CAACgB,WAAW;MAChCC,eAAe,EAAE1D,OAAO,CAAC0D,eAAe;MACxCC,UAAU,EAAElB,OAAO,CAACkB,UAAU,IAAI,IAAI;MACtCC,SAAS,EAAEnB,OAAO,CAACmB,SAAS;MAC5BC,GAAG,EAAEpB,OAAO,CAACoB,GAAG;MAChBC,cAAc,EAAErB,OAAO,CAACqB,cAAc;MACtCC,iBAAiB,EAAE,CAAC/D,OAAO,CAACgE,aAAa;MACzCC,kBAAkB,EAAExB,OAAO,CAACwB,kBAAkB;MAC9CC,kBAAkB,EAAEzB,OAAO,CAACyB,kBAAkB;MAC9CC,MAAM,EAAE1B,OAAO,CAAC0B,MAAM;MACtBC,kBAAkB,EAAE3B,OAAO,CAAC2B,kBAAkB;MAC9CC,uBAAuB,EAAE5B,OAAO,CAAC4B,uBAAuB;MACxDC,SAAS,EAAExF,WAAW,CAAC0C,YAAY,CAACxB,OAAO,CAAC2C,cAAc,CAAC,CAAC;IAC9D,CAAC,CAAC,CACD9B,IAAI,CAAC,UAAC0D,GAAG,EAAK;MACb,IAAMtF,MAAM,GAAGH,WAAW,CAACC,cAAc,CAACwF,GAAG,CAAC;MAC9CvE,OAAO,CAACwE,QAAQ,CAACvF,MAAM,CAAC;MAExBwC,KAAK,CAACE,QAAQ,CAACiB,UAAU,CAACC,iBAAiB,CAAC;QAC1CxF,IAAI,EAAE,4BAA4B;QAClCoH,OAAO,EAAE;UACPC,OAAO,EAAE,aAAa;UACtBC,WAAW,EAAE;YACXC,UAAU,EAAEL,GAAG,CAACM,OAAO,CAACC;UAC1B;QACF,CAAC;QACDrC,OAAO,EAAE;UACPK,SAAS,EAAE9C,OAAO,CAACJ,EAAE;UACrBR,gBAAgB,EAAEH,MAAM,CAACG;QAC3B;MACF,CAAC,CAAC;MAEF,OAAOH,MAAM;IACf,CAAC,CAAC;EACN,CAAC;EAED8F,OAAO,EAAE,SAAAA,QAAC/E,OAAO,EAAK;IACpBA,OAAO,CAAC2C,cAAc,CAAC,CAAC,CAAChB,QAAQ,CAACC,MAAM,CAACoD,YAAY,CAAC,CAAC;IAEvDhF,OAAO,CAACiF,SAAS,CAACF,OAAO,CAAC,CAAC;IAC3B/E,OAAO,CAACkF,0BAA0B,CAACH,OAAO,CAAC,CAAC;IAC5C/E,OAAO,CAACM,iBAAiB,GAAG4B,SAAS;;IAErC;IACA,IAAMiD,iBAAiB,GAAGnF,OAAO,CAACoF,aAAa,GAC3CpF,OAAO,CAACoF,aAAa,CAACC,YAAY,CAAC,CAAC,GACpClF,QAAA,CAAAzB,OAAA,CAAQ4G,OAAO,CAAC,CAAC;IAErB,OAAOH,iBAAiB,CACrBtE,IAAI,CAAC;MAAA,OAAMb,OAAO,CAACuF,kBAAkB,CAAC,CAAC;IAAA,EAAC,CACxC1E,IAAI,CAAC;MAAA,OAAMb,OAAO,CAACwF,oBAAoB,CAAC,CAAC;IAAA,EAAC,CAC1C3E,IAAI,CAAC,YAAM;MACVb,OAAO,CAACyF,mBAAmB,CAAC,CAAC;MAC7BzF,OAAO,CAAC0F,kBAAkB,CAAC,CAAC;MAC5B1F,OAAO,CAAC2F,oBAAoB,CAAC,CAAC;MAC9B3F,OAAO,CAAC4F,mBAAmB,CAACb,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CACDlE,IAAI,CAAC;MAAA,OAAMb,OAAO,CAAC6F,aAAa,CAAC,CAAC;IAAA,EAAC,CACnChF,IAAI,CAAC,YAAM;MAAA,IAAAiF,eAAA;MACV,KAAAA,eAAA,GAAI9F,OAAO,CAAC+F,MAAM,cAAAD,eAAA,eAAdA,eAAA,CAAgBE,kBAAkB,EAAE;QACtChG,OAAO,CAACiG,mBAAmB,CAAC,CAAC;MAC/B;IACF,CAAC,CAAC;EACN,CAAC;EAEDC,oBAAoB,EAAE,SAAAA,qBAAClG,OAAO,EAAEmG,QAAQ,EAAK;IAC3C,IAAInG,OAAO,CAACoG,YAAY,KAAKC,qBAAU,CAACC,QAAQ,EAAE;MAChD,OAAOnG,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAImG,kCAAqB,CAAC,CAAC,CAAC;IACpD;IAEA,IAAM9D,OAAO,GAAG;MACdpD,QAAQ,EAAEW,OAAO,CAACX,QAAQ;MAC1BK,MAAM,EAAEM,OAAO,CAACN,MAAM;MACtB6D,aAAa,EAAEvD,OAAO,CAACuD,aAAa;MACpC4C,QAAQ,EAARA;IACF,CAAC;IAED,OAAOnG,OAAO,CAAC+C,cAAc,CAACmD,oBAAoB,CAACzD,OAAO,CAAC,CAAC+D,KAAK,CAAC,UAAChK,GAAG,EAAK;MACzEiK,oBAAW,CAACC,MAAM,CAACC,KAAK,sGAAAC,MAAA,CAC+E5G,OAAO,CAACJ,EAAE,eAAAgH,MAAA,CAAYpK,GAAG,CAChI,CAAC;MAED,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC5D,GAAG,CAAC;IAC5B,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEqK,0BAA0B,EAAE,SAAAA,2BAAC7G,OAAO,EAAwB;IAAA,IAAtByC,OAAY,GAAAlE,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA2D,SAAA,GAAA3D,SAAA,MAAG,CAAC,CAAC;IACrD,IAAMuI,cAAc,GAAG;MACrBzH,QAAQ,EAAEW,OAAO,CAACX,QAAQ;MAC1BK,MAAM,EAAEM,OAAO,CAACN,MAAM;MACtB6D,aAAa,EAAEvD,OAAO,CAACuD,aAAa;MACpCI,UAAU,EAAE3D,OAAO,CAAC2D,UAAU;MAC9BP,SAAS,EAAEpD,OAAO,CAACoD;IACrB,CAAC;IAED,OAAA9E,aAAA,CAAAA,aAAA,KAAWwI,cAAc,GAAKrE,OAAO;EACvC,CAAC;EAED;EACA;EACA;EACA;EACAsE,YAAY,EAAE,SAAAA,aAAC/G,OAAO,EAAwB;IAAA,IAAtByC,OAAY,GAAAlE,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA2D,SAAA,GAAA3D,SAAA,MAAG,CAAC,CAAC;IACvC,IAAIyB,OAAO,CAACoG,YAAY,KAAKC,qBAAU,CAACC,QAAQ,EAAE;MAChD;MACA,OAAOnG,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAImG,kCAAqB,CAAC,CAAC,CAAC;IACpD;IAEA,IAAIzH,WAAW,CAACkI,iBAAiB,CAAChH,OAAO,CAACW,SAAS,CAAC,EAAE;MACpD,OAAOR,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI6G,+BAAkB,CAAC,CAAC,CAAC;IACjD;IAEA,IAAMC,YAAY,GAAGpI,WAAW,CAAC+H,0BAA0B,CAAC7G,OAAO,EAAEyC,OAAO,CAAC;IAE7E,OAAOzC,OAAO,CAAC+C,cAAc,CAC1BgE,YAAY,CAACG,YAAY,CAAC,CAC1BrG,IAAI,CAAC,YAAM;MACV,IAAI4B,OAAO,CAAC0E,WAAW,EAAE;QACvB,OAAOhH,QAAA,CAAAzB,OAAA,CAAQ4G,OAAO,CAAC,CAAC;MAC1B;MAEA,OAAOxG,WAAW,CAACiG,OAAO,CAAC/E,OAAO,CAAC;IACrC,CAAC,CAAC,CACDwG,KAAK,CAAC,UAAChK,GAAG,EAAK;MACd;MACA;MACA;MACAiK,oBAAW,CAACC,MAAM,CAACC,KAAK,+FAAAC,MAAA,CACwE5G,OAAO,CAACJ,EAAE,eAAAgH,MAAA,CAAYpK,GAAG,CACzH,CAAC;MAED,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC5D,GAAG,CAAC;IAC5B,CAAC,CAAC;EACN,CAAC;EACD4K,cAAc,EAAE,SAAAA,eAACpH,OAAO,EAAEqH,MAAM;IAAA,OAC9BrH,OAAO,CAAC+C,cAAc,CAACqE,cAAc,CAAC;MACpC/H,QAAQ,EAAEW,OAAO,CAACX,QAAQ;MAC1B+D,SAAS,EAAEpD,OAAO,CAACoD,SAAS;MAC5BiE,MAAM,EAANA;IACF,CAAC,CAAC;EAAA;EAEJL,iBAAiB,EAAE,SAAAA,kBAACrG,SAAS;IAAA,IAAA2G,qBAAA,EAAAC,sBAAA;IAAA,OAAK,EAAAD,qBAAA,GAAA3G,SAAS,CAAC6G,WAAW,cAAAF,qBAAA,wBAAAC,sBAAA,GAArBD,qBAAA,CAAuB3H,IAAI,cAAA4H,sBAAA,uBAA3BA,sBAAA,CAA6BE,KAAK,MAAKC,iBAAM;EAAA;EAE/EC,iBAAiB,EAAE,SAAAA,kBAAChH,SAAS;IAAA,IAAAiH,sBAAA,EAAAC,sBAAA;IAAA,OAAK,EAAAD,sBAAA,GAAAjH,SAAS,CAAC6G,WAAW,cAAAI,sBAAA,wBAAAC,sBAAA,GAArBD,sBAAA,CAAuBjI,IAAI,cAAAkI,sBAAA,uBAA3BA,sBAAA,CAA6BJ,KAAK,MAAKK,iBAAM;EAAA;EAE/EC,mBAAmB,EAAE,SAAAA,oBAACpH,SAAS;IAAA,IAAAqH,sBAAA,EAAAC,sBAAA;IAAA,OAAK,EAAAD,sBAAA,GAAArH,SAAS,CAAC6G,WAAW,cAAAQ,sBAAA,wBAAAC,sBAAA,GAArBD,sBAAA,CAAuBrI,IAAI,cAAAsI,sBAAA,uBAA3BA,sBAAA,CAA6BR,KAAK,MAAKS,mBAAQ;EAAA;EAEnFC,kBAAkB,EAAE,SAAAA,mBAACC,kBAAkB;IAAA,OACrCA,kBAAkB,KACjBA,kBAAkB,CAACC,KAAK,IAAID,kBAAkB,CAACE,KAAK,IAAIF,kBAAkB,CAACG,KAAK,CAAC;EAAA;EAEpFC,kBAAkB,EAAE,SAAAA,mBAACxI,OAAO,EAAwB;IAAA,IAAtByC,OAAY,GAAAlE,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA2D,SAAA,GAAA3D,SAAA,MAAG,CAAC,CAAC;IAC7C,IAAMkD,KAAK,GAAGzB,OAAO,CAAC2C,cAAc,CAAC,CAAC;IAEtC3C,OAAO,CAAC2D,UAAU,GAAG3D,OAAO,CAAC2D,UAAU,IAAIlB,OAAO,CAACkB,UAAU;IAE7D,IAAI3D,OAAO,CAACyI,eAAe,EAAE;MAC3B,OAAOtI,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIsI,qBAAY,CAAC,CAAC,CAAC;IAC3C;IACA,IAAI1I,OAAO,CAAC2I,cAAc,KAAKC,0BAAe,CAACC,QAAQ,EAAE;MACvD,OAAO1I,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI0I,sBAAa,CAAC,CAAC,CAAC;IAC5C;IAEA,IAAIrG,OAAO,CAACoB,GAAG,EAAE;MACf;MACApC,KAAK,CAACE,QAAQ,CAACiB,UAAU,CAACC,iBAAiB,CAAC;QAC1CxF,IAAI,EAAE,sBAAsB;QAC5BoF,OAAO,EAAE;UACPK,SAAS,EAAE9C,OAAO,CAACJ;QACrB;MACF,CAAC,CAAC;IACJ;;IAEA;IACA,OAAOd,WAAW,CAAC0D,WAAW,CAACxC,OAAO,EAAEyC,OAAO,CAAC,CAAC+D,KAAK,CAAC,UAAChK,GAAG,EAAK;MAC9D;MACA,IAAIsC,WAAW,CAACqC,YAAY,CAAC3E,GAAG,CAAC,EAAE;QACjCiF,KAAK,CAACE,QAAQ,CAACiB,UAAU,CAACC,iBAAiB,CAAC;UAC1CxF,IAAI,EAAE,mBAAmB;UACzBoF,OAAO,EAAE;YACPK,SAAS,EAAE9C,OAAO,CAACJ;UACrB;QACF,CAAC,CAAC;;QAEF;QACA;QACA,OAAOO,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI2I,qBAAiB,CAAC,uBAAuB,EAAEvM,GAAG,CAAC,CAAC;MAC5E;MACAiK,oBAAW,CAACC,MAAM,CAACC,KAAK,CAAC,8DAA8D,EAAEnK,GAAG,CAAC;MAE7F,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI4I,oBAAgB,CAACvG,OAAO,EAAE,uBAAuB,EAAEjG,GAAG,CAAC,CAAC;IACpF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEyM,6BAA6B,EAAE,SAAAA,8BAACjJ,OAAO,EAAwB;IAAA,IAAtByC,OAAY,GAAAlE,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA2D,SAAA,GAAA3D,SAAA,MAAG,CAAC,CAAC;IACxD,IAAM2I,YAAY,GAAGpI,WAAW,CAAC+H,0BAA0B,CAAC7G,OAAO,EAAEyC,OAAO,CAAC;IAE7E,OAAOzC,OAAO,CAAC+C,cAAc,CAACmG,+BAA+B,CAAChC,YAAY,CAAC;EAC7E,CAAC;EAEDiC,QAAQ,EAAE,SAAAA,SAACC,MAAM,EAAK;IACpB,IAAIC,UAAU,GAAG,IAAI;IACrB,IAAIC,UAAU,GAAG,IAAI;IACrB,IAAIC,WAAW,GAAG,IAAI;IACtB,IAAIC,WAAW,GAAG,IAAI;IAEtB,IAAI,CAACJ,MAAM,EAAE;MACX,OAAO;QAACC,UAAU,EAAE,IAAI;QAAEC,UAAU,EAAE;MAAI,CAAC;IAC7C;IACA,IAAIF,MAAM,CAACK,cAAc,EAAE;MACzBF,WAAW,GAAGH,MAAM,CAACK,cAAc,CAAC,CAAC;IACvC;IACA,IAAIL,MAAM,CAACM,cAAc,EAAE;MACzBF,WAAW,GAAGJ,MAAM,CAACM,cAAc,CAAC,CAAC;IACvC;IAEA,IAAIH,WAAW,IAAIA,WAAW,CAAC5N,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAgO,YAAA,GAC1BJ,WAAW;MAAA,IAAAK,aAAA,OAAAC,eAAA,CAAAnL,OAAA,EAAAiL,YAAA;MAAzBN,UAAU,GAAAO,aAAA;IACb;IAEA,IAAIJ,WAAW,IAAIA,WAAW,CAAC7N,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAmO,YAAA,GAC1BN,WAAW;MAAA,IAAAO,aAAA,OAAAF,eAAA,CAAAnL,OAAA,EAAAoL,YAAA;MAAzBR,UAAU,GAAAS,aAAA;IACb;IAEA,OAAO;MAACV,UAAU,EAAVA,UAAU;MAAEC,UAAU,EAAVA;IAAU,CAAC;EACjC,CAAC;EAEDU,yBAAyB,EAAE,SAAAA,0BAACrJ,SAAS;IAAA,OACnCA,SAAS,IACTA,SAAS,CAAC6G,WAAW,IACrB7G,SAAS,CAAC6G,WAAW,CAACxG,IAAI,IAC1BL,SAAS,CAAC6G,WAAW,CAACxG,IAAI,IAC1BL,SAAS,CAAC6G,WAAW,CAACxG,IAAI,CAAC4C,SAAS;EAAA;EAEtCqG,sBAAsB,EAAE,SAAAA,uBAACtJ,SAAS;IAAA,OAChCA,SAAS,IACTA,SAAS,CAAC6G,WAAW,IACrB7G,SAAS,CAAC6G,WAAW,CAACxG,IAAI,IAC1BL,SAAS,CAAC6G,WAAW,CAACxG,IAAI,IAC1BL,SAAS,CAAC6G,WAAW,CAACxG,IAAI,CAACkJ,MAAM;EAAA;EAEnCC,gCAAgC,EAAE,SAAAA,iCAACxJ,SAAS;IAAA,IAAAyJ,sBAAA,EAAAC,sBAAA;IAAA,OAC1C,CAAA1J,SAAS,aAATA,SAAS,wBAAAyJ,sBAAA,GAATzJ,SAAS,CAAE6G,WAAW,cAAA4C,sBAAA,wBAAAC,sBAAA,GAAtBD,sBAAA,CAAwBpJ,IAAI,cAAAqJ,sBAAA,uBAA5BA,sBAAA,CAA8BC,gBAAgB,KAAI,EAAE;EAAA;EAEtDC,wBAAwB,EAAE,SAAAA,yBAACC,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACC,SAAS,CAAC;EAAA;EAE1FC,mBAAmB,EAAE,SAAAA,oBAACH,YAAY;IAAA,OAChCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACG,sBAAsB,CAAC;EAAA;EAE7DC,WAAW,EAAE,SAAAA,YAACL,YAAY;IAAA,OACxBA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACK,iBAAiB,CAAC,IACtDN,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACM,oBAAoB,CAAC;EAAA;EAE3DC,aAAa,EAAE,SAAAA,cAACR,YAAY;IAAA,OAC1BA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACQ,mBAAmB,CAAC,IACxDT,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACS,kBAAkB,CAAC;EAAA;EAEzDC,gBAAgB,EAAE,SAAAA,iBAACX,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACW,UAAU,CAAC;EAAA;EAEnFC,oBAAoB,EAAE,SAAAA,qBAACb,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACa,eAAe,CAAC;EAAA;EAE5FC,4BAA4B,EAAE,SAAAA,6BAACf,YAAY;IAAA,OACzCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACe,wBAAwB,CAAC;EAAA;EAE/DC,+BAA+B,EAAE,SAAAA,gCAACjB,YAAY;IAAA,OAC5CA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACiB,+BAA+B,CAAC,IACpElB,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACkB,iBAAiB,CAAC;EAAA;EAExDC,iBAAiB,EAAE,SAAAA,kBAACpB,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACoB,mBAAmB,CAAC;EAAA;EAC7FC,6BAA6B,EAAE,SAAAA,8BAACtB,YAAY;IAAA,IAAEuB,QAAQ,GAAAxN,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA2D,SAAA,GAAA3D,SAAA,MAAG,CAAC,CAAC;IAAA,OACzDiM,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACuB,6BAA6B,CAAC,IAClE,CAAC,CAACD,QAAQ,CAACE,sBAAW,CAACC,yBAAyB,CAAC;EAAA;EAEnDC,yBAAyB,EAAE,SAAAA,0BAAC3B,YAAY;IAAA,OACtCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC2B,8BAA8B,CAAC;EAAA;EAErEC,uBAAuB,EAAE,SAAAA,wBAAC7B,YAAY;IAAA,OACpC,CAACA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC6B,yBAAyB,CAAC;EAAA;EAEjEC,+BAA+B,EAAE,SAAAA,gCAAC/B,YAAY;IAAA,OAC5C,CAACA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC+B,+BAA+B,CAAC;EAAA;EAEvEC,iBAAiB,EAAE,SAAAA,kBAACjC,YAAY;IAAA,OAAK,CAACA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACiC,oBAAoB,CAAC;EAAA;EAE/FC,WAAW,EAAE,SAAAA,YAACC,OAAO,EAAEC,OAAO,EAAExN,QAAQ,EAAK;IAC3C,IAAIuN,OAAO,IAAIA,OAAO,CAACE,OAAO,EAAE;MAC9B,OAAOD,OAAO,CAACF,WAAW,CAAC;QAACtN,QAAQ,EAARA,QAAQ;QAAE0N,IAAI,EAAE;MAAI,CAAC,CAAC;IACpD;IAEA,OAAO5M,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI4M,mBAAe,CAAC,2CAA2C,CAAC,CAAC;EACzF,CAAC;EAEDC,aAAa,EAAE,SAAAA,cAACL,OAAO,EAAEC,OAAO,EAAExN,QAAQ,EAAK;IAC7C,IAAIuN,OAAO,IAAIA,OAAO,CAACM,SAAS,EAAE;MAChC,OAAOL,OAAO,CAACF,WAAW,CAAC;QAACtN,QAAQ,EAARA,QAAQ;QAAE0N,IAAI,EAAE;MAAK,CAAC,CAAC;IACrD;IAEA,OAAO5M,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI4M,mBAAe,CAAC,6CAA6C,CAAC,CAAC;EAC3F,CAAC;EAEDG,kBAAkB,EAAE,SAAAA,mBAACC,WAAmC,EAAK;IAC3D,IAAMC,UAAU,GAAG,oCAAoC;IAEvD,IAAID,WAAW,EAAE;MACf,IAAME,QAAQ,GAAGF,WAAW,CAACG,WAAW,CAAC,CAAC;MAC1C,IAAOC,QAAQ,GAAIF,QAAQ,CAApBE,QAAQ;MAEf/G,oBAAW,CAACC,MAAM,CAAC+G,GAAG,CAACJ,UAAU,gBAAAzG,MAAA,CAAgB4G,QAAQ,CAAE,CAAC;MAC5D/G,oBAAW,CAACC,MAAM,CAAC+G,GAAG,CAACJ,UAAU,EAAE,YAAY,EAAE,IAAAK,UAAA,CAAAhP,OAAA,EAAe4O,QAAQ,CAAC,CAAC;IAC5E;EACF,CAAC;EAEDK,kBAAkB,EAAE,SAAAA,mBAACC,WAA+B,EAAK;IACvD,IAAMP,UAAU,GAAG,oCAAoC;IAEvD,IAAIO,WAAW,EAAE;MACf,IAAMN,QAAQ,GAAGM,WAAW,CAACL,WAAW,CAAC,CAAC;MAC1C,IAAOC,QAAQ,GAAIF,QAAQ,CAApBE,QAAQ;MAEf/G,oBAAW,CAACC,MAAM,CAAC+G,GAAG,CAACJ,UAAU,gBAAAzG,MAAA,CAAgB4G,QAAQ,CAAE,CAAC;MAC5D/G,oBAAW,CAACC,MAAM,CAAC+G,GAAG,CAACJ,UAAU,EAAE,YAAY,EAAE,IAAAK,UAAA,CAAAhP,OAAA,EAAe4O,QAAQ,CAAC,CAAC;IAC5E;EACF,CAAC;EAEDO,mBAAmB,EAAE,SAAAA,oBAAA,EAAkB;IAAA,IAAjBC,OAAO,GAAAvP,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA2D,SAAA,GAAA3D,SAAA,MAAG,EAAE;IAChC,IAAM8O,UAAU,GAAG,qCAAqC;IAExDS,OAAO,CAACtP,OAAO,CAAC,UAACoD,MAAM,EAAK;MAC1B6E,oBAAW,CAACC,MAAM,CAAC+G,GAAG,CAACJ,UAAU,gBAAAzG,MAAA,CAAgBhF,MAAM,CAAC4L,QAAQ,CAAE,CAAC;MACnE/G,oBAAW,CAACC,MAAM,CAAC+G,GAAG,CAACJ,UAAU,EAAE,UAAU,EAAE,IAAAK,UAAA,CAAAhP,OAAA,EAAekD,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC;EACJ,CAAC;EAEDmM,gBAAgB,EAAE,SAAAA,iBAAC/N,OAAO,EAAK;IAC7B,IAAIA,OAAO,CAACoG,YAAY,KAAKC,qBAAU,CAACC,QAAQ,EAAE;MAChD,OAAOnG,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAImG,kCAAqB,CAAC,CAAC,CAAC;IACpD;IAEA,IAAMyH,UAAU,GAAG;MACjB3O,QAAQ,EAAEW,OAAO,CAACX;IACpB,CAAC;IAED,OAAOW,OAAO,CAAC+C,cAAc,CAC1BgL,gBAAgB,CAACC,UAAU,CAAC,CAC5BnN,IAAI,CAAC;MAAA,OAAM/B,WAAW,CAACiG,OAAO,CAAC/E,OAAO,CAAC;IAAA,EAAC,CACxCwG,KAAK,CAAC,UAAChK,GAAG,EAAK;MACdiK,oBAAW,CAACC,MAAM,CAACC,KAAK,qGAAAC,MAAA,CAC8E5G,OAAO,CAACJ,EAAE,eAAAgH,MAAA,CAAYpK,GAAG,CAC/H,CAAC;MAED,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC5D,GAAG,CAAC;IAC5B,CAAC,CAAC;EACN,CAAC;EAEDyR,sBAAsB,EAAE,SAAAA,uBAACzD,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACyD,aAAa,CAAC;EAAA;EAE5FC,wBAAwB,EAAE,SAAAA,yBAAC3D,YAAY;IAAA,OACrCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC2D,wBAAwB,CAAC;EAAA;EAE/DC,oBAAoB,EAAE,SAAAA,qBAAC7D,YAAY;IAAA,OACjCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC6D,2BAA2B,CAAC;EAAA;EAElEC,mBAAmB,EAAE,SAAAA,oBAAC/D,YAAY;IAAA,OAChCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC+D,0BAA0B,CAAC;EAAA;EAEjEC,qBAAqB,EAAE,SAAAA,sBAACjE,YAAY;IAAA,OAClCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACiE,qBAAqB,CAAC;EAAA;EAE5DC,qBAAqB,EAAE,SAAAA,sBAACnE,YAAY;IAAA,OAClCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACmE,oBAAoB,CAAC;EAAA;EAE3DC,oBAAoB,EAAE,SAAAA,qBAACrE,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACqE,mBAAmB,CAAC;EAAA;EAEhGC,qBAAqB,EAAE,SAAAA,sBAACvE,YAAY;IAAA,OAClCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACuE,4BAA4B,CAAC;EAAA;EAEnEC,sBAAsB,EAAE,SAAAA,uBAACzE,YAAY;IAAA,OACnCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACyE,6BAA6B,CAAC;EAAA;EAEpEC,mBAAmB,EAAE,SAAAA,oBAAC3E,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC2E,oBAAoB,CAAC;EAAA;EAEhGC,4BAA4B,EAAE,SAAAA,6BAAC7E,YAAY;IAAA,OACzCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC6E,6BAA6B,CAAC;EAAA;EAEpEC,wBAAwB,EAAE,SAAAA,yBAAC/E,YAAY;IAAA,OACrCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC+E,uBAAuB,CAAC;EAAA;EAE9DC,sBAAsB,EAAE,SAAAA,uBAACjF,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACiF,kBAAkB,CAAC;EAAA;EAEjGC,gBAAgB,EAAE,SAAAA,iBAACC,aAAa,EAAEpF,YAAY,EAAK;IACjD,IAAIA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACoF,gBAAgB,CAAC,EAAE;MACzD,OAAO,IAAI;IACb;IACA,IAAIrF,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACqF,kBAAkB,CAAC,EAAE;MAC3D,OAAO,KAAK;IACd;IAEA,OAAOF,aAAa;EACtB,CAAC;EACDG,4BAA4B,EAAE,SAAAA,6BAACvF,YAAY;IAAA,OACzCA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACuF,4BAA4B,CAAC;EAAA;EAEnEC,mBAAmB,EAAE,SAAAA,oBAACzF,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAACyF,iBAAiB,CAAC;EAAA;EAE7FC,kBAAkB,EAAE,SAAAA,mBAAC3F,YAAY;IAAA,OAAKA,YAAY,CAACjJ,QAAQ,CAACkJ,wBAAa,CAAC2F,gBAAgB,CAAC;EAAA;EAE3F;AACF;AACA;AACA;AACA;AACA;EACEC,WAAW,EAAE,SAAAA,YAACrQ,OAAO,EAAEsQ,WAAW,EAAK;IAAA,IAAAC,kBAAA;IACrC,IAAM7P,QAAQ,GAAGV,OAAO,aAAPA,OAAO,wBAAAuQ,kBAAA,GAAPvQ,OAAO,CAAEW,SAAS,cAAA4P,kBAAA,uBAAlBA,kBAAA,CAAoB7P,QAAQ;IAE7C,IAAI,CAACA,QAAQ,EAAE;MACb;IACF;IAEA4P,WAAW,CAAC5P,QAAQ,GAAGA,QAAQ;EACjC,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE8P,oBAAoB,EAAE,SAAAA,qBAACxQ,OAAO,EAAEhB,QAAQ,EAAK;IAAA,IAAAyR,eAAA;IAC3C,IAAI,CAACzQ,OAAO,EAAE;MACZ,OAAOhB,QAAQ;IACjB;IAEA,IAAME,KAAK,GAAGF,QAAQ,aAARA,QAAQ,wBAAAyR,eAAA,GAARzR,QAAQ,CAAEG,IAAI,cAAAsR,eAAA,uBAAdA,eAAA,CAAgBvR,KAAK;IAEnC,IAAIA,KAAK,EAAE;MACTc,OAAO,CAACW,SAAS,CAAC+P,gBAAgB,CAACxR,KAAK,EAAEc,OAAO,CAAC;IACpD;IAEA,OAAOhB,QAAQ;EACjB,CAAC;EAED2R,qCAAqC,EAAE,SAAAA,sCAACC,eAAe,EAAK;IAC1D,IAAMC,UAAU,GAAG,IAAIC,OAAO,CAACF,eAAe,CAAC;IAE/C,IAAMG,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAIC,eAAe,EAAK;MACzD,IAAMhR,OAAO,GAAG6Q,UAAU,CAACI,KAAK,CAAC,CAAC;MAElC,IAAI,CAACjR,OAAO,EAAE;QACZ,OAAOgR,eAAe;MACxB;MAEA,IAAMvO,OAAO,GAAG,IAAAyO,iBAAS,EAACF,eAAe,CAAC;MAE1C,IAAI,CAACvO,OAAO,CAACtD,IAAI,EAAE;QACjBsD,OAAO,CAACtD,IAAI,GAAG,CAAC,CAAC;MACnB;MAEAL,WAAW,CAACuR,WAAW,CAACrQ,OAAO,EAAEyC,OAAO,CAACtD,IAAI,CAAC;MAE9C,OAAOsD,OAAO;IAChB,CAAC;IAED,OAAOsO,6BAA6B;EACtC,CAAC;EAEDI,yBAAyB,EAAE,SAAAA,0BAACP,eAAe,EAAK;IAC9C,IAAMC,UAAU,GAAG,IAAIC,OAAO,CAACF,eAAe,CAAC;IAE/C,IAAMG,6BAA6B,GACjCjS,WAAW,CAAC6R,qCAAqC,CAACC,eAAe,CAAC;IAEpE,IAAMQ,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIJ,eAAe,EAAK;MAC7C,IAAMhR,OAAO,GAAG6Q,UAAU,CAACI,KAAK,CAAC,CAAC;MAElC,IAAI,CAACjR,OAAO,EAAE;QACZ,OAAOG,QAAA,CAAAzB,OAAA,CAAQ4G,OAAO,CAAC,CAAC;MAC1B;MAEA,IAAM7C,OAAO,GAAGsO,6BAA6B,CAACC,eAAe,CAAC;MAE9D,OAAOhR,OAAO,CACX6M,OAAO,CAACpK,OAAO,CAAC,CAChB5B,IAAI,CAAC,UAAC7B,QAAQ;QAAA,OAAKF,WAAW,CAAC0R,oBAAoB,CAACxQ,OAAO,EAAEhB,QAAQ,CAAC;MAAA,EAAC;IAC5E,CAAC;IAED,OAAOoS,iBAAiB;EAC1B,CAAC;EAEDC,mBAAmB,EAAE,SAAAA,oBAACC,OAAoB,EAAEC,YAA0C,EAAK;IACzF,IAAI,CAACA,YAAY,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,OAAOA,YAAY,CAACD,OAAO,CAAC;EAC9B,CAAC;EAEDE,uBAAuB,EAAE,SAAAA,wBAACxR,OAAO,EAAEsD,WAAW,EAAK;IAAA,IAAAmO,qBAAA;IACjD,IAAI,CAACzR,OAAO,IAAI,CAACsD,WAAW,EAAE;MAC5B;IACF;IACA,IAAMoO,MAAM,GAAGpO,WAAW,CAAC4B,0BAA0B;IACrDlF,OAAO,CAACkF,0BAA0B,CAACyM,sBAAsB,CACvD,CAAC,CAACrO,WAAW,CAACsO,gCAAgC,EAC9C,CAAC,EAACF,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEG,oBAAoB,CAChC,CAAC;IACD,IAAMC,aAAa,GAAG,CAAC,EACrBxO,WAAW,CAACsO,gCAAgC,IAC5CtO,WAAW,aAAXA,WAAW,gBAAAmO,qBAAA,GAAXnO,WAAW,CAAEyO,kBAAkB,cAAAN,qBAAA,eAA/BA,qBAAA,CAAiCO,8BAA8B,CAChE;IACDhS,OAAO,CAACkF,0BAA0B,CAAC+M,mBAAmB,CAACH,aAAa,CAAC;IAErE,SAASI,SAASA,CAACC,GAAG,EAAEC,MAAM,EAAEC,MAAM,EAAE;MACtC,IAAID,MAAM,IAAID,GAAG,EAAE;QACjBA,GAAG,CAACE,MAAM,CAAC,GAAGF,GAAG,CAACC,MAAM,CAAC;QACzB,OAAOD,GAAG,CAACC,MAAM,CAAC;MACpB;IACF;IACA,IAAIV,MAAM,EAAE;MAAA,IAAAY,qBAAA,EAAAC,sBAAA;MACV,IAAMC,YAAY,GAAG,IAAAtB,iBAAS,EAACQ,MAAM,CAACe,WAAW,CAAC;MAAC,IAAAC,SAAA,GAAAvX,0BAAA,CAC5BqX,YAAY;QAAAG,KAAA;MAAA;QAAnC,KAAAD,SAAA,CAAA5W,CAAA,MAAA6W,KAAA,GAAAD,SAAA,CAAA3W,CAAA,IAAAC,IAAA,GAAqC;UAAA,IAA1B4W,QAAQ,GAAAD,KAAA,CAAA1W,KAAA;UACjBiW,SAAS,CAACU,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC;UACnDV,SAAS,CAACU,QAAQ,EAAE,iBAAiB,EAAE,cAAc,CAAC;QACxD;MAAC,SAAApW,GAAA;QAAAkW,SAAA,CAAAxW,CAAA,CAAAM,GAAA;MAAA;QAAAkW,SAAA,CAAAtW,CAAA;MAAA;MACD,IAAI,GAAAkW,qBAAA,GAACtS,OAAO,CAACkF,0BAA0B,cAAAoN,qBAAA,gBAAAC,sBAAA,GAAlCD,qBAAA,CAAoCG,WAAW,cAAAF,sBAAA,eAA/CA,sBAAA,CAAiD5W,MAAM,GAAE;QAC5DqE,OAAO,CAACkF,0BAA0B,CAAC2N,oBAAoB,CAAC;UAACJ,WAAW,EAAED;QAAY,CAAC,CAAC;MACtF;IACF;IACAM,qBAAO,CAACpO,OAAO,CACb1E,OAAO,EACP;MACE+S,IAAI,EAAE,cAAc;MACpBC,QAAQ,EAAE;IACZ,CAAC,EACDC,yBAAc,CAACC,6BACjB,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,iCAAiC,EAAE,SAAAA,kCAAC9L,MAAc,EAAK;IACrD,IAAM+L,YAAY,GAAG;MACnBC,gBAAgB,EAAEhM,MAAM;MACxBhK,IAAI,EAAE,gBAAgB;MACtBiW,WAAW,EAAE;IACf,CAAC;IACD,IAAIjM,MAAM,CAAC9F,QAAQ,CAACgS,6BAAkB,CAACC,SAAS,CAAC,EAAE;MACjD,OAAO,CAAAlV,aAAA,CAAAA,aAAA,KAEA8U,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrBrS,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIgG,MAAM,CAAC9F,QAAQ,CAACgS,6BAAkB,CAACI,iBAAiB,CAAC,EAAE;MACzD,OAAO,CAAArV,aAAA,CAAAA,aAAA,KAEA8U,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrBrS,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIgG,MAAM,CAAC9F,QAAQ,CAACgS,6BAAkB,CAACK,mBAAmB,CAAC,EAAE;MAC3D,OAAO,CAAAtV,aAAA,CAAAA,aAAA,KAEA8U,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,OAAO;QACjBrS,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIgG,MAAM,CAAC9F,QAAQ,CAACgS,6BAAkB,CAACM,gBAAgB,CAAC,EAAE;MACxD,OAAO,CAAAvV,aAAA,CAAAA,aAAA,KAEA8U,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrBrS,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIgG,MAAM,CAAC9F,QAAQ,CAACgS,6BAAkB,CAACO,wBAAwB,CAAC,EAAE;MAChE,OAAO,CAAAxV,aAAA,CAAAA,aAAA,KAEA8U,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,UAAU;QACpBrS,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIgG,MAAM,CAAC9F,QAAQ,CAACgS,6BAAkB,CAACQ,qBAAqB,CAAC,EAAE;MAC7D,OAAO,CAAAzV,aAAA,CAAAA,aAAA,KAEA8U,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrBrS,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIgG,MAAM,CAAC9F,QAAQ,CAACgS,6BAAkB,CAACS,wCAAwC,CAAC,EAAE;MAChF,OAAO,CAAA1V,aAAA,CAAAA,aAAA,KAEA8U,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,UAAU;QACpBrS,SAAS,EAAE;MAAI,GAElB;IACH;;IAEA;IACA,OAAO,CAAA/C,aAAA,CAAAA,aAAA,KAEA8U,YAAY;MACfK,KAAK,EAAE,IAAI;MACXC,QAAQ,EAAE,WAAW;MACrBrS,SAAS,EAAE;IAAI,GAElB;EACH;AACF,CAAC;AAAC,IAAA4S,QAAA,GAAAC,OAAA,CAAAxV,OAAA,GAEaI,WAAW"}
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.5.0-next.
|
|
65
|
+
version: "3.5.0-next.26"
|
|
66
66
|
});
|
|
67
67
|
var _default = exports.default = Webinar;
|
|
68
68
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -43,13 +43,13 @@
|
|
|
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.5.0-next.
|
|
47
|
-
"@webex/plugin-rooms": "3.5.0-next.
|
|
48
|
-
"@webex/test-helper-chai": "3.5.0-next.
|
|
49
|
-
"@webex/test-helper-mocha": "3.5.0-next.
|
|
50
|
-
"@webex/test-helper-mock-webex": "3.5.0-next.
|
|
51
|
-
"@webex/test-helper-retry": "3.5.0-next.
|
|
52
|
-
"@webex/test-helper-test-users": "3.5.0-next.
|
|
46
|
+
"@webex/plugin-meetings": "3.5.0-next.26",
|
|
47
|
+
"@webex/plugin-rooms": "3.5.0-next.20",
|
|
48
|
+
"@webex/test-helper-chai": "3.5.0-next.18",
|
|
49
|
+
"@webex/test-helper-mocha": "3.5.0-next.18",
|
|
50
|
+
"@webex/test-helper-mock-webex": "3.5.0-next.18",
|
|
51
|
+
"@webex/test-helper-retry": "3.5.0-next.18",
|
|
52
|
+
"@webex/test-helper-test-users": "3.5.0-next.18",
|
|
53
53
|
"chai": "^4.3.4",
|
|
54
54
|
"chai-as-promised": "^7.1.1",
|
|
55
55
|
"eslint": "^8.24.0",
|
|
@@ -61,21 +61,21 @@
|
|
|
61
61
|
"typescript": "^4.7.4"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@webex/common": "3.5.0-next.
|
|
64
|
+
"@webex/common": "3.5.0-next.18",
|
|
65
65
|
"@webex/internal-media-core": "2.11.3",
|
|
66
|
-
"@webex/internal-plugin-conversation": "3.5.0-next.
|
|
67
|
-
"@webex/internal-plugin-device": "3.5.0-next.
|
|
68
|
-
"@webex/internal-plugin-llm": "3.5.0-next.
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.5.0-next.
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.5.0-next.
|
|
71
|
-
"@webex/internal-plugin-support": "3.5.0-next.
|
|
72
|
-
"@webex/internal-plugin-user": "3.5.0-next.
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.5.0-next.
|
|
74
|
-
"@webex/media-helpers": "3.5.0-next.
|
|
75
|
-
"@webex/plugin-people": "3.5.0-next.
|
|
76
|
-
"@webex/plugin-rooms": "3.5.0-next.
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.5.0-next.20",
|
|
67
|
+
"@webex/internal-plugin-device": "3.5.0-next.18",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.5.0-next.18",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.5.0-next.18",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.5.0-next.18",
|
|
71
|
+
"@webex/internal-plugin-support": "3.5.0-next.20",
|
|
72
|
+
"@webex/internal-plugin-user": "3.5.0-next.18",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.5.0-next.26",
|
|
74
|
+
"@webex/media-helpers": "3.5.0-next.19",
|
|
75
|
+
"@webex/plugin-people": "3.5.0-next.18",
|
|
76
|
+
"@webex/plugin-rooms": "3.5.0-next.20",
|
|
77
77
|
"@webex/web-capabilities": "^1.4.0",
|
|
78
|
-
"@webex/webex-core": "3.5.0-next.
|
|
78
|
+
"@webex/webex-core": "3.5.0-next.18",
|
|
79
79
|
"ampersand-collection": "^2.0.2",
|
|
80
80
|
"bowser": "^2.11.0",
|
|
81
81
|
"btoa": "^1.2.1",
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"//": [
|
|
92
92
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
93
93
|
],
|
|
94
|
-
"version": "3.5.0-next.
|
|
94
|
+
"version": "3.5.0-next.26"
|
|
95
95
|
}
|
package/src/meeting/util.ts
CHANGED
|
@@ -150,7 +150,9 @@ const MeetingUtil = {
|
|
|
150
150
|
ipVersion: MeetingUtil.getIpVersion(meeting.getWebexObject()),
|
|
151
151
|
})
|
|
152
152
|
.then((res) => {
|
|
153
|
-
|
|
153
|
+
const parsed = MeetingUtil.parseLocusJoin(res);
|
|
154
|
+
meeting.setLocus(parsed);
|
|
155
|
+
|
|
154
156
|
webex.internal.newMetrics.submitClientEvent({
|
|
155
157
|
name: 'client.locus.join.response',
|
|
156
158
|
payload: {
|
|
@@ -161,11 +163,11 @@ const MeetingUtil = {
|
|
|
161
163
|
},
|
|
162
164
|
options: {
|
|
163
165
|
meetingId: meeting.id,
|
|
164
|
-
mediaConnections:
|
|
166
|
+
mediaConnections: parsed.mediaConnections,
|
|
165
167
|
},
|
|
166
168
|
});
|
|
167
169
|
|
|
168
|
-
return
|
|
170
|
+
return parsed;
|
|
169
171
|
});
|
|
170
172
|
},
|
|
171
173
|
|
|
@@ -313,34 +315,24 @@ const MeetingUtil = {
|
|
|
313
315
|
}
|
|
314
316
|
|
|
315
317
|
// normal join meeting, scenario A, D
|
|
316
|
-
return MeetingUtil.joinMeeting(meeting, options)
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
// @ts-ignore
|
|
326
|
-
webex.internal.newMetrics.submitClientEvent({
|
|
327
|
-
name: 'client.pin.prompt',
|
|
328
|
-
options: {
|
|
329
|
-
meetingId: meeting.id,
|
|
330
|
-
},
|
|
331
|
-
});
|
|
318
|
+
return MeetingUtil.joinMeeting(meeting, options).catch((err) => {
|
|
319
|
+
// joining a claimed PMR that is not my own, scenario B
|
|
320
|
+
if (MeetingUtil.isPinOrGuest(err)) {
|
|
321
|
+
webex.internal.newMetrics.submitClientEvent({
|
|
322
|
+
name: 'client.pin.prompt',
|
|
323
|
+
options: {
|
|
324
|
+
meetingId: meeting.id,
|
|
325
|
+
},
|
|
326
|
+
});
|
|
332
327
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
'Meeting:util#joinMeetingOptions --> Error joining the call, ',
|
|
339
|
-
err
|
|
340
|
-
);
|
|
328
|
+
// request host pin or non host for unclaimed PMR, start of Scenario C
|
|
329
|
+
// see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature
|
|
330
|
+
return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));
|
|
331
|
+
}
|
|
332
|
+
LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);
|
|
341
333
|
|
|
342
|
-
|
|
343
|
-
|
|
334
|
+
return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));
|
|
335
|
+
});
|
|
344
336
|
},
|
|
345
337
|
|
|
346
338
|
/**
|
|
@@ -1641,7 +1641,6 @@ describe('plugin-meetings', () => {
|
|
|
1641
1641
|
|
|
1642
1642
|
assert.calledOnce(MeetingUtil.joinMeeting);
|
|
1643
1643
|
assert.calledOnce(webex.internal.device.meetingStarted);
|
|
1644
|
-
assert.calledOnce(meeting.setLocus);
|
|
1645
1644
|
assert.equal(result, joinMeetingResult);
|
|
1646
1645
|
assert.calledWith(webex.internal.llm.on, 'online', meeting.handleLLMOnline);
|
|
1647
1646
|
});
|
|
@@ -3789,11 +3788,16 @@ describe('plugin-meetings', () => {
|
|
|
3789
3788
|
// that's being tested in these tests)
|
|
3790
3789
|
meeting.webex.meetings.registered = true;
|
|
3791
3790
|
meeting.webex.internal.device.config = {};
|
|
3792
|
-
sinon.stub(MeetingUtil, '
|
|
3791
|
+
sinon.stub(MeetingUtil, 'parseLocusJoin').returns({
|
|
3793
3792
|
id: 'fake locus from mocked join request',
|
|
3794
3793
|
locusUrl: 'fake locus url',
|
|
3795
3794
|
mediaId: 'fake media id',
|
|
3796
|
-
})
|
|
3795
|
+
})
|
|
3796
|
+
sinon.stub(meeting.meetingRequest, 'joinMeeting').resolves({
|
|
3797
|
+
headers: {
|
|
3798
|
+
trackingid: 'fake tracking id',
|
|
3799
|
+
}
|
|
3800
|
+
})
|
|
3797
3801
|
await meeting.join({enableMultistream: isMultistream});
|
|
3798
3802
|
});
|
|
3799
3803
|
|
|
@@ -378,24 +378,36 @@ describe('plugin-meetings', () => {
|
|
|
378
378
|
});
|
|
379
379
|
|
|
380
380
|
describe('joinMeeting', () => {
|
|
381
|
-
|
|
382
|
-
|
|
381
|
+
const joinMeetingResponse = {
|
|
382
|
+
body: {
|
|
383
|
+
mediaConnections: [],
|
|
384
|
+
locus: {
|
|
385
|
+
url: 'differentLocusUrl',
|
|
386
|
+
self: {
|
|
387
|
+
id: 'selfId',
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
headers: {
|
|
392
|
+
trackingid: 'trackingId',
|
|
393
|
+
},
|
|
394
|
+
};
|
|
395
|
+
let meeting;
|
|
396
|
+
|
|
397
|
+
beforeEach(() => {
|
|
398
|
+
meeting = {
|
|
383
399
|
meetingJoinUrl: 'meetingJoinUrl',
|
|
384
400
|
locusUrl: 'locusUrl',
|
|
385
401
|
meetingRequest: {
|
|
386
402
|
joinMeeting: sinon.stub().returns(
|
|
387
|
-
Promise.resolve(
|
|
388
|
-
body: {mediaConnections: 'mediaConnections'},
|
|
389
|
-
headers: {
|
|
390
|
-
trackingid: 'trackingId',
|
|
391
|
-
},
|
|
392
|
-
})
|
|
393
|
-
),
|
|
403
|
+
Promise.resolve(joinMeetingResponse)),
|
|
394
404
|
},
|
|
395
405
|
getWebexObject: sinon.stub().returns(webex),
|
|
406
|
+
setLocus: sinon.stub(),
|
|
396
407
|
};
|
|
408
|
+
});
|
|
397
409
|
|
|
398
|
-
|
|
410
|
+
it('#Should call `meetingRequest.joinMeeting', async () => {
|
|
399
411
|
await MeetingUtil.joinMeeting(meeting, {
|
|
400
412
|
reachability: 'reachability',
|
|
401
413
|
roapMessage: 'roapMessage',
|
|
@@ -409,6 +421,10 @@ describe('plugin-meetings', () => {
|
|
|
409
421
|
assert.equal(parameter.reachability, 'reachability');
|
|
410
422
|
assert.equal(parameter.roapMessage, 'roapMessage');
|
|
411
423
|
|
|
424
|
+
assert.calledOnce(meeting.setLocus)
|
|
425
|
+
const setLocusParameter = meeting.setLocus.getCall(0).args[0];
|
|
426
|
+
assert.deepEqual(setLocusParameter, MeetingUtil.parseLocusJoin(joinMeetingResponse))
|
|
427
|
+
|
|
412
428
|
assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
|
|
413
429
|
name: 'client.locus.join.request',
|
|
414
430
|
options: {meetingId: meeting.id},
|
|
@@ -424,21 +440,12 @@ describe('plugin-meetings', () => {
|
|
|
424
440
|
},
|
|
425
441
|
options: {
|
|
426
442
|
meetingId: meeting.id,
|
|
427
|
-
mediaConnections:
|
|
443
|
+
mediaConnections: [],
|
|
428
444
|
},
|
|
429
445
|
});
|
|
430
|
-
parseLocusJoinSpy.restore();
|
|
431
446
|
});
|
|
432
447
|
|
|
433
448
|
it('#Should call meetingRequest.joinMeeting with breakoutsSupported=true when passed in as true', async () => {
|
|
434
|
-
const meeting = {
|
|
435
|
-
meetingRequest: {
|
|
436
|
-
joinMeeting: sinon.stub().returns(Promise.resolve({body: {}, headers: {}})),
|
|
437
|
-
},
|
|
438
|
-
getWebexObject: sinon.stub().returns(webex),
|
|
439
|
-
};
|
|
440
|
-
|
|
441
|
-
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
442
449
|
await MeetingUtil.joinMeeting(meeting, {
|
|
443
450
|
breakoutsSupported: true,
|
|
444
451
|
});
|
|
@@ -447,18 +454,9 @@ describe('plugin-meetings', () => {
|
|
|
447
454
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
448
455
|
|
|
449
456
|
assert.equal(parameter.breakoutsSupported, true);
|
|
450
|
-
parseLocusJoinSpy.restore();
|
|
451
457
|
});
|
|
452
458
|
|
|
453
459
|
it('#Should call meetingRequest.joinMeeting with liveAnnotationSupported=true when passed in as true', async () => {
|
|
454
|
-
const meeting = {
|
|
455
|
-
meetingRequest: {
|
|
456
|
-
joinMeeting: sinon.stub().returns(Promise.resolve({body: {}, headers: {}})),
|
|
457
|
-
},
|
|
458
|
-
getWebexObject: sinon.stub().returns(webex),
|
|
459
|
-
};
|
|
460
|
-
|
|
461
|
-
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
462
460
|
await MeetingUtil.joinMeeting(meeting, {
|
|
463
461
|
liveAnnotationSupported: true,
|
|
464
462
|
});
|
|
@@ -467,18 +465,9 @@ describe('plugin-meetings', () => {
|
|
|
467
465
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
468
466
|
|
|
469
467
|
assert.equal(parameter.liveAnnotationSupported, true);
|
|
470
|
-
parseLocusJoinSpy.restore();
|
|
471
468
|
});
|
|
472
469
|
|
|
473
470
|
it('#Should call meetingRequest.joinMeeting with locale=en_UK, deviceCapabilities=["TEST"] when they are passed in as those values', async () => {
|
|
474
|
-
const meeting = {
|
|
475
|
-
meetingRequest: {
|
|
476
|
-
joinMeeting: sinon.stub().returns(Promise.resolve({body: {}, headers: {}})),
|
|
477
|
-
},
|
|
478
|
-
getWebexObject: sinon.stub().returns(webex),
|
|
479
|
-
};
|
|
480
|
-
|
|
481
|
-
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
482
471
|
await MeetingUtil.joinMeeting(meeting, {
|
|
483
472
|
locale: 'en_UK',
|
|
484
473
|
deviceCapabilities: ['TEST'],
|
|
@@ -489,21 +478,10 @@ describe('plugin-meetings', () => {
|
|
|
489
478
|
|
|
490
479
|
assert.equal(parameter.locale, 'en_UK');
|
|
491
480
|
assert.deepEqual(parameter.deviceCapabilities, ['TEST']);
|
|
492
|
-
parseLocusJoinSpy.restore();
|
|
493
481
|
});
|
|
494
482
|
|
|
495
483
|
it('#Should call meetingRequest.joinMeeting with preferTranscoding=false when multistream is enabled', async () => {
|
|
496
|
-
|
|
497
|
-
isMultistream: true,
|
|
498
|
-
meetingJoinUrl: 'meetingJoinUrl',
|
|
499
|
-
locusUrl: 'locusUrl',
|
|
500
|
-
meetingRequest: {
|
|
501
|
-
joinMeeting: sinon.stub().returns(Promise.resolve({body: {}, headers: {}})),
|
|
502
|
-
},
|
|
503
|
-
getWebexObject: sinon.stub().returns(webex),
|
|
504
|
-
};
|
|
505
|
-
|
|
506
|
-
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
484
|
+
meeting.isMultistream = true;
|
|
507
485
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
508
486
|
|
|
509
487
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
@@ -511,40 +489,22 @@ describe('plugin-meetings', () => {
|
|
|
511
489
|
|
|
512
490
|
assert.equal(parameter.inviteeAddress, 'meetingJoinUrl');
|
|
513
491
|
assert.equal(parameter.preferTranscoding, false);
|
|
514
|
-
parseLocusJoinSpy.restore();
|
|
515
492
|
});
|
|
516
493
|
|
|
517
494
|
it('#Should fallback sipUrl if meetingJoinUrl does not exists', async () => {
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
locusUrl: 'locusUrl',
|
|
521
|
-
meetingRequest: {
|
|
522
|
-
joinMeeting: sinon.stub().returns(Promise.resolve({body: {}, headers: {}})),
|
|
523
|
-
},
|
|
524
|
-
getWebexObject: sinon.stub().returns(webex),
|
|
525
|
-
};
|
|
526
|
-
|
|
527
|
-
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
495
|
+
meeting.meetingJoinUrl = undefined;
|
|
496
|
+
meeting.sipUri = 'sipUri';
|
|
528
497
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
529
498
|
|
|
530
499
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
531
500
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
532
501
|
|
|
533
502
|
assert.equal(parameter.inviteeAddress, 'sipUri');
|
|
534
|
-
parseLocusJoinSpy.restore();
|
|
535
503
|
});
|
|
536
504
|
|
|
537
505
|
it('#Should fallback to meetingNumber if meetingJoinUrl/sipUrl does not exists', async () => {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
locusUrl: 'locusUrl',
|
|
541
|
-
meetingRequest: {
|
|
542
|
-
joinMeeting: sinon.stub().returns(Promise.resolve({body: {}, headers: {}})),
|
|
543
|
-
},
|
|
544
|
-
getWebexObject: sinon.stub().returns(webex),
|
|
545
|
-
};
|
|
546
|
-
|
|
547
|
-
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
506
|
+
meeting.meetingJoinUrl = undefined;
|
|
507
|
+
meeting.meetingNumber = 'meetingNumber';
|
|
548
508
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
549
509
|
|
|
550
510
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
@@ -552,28 +512,18 @@ describe('plugin-meetings', () => {
|
|
|
552
512
|
|
|
553
513
|
assert.isUndefined(parameter.inviteeAddress);
|
|
554
514
|
assert.equal(parameter.meetingNumber, 'meetingNumber');
|
|
555
|
-
parseLocusJoinSpy.restore();
|
|
556
515
|
});
|
|
557
516
|
|
|
558
517
|
it('should pass in the locusClusterUrl from meetingInfo', async () => {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
locusClusterUrl: 'locusClusterUrl',
|
|
562
|
-
},
|
|
563
|
-
meetingRequest: {
|
|
564
|
-
joinMeeting: sinon.stub().returns(Promise.resolve({body: {}, headers: {}})),
|
|
565
|
-
},
|
|
566
|
-
getWebexObject: sinon.stub().returns(webex),
|
|
518
|
+
meeting.meetingInfo = {
|
|
519
|
+
locusClusterUrl: 'locusClusterUrl',
|
|
567
520
|
};
|
|
568
|
-
|
|
569
|
-
const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
|
|
570
521
|
await MeetingUtil.joinMeeting(meeting, {});
|
|
571
522
|
|
|
572
523
|
assert.calledOnce(meeting.meetingRequest.joinMeeting);
|
|
573
524
|
const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
|
|
574
525
|
|
|
575
526
|
assert.equal(parameter.locusClusterUrl, 'locusClusterUrl');
|
|
576
|
-
parseLocusJoinSpy.restore();
|
|
577
527
|
});
|
|
578
528
|
});
|
|
579
529
|
|