@webex/plugin-meetings 2.60.1-next.7 → 2.60.1-next.8

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.
Files changed (54) hide show
  1. package/README.md +12 -0
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.d.ts +12 -2
  5. package/dist/constants.js +15 -5
  6. package/dist/constants.js.map +1 -1
  7. package/dist/interpretation/index.js +1 -1
  8. package/dist/interpretation/siLanguage.js +1 -1
  9. package/dist/locus-info/index.d.ts +1 -1
  10. package/dist/locus-info/index.js +8 -8
  11. package/dist/locus-info/index.js.map +1 -1
  12. package/dist/meeting/index.d.ts +62 -18
  13. package/dist/meeting/index.js +679 -568
  14. package/dist/meeting/index.js.map +1 -1
  15. package/dist/meeting/request.js +25 -18
  16. package/dist/meeting/request.js.map +1 -1
  17. package/dist/meeting/util.d.ts +16 -0
  18. package/dist/meeting/util.js +71 -0
  19. package/dist/meeting/util.js.map +1 -1
  20. package/dist/meetings/index.d.ts +25 -3
  21. package/dist/meetings/index.js +83 -32
  22. package/dist/meetings/index.js.map +1 -1
  23. package/dist/reachability/index.js +11 -6
  24. package/dist/reachability/index.js.map +1 -1
  25. package/dist/reconnection-manager/index.js +3 -1
  26. package/dist/reconnection-manager/index.js.map +1 -1
  27. package/dist/roap/index.js +50 -54
  28. package/dist/roap/index.js.map +1 -1
  29. package/dist/statsAnalyzer/index.js +1 -1
  30. package/dist/statsAnalyzer/index.js.map +1 -1
  31. package/dist/statsAnalyzer/mqaUtil.js +13 -10
  32. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  33. package/dist/webinar/index.js +1 -1
  34. package/package.json +22 -22
  35. package/src/constants.ts +13 -2
  36. package/src/locus-info/index.ts +13 -12
  37. package/src/meeting/index.ts +215 -116
  38. package/src/meeting/request.ts +7 -0
  39. package/src/meeting/util.ts +97 -0
  40. package/src/meetings/index.ts +59 -18
  41. package/src/reachability/index.ts +7 -4
  42. package/src/reconnection-manager/index.ts +1 -1
  43. package/src/roap/index.ts +49 -51
  44. package/src/statsAnalyzer/index.ts +2 -2
  45. package/src/statsAnalyzer/mqaUtil.ts +15 -14
  46. package/test/unit/spec/locus-info/index.js +53 -5
  47. package/test/unit/spec/meeting/index.js +1792 -1139
  48. package/test/unit/spec/meeting/request.js +22 -12
  49. package/test/unit/spec/meeting/utils.js +93 -0
  50. package/test/unit/spec/meetings/index.js +180 -21
  51. package/test/unit/spec/reachability/index.ts +2 -1
  52. package/test/unit/spec/reconnection-manager/index.js +1 -0
  53. package/test/unit/spec/roap/index.ts +28 -42
  54. package/test/unit/spec/stats-analyzer/index.js +415 -30
