@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.
- package/README.md +12 -0
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.d.ts +12 -2
- package/dist/constants.js +15 -5
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.d.ts +1 -1
- package/dist/locus-info/index.js +8 -8
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/index.d.ts +62 -18
- package/dist/meeting/index.js +679 -568
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +25 -18
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.d.ts +16 -0
- package/dist/meeting/util.js +71 -0
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.d.ts +25 -3
- package/dist/meetings/index.js +83 -32
- package/dist/meetings/index.js.map +1 -1
- package/dist/reachability/index.js +11 -6
- package/dist/reachability/index.js.map +1 -1
- package/dist/reconnection-manager/index.js +3 -1
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/roap/index.js +50 -54
- package/dist/roap/index.js.map +1 -1
- package/dist/statsAnalyzer/index.js +1 -1
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +13 -10
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +22 -22
- package/src/constants.ts +13 -2
- package/src/locus-info/index.ts +13 -12
- package/src/meeting/index.ts +215 -116
- package/src/meeting/request.ts +7 -0
- package/src/meeting/util.ts +97 -0
- package/src/meetings/index.ts +59 -18
- package/src/reachability/index.ts +7 -4
- package/src/reconnection-manager/index.ts +1 -1
- package/src/roap/index.ts +49 -51
- package/src/statsAnalyzer/index.ts +2 -2
- package/src/statsAnalyzer/mqaUtil.ts +15 -14
- package/test/unit/spec/locus-info/index.js +53 -5
- package/test/unit/spec/meeting/index.js +1792 -1139
- package/test/unit/spec/meeting/request.js +22 -12
- package/test/unit/spec/meeting/utils.js +93 -0
- package/test/unit/spec/meetings/index.js +180 -21
- package/test/unit/spec/reachability/index.ts +2 -1
- package/test/unit/spec/reconnection-manager/index.js +1 -0
- package/test/unit/spec/roap/index.ts +28 -42
- package/test/unit/spec/stats-analyzer/index.js +415 -30
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","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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"}
|
package/dist/meetings/index.d.ts
CHANGED
|
@@ -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
|
-
* @
|
|
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(
|
|
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
|
package/dist/meetings/index.js
CHANGED
|
@@ -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 =
|
|
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 =
|
|
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 =
|
|
1221
|
+
_context3.next = 26;
|
|
1173
1222
|
break;
|
|
1174
|
-
case
|
|
1175
|
-
_context3.next =
|
|
1176
|
-
return meeting.fetchMeetingInfo(
|
|
1177
|
-
|
|
1178
|
-
|
|
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
|
|
1184
|
-
_context3.prev =
|
|
1185
|
-
_context3.t0 = _context3["catch"](
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
1248
|
+
case 37:
|
|
1203
1249
|
_loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_context3.t0, " fetching /meetingInfo for creation."));
|
|
1204
|
-
case
|
|
1205
|
-
_context3.prev =
|
|
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(
|
|
1226
|
-
case
|
|
1271
|
+
return _context3.finish(38);
|
|
1272
|
+
case 41:
|
|
1227
1273
|
return _context3.abrupt("return", meeting);
|
|
1228
|
-
case
|
|
1274
|
+
case 42:
|
|
1229
1275
|
case "end":
|
|
1230
1276
|
return _context3.stop();
|
|
1231
1277
|
}
|
|
1232
|
-
}, _callee3, this, [[
|
|
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
|
-
* @
|
|
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
|
-
|
|
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);
|