@@ -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","webex","getWebexObject","_promise","reject","ParameterError","locusMediaRequest","internal","newMetrics","submitClientEvent","options","meetingId","send","type","selfUrl","sequence","locusInfo","muteOptions","then","_response$body","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","_webex$internal$devic","device","ipNetworkDetector","supportsIpV4","supportsIpV6","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","joinMeeting","_meeting$meetingInfo","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","locusClusterUrl","meetingInfo","correlationId","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","preferTranscoding","isMultistream","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","res","payload","trigger","identifiers","trackingId","headers","trackingid","cleanUp","breakouts","simultaneousInterpretation","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","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","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","_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 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 const webex = meeting.getWebexObject();\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 // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {meetingId: meeting.id},\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) => {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {meetingId: meeting.id},\n });\n\n return response?.body?.locus;\n });\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 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.breakouts.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\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(() => meeting.updateLLMConnection());\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 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\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","webex","getWebexObject","_promise","reject","ParameterError","locusMediaRequest","internal","newMetrics","submitClientEvent","options","meetingId","send","type","selfUrl","sequence","locusInfo","muteOptions","then","_response$body","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","_webex$internal$devic","device","ipNetworkDetector","supportsIpV4","supportsIpV6","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","joinMeeting","_meeting$meetingInfo","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","locusClusterUrl","meetingInfo","correlationId","roapMessage","permissionToken","resourceId","moderator","pin","moveToResource","preferTranscoding","isMultistream","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","res","payload","trigger","identifiers","trackingId","headers","trackingid","cleanUp","breakouts","simultaneousInterpretation","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","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","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 const webex = meeting.getWebexObject();\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 // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {meetingId: meeting.id},\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) => {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {meetingId: meeting.id},\n });\n\n return response?.body?.locus;\n });\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 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.breakouts.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\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(() => meeting.updateLLMConnection());\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 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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"}
@@ -168,6 +168,14 @@ export default class Meetings extends WebexPlugin {
168
168
  * @returns {undefined}
169
169
  */
170
170
  private _toggleAdhocMeetings;
171
+ /**
172
+ * API to toggle TCP reachability, needs to be called before webex.meetings.register()
173
+ * @param {Boolean} newValue
174
+ * @private
175
+ * @memberof Meetings
176
+ * @returns {undefined}
177
+ */
178
+ private _toggleTcpReachability;
171
179
  /**
172
180
  * Explicitly sets up the meetings plugin by registering
173
181
  * the device, connecting to mercury, and listening for locus events.
@@ -274,6 +282,9 @@ export default class Meetings extends WebexPlugin {
274
282
  private destroy;
275
283
  /**
276
284
  * Create a meeting or return an existing meeting.
285
+ *
286
+ * When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
287
+ *
277
288
  * @param {string} destination - sipURL, phonenumber, or locus object}
278
289
  * @param {string} [type] - the optional specified type, such as locusId
279
290
  * @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info
@@ -281,18 +292,26 @@ export default class Meetings extends WebexPlugin {
281
292
  * @param {string} correlationId - the optional specified correlationId (callStateForMetrics.correlationId can be provided instead)
282
293
  * @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
283
294
  * @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
295
+ * @param {Object} [meetingInfo] - Pre-fetched complete meeting info
296
+ * @param {String} [meetingLookupUrl] - meeting info prefetch url
284
297
  * @returns {Promise<Meeting>} A new Meeting.
285
298
  * @public
286
299
  * @memberof Meetings
287
300
  */
288
- create(destination: string, type?: string, useRandomDelayForInfo?: boolean, infoExtraParams?: {}, correlationId?: string, failOnMissingMeetingInfo?: boolean, callStateForMetrics?: CallStateForMetrics): any;
301
+ create(destination: string, type?: string, useRandomDelayForInfo?: boolean, infoExtraParams?: {}, correlationId?: string, failOnMissingMeetingInfo?: boolean, callStateForMetrics?: CallStateForMetrics, meetingInfo?: any, meetingLookupUrl?: any): any;
289
302
  /**
303
+ * Create meeting
304
+ *
305
+ * When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
306
+ *
290
307
  * @param {String} destination see create()
291
308
  * @param {String} type see create()
292
309
  * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
293
310
  * @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
294
311
  * @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
295
312
  * @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
313
+ * @param {Object} [meetingInfo] - Pre-fetched complete meeting info
314
+ * @param {String} [meetingLookupUrl] - meeting info prefetch url
296
315
  * @returns {Promise} a new meeting instance complete with meeting info and destination
297
316
  * @private
298
317
  * @memberof Meetings
@@ -322,11 +341,14 @@ export default class Meetings extends WebexPlugin {
322
341
  }): any;
323
342
  /**
324
343
  * syncs all the meeting from server
325
- * @returns {undefined}
344
+ * @param {boolean} keepOnlyLocusMeetings - whether the sync should keep only locus meetings or any other meeting in meetingCollection
345
+ * @returns {Promise<void>}
326
346
  * @public
327
347
  * @memberof Meetings
328
348
  */
329
- syncMeetings(): any;
349
+ syncMeetings({ keepOnlyLocusMeetings }?: {
350
+ keepOnlyLocusMeetings?: boolean;
351
+ }): Promise<void>;
330
352
  /**
331
353
  * sort out locus array for initial creating
332
354
  * @param {Array} loci original locus array
@@ -600,7 +600,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
600
600
 
601
601
  // @ts-ignore
602
602
  this.webex.internal.mercury.on(_constants.ONLINE, function () {
603
- _this3.syncMeetings();
603
+ _this3.syncMeetings({
604
+ keepOnlyLocusMeetings: false
605
+ });
604
606
  });
605
607
 
606
608
  // @ts-ignore
@@ -723,6 +725,26 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
723
725
  }
724
726
  }
725
727
 
728
+ /**
729
+ * API to toggle TCP reachability, needs to be called before webex.meetings.register()
730
+ * @param {Boolean} newValue
731
+ * @private
732
+ * @memberof Meetings
733
+ * @returns {undefined}
734
+ */
735
+ }, {
736
+ key: "_toggleTcpReachability",
737
+ value: function _toggleTcpReachability(newValue) {
738
+ if (typeof newValue !== 'boolean') {
739
+ return;
740
+ }
741
+ // @ts-ignore
742
+ if (this.config.experimental.enableTcpReachability !== newValue) {
743
+ // @ts-ignore
744
+ this.config.experimental.enableTcpReachability = newValue;
745
+ }
746
+ }
747
+
726
748
  /**
727
749
  * Explicitly sets up the meetings plugin by registering
728
750
  * the device, connecting to mercury, and listening for locus events.
@@ -964,6 +986,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
964
986
 
965
987
  /**
966
988
  * Create a meeting or return an existing meeting.
989
+ *
990
+ * When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
991
+ *
967
992
  * @param {string} destination - sipURL, phonenumber, or locus object}
968
993
  * @param {string} [type] - the optional specified type, such as locusId
969
994
  * @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info
@@ -971,6 +996,8 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
971
996
  * @param {string} correlationId - the optional specified correlationId (callStateForMetrics.correlationId can be provided instead)
972
997
  * @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
973
998
  * @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
999
+ * @param {Object} [meetingInfo] - Pre-fetched complete meeting info
1000
+ * @param {String} [meetingLookupUrl] - meeting info prefetch url
974
1001
  * @returns {Promise<Meeting>} A new Meeting.
975
1002
  * @public
976
1003
  * @memberof Meetings
@@ -985,6 +1012,8 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
985
1012
  var correlationId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
986
1013
  var failOnMissingMeetingInfo = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
987
1014
  var callStateForMetrics = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;
1015
+ var meetingInfo = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;
1016
+ var meetingLookupUrl = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : undefined;
988
1017
  // TODO: type should be from a dictionary
989
1018
 
990
1019
  // Validate meeting information based on the provided destination and
@@ -1031,7 +1060,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1031
1060
  // Validate if a meeting was found.
1032
1061
  if (!meeting) {
1033
1062
  // Create a meeting based on the normalized destination and type.
1034
- return _this10.createMeeting(targetDest, type, useRandomDelayForInfo, infoExtraParams, callStateForMetrics, failOnMissingMeetingInfo).then(function (createdMeeting) {
1063
+ return _this10.createMeeting(targetDest, type, useRandomDelayForInfo, infoExtraParams, callStateForMetrics, failOnMissingMeetingInfo, meetingInfo, meetingLookupUrl).then(function (createdMeeting) {
1035
1064
  // If the meeting was successfully created.
1036
1065
  if (createdMeeting && createdMeeting.on) {
1037
1066
  // Create a destruction event for the meeting.
@@ -1085,12 +1114,18 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1085
1114
  }
1086
1115
 
1087
1116
  /**
1117
+ * Create meeting
1118
+ *
1119
+ * When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
1120
+ *
1088
1121
  * @param {String} destination see create()
1089
1122
  * @param {String} type see create()
1090
1123
  * @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
1091
1124
  * @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
1092
1125
  * @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
1093
1126
  * @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
1127
+ * @param {Object} [meetingInfo] - Pre-fetched complete meeting info
1128
+ * @param {String} [meetingLookupUrl] - meeting info prefetch url
1094
1129
  * @returns {Promise} a new meeting instance complete with meeting info and destination
1095
1130
  * @private
1096
1131
  * @memberof Meetings
@@ -1104,6 +1139,8 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1104
1139
  infoExtraParams,
1105
1140
  callStateForMetrics,
1106
1141
  failOnMissingMeetingInfo,
1142
+ meetingInfo,
1143
+ meetingLookupUrl,
1107
1144
  meeting,
1108
1145
  _destination$fullStat,
1109
1146
  waitingTime,
@@ -1114,6 +1151,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1114
1151
  maxWaitingTime,
1115
1152
  isMeetingActive,
1116
1153
  enableUnifiedMeetings,
1154
+ meetingInfoOptions,
1117
1155
  meetingAddedType,
1118
1156
  _args3 = arguments;
1119
1157
  return _regenerator.default.wrap(function _callee3$(_context3) {
@@ -1124,6 +1162,8 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1124
1162
  infoExtraParams = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
1125
1163
  callStateForMetrics = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : undefined;
1126
1164
  failOnMissingMeetingInfo = _args3.length > 5 && _args3[5] !== undefined ? _args3[5] : false;
1165
+ meetingInfo = _args3.length > 6 && _args3[6] !== undefined ? _args3[6] : undefined;
1166
+ meetingLookupUrl = _args3.length > 7 && _args3[7] !== undefined ? _args3[7] : undefined;
1127
1167
  meeting = new _meeting.default({
1128
1168
  // @ts-ignore
1129
1169
  userId: this.webex.internal.device.userId,
@@ -1142,7 +1182,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1142
1182
  parent: this.webex
1143
1183
  });
1144
1184
  this.meetingCollection.set(meeting);
1145
- _context3.prev = 7;
1185
+ _context3.prev = 9;
1146
1186
  // if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,
1147
1187
  // it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo
1148
1188
  // between 5 and 2 min (random between 3 minutes) before the meeting starts
@@ -1158,51 +1198,57 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1158
1198
  }
1159
1199
  isMeetingActive = !!((_destination$fullStat = destination.fullState) !== null && _destination$fullStat !== void 0 && _destination$fullStat.active); // @ts-ignore
1160
1200
  enableUnifiedMeetings = this.config.experimental.enableUnifiedMeetings;
1201
+ meetingInfoOptions = {
1202
+ extraParams: infoExtraParams,
1203
+ sendCAevents: !!(callStateForMetrics !== null && callStateForMetrics !== void 0 && callStateForMetrics.correlationId) // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
1204
+ };
1205
+ if (!meetingInfo) {
1206
+ _context3.next = 19;
1207
+ break;
1208
+ }
1209
+ meeting.injectMeetingInfo(meetingInfo, meetingInfoOptions, meetingLookupUrl);
1210
+ _context3.next = 26;
1211
+ break;
1212
+ case 19:
1161
1213
  if (!(enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0)) {
1162
- _context3.next = 17;
1214
+ _context3.next = 24;
1163
1215
  break;
1164
1216
  }
1165
1217
  meeting.fetchMeetingInfoTimeoutId = setTimeout(function () {
1166
- return meeting.fetchMeetingInfo({
1167
- extraParams: infoExtraParams,
1168
- sendCAevents: !!(callStateForMetrics !== null && callStateForMetrics !== void 0 && callStateForMetrics.correlationId) // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
1169
- });
1218
+ return meeting.fetchMeetingInfo(meetingInfoOptions);
1170
1219
  }, waitingTime);
1171
1220
  meeting.parseMeetingInfo(undefined, destination);
1172
- _context3.next = 19;
1221
+ _context3.next = 26;
1173
1222
  break;
1174
- case 17:
1175
- _context3.next = 19;
1176
- return meeting.fetchMeetingInfo({
1177
- extraParams: infoExtraParams,
1178
- sendCAevents: !!(callStateForMetrics !== null && callStateForMetrics !== void 0 && callStateForMetrics.correlationId) // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
1179
- });
1180
- case 19:
1181
- _context3.next = 31;
1223
+ case 24:
1224
+ _context3.next = 26;
1225
+ return meeting.fetchMeetingInfo(meetingInfoOptions);
1226
+ case 26:
1227
+ _context3.next = 38;
1182
1228
  break;
1183
- case 21:
1184
- _context3.prev = 21;
1185
- _context3.t0 = _context3["catch"](7);
1229
+ case 28:
1230
+ _context3.prev = 28;
1231
+ _context3.t0 = _context3["catch"](9);
1186
1232
  if (!(!(_context3.t0 instanceof _captchaError.default) && !(_context3.t0 instanceof _passwordError.default) && !(_context3.t0 instanceof _permission.default))) {
1187
- _context3.next = 30;
1233
+ _context3.next = 37;
1188
1234
  break;
1189
1235
  }
1190
1236
  _loggerProxy.default.logger.info("Meetings:index#createMeeting --> Info Unable to fetch meeting info for ".concat(destination, "."));
1191
1237
  if (!failOnMissingMeetingInfo) {
1192
- _context3.next = 29;
1238
+ _context3.next = 36;
1193
1239
  break;
1194
1240
  }
1195
1241
  _loggerProxy.default.logger.info("Meetings:index#createMeeting --> Destroying meeting due to missing meeting info.");
1196
1242
  // @ts-ignore
1197
1243
  this.destroy(meeting, _constants.MEETING_REMOVED_REASON.MISSING_MEETING_INFO);
1198
1244
  throw new _noMeetingInfo.default();
1199
- case 29:
1245
+ case 36:
1200
1246
  // if there is no meeting info and no error should be thrown then we assume its a 1:1 call or wireless share
1201
1247
  _loggerProxy.default.logger.info('Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share');
1202
- case 30:
1248
+ case 37:
1203
1249
  _loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_context3.t0, " fetching /meetingInfo for creation."));
1204
- case 31:
1205
- _context3.prev = 31;
1250
+ case 38:
1251
+ _context3.prev = 38;
1206
1252
  // For type LOCUS_ID we need to parse the locus object to get the information
1207
1253
  // about the caller and callee
1208
1254
  // Meeting Added event will be created in `handleLocusEvent`
@@ -1222,14 +1268,14 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1222
1268
  type: meetingAddedType
1223
1269
  });
1224
1270
  }
1225
- return _context3.finish(31);
1226
- case 34:
1271
+ return _context3.finish(38);
1272
+ case 41:
1227
1273
  return _context3.abrupt("return", meeting);
1228
- case 35:
1274
+ case 42:
1229
1275
  case "end":
1230
1276
  return _context3.stop();
1231
1277
  }
1232
- }, _callee3, this, [[7, 21, 31, 34]]);
1278
+ }, _callee3, this, [[9, 28, 38, 41]]);
1233
1279
  }));
1234
1280
  function createMeeting(_x3) {
1235
1281
  return _createMeeting.apply(this, arguments);
@@ -1271,7 +1317,8 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1271
1317
 
1272
1318
  /**
1273
1319
  * syncs all the meeting from server
1274
- * @returns {undefined}
1320
+ * @param {boolean} keepOnlyLocusMeetings - whether the sync should keep only locus meetings or any other meeting in meetingCollection
1321
+ * @returns {Promise<void>}
1275
1322
  * @public
1276
1323
  * @memberof Meetings
1277
1324
  */
@@ -1279,6 +1326,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1279
1326
  key: "syncMeetings",
1280
1327
  value: function syncMeetings() {
1281
1328
  var _this11 = this;
1329
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1330
+ _ref3$keepOnlyLocusMe = _ref3.keepOnlyLocusMeetings,
1331
+ keepOnlyLocusMeetings = _ref3$keepOnlyLocusMe === void 0 ? true : _ref3$keepOnlyLocusMe;
1282
1332
  return this.request.getActiveMeetings().then(function (locusArray) {
1283
1333
  var activeLocusUrl = [];
1284
1334
  if (locusArray !== null && locusArray !== void 0 && locusArray.loci && locusArray.loci.length > 0) {
@@ -1299,7 +1349,8 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1299
1349
  for (var _i = 0, _Object$values = (0, _values.default)(meetingsCollection); _i < _Object$values.length; _i++) {
1300
1350
  var meeting = _Object$values[_i];
1301
1351
  // @ts-ignore
1302
- if (meeting.locusUrl && !activeLocusUrl.includes(meeting.locusUrl)) {
1352
+ var locusUrl = meeting.locusUrl;
1353
+ if ((keepOnlyLocusMeetings || locusUrl) && !activeLocusUrl.includes(locusUrl)) {
1303
1354
  // destroy function also uploads logs
1304
1355
  // @ts-ignore
1305
1356
  _this11.destroy(meeting, _constants.MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);