@webex/plugin-meetings 3.9.0-next.2 → 3.9.0-next.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +2 -0
- 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.js +38 -10
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +4 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/media/properties.js +53 -5
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +2 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +189 -122
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +2 -5
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +25 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +30 -11
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +29 -21
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +31 -25
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +13 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +42 -20
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +7 -2
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/reachability/index.js +3 -3
- package/dist/reachability/index.js.map +1 -1
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +54 -1
- package/dist/types/media/properties.d.ts +21 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +11 -1
- package/dist/types/meeting/request.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +10 -3
- package/dist/types/meeting-info/meeting-info-v2.d.ts +6 -3
- package/dist/types/meetings/index.d.ts +3 -1
- package/dist/types/member/types.d.ts +1 -0
- package/dist/types/members/collection.d.ts +6 -0
- package/dist/types/members/index.d.ts +12 -2
- package/dist/types/members/util.d.ts +6 -3
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +16 -16
- package/src/constants.ts +2 -0
- package/src/locus-info/index.ts +84 -9
- package/src/locus-info/parser.ts +5 -1
- package/src/media/properties.ts +43 -0
- package/src/meeting/in-meeting-actions.ts +4 -0
- package/src/meeting/index.ts +91 -4
- package/src/meeting/muteState.ts +2 -6
- package/src/meeting/request.ts +23 -0
- package/src/meeting/util.ts +41 -20
- package/src/meeting-info/meeting-info-v2.ts +24 -5
- package/src/meetings/index.ts +9 -3
- package/src/member/types.ts +1 -0
- package/src/members/collection.ts +11 -0
- package/src/members/index.ts +38 -5
- package/src/members/util.ts +18 -2
- package/src/metrics/constants.ts +1 -0
- package/src/reachability/index.ts +3 -3
- package/test/unit/spec/locus-info/index.js +30 -15
- package/test/unit/spec/locus-info/parser.js +3 -2
- package/test/unit/spec/media/properties.ts +137 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +255 -27
- package/test/unit/spec/meeting/muteState.js +32 -6
- package/test/unit/spec/meeting/request.js +21 -0
- package/test/unit/spec/meeting/utils.js +45 -16
- package/test/unit/spec/meeting-info/meetinginfov2.js +8 -3
- package/test/unit/spec/meetings/index.js +10 -1
- package/test/unit/spec/members/collection.js +120 -0
- package/test/unit/spec/members/index.js +72 -3
- package/test/unit/spec/members/request.js +55 -0
- package/test/unit/spec/members/utils.js +116 -14
- package/test/unit/spec/reachability/index.ts +158 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_jwtDecode","_webexCore","_common","_commonTimers","_internalPluginMetrics","_internalMediaCore","_mediaHelpers","_internalPluginVoicea","_voiceaMeeting","_webexErrors","_loggerProxy","_util","_triggerProxy","_index","_media","_properties","_state","_muteState","_locusInfo","_metrics","_reconnectionManager","_reconnectionNotStarted","_request","_index2","_util2","_util3","_util4","_util5","_util6","_reactions","_passwordError","_captchaError","_constants","_constants2","_parameter","_meetingInfoV","_receiveSlotManager","_sendSlotManager","_mediaRequestManager","_remoteMediaManager","_breakouts","_interpretation","_annotation","_webinar","_inMeetingActions","_constants3","_recordingController","_controlsOptionsManager","_permission","_locusMediaRequest","_connectionStateHandler","_joinWebinarError","_brbState","_multistreamNotSupportedError","_joinForbiddenError","_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$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","valueOf","_classPrivateFieldInitSpec","obj","privateMap","_checkPrivateRedeclaration","set","privateCollection","has","DEFAULT_ICE_PHASE_CALLBACK","logRequest","request","_ref","_ref$logText","logText","LoggerProxy","logger","info","concat","then","arg","catch","error","MEDIA_UPDATE_TYPE","exports","TRANSCODED_MEDIA_CONNECTION","SHARE_FLOOR_REQUEST","UPDATE_MEDIA","ScreenShareFloorStatus","_isoLocalClientMeetingJoinTime","_weakMap","Meeting","_StatelessWebexPlugin","_inherits2","_super","attrs","options","callback","_attrs$callStateForMe","_attrs$callStateForMe2","_this$locusInfo","_this$locusInfo$links","_this$locusInfo$links2","_this$locusInfo$links3","_this$locusInfo2","_this$locusInfo2$full","_this$locusInfo3","_this$locusInfo4","_this","_classCallCheck2","_assertThisInitialized2","writable","MEETINGS","VOICEAEVENTS","VOICEA_ANNOUNCEMENT","payload","transcription","languageOptions","debug","EventsUtil","getScopeLog","file","function","EVENT_TRIGGERS","MEETING_STARTED_RECEIVING_TRANSCRIPTION","getCurUserType","spokenLanguages","trigger","CAPTIONS_TURNED_ON","status","TURN_ON_CAPTION_STATUS","ENABLED","EVA_COMMAND","_data$text","data","isListening","commandText","text","NEW_CAPTION","processNewCaptions","meeting","MEETING_CAPTION_RECEIVED","captions","interimCaptions","SendSlotManager","relayType","REACTION_RELAY_TYPES","REACTION","config","receiveReactions","isReactionsSupported","member","members","membersCollection","get","sender","participantId","warn","id","processedReaction","reaction","Trigger","MEETING_RECEIVE_REACTIONS","webex","internal","llm","off","handleLLMOnline","MEETING_TRANSCRIPTION_CONNECTED","undefined","sendBehavioralMetric","metricName","correlationId","_error$cause","code","correlation_id","reason","message","stack","metadata","type","cause","Metrics","Errors","SdpOfferCreationError","BEHAVIORAL_METRICS","PEERCONNECTION_FAILURE","newMetrics","submitClientEvent","canProceed","meetingId","rawError","SdpOfferHandlingError","SdpAnswerHandlingError","deferSDPAnswer","clearTimeout","sdpResponseTimer","reject","SdpError","INVALID_ICE_CANDIDATE","roapMessage","mediaServer","messageType","MeetingsUtil","getMediaServer","sdp","mediaServerIp","getMediaServerIp","isMultistream","MultistreamNotSupportedError","mediaProperties","webrtcMediaConnection","roapMessageReceived","on","MediaConnectionEventNames","REMOTE_SDP_ANSWER_PROCESSED","cdl","callDiagnosticLatencies","ROAP_OFFER_TO_ANSWER_LATENCY","latency","getLocalSDPGenRemoteSDPRecv","resolve","LOCAL_SDP_OFFER_GENERATED","Defer","LOCAL_SDP_ANSWER_GENERATED","setupSdpListeners","ROAP_STARTED","isRoapInProgress","ROAP_DONE","mediaNegotiatedEvent","processNextQueuedMediaUpdate","ROAP_FAILURE","handleRoapFailure","ROAP_MESSAGE_TO_SEND","event","LOG_HEADER","roap","sendRoapOK","seq","mediaId","sendRoapMediaRequest","tieBreaker","_ref2","roapAnswer","log","multistreamNotSupported","errors","callDiagnosticMetrics","getErrorPayloadForClientErrorCode","clientErrorCode","CALL_DIAGNOSTIC_CONFIG","MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE","MISSING_ROAP_ANSWER_CLIENT_CODE","sendRoapAnswer","ROAP_ANSWER_FAILURE","locus_id","locusUrl","split","pop","errorType","ErrorType","CONFLICT","DOUBLECONFLICT","ROAP_GLARE_CONDITION","sequence","sendRoapError","REMOTE_TRACK_ADDED","_stringify","track","mediaTrack","remoteStream","RemoteStream","MediaUtil","createMediaStream","eventType","RemoteTrackType","AUDIO","EVENT_TYPES","REMOTE_AUDIO","setRemoteAudioStream","VIDEO","REMOTE_VIDEO","setRemoteVideoStream","SCREENSHARE_VIDEO","REMOTE_SHARE","setRemoteShareStream","MEDIA_READY","stream","outputStream","connectionStateHandler","ConnectionStateHandler","ConnectionStateEvent","stateChanged","connectionFailed","CONNECTION_FAILURE","locusId","networkStatus","hasMediaConnectionConnectedAtLeastOnce","reconnectionManager","resetReconnectionTimer","reconnect","networkDisconnect","uploadLogs","state","ConnectionState","Connecting","Connected","icePhase","CONNECTION_SUCCESS","getICESetupTime","setNetworkStatus","NETWORK_STATUS","CONNECTED","iceReconnected","statsAnalyzer","startAnalyzer","Disconnected","DISCONNECTED","waitForIceReconnect","Failed","ACTIVE_SPEAKERS_CHANGED","csis","ACTIVE_SPEAKER_CHANGED","memberIds","map","csi","_this$members$findMem","findMemberByCsi","item","VIDEO_SOURCES_COUNT_CHANGED","numTotalSources","numLiveSources","mediaContent","REMOTE_VIDEO_SOURCE_COUNT_CHANGED","MediaContent","Main","mediaRequestManagers","video","setNumCurrentSources","AUDIO_SOURCES_COUNT_CHANGED","REMOTE_AUDIO_SOURCE_COUNT_CHANGED","iceCandidateErrors","clear","ICE_CANDIDATE_ERROR","errorCode","errorText","endsWith","toLowerCase","replace","count","iceCandidatesCount","ICE_CANDIDATE","candidate","StatsAnalyzerEventNames","MEDIA_QUALITY","intervalMetadata","maskedPeerReflexiveIP","_this$webex$meetings$","clientAddressFromGeoHint","meetings","geoHintInfo","clientAddress","CallDiagnosticUtils","anonymizeIPAddress","getMembers","meetingUserCount","_values","isInMeeting","submitMQE","networkType","getNetworkType","intervals","LOCAL_MEDIA_STARTED","MEETING_MEDIA_LOCAL_STARTED","mediaType","shareCAEventSentStatus","transmitStart","shareInstanceId","localShareInstanceId","LOCAL_MEDIA_STOPPED","transmitStop","REMOTE_MEDIA_STARTED","MEETING_MEDIA_REMOTE_STARTED","receiveStart","remoteShareInstanceId","REMOTE_MEDIA_STOPPED","receiveStop","_ref4","_asyncToGenerator2","_regenerator","mark","_callee","_ref3","callFrom","_this$mediaProperties","_this$mediaProperties2","wrap","_callee$","_context","prev","forceRtcMetricsSend","t0","stop","_x","experimental","enableMediaNegotiatedEvent","MEDIA_NEGOTIATED","canUpdateMedia","queuedMediaUpdates","_this$queuedMediaUpda","shift","pendingPromiseResolve","pendingPromiseReject","mediaUpdateType","mediaUpdate","_promise","updateTranscodedMediaConnection","requestScreenShareFloor","updateMedia","_callee2","_callee2$","_context2","wirelessShare","shareVideoStream","leave","MEETING_REMOVED_REASON","USER_ENDED_SHARE_STREAMS","unpublishStreams","shareAudioStream","muted","_this$mediaProperties3","_this$mediaProperties4","_this$statsAnalyzer","shareVideoStreamSettings","getSettings","MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE","encoderImplementation","shareVideoEncoderImplementation","displaySurface","frameRate","_callee3","_callee3$","_context3","triggerStoppedSharing","hasLocalShareStream","MEETING_STOPPED_SHARING_LOCAL","SHARE_STOPPED_REASON","TRACK_ENDED","audio","screenShareFloorState","RELEASED","shareStatus","SHARE_STATUS","LOCAL_SHARE_ACTIVE","NO_SHARE","stopTranscription","annotation","deregisterEvents","processRelayEvent","_this$joinedWith","_this$joinedWith2","keepAliveTimerId","joinedWith","keepAliveUrl","keepAliveSecs","keepAliveInterval","setInterval","meetingRequest","keepAlive","stopKeepAlive","clearInterval","uuid","v4","callStateForMetrics","sessionCorrelationId","logUploadIntervalIndex","userId","orgId","resource","deviceUrl","meetingInfo","breakouts","Breakouts","parent","simultaneousInterpretation","SimultaneousInterpretation","Annotation","webinar","Webinar","receiveSlotManager","ReceiveSlotManager","_this$mediaProperties5","Error","createReceiveSlot","_this$members$findMem2","MediaRequestManager","mediaRequests","requestMedia","MediaType","AudioMain","degradationPreferences","kind","trimRequestsToNumOfSources","VideoMain","screenShareAudio","AudioSlides","screenShareVideo","VideoSlides","Members","locus","url","Roap","ReconnectionManager","meetingFiniteStateMachine","MeetingStateMachine","create","conversationUrl","sipUri","destination","destinationType","partner","owner","hostId","policy","MeetingRequest","mediaConnections","fetchMeetingInfoTimeoutId","updateMediaConnections","isEqual","MediaProperties","inMeetingActions","InMeetingActions","callEvents","floorGrantPending","dialInDeviceStatus","PSTN_STATUS","UNKNOWN","dialInUrl","dialOutDeviceStatus","dialOutUrl","networkQualityMonitor","locusInfo","LocusInfo","updateMeetingObject","bind","recording","deferJoin","hasWebsocketConnected","mercury","connected","lastVideoLayoutInfo","layoutType","main","content","currentSpokenLanguage","showCaptionBox","transcribingRequestStatus","isCaptioning","speakerProxy","passwordStatus","PASSWORD_STATUS","registrationIdStatus","REGISTRATION_ID_STATUS","requiredCaptcha","meetingInfoFailureReason","meetingInfoFailureCode","recordingController","RecordingController","serviceUrl","links","services","record","sessionId","fullState","displayHints","controlsOptionsManager","ControlsOptionsManager","setUpLocusInfoListeners","init","hasJoinedOnce","remoteMediaManager","localAudioStreamMuteStateHandler","_this$audio","handleLocalStreamMuteStateChange","localVideoStreamMuteStateHandler","_this$video","localOutputTrackChangeHandler","turnDiscoverySkippedReason","turnServerUsed","addMediaData","retriedWithTurnServer","icePhaseCallback","joinWithMediaRetryInfo","isRetry","prevJoinResponse","_map","_classPrivateFieldSet2","clearErrorCache","_createClass2","key","getWebexObject","isJoined","_this$joinedWith3","isLocusCall","pstnCorrelationId","_this$callStateForMet","userNameInput","_this$callStateForMet2","emailInput","_classPrivateFieldGet2","time","fallback","Date","toISOString","date","_isNan","getTime","setMeetingInfo","meetingLookupUrl","MEETING_INFO_FAILURE_REASON","NONE","REQUIRED","VERIFIED","NOT_REQUIRED","MEETING_INFO_AVAILABLE","updateMeetingActions","_injectMeetingInfo","_callee4","fetchParams","_callee4$","_context4","prepForFetchMeetingInfo","parseMeetingInfo","injectMeetingInfo","_x2","_x3","_x4","_ref7","caller","_ref7$password","password","_ref7$registrationId","registrationId","_ref7$captchaCode","captchaCode","_ref7$extraParams","extraParams","meetingInfoExtraParams","cloneDeep","_fetchMeetingInfoInternal","_callee5","_ref8","_ref8$password","_ref8$captchaCode","_ref8$extraParams","_ref8$sendCAevents","sendCAevents","_ref8$registrationId","captchaInfo","_err$body","_err$body2","_callee5$","_context5","captchaId","meetingInfoProvider","fetchMeetingInfo","installedOrgID","sent","body","abrupt","MeetingInfoV2PolicyError","POLICY","wbxAppApiCode","PermissionError","MeetingInfoV2JoinWebinarError","WEBINAR_REGISTRATION","WEBINAR_ERROR_WEBCAST","includes","NEED_JOIN_WITH_WEBCAST","WEBINAR_ERROR_REGISTRATION_ID","WEBINAR_NEED_REGISTRATION_ID","JoinWebinarError","MeetingInfoV2JoinForbiddenError","JOIN_FORBIDDEN","JOIN_BEFORE_HOST","NOT_REACH_JBH","JoinForbiddenError","MeetingInfoV2PasswordError","meetingNumber","WRONG_PASSWORD","refreshCaptcha","PasswordError","MeetingInfoV2CaptchaError","WRONG_CAPTCHA","isRegistrationIdRequired","WRONG_REGISTRATION_ID","isPasswordRequired","CaptchaError","OTHER","fetchMeetingInfoInternal","_x5","_refreshPermissionToken","_callee6","_this$meetingInfo","isStartingSpaceInstantV2Meeting","permissionTokenExpiryInfo","timeLeft","expiryTime","currentTime","_callee6$","_context6","permissionToken","DESTINATION_TYPE","CONVERSATION_URL","enableAdhocMeetings","preferredWebexSite","meetingJoinUrl","MEETING_LINK","getPermissionTokenExpiryInfo","PERMISSION_TOKEN_REFRESH","PERMISSION_TOKEN_REFRESH_ERROR","refreshPermissionToken","_x6","_fetchMeetingInfo","_callee7","_callee7$","_context7","_x7","verifyPassword","_this2","VERIFY_PASSWORD_SUCCESS","isPasswordValid","failureReason","verifyRegistrationId","_this3","VERIFY_REGISTRATION_ID_SUCCESS","isRegistrationIdValid","VERIFY_REGISTRATION_ID_ERROR","_this4","_URL","URL","refreshURL","hostname","captchaRefreshUrl","response","captchaID","verificationImageURL","verificationAudioURL","postMetrics","eventName","setUpLocusInfoSelfListener","setUpLocusInfoMeetingListener","setUpLocusServicesListener","setUpLocusResourcesListener","setUpLocusFullStateListener","setUpLocusUrlListener","setUpLocusHostListener","setUpLocusSelfListener","setUpLocusParticipantsListener","setupLocusControlsListener","setUpLocusMediaSharesListener","setUpLocusEmbeddedAppsListener","setUpLocusInfoMeetingInfoListener","setUpLocusInfoAssignHostListener","setUpLocusInfoMediaInactiveListener","setUpBreakoutsListener","setUpInterpretationListener","_this5","BREAKOUTS","EVENTS","BREAKOUTS_CLOSING","MEETING_BREAKOUTS_CLOSING","MESSAGE","messageEvent","MEETING_BREAKOUTS_MESSAGE","MEMBERS_UPDATE","MEETING_BREAKOUTS_UPDATE","ASK_RETURN_TO_MAIN","MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN","LEAVE_BREAKOUT","MEETING_BREAKOUTS_LEAVE","ASK_FOR_HELP","helpEvent","MEETING_BREAKOUTS_ASK_FOR_HELP","PRE_ASSIGNMENTS_UPDATE","MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE","_this6","INTERPRETATION","SUPPORT_LANGUAGES_UPDATE","MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE","HANDOFF_REQUESTS_ARRIVED","MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED","setUpVoiceaListeners","voicea","listenToEvents","voiceaListenerCallbacks","areVoiceaEventsSetup","_this7","DISCONNECT_DUE_TO_INACTIVITY","res","REQUEST_UPLOAD_LOGS","reconnection","autoRejoin","MEETING_SELF_LEFT","_this8","LOCUS_INFO_CAN_ASSIGN_HOST","changed","canAssignHost","MEETING_ACTIONS_UPDATE","_this9","LOCUSINFO","FULL_STATE_MEETING_STATE_CHANGE","MEETING_STATE_CHANGE","FULL_STATE_TYPE_UPDATE","locusFullStateTypeUpdate","MEETINGS_NETWORK_DISCONNECTED","MEETINGS_NETWORK_CONNECTED","_this10","LOCUS_INFO_UPDATE_SELF","locusSelfUpdate","pstnUpdate","requestScreenShareFloorIfPending","_this11","self","_payload$newSelf","_payload$newSelf2","dialInPstnDevice","newSelf","pstnDevices","find","device","dialOutPstnDevice","_dialInPstnDevice$dia","newStatus","dialingStatus","_dialOutPstnDevice$di","MEETING_SELF_PHONE_AUDIO_UPDATE","dialIn","attendeeId","dialOut","_this12","LOCUS_INFO_UPDATE_HOST","locusHostUpdate","_this13","LOCUS_INFO_UPDATE_PARTICIPANTS","locusParticipantsUpdate","PARTICIPANT_REASON_CHANGED","MEETING_PARTICIPANT_REASON_CHANGED","_this14","CONTROLS_RECORDING_UPDATED","_ref9","modifiedBy","lastModified","RECORDING_STATE","RECORDING","MEETING_STARTED_RECORDING","IDLE","MEETING_STOPPED_RECORDING","PAUSED","MEETING_PAUSED_RECORDING","RESUMED","MEETING_RESUMED_RECORDING","CONTROLS_MEETING_CONTAINER_UPDATED","_ref10","meetingContainerUrl","MEETING_MEETING_CONTAINER_UPDATE","CONTROLS_MEETING_TRANSCRIBE_UPDATED","_ref11","caption","transcribing","startTranscription","MEETING_STOPPED_RECEIVING_TRANSCRIPTION","CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED","_ref12","spokenLanguage","_this14$transcription","onSpokenLanguageUpdate","MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED","CONTROLS_MEETING_MANUAL_CAPTION_UPDATED","_ref13","enable","MEETING_MANUAL_CAPTION_UPDATED","CONTROLS_MEETING_BREAKOUT_UPDATED","_ref14","breakout","updateBreakout","CONTROLS_MEETING_INTERPRETATION_UPDATED","_ref15","interpretation","updateInterpretation","MEETING_INTERPRETATION_UPDATE","CONTROLS_ENTRY_EXIT_TONE_UPDATED","_ref16","entryExitTone","MEETING_ENTRY_EXIT_TONE_UPDATE","CONTROLS_MUTE_ON_ENTRY_CHANGED","_ref17","MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED","CONTROLS_SHARE_CONTROL_CHANGED","_ref18","MEETING_CONTROLS_SHARE_CONTROL_UPDATED","CONTROLS_DISALLOW_UNMUTE_CHANGED","_ref19","MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED","CONTROLS_REACTIONS_CHANGED","_ref20","MEETING_CONTROLS_REACTIONS_UPDATED","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","_ref21","MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED","CONTROLS_RAISE_HAND_CHANGED","_ref22","MEETING_CONTROLS_RAISE_HAND_UPDATED","CONTROLS_WEBCAST_CHANGED","_ref23","MEETING_CONTROLS_WEBCAST_UPDATED","CONTROLS_MEETING_FULL_CHANGED","_ref24","MEETING_CONTROLS_MEETING_FULL_UPDATED","CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","_ref25","updatePracticeSessionStatus","MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","CONTROLS_STAGE_VIEW_UPDATED","_ref26","MEETING_CONTROLS_STAGE_VIEW_UPDATED","CONTROLS_VIDEO_CHANGED","_ref27","MEETING_CONTROLS_VIDEO_UPDATED","CONTROLS_ANNOTATION_CHANGED","_ref28","MEETING_CONTROLS_ANNOTATION_UPDATED","CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED","_ref29","MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED","CONTROLS_POLLING_QA_CHANGED","_ref30","MEETING_CONTROLS_POLLING_QA_UPDATED","triggerAnnotationInfoEvent","contentShare","previousContentShare","MEETING_UPDATE_ANNOTATION_INFO","annotationInfo","resourceType","_this15","LOCUS_INFO_UPDATE_MEDIA_SHARES","_ref31","_callee8","_payload$previous","_payload$previous2","_payload$current","whiteboardShare","previousWhiteboardShare","newShareStatus","_this15$locusInfo","_this15$locusInfo$inf","_this15$webinar","oldShareStatus","sendStartedSharingRemote","_this15$mediaProperti","_callee8$","_context8","current","whiteboard","previous","forceUpdate","beneficiaryId","disposition","deviceUrlSharing","resourceUrl","selfId","FLOOR_ACTION","GRANTED","REMOTE_SHARE_ACTIVE","isWebinar","selfIsAttendee","guest","WHITEBOARD_SHARE_ACTIVE","MEETING_STOPPED_SHARING_REMOTE","SELF_STOPPED","MEETING_STOPPED_SHARING_WHITEBOARD","saveTimestamp","shareDuration","getShareDuration","t1","MEETING_STARTED_SHARING_REMOTE","memberId","mediaDirection","sendShare","finish","MEETING_STARTED_SHARING_LOCAL","MEETING_STARTED_SHARING_WHITEBOARD","locusMediaSharesUpdate","_x8","_this16","LOCUS_INFO_UPDATE_URL","_this16$locusUrl","locusUrlUpdate","setLocusUrl","MEETING_LOCUS_URL_UPDATE","_this17","LINKS_SERVICES","_payload$services","_payload$services$rec","_this17$locusInfo","_this17$locusInfo$ful","_payload$services2","_payload$services2$br","_payload$services3","_payload$services3$ap","_payload$services4","_payload$services4$ap","setServiceUrl","setSessionId","breakoutServiceUrlUpdate","approvalUrlUpdate","approval","_this18","LINKS_RESOURCES","updateWebcastUrl","MEETING_RESOURCE_LINKS_UPDATE","_this19","MEETING_LOCKED","MEETING_UNLOCKED","MEETING_INFO_UPDATED","_ref32","isInitializing","setDisplayHints","userDisplayHints","setUserPolicy","selfUserPolicies","handleDataChannelUrlChange","datachannelUrl","enableAutomaticLLM","updateLLMConnection","_this20","EMBEDDED_APPS_UPDATED","embeddedApps","MEETING_EMBEDDED_APPS_UPDATE","_this21","LOCAL_UNMUTE_REQUIRED","handleServerLocalUnmuteRequired","unmuteAllowed","MEETING_SELF_UNMUTED_BY_OTHERS","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","_payload$muted","_payload$unmuteAllowe","isRemotelyMuted","isUnmuteAllowed","handleServerRemoteMuteUpdate","MEETING_SELF_VIDEO_MUTED_BY_OTHERS","MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS","SELF_REMOTE_MUTE_STATUS_UPDATED","_this21$audio","isMuted","MEETING_SELF_MUTED_BY_OTHERS","LOCAL_UNMUTE_REQUESTED","MEETING_SELF_REQUESTED_TO_UNMUTE","SELF_UNADMITTED_GUEST","startKeepAlive","MEETING_SELF_LOBBY_WAITING","GUEST_ENTERED_LOBBY","SELF_ADMITTED_GUEST","_ref33","_callee9","_this21$rtcMetrics","_callee9$","_context9","MEETING_SELF_GUEST_ADMITTED","GUEST_EXITED_LOBBY","rtcMetrics","sendNextMetrics","_x9","MEDIA_INACTIVITY","MEETING_MEDIA_INACTIVE","MEDIA_STATUS_CHANGE","_this21$mediaProperti","_this21$audio2","_this21$mediaProperti2","_this21$video","_this21$mediaProperti3","_this21$mediaProperti4","_this21$mediaProperti5","_this21$mediaProperti6","updateMediaStatus","actual","expected","sendAudio","sendVideo","receiveAudio","receiveVideo","receiveShare","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST","SELF_MEETING_BREAKOUTS_CHANGED","updateBreakoutSessions","SELF_MEETING_INTERPRETATION_CHANGED","targetChanged","updateSelfInterpretation","audioStream","setSendNamedMediaGroup","SELF_MEETING_BRB_CHANGED","_this21$brbState","_payload$brb","brbState","handleServerBrbUpdate","brb","enabled","MEETING_SELF_BRB_UPDATE","SELF_ROLES_CHANGED","_payload$newRoles","_payload$newRoles2","_payload$newRoles3","isModeratorOrCohost","newRoles","SELF_ROLES","MODERATOR","COHOST","updateCanManageBreakouts","updateCanManageInterpreters","updateRoleChanged","MEETING_SELF_ROLES_CHANGED","SELF_IS_SHARING_BLOCKED_CHANGE","MEETING_SELF_IS_SHARING_BLOCKED","_this22","REMOTE_RESPONSE","remote","remoteDeclined","DESTROY_MEETING","_ref34","_callee10","_callee10$","_context10","setLocalShareVideoStream","setLocalShareAudioStream","shouldLeave","MeetingUtil","cleanUp","_x10","object","_this23","_keys","invite","invitee","alertIfActive","addMember","cancelPhoneInvite","cancelInviteByMemberId","admit","sessionLocusUrls","locusUrls","_this$breakouts","mainLocusUrl","authorizingLocusUrl","admitMembers","_beRightBack","_callee11","_this24","errorMessage","_errorMessage","_error","_callee11$","_context11","sendSlotManager","beRightBack","_x11","remove","removeMember","mute","muteMember","transfer","moderator","transferHostToMember","locusMeetingObject","_typeof2","_locusMeetingObject","_locusMeetingObject2","_locusMeetingObject3","_locusMeetingObject4","_locusMeetingObject6","_locusMeetingObject7","setSipUri","enableUnifiedMeetings","sipUrl","sipMeetingUri","_locusMeetingObject5","webExMeetingId","setPermissionTokenPayload","setSelfUserPolicies","environment","channel","parseInterpretationInfo","arePolicyRestrictionsSupported","isEmpty","_this$meetingInfo2","_this$meetingInfo3","_this$meetingInfo4","_this$meetingInfo4$vi","_this$meetingInfo5","_this$meetingInfo5$vi","canUseVoip","supportVoIP","ControlsOptionsUtil","hasPolicies","requiredPolicies","SELF_POLICY","SUPPORT_VOIP","policies","canDoVideo","SUPPORT_VIDEO","supportHDV","SUPPORT_HDV","enforceVirtualBackground","ENFORCE_VIRTUAL_BACKGROUND","supportHQV","SUPPORT_HQV","canInviteNewParticipants","canAdmitParticipant","canLock","canUserLock","canUnlock","canUserUnlock","canShareWhiteBoard","canSetDisallowUnmute","canUnsetDisallowUnmute","canSetMuteOnEntry","canUnsetMuteOnEntry","canSetMuted","canUnsetMuted","canStartRecording","RecordingUtil","canUserStart","canStopRecording","canUserStop","canPauseRecording","canUserPause","canResumeRecording","canUserResume","isPremiseRecordingEnabled","canRaiseHand","canUserRaiseHand","canLowerAllHands","canUserLowerAllHands","canLowerSomeoneElsesHand","canUserLowerSomeoneElsesHand","bothLeaveAndEndMeetingAvailable","canEnableClosedCaption","canStartTranscribing","canStopTranscribing","isClosedCaptionActive","canStartManualCaption","canStopManualCaption","isLocalRecordingStarted","isLocalRecordingStopped","isLocalRecordingPaused","isManualCaptionActive","isSaveTranscriptsEnabled","isWebexAssistantActive","canViewCaptionPanel","isRealTimeTranslationEnabled","canSelectSpokenLanguages","waitingForOthersToJoin","canSendReactions","requiresPostMeetingDataConsentPrompt","canManageBreakout","canStartBreakout","canBroadcastMessageToBreakout","canAdmitLobbyToBreakout","isBreakoutPreassignmentsEnabled","canUserAskForHelp","canUserRenameSelfAndObserved","canUserRenameOthers","canMoveToLobby","canMuteAll","hasHints","requiredHints","DISPLAY_HINTS","MUTE_ALL","canUnmuteAll","UNMUTE_ALL","canEnableHardMute","ENABLE_HARD_MUTE","canDisableHardMute","DISABLE_HARD_MUTE","canEnableMuteOnEntry","ENABLE_MUTE_ON_ENTRY","canDisableMuteOnEntry","DISABLE_MUTE_ON_ENTRY","canEnableReactions","ENABLE_REACTIONS","canDisableReactions","DISABLE_REACTIONS","canEnableReactionDisplayNames","ENABLE_SHOW_DISPLAY_NAME","canDisableReactionDisplayNames","DISABLE_SHOW_DISPLAY_NAME","canUpdateShareControl","SHARE_CONTROL","canEnableViewTheParticipantsList","ENABLE_VIEW_THE_PARTICIPANT_LIST","canDisableViewTheParticipantsList","DISABLE_VIEW_THE_PARTICIPANT_LIST","canEnableViewTheParticipantsListPanelist","ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST","canDisableViewTheParticipantsListPanelist","DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST","canEnableShowAttendeeCount","ENABLE_SHOW_ATTENDEE_COUNT","canDisableShowAttendeeCount","DISABLE_SHOW_ATTENDEE_COUNT","canEnableRaiseHand","ENABLE_RAISE_HAND","canDisableRaiseHand","DISABLE_RAISE_HAND","canEnableVideo","ENABLE_VIDEO","canDisableVideo","DISABLE_VIDEO","canStartWebcast","WEBCAST_CONTROL_START","canStopWebcast","WEBCAST_CONTROL_STOP","canShowStageView","STAGE_VIEW_ACTIVE","canEnableStageView","ENABLE_STAGE_VIEW","canDisableStageView","DISABLE_STAGE_VIEW","isPracticeSessionOn","PRACTICE_SESSION_ON","isPracticeSessionOff","PRACTICE_SESSION_OFF","canStartPracticeSession","SHOW_PRACTICE_SESSION_START","canStopPracticeSession","SHOW_PRACTICE_SESSION_STOP","canShareFile","SHARE_FILE","SUPPORT_FILE_SHARE","canTransferFile","SUPPORT_FILE_TRANSFER","canRealtimeCloseCaption","SUPPORT_REALTIME_CLOSE_CAPTION","canRealtimeCloseCaptionManual","SUPPORT_REALTIME_CLOSE_CAPTION_MANUAL","canChat","SUPPORT_CHAT","canPollingAndQA","SUPPORT_POLLING_AND_QA","canShareApplication","SHARE_APPLICATION","SUPPORT_APP_SHARE","canShareCamera","SHARE_CAMERA","SUPPORT_CAMERA_SHARE","canShareDesktop","SHARE_DESKTOP","SUPPORT_DESKTOP_SHARE","canShareContent","SHARE_CONTENT","canAnnotate","SUPPORT_ANNOTATION","canEnableAnnotation","ENABLE_ANNOTATION_MEETING_OPTION","canDisableAnnotation","DISABLE_ANNOTATION_MEETING_OPTION","canEnableRemoteDesktopControl","ENABLE_RDC_MEETING_OPTION","canDisableRemoteDesktopControl","DISABLE_RDC_MEETING_OPTION","canEnablePollingQA","ENABLE_ATTENDEE_START_POLLING_QA","canDisablePollingQA","DISABLE_ATTENDEE_START_POLLING_QA","_this$permissionToken","_this$permissionToken2","_this$permissionToken3","_this$permissionToken4","permissionTokenPayload","permission","userPolicies","enforceVBGImagesURL","jwtDecode","permissionTokenReceivedLocalTime","setLocus","mtgLocus","host","initialSetup","setLogUploadTimer","_this25","LOG_UPLOAD_INTERVALS","delay","logUploadIntervalMultiplicationFactor","uploadLogsTimer","safeSetTimeout","startPeriodicLogUpload","stopPeriodicLogUpload","unsetRemoteStreams","closeRemoteStream","closeRemoteStreams","_this26","_this$mediaProperties6","remoteAudioStream","remoteVideoStream","remoteShareStream","triggerMediaStoppedEvent","MEDIA_STOPPED","stopStream","Media","all","_setLocalAudioStream","_callee12","localStream","_this$audio2","oldStream","_callee12$","_context12","LocalStreamEventNames","UserMuteStateChange","SystemMuteStateChange","OutputTrackChange","setLocalAudioStream","handleLocalStreamChange","unpublishStream","publishStream","_x12","_setLocalVideoStream","_callee13","_this$video2","_callee13$","_context13","videoStream","setLocalVideoStream","_x13","_setLocalShareVideoStream","_callee14","localDisplayStream","_callee14$","_context14","handleShareVideoStreamMuteStateChange","StreamEventNames","Ended","handleShareVideoStreamEnded","_x14","_setLocalShareAudioStream","_callee15","localSystemAudioStream","_callee15$","_context15","handleShareAudioStreamEnded","_x15","emitPublishStateChangeEvent","functionName","isPublished","MEETING_STREAM_PUBLISH_STATE_CHANGED","cleanupLocalStreams","_this$mediaProperties7","setMercuryListener","_this27","ONLINE","MERCURY_CONNECTION_RESTORED","OFFLINE","MERCURY_CONNECTION_FAILURE","closePeerConnections","resetMuteStates","mediaRequestManager","reset","close","unsetPeerConnection","unsetPeerConnections","detection","setCorrelationId","updateCallStateForMetrics","enqueueScreenShareFloorRequest","PENDING","enqueueMediaUpdate","muteAudio","_this28","isUserInJoinedState","UserNotJoinedError","NoMediaEstablishedYetError","ParameterError","handleClientRequest","handleAudioLogging","MUTE_AUDIO_FAILURE","unmuteAudio","_this29","UNMUTE_AUDIO_FAILURE","muteVideo","_this30","handleVideoLogging","MUTE_VIDEO_FAILURE","unmuteVideo","_this31","UNMUTE_VIDEO_FAILURE","_joinWithMedia","_callee16","_this32","mediaOptions","_options$joinOptions","joinOptions","_this$joinWithMediaRe","joined","joinResponse","turnServerInfo","forceTurnDiscovery","turnDiscoveryRequest","_yield$this$roap$hand","mediaResponse","_this$locusUrl","_leaveError","leaveError","shouldRetry","_args16","_callee16$","_context16","allowMediaInLobby","generateTurnDiscoveryRequestMessage","join","handleTurnDiscoveryHttpResponse","abortTurnDiscovery","addMediaInternal","media","multistreamEnabled","isSdpOfferCreationError","resourceId","JOIN_WITH_MEDIA_FAILURE","leaveErrorReason","joinWithMedia","_this33","isMediaEstablished","currentMediaStatus","cleanUpBeforeReconnection","_callee17","_callee17$","_context17","waitForRemoteSDPAnswer","waitForMediaConnectionConnected","ReconnectionNotStartedError","isTranscriptionSupported","_this$locusInfo$contr","controls","transcribe","_this$locusInfo5","_this$locusInfo5$cont","reactions","setCaptionLanguage","language","_this34","voiceaListenerCaptionUpdate","CAPTION_LANGUAGE_UPDATE","statusCode","currentCaptionLanguage","requestLanguage","setSpokenLanguage","_this35","voiceaListenerLanguageUpdate","SPOKEN_LANGUAGE_UPDATE","languageCode","_startTranscription","_callee18","_callee18$","_context18","turnOnCaptions","RECEIVE_TRANSCRIPTION_FAILURE","_x16","triggerStopReceivingTranscriptionEvent","_join","_callee19","_this36","joinFailed","joinSuccess","_errorMessage2","_error2","_errorMessage3","_error3","_args19","_callee19$","_context19","registered","rejoin","sendCallInitiated","joinTrigger","isRoapCallEnabled","pstnAudioType","MEETING_STATE_MACHINE","STATES","ENDED","RINGING","ring","_JOIN_","meetingQuality","QUALITY_LEVELS","setRemoteQualityLevel","enableMultistream","checkAndRefreshPermissionToken","MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC","MEETING_PERMISSION_TOKEN_REFRESH_REASON","fail","joinMeetingOptions","setupLocusMediaRequest","meetingStarted","JOIN_SUCCESS","_error$error","JOIN_FAILURE","LLM_CONNECTION_AFTER_JOIN_FAILURE","_updateLLMConnection","_callee20","_this37","_this$locusInfo6","_this$locusInfo6$info","_this$locusInfo6$info2","practiceSessionDatachannelUrl","dataChannelUrl","_callee20$","_context20","isJoinPracticeSessionDataChannel","isConnected","getLocusUrl","getDatachannelUrl","disconnectLLM","registerAndConnect","registerAndConnectResult","usePhoneAudio","phoneNumber","dialInPstn","dialOutPstn","isPhoneProvisioned","pstnStatus","JOINED","SUCCESS","_this38","clientUrl","_error$error2","ADD_DIAL_IN_FAILURE","dial_in_url","dial_in_correlation_id","client_url","_this39","_error$error3","ADD_DIAL_OUT_FAILURE","dial_out_url","dial_out_correlation_id","disconnectPhoneAudio","_this40","correlationToClear","moveTo","_this41","mediaCapabilities","rx","share","share_audio","tx","once","SELF_OBSERVING","_callee21","mediaSettings","_callee21$","_context21","releaseScreenShareFloor","setMediaDirection","unsetRemoteMedia","stopAnalyzer","addMedia","audioEnabled","videoEnabled","shareVideoEnabled","MOVE_TO_SUCCESS","isMoveToInProgress","MOVE_TO_FAILURE","moveToResource","moveFrom","_this42","oldCorrelationId","leaveMeeting","moveMeeting","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","getMediaConnectionDebugId","substring","_createMediaConnection","_callee22","bundlePolicy","mc","shareEnabled","_callee22$","_context22","RtcMetrics","reachability","stopReachability","createMediaConnection","remoteQualityLevel","enableRtx","enableExtmap","iceCandidatesTimeout","iceCandidatesGatheringTimeout","disableAudioMainDtx","enableAudioTwcc","enableAudioTwccForMultistream","stopIceGatheringAfterFirstRelayCandidate","setMediaPeerConnection","setupMediaConnectionListeners","createSlot","_x17","_x18","forwardEvent","eventEmitter","eventTypeToForward","meetingEventType","_this43","_setUpLocalStreamReferences","_callee23","localStreams","_localStreams$microph","_localStreams$camera","_localStreams$screenS","_localStreams$screenS2","_localStreams$screenS3","_localStreams$screenS4","_localStreams$screenS5","_localStreams$screenS6","setUpStreamPromises","_callee23$","_context23","microphone","readyState","camera","screenShare","setUpLocalStreamReferences","_x19","_waitForMediaConnectionConnected","_callee24","iceConnected","_this$mediaProperties8","_this$mediaProperties9","_this$mediaProperties10","_this$mediaProperties11","_this$mediaProperties12","_this$mediaProperties13","_this$mediaProperties14","timedOutError","_callee24$","_context24","t2","t3","t4","t5","t6","multistreamConnection","pc","signalingState","mediaConnection","t7","t8","isWebexMediaBackendUnreachable","t9","t10","unreachable","t11","generateClientErrorCodeForIceFailure","t12","t13","t14","t15","t16","t17","createStatsAnalyzer","stats","enableStatsAnalyzer","NetworkQualityMonitor","StatsAnalyzer","setupStatsAnalyzerEventHandlers","NetworkQualityEventNames","NETWORK_QUALITY","sendNetworkQualityEvent","_waitForRemoteSDPAnswer","_callee25","_this44","_callee25$","_context25","setTimeout","ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT","promise","_retryEstablishMediaConnectionWithForcedTurnDiscovery","_callee26","remoteMediaManagerConfig","_callee26$","_context26","establishMediaConnection","retryEstablishMediaConnectionWithForcedTurnDiscovery","_x20","_x21","_retryWithForcedTurnDiscovery","_callee27","_callee27$","_context27","cleanUpBeforeRetryWithTurnServer","ADD_MEDIA_RETRY","meetingState","MEETING_STATE","LEFT","retryWithForcedTurnDiscovery","_x22","_x23","_handleWaitForMediaConnectionConnectedError","_callee28","_callee28$","_context28","AddMediaFailed","handleWaitForMediaConnectionConnectedError","_x24","_x25","_x26","_doTurnDiscovery","_callee29","isReconnecting","isForced","turnDiscoveryResult","_callee29$","_context29","submitInternalEvent","doTurnDiscovery","TURN_DISCOVERY_LATENCY","getTurnDiscoveryTime","_x27","_x28","_establishMediaConnection","_callee30","_this$locusMediaReque","_yield$this$doTurnDis","_callee30$","_context30","locusMediaRequest","isConfluenceCreated","RemoteMediaManager","RemoteMediaManagerEvent","AudioCreated","REMOTE_MEDIA_AUDIO_CREATED","InterpretationAudioCreated","REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED","ScreenShareAudioCreated","REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED","VideoLayoutChanged","REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED","start","initiateOffer","handleMediaLogging","_x29","_x30","_x31","_x32","_cleanUpOnAddMediaFailure","_callee31","_callee31$","_context31","forceSendStatsReport","cleanUpOnAddMediaFailure","_downgradeFromMultistreamToTranscoded","_callee32","_this$locusMediaReque2","_callee32$","_context32","downgradeFromMultistreamToTranscoded","_cleanUpBeforeRetryWithTurnServer","_callee33","_callee33$","_context33","_cleanUpBeforeReconnection","_callee34","_callee34$","_context34","_this$webex$meetings$2","_this$webex$meetings$3","LocusMediaRequest","deviceType","countryCode","regionCode","preferTranscoding","_this45","_addMediaInternal","_callee35","_options$audioEnabled","_options$videoEnabled","_options$shareAudioEn","shareAudioEnabled","_options$shareVideoEn","_options$bundlePolicy","_options$additionalMe","additionalMediaOptions","rawSendVideo","rawReceiveVideo","rawSendAudio","rawReceiveAudio","_this$remoteMediaMana","_yield$this$mediaProp","connectionType","ipVersion","selectedCandidatePairChanges","numTransports","reachabilityMetrics","_this$mediaProperties15","_this$mediaProperties16","_this$mediaProperties17","_this$mediaProperties18","_this$mediaProperties19","_this$mediaProperties20","_this$mediaProperties21","_this$mediaProperties22","_this$mediaProperties23","_this$mediaProperties24","_this$mediaProperties25","_this$mediaProperties26","_this$mediaProperties27","_this$mediaProperties28","_this$mediaProperties29","_this$mediaProperties30","_this$mediaProperties31","_this$mediaProperties32","_this$mediaProperties33","_this$mediaProperties34","_this$mediaProperties35","_reachabilityMetrics","_yield$this$mediaProp2","_selectedCandidatePairChanges","_numTransports","_iceCandidateErrors","_args35","_callee35$","_context35","FULL_STATE","ACTIVE","MeetingNotActiveError","isUserInLeftState","isUserUnadmitted","UserInLobbyError","createMuteState","createBrbState","getCurrentConnectionInfo","fromEntries","getMediaReachabilityMetricFields","ADD_MEDIA_SUCCESS","isJoinWithMediaRetry","logAllReceiveSlots","ADD_MEDIA_FAILURE","connectionState","iceConnectionState","MEETING_CONNECTION_FAILED","_x33","_x34","_x35","_this46","canUpdateMediaNow","queueItem","_updateMedia","_callee36","_this$audio3","_this$video3","_callee36$","_context36","checkMediaConnection","setActive","_x36","acknowledge","_this47","_INCOMING_","acknowledgeMeeting","decline","_this48","declineMeeting","buildLeaveFetchRequestOptions","requestOptions","prepareFetchOptions","_this49","leaveReason","CLIENT_LEAVE_REQUEST","submitLeaveMetric","clientEventLeaveReason","clearMeetingData","fatal","errorDescription","category","shownToUser","MEETING_LEAVE_FAILURE","startWhiteboardShare","channelUrl","resourceToken","_this50","mediaShares","element","personUrl","uri","changeMeetingFloor","MEETING_START_WHITEBOARD_SHARE_FAILURE","board","stopWhiteboardShare","_this51","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","finally","_this52","CONTENT","MEETING_SHARE_SUCCESS","MEETING_SHARE_FAILURE","getChangeMeetingFloorErrorPayload","_this53","_this54","_content$floor","floor","beneficiary","STOP_FLOOR_REQUEST_FAILURE","startRecording","setMuteOnEntry","setDisallowUnmute","setMuteAll","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled","roles","stopRecording","pauseRecording","resumeRecording","lockMeeting","unlockMeeting","rejectWithErrorLog","sendDTMF","tones","enableDTMF","changeVideoLayout","_this55","renderInfo","_this$mediaProperties36","layoutInfo","LAYOUT_TYPES","mainWidth","Math","round","width","mainHeight","height","abs","contentWidth","contentHeight","CONTROLS_MEETING_LAYOUT_UPDATED","envelope","MEETING_CONTROLS_LAYOUT_UPDATE","layout","changeVideoLayoutDebounced","level","networkQualityScore","PANELIST","ATTENDEE","endMeetingForAll","_this56","MEETING_END_ALL_INITIATED","end","MEETING_END_ALL_FAILURE","sendReaction","reactionType","skinToneType","_this$locusInfo7","_this$locusInfo7$cont","_this$locusInfo7$cont2","reactionChannelUrl","reactionData","Reactions","skinToneData","SkinTones","normal","tone","toggleReactions","_this$locusInfo8","_this$locusInfo8$cont","_this$locusInfo8$cont2","isEnabled","requestingParticipantId","setPostMeetingDataConsent","accept","postMeetingDataConsent","_this$mediaProperties37","_enableMusicMode","_callee37","shouldEnableMusicMode","_callee37$","_context37","setCodecParameters","maxaveragebitrate","maxplaybackrate","deleteCodecParameters","enableMusicMode","_x37","_this$mediaProperties38","_this$mediaProperties39","_this$mediaProperties40","_this$mediaProperties41","_this$mediaProperties42","_this$mediaProperties43","_this$mediaProperties44","_this$mediaProperties45","_this57","update","localTracks","getTracks","direction","getDirection","UPDATE_MEDIA_FAILURE","getTargetLanguageCode","groups","NAMED_MEDIA_GROUP_TYPE_AUDIO","setNamedMediaGroups","_publishStream","_callee38","_callee38$","_context38","_x38","_x39","_unpublishStream","_callee39","_callee39$","_context39","_x40","_x41","_publishStreams","_callee40","streams","_streams$screenShare","_streams$screenShare2","_streams$screenShare3","_streams$screenShare4","_streams$screenShare5","_streams$screenShare6","streamChecks","_i","_streamChecks","_streamChecks$_i","floorRequestNeeded","_streams$screenShare7","_callee40$","_context40","publishStreams","_x42","_unpublishStreams","_callee41","promises","_iterator","_step","_callee41$","_context41","_x43","permissionTokenExpiryFromServer","Number","exp","permissionTokenIssuedTimeFromServer","iat","shiftInTime","adjustedCurrentTime","threshold","_this$getPermissionTo","_getMediaReachabilityMetricFields","_callee42","_this$mediaServerIp","_this$mediaConnection","_this$mediaConnection2","_this$mediaConnection3","successKeys","totalSuccessCases","selectedSubnetFirstOctet","isSubnetReachable","selectedCluster","_callee42$","_context42","getReachabilityMetrics","reduce","total","mediaAgentCluster","subnet_reachable","selected_cluster","selected_subnet","setStage","_ref37","_ref37$activeSpeakerP","activeSpeakerProportion","customBackground","customLogo","customNameLabel","importantParticipants","_ref37$lockAttendeeVi","lockAttendeeViewOnStage","_ref37$showActiveSpea","showActiveSpeaker","videoLayout","overrideDefault","lockAttendeeViewOnStageOnly","stageParameters","show","order","stageManagerType","importantParticipant","index","customLayouts","logo","STAGE_MANAGER_TYPE","LOGO","background","BACKGROUND","nameLabelStyle","NAME_LABEL","synchronizeStage","unsetStage","StatelessWebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {cloneDeep, isEqual, isEmpty} from 'lodash';\nimport jwtDecode from 'jwt-decode';\n// @ts-ignore - Fix this\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore - Types not available for @webex/common\nimport {Defer} from '@webex/common';\nimport {safeSetTimeout, safeSetInterval} from '@webex/common-timers';\nimport {\n ClientEvent,\n ClientEventLeaveReason,\n CallDiagnosticUtils,\n CALL_DIAGNOSTIC_CONFIG,\n RtcMetrics,\n} from '@webex/internal-plugin-metrics';\nimport {ClientEvent as RawClientEvent} from '@webex/event-dictionary-ts';\n\nimport {\n ConnectionState,\n Errors,\n ErrorType,\n MediaConnectionEventNames,\n MediaContent,\n MediaType,\n RemoteTrackType,\n RoapMessage,\n StatsAnalyzer,\n StatsAnalyzerEventNames,\n NetworkQualityEventNames,\n NetworkQualityMonitor,\n} from '@webex/internal-media-core';\n\nimport {\n LocalStream,\n LocalCameraStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n LocalMicrophoneStream,\n LocalStreamEventNames,\n StreamEventNames,\n RemoteStream,\n} from '@webex/media-helpers';\n\nimport {\n EVENT_TRIGGERS as VOICEAEVENTS,\n TURN_ON_CAPTION_STATUS,\n type MeetingTranscriptPayload,\n} from '@webex/internal-plugin-voicea';\n\nimport {processNewCaptions} from './voicea-meeting';\n\nimport {\n MeetingNotActiveError,\n UserInLobbyError,\n NoMediaEstablishedYetError,\n UserNotJoinedError,\n AddMediaFailed,\n} from '../common/errors/webex-errors';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsUtil from '../common/events/util';\nimport Trigger from '../common/events/trigger-proxy';\nimport Roap, {type TurnDiscoveryResult, type TurnDiscoverySkipReason} from '../roap/index';\nimport {type TurnServerInfo} from '../roap/types';\nimport Media, {type BundlePolicy} from '../media';\nimport MediaProperties from '../media/properties';\nimport MeetingStateMachine from './state';\nimport {createMuteState} from './muteState';\nimport LocusInfo from '../locus-info';\nimport Metrics from '../metrics';\nimport ReconnectionManager from '../reconnection-manager';\nimport ReconnectionNotStartedError from '../common/errors/reconnection-not-started';\nimport MeetingRequest from './request';\nimport Members from '../members/index';\nimport MeetingUtil from './util';\nimport MeetingsUtil from '../meetings/util';\nimport RecordingUtil from '../recording-controller/util';\nimport ControlsOptionsUtil from '../controls-options-manager/util';\nimport MediaUtil from '../media/util';\nimport {Reactions, SkinTones} from '../reactions/reactions';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport {\n DESTINATION_TYPE,\n _INCOMING_,\n _JOIN_,\n AUDIO,\n CONTENT,\n DISPLAY_HINTS,\n EVENT_TRIGGERS,\n EVENT_TYPES,\n EVENTS,\n BREAKOUTS,\n FLOOR_ACTION,\n FULL_STATE,\n LAYOUT_TYPES,\n LOCUSINFO,\n MEETING_INFO_FAILURE_REASON,\n MEETING_REMOVED_REASON,\n MEETING_STATE_MACHINE,\n MEETING_STATE,\n MEETINGS,\n NETWORK_STATUS,\n ONLINE,\n OFFLINE,\n PASSWORD_STATUS,\n PSTN_STATUS,\n QUALITY_LEVELS,\n RECORDING_STATE,\n SHARE_STATUS,\n SHARE_STOPPED_REASON,\n VIDEO,\n SELF_ROLES,\n INTERPRETATION,\n SELF_POLICY,\n MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC,\n MEETING_PERMISSION_TOKEN_REFRESH_REASON,\n ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT,\n NAMED_MEDIA_GROUP_TYPE_AUDIO,\n WEBINAR_ERROR_WEBCAST,\n WEBINAR_ERROR_REGISTRATION_ID,\n JOIN_BEFORE_HOST,\n REGISTRATION_ID_STATUS,\n STAGE_MANAGER_TYPE,\n} from '../constants';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport ParameterError from '../common/errors/parameter';\nimport {\n MeetingInfoV2PasswordError,\n MeetingInfoV2CaptchaError,\n MeetingInfoV2PolicyError,\n MeetingInfoV2JoinWebinarError,\n MeetingInfoV2JoinForbiddenError,\n} from '../meeting-info/meeting-info-v2';\nimport {CSI, ReceiveSlotManager} from '../multistream/receiveSlotManager';\nimport SendSlotManager from '../multistream/sendSlotManager';\nimport {MediaRequestManager} from '../multistream/mediaRequestManager';\nimport {\n Configuration as RemoteMediaManagerConfiguration,\n RemoteMediaManager,\n Event as RemoteMediaManagerEvent,\n} from '../multistream/remoteMediaManager';\nimport {\n Reaction,\n ReactionServerType,\n SkinToneType,\n ProcessedReaction,\n RelayEvent,\n} from '../reactions/reactions.type';\nimport Breakouts from '../breakouts';\nimport SimultaneousInterpretation from '../interpretation';\nimport Annotation from '../annotation';\nimport Webinar from '../webinar';\n\nimport InMeetingActions from './in-meeting-actions';\nimport {REACTION_RELAY_TYPES} from '../reactions/constants';\nimport RecordingController from '../recording-controller';\nimport ControlsOptionsManager from '../controls-options-manager';\nimport PermissionError from '../common/errors/permission';\nimport {LocusMediaRequest} from './locusMediaRequest';\nimport {ConnectionStateHandler, ConnectionStateEvent} from './connectionStateHandler';\nimport JoinWebinarError from '../common/errors/join-webinar-error';\nimport Member from '../member';\nimport {BrbState, createBrbState} from './brbState';\nimport MultistreamNotSupportedError from '../common/errors/multistream-not-supported-error';\nimport JoinForbiddenError from '../common/errors/join-forbidden-error';\nimport {ReachabilityMetrics} from '../reachability/reachability.types';\nimport {SetStageOptions, SetStageVideoLayout, UnsetStageVideoLayout} from './request.type';\nimport {Invitee} from './type';\n\n// default callback so we don't call an undefined function, but in practice it should never be used\nconst DEFAULT_ICE_PHASE_CALLBACK = () => 'JOIN_MEETING_FINAL';\n\nconst logRequest = (request: any, {logText = ''}) => {\n LoggerProxy.logger.info(`${logText} - sending request`);\n\n return request\n .then((arg) => {\n LoggerProxy.logger.info(`${logText} - has been successfully sent`);\n\n return arg;\n })\n .catch((error) => {\n LoggerProxy.logger.error(`${logText} - has failed: `, error);\n throw error;\n });\n};\n\nexport type CaptionData = {\n id: string;\n isFinal: boolean;\n translations: Array<string>;\n text: string;\n currentCaptionLanguage: string;\n timestamp: string;\n speaker: string;\n};\n\nexport type Transcription = {\n languageOptions: {\n captionLanguages?: string; // list of supported caption languages from backend\n maxLanguages?: number;\n spokenLanguages?: Array<string>; // list of supported spoken languages from backend\n currentCaptionLanguage?: string; // current caption language - default is english\n requestedCaptionLanguage?: string; // requested caption language\n currentSpokenLanguage?: string; // current spoken language - default is english\n };\n status: string;\n isListening: boolean;\n commandText: string;\n captions: Array<CaptionData>;\n showCaptionBox: boolean;\n transcribingRequestStatus: string;\n isCaptioning: boolean;\n speakerProxy: Map<string, any>;\n interimCaptions: Map<string, CaptionData>;\n};\n\nexport type LocalStreams = {\n microphone?: LocalMicrophoneStream;\n camera?: LocalCameraStream;\n screenShare?: {\n audio?: LocalSystemAudioStream;\n video?: LocalDisplayStream;\n };\n};\n\nexport type AddMediaOptions = {\n localStreams?: LocalStreams;\n audioEnabled?: boolean; // if not specified, default value true is used\n videoEnabled?: boolean; // if not specified, default value true is used\n shareAudioEnabled?: boolean; // if not specified, default value true is used\n shareVideoEnabled?: boolean; // if not specified, default value true is used\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration; // applies only to multistream meetings\n bundlePolicy?: BundlePolicy; // applies only to multistream meetings\n allowMediaInLobby?: boolean; // allows adding media when in the lobby\n additionalMediaOptions?: AdditionalMediaOptions; // allows adding additional options like send/receive audio/video\n};\n\nexport type AdditionalMediaOptions = {\n sendVideo?: boolean; // if not specified, default value of videoEnabled is used\n receiveVideo?: boolean; // if not specified, default value of videoEnabled is used\n sendAudio?: boolean; // if not specified, default value of audioEnabled true is used\n receiveAudio?: boolean; // if not specified, default value of audioEnabled true is used\n};\n\nexport type CallStateForMetrics = {\n correlationId?: string;\n sessionCorrelationId?: string;\n joinTrigger?: string;\n loginType?: string;\n userNameInput?: string;\n emailInput?: string;\n pstnCorrelationId?: string;\n};\n\nexport const MEDIA_UPDATE_TYPE = {\n TRANSCODED_MEDIA_CONNECTION: 'TRANSCODED_MEDIA_CONNECTION',\n SHARE_FLOOR_REQUEST: 'SHARE_FLOOR_REQUEST',\n UPDATE_MEDIA: 'UPDATE_MEDIA',\n};\n\nexport enum ScreenShareFloorStatus {\n PENDING = 'floor_request_pending',\n GRANTED = 'floor_request_granted',\n RELEASED = 'floor_released',\n}\n\ntype FetchMeetingInfoParams = {\n password?: string;\n registrationId?: string;\n captchaCode?: string;\n extraParams?: Record<string, any>;\n sendCAevents?: boolean;\n};\n\ntype MediaReachabilityMetrics = ReachabilityMetrics & {\n subnet_reachable: boolean;\n selected_cluster: string | null;\n selected_subnet: string | null;\n};\n\n/**\n * MediaDirection\n * @typedef {Object} MediaDirection\n * @property {boolean} sendAudio\n * @property {boolean} receiveAudio\n * @property {boolean} sendVideo\n * @property {boolean} receiveVideo\n * @property {boolean} sendShare\n * @property {boolean} receiveShare\n * @property {boolean} isSharing\n */\n\n/**\n * SharePreferences\n * @typedef {Object} SharePreferences\n * @property {Object} [shareConstraints]\n * @property {Boolean} [highFrameRate]\n */\n\n/**\n * JoinOptions\n * @typedef {Object} JoinOptions\n * @property {String} [resourceId]\n * @property {String} [pin]\n * @property {Boolean} [moderator]\n * @property {String|Object} [meetingQuality]\n * @property {String} [meetingQuality.remote]\n * @property {Boolean} [rejoin]\n * @property {Boolean} [enableMultistream]\n */\n\n/**\n * Recording\n * @typedef {Object} Recording\n * @property {Object} state\n * @property {String} modifiedBy\n */\n\n/**\n * Meeting State Change Event\n * Emitted when ever there is a meeting state change\n * @event meeting:stateChange\n * @instance\n * @type {Object}\n * @property {String} currentState current state of the meeting\n * @property {String} previousState previous state of the meeting\n * @memberof Meeting\n */\n\n/**\n * Media Ready Event\n * Emitted when a stream is ready to be rendered\n * @event media:ready\n * @instance\n * @type {Object}\n * @property {MediaStream} stream the media stream\n * @property {String} type what type of stream, remote, local\n * @memberof Meeting\n */\n\n/**\n * Media Stopped Event\n * Emitted when a stream has stopped sending\n * @event media:stopped\n * @instance\n * @type {Object}\n * @property {String} type what type of stream, remote, local\n * @memberof Meeting\n */\n\n/**\n * Meeting Ringing Event\n * Emitted when this client should play a ringing sound, because this member is getting an incoming meeting\n * or sending out an incoming meeting\n * @event meeting:ringing\n * @instance\n * @type {Object}\n * @property {String} type // INCOMING or JOIN\n * @property {String} id\n * @memberof Meeting\n */\n\n/**\n * Meeting Ringing Stop Event\n * Emitted when this client should stop playing a ringing sound\n * @event meeting:ringingStop\n * @instance\n * @type {Object}\n * @property {Object} type\n * @property {Boolean} type.remoteAnswered\n * @property {Boolean} type.remoteDeclined\n * @property {String} id\n * @memberof Meeting\n */\n\n/**\n * Meeting Started Sharing Local Event\n * Emitted when this member starts sharing\n * @event meeting:startedSharingLocal\n * @instance\n * @type {Object}\n * @memberof Meeting\n */\n\n/**\n * Meeting Stopped Sharing Local Event\n * Emitted when this member stops sharing\n * @event meeting:stoppedSharingLocal\n * @instance\n * @type {Object}\n * @memberof Meeting\n */\n\n/**\n * Meeting Started Sharing Remote Event\n * Emitted when remote sharing starts\n * @event meeting:startedSharingRemote\n * @instance\n * @type {Object}\n * @property {Boolean} memberId id of the meeting member that started screen share\n * @property {String} url of this content share\n * @property {String} shareInstanceId of this content share\n * @property {Object} annotation Info of this content share\n * @memberof Meeting\n *\n */\n\n/**\n * Meeting Stopped Sharing Remote Event\n * Emitted when remote screen sharing ends\n * @event meeting:stoppedSharingRemote\n * @instance\n * @type {Object}\n * @memberof Meeting\n */\n\n/**\n * Meeting Locked Event\n * Emitted when a meeting is locked\n * @event meeting:locked\n * @instance\n * @type {Object}\n * @property {Object} info\n * @memberof Meeting\n */\n\n/**\n * Meeting Unlocked Event\n * Emitted when a meeting is unlocked\n * @event meeting:unlocked\n * @instance\n * @type {Object}\n * @property {Object} info\n * @memberof Meeting\n */\n\n/**\n * Meeting Actions Update Event\n * Emitted when a user can take actions on a meeting such as lock, unlock, assign host\n * @event meeting:actionsUpdate\n * @instance\n * @type {Object}\n * @property {Boolean} canLock\n * @property {Boolean} canUnlock\n * @property {Boolean} canAssignHost\n * @memberof Meeting\n */\n\n/**\n * Meeting Unmuted By Others Event\n * Emitted when a member is unmuted by another member\n * @event meeting:self:unmutedByOthers\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Meeting Muted By Others Event\n * Emitted when a member is muted by another member\n * @event meeting:self:mutedByOthers\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @property {Boolean} payload.unmuteAllowed - whether the user is allowed to unmute self\n * @memberof Meeting\n */\n\n/**\n * Meeting Muted By Others Event\n * Emitted when the host(moderator)/co-host requests a user to unmute\n * @event meeting:self:requestedToUnmute\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Meeting Self Guest Admitted Event\n * Emitted when a joined user get admitted to the meeting by another member or host\n * @event meeting:self:guestAdmitted\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Meeting Self Lobby Waiting Event\n * Emitted when joined user enters the lobby and is waiting for the webex meeting to begin\n * @event meeting:self:lobbyWaiting\n * @instance\n * @type {Object}\n * @property {Object} reason Reason why user left the meeting\n * @memberof Meeting\n */\n\n/**\n * Meeting Self Left State\n * Emitted when user is inactive for more then 40 seconds, User can rejoin the meeting again\n * @event meeting:self:left\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Reconnection Starting Event\n * Emitted when reconnection of media to the active meeting was successful\n * @event meeting:reconnectionStarting\n * @instance\n * @memberof Meeting\n */\n\n/**\n * Reconnection Success Event\n * Emitted when reconnection of media to the active meeting was successful\n * @event meeting:reconnectionSuccess\n * @instance\n * @type {Object}\n * @property {Object} reconnect\n * @memberof Meeting\n */\n\n/**\n * Reconnection Failure Event\n * Emitted when reconnection of media to the active meeting was successful\n * @event meeting:reconnectionFailure\n * @instance\n * @type {Object}\n * @property {Error} error\n * @memberof Meeting\n */\n\n/**\n * Meeting network quality event\n * Emitted on each interval of retrieving stats Analyzer data\n * @event network:quality\n * @type {Object}\n * @property {string} mediaType {video|audio}\n * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold\n * @memberof Meeting\n */\n\n/**\n * @description Meeting is the crux of the plugin\n * @export\n * @class Meeting\n */\nexport default class Meeting extends StatelessWebexPlugin {\n attrs: any;\n audio: any;\n breakouts: any;\n simultaneousInterpretation: any;\n annotation: any;\n webinar: any;\n conversationUrl: string;\n callStateForMetrics: CallStateForMetrics;\n destination: string;\n destinationType: DESTINATION_TYPE;\n deviceUrl: string;\n hostId: string;\n id: string;\n isMultistream: boolean;\n locusUrl: string;\n #isoLocalClientMeetingJoinTime?: string;\n mediaConnections: any[];\n mediaId?: string;\n meetingFiniteStateMachine: any;\n meetingInfo: any;\n meetingRequest: MeetingRequest;\n members: Members;\n options: object;\n orgId: string;\n owner: string;\n partner: any;\n policy: string;\n reconnectionManager: ReconnectionManager;\n resource: string;\n roap: Roap;\n roapSeq: number;\n selfUrl?: string; // comes from Locus, initialized by updateMeetingObject()\n sipUri: string;\n type: string;\n userId: string;\n video: any;\n callEvents: any[];\n datachannelUrl: string;\n deferJoin: Promise<any>;\n dialInDeviceStatus: string;\n dialInUrl: string;\n dialOutDeviceStatus: string;\n dialOutUrl: string;\n fetchMeetingInfoTimeoutId: NodeJS.Timeout;\n floorGrantPending: boolean;\n hasJoinedOnce: boolean;\n hasWebsocketConnected: boolean;\n inMeetingActions: InMeetingActions;\n isLocalShareLive: boolean;\n isRoapInProgress: boolean;\n keepAliveTimerId: NodeJS.Timeout;\n lastVideoLayoutInfo: any;\n locusInfo: any;\n locusMediaRequest?: LocusMediaRequest;\n mediaProperties: MediaProperties;\n mediaRequestManagers: {\n audio: MediaRequestManager;\n video: MediaRequestManager;\n screenShareAudio: MediaRequestManager;\n screenShareVideo: MediaRequestManager;\n };\n\n meetingInfoFailureReason: string;\n meetingInfoFailureCode?: number;\n meetingInfoExtraParams?: Record<string, any>;\n networkQualityMonitor: NetworkQualityMonitor;\n networkStatus?: NETWORK_STATUS;\n passwordStatus: string;\n queuedMediaUpdates: any[];\n recording: any;\n remoteMediaManager: RemoteMediaManager | null;\n recordingController: RecordingController;\n controlsOptionsManager: ControlsOptionsManager;\n requiredCaptcha: any;\n receiveSlotManager: ReceiveSlotManager;\n selfUserPolicies: any;\n enforceVBGImagesURL: string;\n shareStatus: string;\n screenShareFloorState: ScreenShareFloorStatus;\n statsAnalyzer: StatsAnalyzer;\n transcription: Transcription;\n updateMediaConnections: (mediaConnections: any[]) => void;\n userDisplayHints: any;\n endCallInitJoinReq: any;\n endJoinReqResp: any;\n endLocalSDPGenRemoteSDPRecvDelay: any;\n joinedWith: any;\n locusId: any;\n startCallInitJoinReq: any;\n startJoinReqResp: any;\n startLocalSDPGenRemoteSDPRecvDelay: any;\n wirelessShare: any;\n guest: any;\n meetingJoinUrl: any;\n meetingNumber: any;\n meetingState: any;\n permissionToken: string;\n permissionTokenPayload: any;\n permissionTokenReceivedLocalTime: number;\n resourceId: any;\n resourceUrl: string;\n selfId: string;\n state: any;\n localAudioStreamMuteStateHandler: () => void;\n localVideoStreamMuteStateHandler: () => void;\n localOutputTrackChangeHandler: () => void;\n roles: any[];\n environment: string;\n namespace = MEETINGS;\n allowMediaInLobby: boolean;\n localShareInstanceId: string;\n remoteShareInstanceId: string;\n shareCAEventSentStatus: {\n transmitStart: boolean;\n transmitStop: boolean;\n receiveStart: boolean;\n receiveStop: boolean;\n };\n\n turnDiscoverySkippedReason: TurnDiscoverySkipReason;\n turnServerUsed: boolean;\n areVoiceaEventsSetup = false;\n isMoveToInProgress = false;\n registrationIdStatus: string;\n brbState: BrbState;\n\n voiceaListenerCallbacks: object = {\n [VOICEAEVENTS.VOICEA_ANNOUNCEMENT]: (payload: Transcription['languageOptions']) => {\n this.transcription.languageOptions = payload;\n\n LoggerProxy.logger.debug(\n `${EventsUtil.getScopeLog({\n file: 'meeting/index',\n function: 'setUpVoiceaListeners',\n })}event#${EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION}`\n );\n\n if (this.getCurUserType() !== 'host') {\n delete payload.spokenLanguages;\n }\n\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION, payload);\n },\n [VOICEAEVENTS.CAPTIONS_TURNED_ON]: () => {\n this.transcription.status = TURN_ON_CAPTION_STATUS.ENABLED;\n },\n [VOICEAEVENTS.EVA_COMMAND]: (payload) => {\n const {data} = payload;\n\n this.transcription.isListening = !!data.isListening;\n this.transcription.commandText = data.text ?? '';\n },\n [VOICEAEVENTS.NEW_CAPTION]: (data: MeetingTranscriptPayload) => {\n processNewCaptions({data, meeting: this});\n\n LoggerProxy.logger.debug(\n `${EventsUtil.getScopeLog({\n file: 'meeting/index',\n function: 'setUpVoiceaListeners',\n })}event#${EVENT_TRIGGERS.MEETING_CAPTION_RECEIVED}`\n );\n\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.MEETING_CAPTION_RECEIVED, {\n captions: this.transcription.captions,\n interimCaptions: this.transcription.interimCaptions,\n });\n },\n };\n\n private addMediaData: {\n retriedWithTurnServer: boolean;\n icePhaseCallback: () => string;\n };\n\n private sendSlotManager: SendSlotManager = new SendSlotManager(LoggerProxy);\n private deferSDPAnswer?: Defer; // used for waiting for a response\n private sdpResponseTimer?: ReturnType<typeof setTimeout>;\n private hasMediaConnectionConnectedAtLeastOnce: boolean;\n private joinWithMediaRetryInfo?: {isRetry: boolean; prevJoinResponse?: any};\n private connectionStateHandler?: ConnectionStateHandler;\n private iceCandidateErrors: Map<string, number>;\n private iceCandidatesCount: number;\n private rtcMetrics?: RtcMetrics;\n private uploadLogsTimer?: ReturnType<typeof setTimeout>;\n private logUploadIntervalIndex: number;\n private mediaServerIp: string;\n\n /**\n * @param {Object} attrs\n * @param {Object} options\n * @param {Function} callback - if provided, it will be called with the newly created meeting object as soon as the meeting.id is set\n * @constructor\n * @memberof Meeting\n */\n constructor(attrs: any, options: object, callback: (meeting: Meeting) => void) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.options = options;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.id = uuid.v4();\n\n if (callback) {\n callback(this);\n }\n\n /**\n * Call state used for metrics\n * @instance\n * @type {CallStateForMetrics}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.callStateForMetrics = attrs.callStateForMetrics || {};\n const correlationId = attrs.correlationId || attrs.callStateForMetrics?.correlationId;\n const sessionCorrelationId =\n attrs.sessionCorrelationId || attrs.callStateForMetrics?.sessionCorrelationId;\n if (sessionCorrelationId) {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> Initializing the meeting object with session correlation id from app ${correlationId}`\n );\n this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;\n } else {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> No session correlation id supplied. None will be generated and this field will remain blank`\n );\n // TODO: supply a session from the meetings instance\n this.callStateForMetrics.sessionCorrelationId = '';\n }\n if (correlationId) {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> Initializing the meeting object with correlation id from app ${correlationId}`\n );\n this.callStateForMetrics.correlationId = correlationId;\n } else {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> Initializing the meeting object with generated correlation id from sdk ${this.id}`\n );\n this.callStateForMetrics.correlationId = this.id;\n }\n this.logUploadIntervalIndex = 0;\n\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.userId = attrs.userId;\n /**\n * Organization ID\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.orgId = attrs.orgId;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.resource = attrs.resource;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.deviceUrl = attrs.deviceUrl;\n /**\n * @instance\n * @type {Object}\n * @readonly\n * @public\n * @memberof Meeting\n */\n // TODO: needs to be defined as a class\n this.meetingInfo = {};\n /**\n * @instance\n * @type {Breakouts}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.breakouts = new Breakouts({meetingId: this.id}, {parent: this.webex});\n /**\n * @instance\n * @type {SimultaneousInterpretation}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.simultaneousInterpretation = new SimultaneousInterpretation({}, {parent: this.webex});\n /**\n * @instance\n * @type {Annotation}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.annotation = new Annotation({parent: this.webex});\n /**\n * @instance\n * @type {Webinar}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.webinar = new Webinar({meetingId: this.id}, {parent: this.webex});\n /**\n * helper class for managing receive slots (for multistream media connections)\n */\n this.receiveSlotManager = new ReceiveSlotManager(\n (mediaType: MediaType) => {\n if (!this.mediaProperties?.webrtcMediaConnection) {\n return Promise.reject(new Error('Webrtc media connection is missing'));\n }\n\n return this.mediaProperties.webrtcMediaConnection.createReceiveSlot(mediaType);\n },\n (csi: CSI) => (this.members.findMemberByCsi(csi) as any)?.id\n );\n /**\n * Object containing helper classes for managing media requests for audio/video/screenshare (for multistream media connections)\n * All multistream media requests sent out for this meeting have to go through them.\n */\n this.mediaRequestManagers = {\n audio: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send audio media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.AudioMain,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'audio',\n trimRequestsToNumOfSources: false,\n }\n ),\n video: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send video media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.VideoMain,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'video',\n trimRequestsToNumOfSources: true,\n }\n ),\n screenShareAudio: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send screenshare audio media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.AudioSlides,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'audio',\n trimRequestsToNumOfSources: false,\n }\n ),\n screenShareVideo: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send screenshare video media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.VideoSlides,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'video',\n trimRequestsToNumOfSources: false,\n }\n ),\n };\n /**\n * @instance\n * @type {Members}\n * @public\n * @memberof Meeting\n */\n this.members = new Members(\n {\n locusUrl: attrs.locus && attrs.locus.url,\n receiveSlotManager: this.receiveSlotManager,\n mediaRequestManagers: this.mediaRequestManagers,\n meeting: this,\n },\n // @ts-ignore - Fix type\n {parent: this.webex}\n );\n /**\n * @instance\n * @type {Roap}\n * @readonly\n * @private\n * @memberof Meeting\n */\n // @ts-ignore - Fix type\n this.roap = new Roap({}, {parent: this.webex});\n /**\n * indicates if an SDP exchange is happening\n *\n * @instance\n * @type {Boolean}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.isRoapInProgress = false;\n /**\n * created later\n * @instance\n * @type {ReconnectionManager}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.reconnectionManager = new ReconnectionManager(this);\n /**\n * created with media connection\n * @instance\n * @type {MuteState}\n * @private\n * @memberof Meeting\n */\n this.audio = null;\n /**\n * created with media connection\n * @instance\n * @type {MuteState}\n * @private\n * @memberof Meeting\n */\n this.video = null;\n /**\n * @instance\n * @type {MeetingStateMachine}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.meetingFiniteStateMachine = MeetingStateMachine.create(this);\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.conversationUrl = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.locusUrl = (attrs.locus && attrs.locus.url) || null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.sipUri = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.destination = attrs.destination;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.destinationType = attrs.destinationType;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.partner = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.type = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.owner = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.hostId = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.policy = null;\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof Meeting\n */\n this.meetingRequest = new MeetingRequest(\n {\n meeting: this,\n },\n options\n );\n /**\n * @instance\n * @type {Array}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.mediaConnections = null;\n\n /**\n * If true, then media is sent over multiple separate streams.\n * If false, then media is transcoded by the server into a single stream.\n */\n this.isMultistream = false;\n /**\n * Fetching meeting info can be done randomly 2-5 mins before meeting start\n * In case it is done before the timer expires, this timeout id is reset to cancel the timer.\n * @instance\n * @type {Number}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.fetchMeetingInfoTimeoutId = null;\n\n /**\n * Update the MediaConnections property with new information\n * @param {array} mediaConnections\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n this.updateMediaConnections = (mediaConnections: any[]) => {\n if (!isEqual(this.mediaConnections, mediaConnections)) {\n // grab last/latest item in the new mediaConnections information\n this.mediaConnections = mediaConnections.slice(-1);\n }\n };\n /**\n * Passing only info as we send basic info for meeting added event\n * @instance\n * @type {MediaProperties}\n * @public\n * @memberof Meeting\n */\n this.mediaProperties = new MediaProperties();\n /**\n * @instance\n * @type {InMeetingActions}\n * @public\n * @memberof Meeting\n */\n this.inMeetingActions = new InMeetingActions();\n /**\n * @instance\n * @type {string}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.shareStatus = SHARE_STATUS.NO_SHARE;\n /**\n * @instance\n * @type {ScreenShareFloorStatus}\n * @private\n * @memberof\n */\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n /**\n * @instance\n * @type {Array}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.callEvents = [];\n /**\n * There is a pending floor requested by the user\n * @instance\n * @type {boolean}\n * @private\n * @memberof Meeting\n */\n this.floorGrantPending = false;\n /**\n * The latest status of the dial in device (can be \"JOINED\", \"CONNECTED\", \"LEFT\",\n * \"TRANSFERRING\", \"SUCCESS\" or \"\")\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialInDeviceStatus = PSTN_STATUS.UNKNOWN;\n /**\n * the url for provisioned device used to dial in\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialInUrl = '';\n /**\n * The latest status of the dial out device (can be \"JOINED\", \"CONNECTED\", \"LEFT\",\n * \"TRANSFERRING\", \"SUCCESS\" or \"\")\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialOutDeviceStatus = PSTN_STATUS.UNKNOWN;\n /**\n * the url for provisioned device used to dial out\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialOutUrl = '';\n /**\n * @instance\n * @type {StatsAnalyzer}\n * @private\n * @memberof Meeting\n */\n this.statsAnalyzer = null;\n /**\n * @instance\n * @type {NetworkQualityMonitor}\n * @private\n * @memberof Meeting\n */\n this.networkQualityMonitor = null;\n /**\n * Indicates network status of the webrtc media connection\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.networkStatus = undefined;\n /**\n * Passing only info as we send basic info for meeting added event\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof Meeting\n */\n // @ts-ignore - Fix type\n this.locusInfo = new LocusInfo(this.updateMeetingObject.bind(this), this.webex, this.id);\n\n // We had to add listeners first before setting up the locus instance\n /**\n * @instance\n * @type {Recording}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.recording = null;\n\n /**\n * Promise that exists if joining, and resolves upon method completion.\n * @instance\n * @type {Promise}\n * @private\n * @memberof Meeting\n */\n this.deferJoin = undefined;\n\n /**\n * Staus of websocket connection/mercury connection.\n * @instance\n * @type {Boolean}\n * @private\n * @memberof Meeting\n */\n // @ts-ignore - Fix type\n this.hasWebsocketConnected = this.webex.internal.mercury.connected;\n\n /**\n * Last sent render information\n * @instance\n * @type {Object}\n * @private\n * @memberof Meeting\n */\n this.lastVideoLayoutInfo = {layoutType: undefined, main: undefined, content: undefined};\n\n /**\n * Queue of pending media updates requested by the app\n * @instance\n * @type {Array}\n * @private\n * @memberof Meeting\n */\n this.queuedMediaUpdates = [];\n\n /**\n * Meeting transcription object\n * @instance\n * @type {Transcription}\n * @private\n * @memberof Meeting\n */\n this.transcription = {\n captions: [],\n isListening: false,\n commandText: '',\n languageOptions: {currentSpokenLanguage: 'en'},\n showCaptionBox: false,\n transcribingRequestStatus: 'INACTIVE',\n isCaptioning: false,\n interimCaptions: {} as Map<string, CaptionData>,\n speakerProxy: {} as Map<string, any>,\n } as Transcription;\n\n /**\n * Password status. If it's PASSWORD_STATUS.REQUIRED then verifyPassword() needs to be called\n * with the correct password before calling join()\n * @instance\n * @type {PASSWORD_STATUS}\n * @public\n * @memberof Meeting\n */\n this.passwordStatus = PASSWORD_STATUS.UNKNOWN;\n\n /**\n * registrationId status. If it's REGISTRATIONID_STATUS.REQUIRED then verifyRegistrationId() needs to be called\n * with the correct registrationId before calling join()\n * @instance\n * @type {REGISTRATION_ID_STATUS}\n * @public\n * @memberof Meeting\n */\n this.registrationIdStatus = REGISTRATION_ID_STATUS.UNKNOWN;\n\n /**\n * Information about required captcha. If null, then no captcha is required. status. If it's PASSWORD_STATUS.REQUIRED then verifyPassword() needs to be called\n * with the correct password before calling join()\n * @instance\n * @type {Object}\n * @property {string} captchaId captcha id\n * @property {string} verificationImageURL Url of the captcha image\n * @property {string} verificationAudioURL Url of the captcha audio file\n * @property {string} refreshURL Url used for refreshing the captcha (don't use it directly, call refreshCaptcha() instead)\n * @public\n * @memberof Meeting\n */\n this.requiredCaptcha = null;\n\n /**\n * Indicates the reason for last failure to obtain meeting.meetingInfo. MEETING_INFO_FAILURE_REASON.NONE if meeting info was\n * retrieved successfully\n * @instance\n * @type {MEETING_INFO_FAILURE_REASON}\n * @private\n * @memberof Meeting\n */\n this.meetingInfoFailureReason = undefined;\n\n /**\n * The numeric code, if any, associated with the last failure to obtain the meeting info\n * @instance\n * @type {number}\n * @private\n * @memberof Meeting\n */\n this.meetingInfoFailureCode = undefined;\n\n /**\n * Repeating timer used to send keepAlives when in lobby\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.keepAliveTimerId = null;\n\n /**\n * id for tracking Local Share instances in Call Analyzer\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.localShareInstanceId = null;\n\n /**\n * id for tracking Remote Share instances in Call Analyzer\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.remoteShareInstanceId = null;\n\n /**\n * Status used for ensuring we do not oversend metrics\n * @instance\n * @private\n * @memberof Meeting\n */\n this.shareCAEventSentStatus = {\n transmitStart: false,\n transmitStop: false,\n receiveStart: false,\n receiveStop: false,\n };\n\n /**\n * The class that helps to control recording functions: start, stop, pause, resume, etc\n * @instance\n * @type {RecordingController}\n * @public\n * @memberof Meeting\n */\n this.recordingController = new RecordingController(this.meetingRequest, {\n serviceUrl: this.locusInfo?.links?.services?.record?.url,\n sessionId: this.locusInfo?.fullState?.sessionId,\n locusUrl: this.locusInfo?.url,\n displayHints: [],\n });\n\n /**\n * The class that helps to control recording functions: start, stop, pause, resume, etc\n * @instance\n * @type {ControlsOptionsManager}\n * @public\n * @memberof Meeting\n */\n this.controlsOptionsManager = new ControlsOptionsManager(this.meetingRequest, {\n locusUrl: this.locusInfo?.url,\n displayHints: [],\n });\n\n this.setUpLocusInfoListeners();\n this.locusInfo.init(attrs.locus ? attrs.locus : {});\n this.hasJoinedOnce = false;\n\n /**\n * helper class for managing remote streams\n */\n this.remoteMediaManager = null;\n\n this.localAudioStreamMuteStateHandler = () => {\n this.audio?.handleLocalStreamMuteStateChange(this);\n };\n\n this.localVideoStreamMuteStateHandler = () => {\n this.video?.handleLocalStreamMuteStateChange(this);\n };\n\n // The handling of output track changes should be done inside\n // @webex/internal-media-core, but for now we have to do it here, because\n // RoapMediaConnection has to use raw MediaStreamTracks in its API until\n // the Calling SDK also moves to using webrtc-core streams\n this.localOutputTrackChangeHandler = () => {\n if (!this.isMultistream) {\n this.updateTranscodedMediaConnection();\n }\n };\n\n /**\n * Promise that exists if SDP offer has been generated, and resolves once sdp answer is received.\n * @instance\n * @type {Defer}\n * @private\n * @memberof Meeting\n */\n this.deferSDPAnswer = undefined;\n\n /**\n * Timer for waiting for sdp answer.\n * @instance\n * @type {ReturnType<typeof setTimeout>}\n * @private\n * @memberof Meeting\n */\n this.sdpResponseTimer = undefined;\n\n /**\n * Reason why TURN discovery is skipped.\n * @instance\n * @type {string}\n * @public\n * @memberof Meeting\n */\n this.turnDiscoverySkippedReason = undefined;\n\n /**\n * Whether TURN discovery is used or not.\n * @instance\n * @type {boolean}\n * @public\n * @memberof Meeting\n */\n this.turnServerUsed = false;\n\n /**\n * Contains information used during the addMedia() operation:\n * retriedWithTurnServer - whether retry was done using TURN Discovery\n * icePhaseCallback - callback for determining the value for icePhase when sending failure event to CA\n *\n * @instance\n * @type {Object}\n * @private\n * @memberof Meeting\n */\n this.addMediaData = {\n retriedWithTurnServer: false,\n icePhaseCallback: DEFAULT_ICE_PHASE_CALLBACK,\n };\n\n /**\n * Whether or not the media connection has ever successfully connected.\n * @instance\n * @type {boolean}\n * @private\n * @memberof Meeting\n */\n this.hasMediaConnectionConnectedAtLeastOnce = false;\n\n /**\n * Information needed for a retry of a call to joinWithMedia\n * @instance\n * @type {{isRetry: boolean; prevJoinResponse?: any}}\n * @private\n * @memberof Meeting\n */\n this.joinWithMediaRetryInfo = {isRetry: false, prevJoinResponse: undefined};\n\n /**\n * Connection state handler\n * @instance\n * @type {ConnectionStateHandler}\n * @private\n * @memberof Meeting\n */\n this.connectionStateHandler = undefined;\n\n /**\n * ICE Candidates errors map\n * @instance\n * @type {Map<[number, string], number>}\n * @private\n * @memberof Meeting\n */\n this.iceCandidateErrors = new Map();\n\n /**\n * Gathered ICE Candidates count\n * @instance\n * @type {number}\n * @private\n * @memberof Meeting\n */\n this.iceCandidatesCount = 0;\n\n /**\n * Start time of meeting as an ISO string\n * based on browser time, so can only be used to compute durations client side\n * undefined if meeting has not been joined, set once on meeting join, and not updated again\n * @instance\n * @type {string}\n * @private\n * @memberof Meeting\n */\n this.#isoLocalClientMeetingJoinTime = undefined;\n\n // We clear the error cache of CA events on every new meeting instance\n // @ts-ignore - Fix type\n this.webex.internal.newMetrics.callDiagnosticMetrics.clearErrorCache();\n\n /**\n * IP Address of the remote media server\n * @instance\n * @type {string}\n * @private\n * @memberof Meeting\n */\n this.mediaServerIp = undefined;\n }\n\n /**\n * Temporary func to return webex object,\n * in order to access internal plugin metrics\n * in the utils file.\n * @internal\n * @returns {object} webex object\n */\n getWebexObject() {\n // @ts-ignore\n return this.webex;\n }\n\n /**\n * returns meeting is joined\n * @private\n * @memberof Meeting\n * @returns {Boolean}\n */\n private isJoined() {\n return this.joinedWith?.state === 'JOINED';\n }\n\n /**\n * Returns whether this meeting is a Locus CALL\n * @returns {Boolean}\n */\n isLocusCall() {\n return this.type === 'CALL';\n }\n\n /**\n * Getter - Returns callStateForMetrics.correlationId\n * @returns {string}\n */\n get correlationId() {\n return this.callStateForMetrics.correlationId;\n }\n\n /**\n * Setter - sets callStateForMetrics.correlationId\n * @param {string} correlationId\n */\n set correlationId(correlationId: string) {\n this.callStateForMetrics.correlationId = correlationId;\n }\n\n /**\n * Getter - Returns callStateForMetrics.pstnCorrelationId\n * @returns {string | undefined}\n */\n get pstnCorrelationId(): string | undefined {\n return this.callStateForMetrics.pstnCorrelationId;\n }\n\n /**\n * Setter - sets callStateForMetrics.pstnCorrelationId\n * @param {string | undefined} correlationId\n */\n set pstnCorrelationId(correlationId: string | undefined) {\n this.callStateForMetrics.pstnCorrelationId = correlationId;\n }\n\n /**\n * Getter - Returns callStateForMetrics.userNameInput\n * @returns {string}\n */\n get userNameInput() {\n return this.callStateForMetrics?.userNameInput;\n }\n\n /**\n * Setter - sets callStateForMetrics.userNameInput\n * @param {string} userNameInput\n */\n set userNameInput(userNameInput: string) {\n this.callStateForMetrics.userNameInput = userNameInput;\n }\n\n /**\n * Getter - Returns callStateForMetrics.emailInput\n * @returns {string}\n */\n get emailInput() {\n return this.callStateForMetrics?.emailInput;\n }\n\n /**\n * Setter - sets callStateForMetrics.emailInput\n * @param {string} emailInput\n */\n set emailInput(emailInput: string) {\n this.callStateForMetrics.emailInput = emailInput;\n }\n\n /**\n * Getter - Returns callStateForMetrics.sessionCorrelationId\n * @returns {string}\n */\n get sessionCorrelationId() {\n return this.callStateForMetrics.sessionCorrelationId;\n }\n\n /**\n * Setter - sets callStateForMetrics.sessionCorrelationId\n * @param {string} sessionCorrelationId\n */\n set sessionCorrelationId(sessionCorrelationId: string) {\n this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;\n }\n\n /**\n * Getter - Returns isoLocalClientMeetingJoinTime\n * This will be set once on meeting join, and not updated again\n * @returns {string | undefined}\n */\n get isoLocalClientMeetingJoinTime(): string | undefined {\n return this.#isoLocalClientMeetingJoinTime;\n }\n\n /**\n * Setter - sets isoLocalClientMeetingJoinTime\n * This will be set once on meeting join, and not updated again\n * this will always produce an ISO string\n * If the iso string is invalid, it will fallback to the current system time\n * @param {string | undefined} time\n */\n set isoLocalClientMeetingJoinTime(time: string | undefined) {\n const fallback = new Date().toISOString();\n if (!time) {\n this.#isoLocalClientMeetingJoinTime = fallback;\n } else {\n const date = new Date(time);\n\n // Check if the date is valid\n if (Number.isNaN(date.getTime())) {\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meeting:index#isoLocalClientMeetingJoinTime --> Invalid date provided: ${time}. Falling back to system clock.`\n );\n this.#isoLocalClientMeetingJoinTime = fallback;\n } else {\n this.#isoLocalClientMeetingJoinTime = date.toISOString();\n }\n }\n }\n\n /**\n * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event\n * @param {any} info\n * @param {string} [meetingLookupUrl] Lookup url, defined when the meeting info fetched\n * @returns {void}\n */\n private setMeetingInfo(info, meetingLookupUrl) {\n this.meetingInfo = info ? {...info, meetingLookupUrl} : null;\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.NONE;\n\n this.requiredCaptcha = null;\n if (\n this.passwordStatus === PASSWORD_STATUS.REQUIRED ||\n this.passwordStatus === PASSWORD_STATUS.VERIFIED\n ) {\n this.passwordStatus = PASSWORD_STATUS.VERIFIED;\n } else {\n this.passwordStatus = PASSWORD_STATUS.NOT_REQUIRED;\n }\n\n if (\n this.registrationIdStatus === REGISTRATION_ID_STATUS.REQUIRED ||\n this.registrationIdStatus === REGISTRATION_ID_STATUS.VERIFIED\n ) {\n this.registrationIdStatus = REGISTRATION_ID_STATUS.VERIFIED;\n } else {\n this.registrationIdStatus = REGISTRATION_ID_STATUS.NOT_REQUIRED;\n }\n\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'fetchMeetingInfo',\n },\n EVENT_TRIGGERS.MEETING_INFO_AVAILABLE\n );\n\n this.updateMeetingActions();\n }\n\n /**\n * Add pre-fetched meeting info\n *\n * The passed meeting info should be be complete, e.g.: fetched after password or captcha provided\n *\n * @param {Object} meetingInfo - Complete meeting info\n * @param {FetchMeetingInfoParams} fetchParams - Fetch parameters for validation\n * @param {String|undefined} meetingLookupUrl - Lookup url, defined when the meeting info fetched\n * @returns {Promise<void>}\n */\n public async injectMeetingInfo(\n meetingInfo: any,\n fetchParams: FetchMeetingInfoParams,\n meetingLookupUrl: string | undefined\n ): Promise<void> {\n await this.prepForFetchMeetingInfo(fetchParams, 'injectMeetingInfo');\n\n this.parseMeetingInfo(meetingInfo, this.destination);\n this.setMeetingInfo(meetingInfo, meetingLookupUrl);\n }\n\n /**\n * Validate fetch parameters and clear the fetchMeetingInfoTimeout timeout\n *\n * @param {FetchMeetingInfoParams} fetchParams - fetch parameters for validation\n * @param {String} caller - Name of the caller for logging\n *\n * @returns {Promise<void>}\n * @private\n */\n private prepForFetchMeetingInfo(\n {\n password = null,\n registrationId = null,\n captchaCode = null,\n extraParams = {},\n }: FetchMeetingInfoParams,\n caller: string\n ): Promise<void> {\n // when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it\n if (this.fetchMeetingInfoTimeoutId) {\n clearTimeout(this.fetchMeetingInfoTimeoutId);\n this.fetchMeetingInfoTimeoutId = undefined;\n }\n if (captchaCode && !this.requiredCaptcha) {\n return Promise.reject(\n new Error(`${caller}() called with captchaCode when captcha was not required`)\n );\n }\n if (\n password &&\n this.passwordStatus !== PASSWORD_STATUS.REQUIRED &&\n this.passwordStatus !== PASSWORD_STATUS.UNKNOWN\n ) {\n return Promise.reject(\n new Error(`${caller}() called with password when password was not required`)\n );\n }\n\n this.meetingInfoExtraParams = cloneDeep(extraParams);\n\n return Promise.resolve();\n }\n\n /**\n * Internal method for fetching meeting info\n *\n * @returns {Promise}\n */\n private async fetchMeetingInfoInternal({\n destination,\n destinationType,\n password = null,\n captchaCode = null,\n extraParams = {},\n sendCAevents = false,\n registrationId = null,\n }): Promise<void> {\n try {\n const captchaInfo = captchaCode\n ? {code: captchaCode, id: this.requiredCaptcha.captchaId}\n : null;\n\n const info = await this.attrs.meetingInfoProvider.fetchMeetingInfo(\n destination,\n destinationType,\n password,\n captchaInfo,\n // @ts-ignore - config coming from registerPlugin\n this.config.installedOrgID,\n this.locusId,\n extraParams,\n {meetingId: this.id, sendCAevents},\n registrationId\n );\n\n this.parseMeetingInfo(info?.body, this.destination, info?.errors);\n this.setMeetingInfo(info?.body, info?.url);\n\n return Promise.resolve();\n } catch (err) {\n this.updateMeetingActions();\n\n if (err instanceof MeetingInfoV2PolicyError) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.POLICY;\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n }\n throw new PermissionError();\n } else if (err instanceof MeetingInfoV2JoinWebinarError) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;\n if (WEBINAR_ERROR_WEBCAST.includes(err.wbxAppApiCode)) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.NEED_JOIN_WITH_WEBCAST;\n } else if (WEBINAR_ERROR_REGISTRATION_ID.includes(err.wbxAppApiCode)) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WEBINAR_NEED_REGISTRATION_ID;\n }\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n }\n this.requiredCaptcha = null;\n\n throw new JoinWebinarError();\n } else if (err instanceof MeetingInfoV2JoinForbiddenError) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.JOIN_FORBIDDEN;\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n }\n\n // Handle the case where user hasn't reached Join Before Host (JBH) time (error code 403003)\n if (JOIN_BEFORE_HOST === err.wbxAppApiCode) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.NOT_REACH_JBH;\n }\n\n throw new JoinForbiddenError(this.meetingInfoFailureReason, err);\n } else if (err instanceof MeetingInfoV2PasswordError) {\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ${this.destination} - password required (code=${err?.body?.code}).`\n );\n\n // when wbxappapi requires password it still populates partial meeting info in the response\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n this.meetingNumber = err.meetingInfo.meetingNumber;\n }\n\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n this.passwordStatus = PASSWORD_STATUS.REQUIRED;\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;\n if (this.requiredCaptcha) {\n // this is a workaround for captcha service bug, see WEBEX-224862\n await this.refreshCaptcha();\n }\n\n throw new PasswordError();\n } else if (err instanceof MeetingInfoV2CaptchaError) {\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ${this.destination} - captcha required (code=${err?.body?.code}).`\n );\n\n if (this.requiredCaptcha) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_CAPTCHA;\n } else if (err.isRegistrationIdRequired) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_REGISTRATION_ID;\n } else {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;\n }\n\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.isPasswordRequired) {\n this.passwordStatus = PASSWORD_STATUS.REQUIRED;\n }\n\n if (err.isRegistrationIdRequired) {\n this.registrationIdStatus = REGISTRATION_ID_STATUS.REQUIRED;\n }\n\n this.requiredCaptcha = err.captchaInfo;\n throw new CaptchaError();\n } else {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.OTHER;\n throw err;\n }\n }\n }\n\n /**\n * Refreshes the meeting info permission token (it's required for joining meetings)\n *\n * @param {string} [reason] used for metrics and logging purposes (optional)\n * @returns {Promise}\n */\n public async refreshPermissionToken(reason?: string): Promise<void> {\n if (!this.meetingInfo?.permissionToken) {\n LoggerProxy.logger.info(\n `Meeting:index#refreshPermissionToken --> cannot refresh the permission token, because we don't have it (reason=${reason})`\n );\n\n return;\n }\n\n const isStartingSpaceInstantV2Meeting =\n this.destinationType === DESTINATION_TYPE.CONVERSATION_URL &&\n // @ts-ignore - config coming from registerPlugin\n this.config.experimental.enableAdhocMeetings &&\n // @ts-ignore\n this.webex.meetings.preferredWebexSite;\n\n const destination = isStartingSpaceInstantV2Meeting\n ? this.meetingInfo.meetingJoinUrl\n : this.destination;\n const destinationType = isStartingSpaceInstantV2Meeting\n ? DESTINATION_TYPE.MEETING_LINK\n : this.destinationType;\n\n const permissionTokenExpiryInfo = this.getPermissionTokenExpiryInfo();\n\n const timeLeft = permissionTokenExpiryInfo?.timeLeft;\n const expiryTime = permissionTokenExpiryInfo?.expiryTime;\n const currentTime = permissionTokenExpiryInfo?.currentTime;\n\n LoggerProxy.logger.info(\n `Meeting:index#refreshPermissionToken --> refreshing permission token, destinationType=${destinationType}, timeLeft=${timeLeft}, permissionTokenExpiry=${expiryTime}, currentTimestamp=${currentTime},reason=${reason}`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.PERMISSION_TOKEN_REFRESH, {\n correlationId: this.correlationId,\n timeLeft,\n expiryTime,\n currentTime,\n reason,\n destinationType,\n });\n\n try {\n await this.fetchMeetingInfoInternal({\n destination,\n destinationType,\n extraParams: {\n ...this.meetingInfoExtraParams,\n permissionToken: this.meetingInfo.permissionToken,\n },\n sendCAevents: true, // because if we're refreshing the permissionToken, it means that user is intending to join that meeting, so we want CA events\n });\n } catch (error) {\n LoggerProxy.logger.info(\n 'Meeting:index#refreshPermissionToken --> failed to refresh the permission token:',\n error\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.PERMISSION_TOKEN_REFRESH_ERROR, {\n correlationId: this.correlationId,\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }\n }\n\n /**\n * Fetches meeting information.\n * @param {Object} options\n * @param {String} [options.password] optional\n * @param {String} [options.captchaCode] optional\n * @param {Boolean} [options.sendCAevents] optional - Whether to submit Call Analyzer events or not. Default: false.\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public async fetchMeetingInfo(options: FetchMeetingInfoParams) {\n await this.prepForFetchMeetingInfo(options, 'fetchMeetingInfo');\n\n return this.fetchMeetingInfoInternal({\n destination: this.destination,\n destinationType: this.destinationType,\n ...options,\n });\n }\n\n /**\n * Checks if the supplied password/host key is correct. It returns a promise with information whether the\n * password and captcha code were correct or not.\n * @param {String} password - this can be either a password or a host key, can be undefined if only captcha was required\n * @param {String} captchaCode - can be undefined if captcha was not required by the server\n * @param {Boolean} sendCAevents - whether Call Analyzer events should be sent when fetching meeting information\n * @public\n * @memberof Meeting\n * @returns {Promise<{isPasswordValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}\n */\n public verifyPassword(password: string, captchaCode: string, sendCAevents = false) {\n return this.fetchMeetingInfo({\n password,\n captchaCode,\n sendCAevents,\n })\n .then(() => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_SUCCESS);\n\n return {\n isPasswordValid: true,\n requiredCaptcha: null,\n failureReason: MEETING_INFO_FAILURE_REASON.NONE,\n };\n })\n .catch((error) => {\n if (error instanceof PasswordError || error instanceof CaptchaError) {\n return {\n isPasswordValid: this.passwordStatus === PASSWORD_STATUS.VERIFIED,\n requiredCaptcha: this.requiredCaptcha,\n failureReason: this.meetingInfoFailureReason,\n };\n }\n throw error;\n });\n }\n\n /**\n * Checks if the supplied registrationId is correct. It returns a promise with information whether the\n * registrationId and captcha code were correct or not.\n * @param {String | undefined} registrationId - can be undefined if only captcha was required\n * @param {String | undefined} captchaCode - can be undefined if captcha was not required by the server\n * @param {Boolean} sendCAevents - whether Call Analyzer events should be sent when fetching meeting information\n * @public\n * @memberof Meeting\n * @returns {Promise<{isRegistrationIdValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}\n */\n public verifyRegistrationId(registrationId: string, captchaCode: string, sendCAevents = false) {\n return this.fetchMeetingInfo({\n registrationId,\n captchaCode,\n sendCAevents,\n })\n .then(() => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_REGISTRATION_ID_SUCCESS);\n\n return {\n isRegistrationIdValid: true,\n requiredCaptcha: null,\n failureReason: MEETING_INFO_FAILURE_REASON.NONE,\n };\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_REGISTRATION_ID_ERROR);\n\n if (error instanceof JoinWebinarError || error instanceof CaptchaError) {\n return {\n isRegistrationIdValid: this.registrationIdStatus === REGISTRATION_ID_STATUS.VERIFIED,\n requiredCaptcha: this.requiredCaptcha,\n failureReason:\n error instanceof JoinWebinarError\n ? MEETING_INFO_FAILURE_REASON.WRONG_REGISTRATION_ID\n : this.meetingInfoFailureReason,\n };\n }\n throw error;\n });\n }\n\n /**\n * Refreshes the captcha. As a result the meeting will have new captcha id, image and audio.\n * If the refresh operation fails, meeting remains with the old captcha properties.\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public refreshCaptcha() {\n if (!this.requiredCaptcha) {\n return Promise.reject(new Error('There is no captcha to refresh'));\n }\n\n // in order to get fully populated uris for captcha audio and image in response to refresh captcha request\n // we have to pass the wbxappapi hostname as the siteFullName parameter\n const {hostname} = new URL(this.requiredCaptcha.refreshURL);\n\n return (\n this.meetingRequest\n // @ts-ignore\n .refreshCaptcha({\n captchaRefreshUrl: `${this.requiredCaptcha.refreshURL}&siteFullName=${hostname}`,\n captchaId: this.requiredCaptcha.captchaId,\n })\n .then((response) => {\n this.requiredCaptcha.captchaId = response.body.captchaID;\n this.requiredCaptcha.verificationImageURL = response.body.verificationImageURL;\n this.requiredCaptcha.verificationAudioURL = response.body.verificationAudioURL;\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Meeting:index#refreshCaptcha --> Error Unable to refresh captcha for ${this.destination} - ${error}`\n );\n throw error;\n })\n );\n }\n\n /**\n * Posts metrics event for this meeting. Allows the app to send Call Analyzer events.\n * @param {String} eventName - Call Analyzer event\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public postMetrics(eventName: ClientEvent['name']) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: eventName,\n options: {\n meetingId: this.id,\n },\n });\n }\n\n /**\n * Proxy function for all the listener set ups\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoListeners() {\n // meeting update listeners\n this.setUpLocusInfoSelfListener();\n this.setUpLocusInfoMeetingListener();\n this.setUpLocusServicesListener();\n this.setUpLocusResourcesListener();\n // members update listeners\n this.setUpLocusFullStateListener();\n this.setUpLocusUrlListener();\n this.setUpLocusHostListener();\n this.setUpLocusSelfListener();\n this.setUpLocusParticipantsListener();\n this.setupLocusControlsListener();\n this.setUpLocusMediaSharesListener();\n this.setUpLocusEmbeddedAppsListener();\n this.setUpLocusInfoMeetingInfoListener();\n this.setUpLocusInfoAssignHostListener();\n this.setUpLocusInfoMediaInactiveListener();\n this.setUpBreakoutsListener();\n this.setUpInterpretationListener();\n }\n\n /**\n * Set up the listeners for breakouts\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n setUpBreakoutsListener() {\n this.breakouts.on(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_CLOSING\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.MESSAGE, (messageEvent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_MESSAGE,\n messageEvent\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.MEMBERS_UPDATE, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN, () => {\n if (this.isJoined()) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN\n );\n }\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.LEAVE_BREAKOUT, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_LEAVE\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.ASK_FOR_HELP, (helpEvent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_ASK_FOR_HELP,\n helpEvent\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE\n );\n });\n }\n\n /**\n * Set up the listeners for interpretation\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpInterpretationListener() {\n // TODO: check if its getting used or not\n this.simultaneousInterpretation.on(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpInterpretationListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE\n );\n });\n // TODO: check if its getting used or not\n this.simultaneousInterpretation.on(\n INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED,\n (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpInterpretationListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED,\n payload\n );\n }\n );\n }\n\n /**\n * Set up the listeners for captions\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpVoiceaListeners() {\n // @ts-ignore\n this.webex.internal.voicea.listenToEvents();\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.VOICEA_ANNOUNCEMENT,\n this.voiceaListenerCallbacks[VOICEAEVENTS.VOICEA_ANNOUNCEMENT]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.CAPTIONS_TURNED_ON,\n this.voiceaListenerCallbacks[VOICEAEVENTS.CAPTIONS_TURNED_ON]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.EVA_COMMAND,\n this.voiceaListenerCallbacks[VOICEAEVENTS.EVA_COMMAND]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.NEW_CAPTION,\n this.voiceaListenerCallbacks[VOICEAEVENTS.NEW_CAPTION]\n );\n\n this.areVoiceaEventsSetup = true;\n }\n\n /**\n * Set up the locus info listener for meetings disconnected due to inactivity\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoMediaInactiveListener() {\n // User gets kicked off the meeting due to inactivity or user did a refresh\n this.locusInfo.on(EVENTS.DISCONNECT_DUE_TO_INACTIVITY, (res) => {\n // https:// jira-eng-gpk2.cisco.com/jira/browse/SPARK-240520\n // TODO: send custom parameter explaining why the inactivity happened\n // refresh , no media or network got dsconnected or something else\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.DISCONNECT_DUE_TO_INACTIVITY, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n });\n\n // Upload logs on media inactivity\n // Normally media should not be inactive\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMediaInactiveListener',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n LoggerProxy.logger.error(\n `Meeting:index#setUpLocusInfoMediaInactiveListener --> Meeting disconnected due to inactivity: ${res.reason}`\n );\n\n // @ts-ignore - config coming from registerPlugin\n if (this.config.reconnection.autoRejoin) {\n this.reconnect();\n } else {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMediaInactiveListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_LEFT,\n res.reason\n );\n }\n });\n }\n\n /**\n * Set up the locus info listener for assign host permissions on a meeting\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoAssignHostListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST, (payload) => {\n const changed = this.inMeetingActions.set({\n canAssignHost: payload.canAssignHost,\n });\n\n if (changed) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoAssignHostListener',\n },\n EVENT_TRIGGERS.MEETING_ACTIONS_UPDATE,\n this.inMeetingActions.get()\n );\n }\n });\n }\n\n /**\n * Set up the internal locus info full state object listener\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusFullStateListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusFullStateListener',\n },\n EVENT_TRIGGERS.MEETING_STATE_CHANGE,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE, (payload) => {\n this.members.locusFullStateTypeUpdate(payload);\n });\n }\n\n /**\n * sets the network status on meeting object\n * @param {NETWORK_STATUS} networkStatus\n * @private\n * @returns {undefined}\n * @memberof Meeting\n */\n private setNetworkStatus(networkStatus?: NETWORK_STATUS) {\n if (networkStatus === NETWORK_STATUS.DISCONNECTED) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setNetworkStatus',\n },\n EVENT_TRIGGERS.MEETINGS_NETWORK_DISCONNECTED\n );\n } else if (\n networkStatus === NETWORK_STATUS.CONNECTED &&\n this.networkStatus === NETWORK_STATUS.DISCONNECTED\n ) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setNetworkStatus',\n },\n EVENT_TRIGGERS.MEETINGS_NETWORK_CONNECTED\n );\n }\n\n this.networkStatus = networkStatus;\n }\n\n /**\n * Set up the locus info self listener\n * update self value for members and updates the member\n * notifies consumer with members:self:update {activeSelfId endedSelfId}\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusSelfListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_SELF, (payload) => {\n this.members.locusSelfUpdate(payload);\n this.pstnUpdate(payload);\n\n // If user moved to a JOINED state and there is a pending floor grant trigger it\n this.requestScreenShareFloorIfPending();\n });\n }\n\n /**\n * Notify any changes on the pstn devices\n * @param {Object} payload\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private pstnUpdate(payload: any) {\n if (this.locusInfo.self) {\n const dialInPstnDevice = payload.newSelf?.pstnDevices.find(\n (device) => device.url === this.dialInUrl\n );\n const dialOutPstnDevice = payload.newSelf?.pstnDevices.find(\n (device) => device.url === this.dialOutUrl\n );\n let changed = false;\n\n if (dialInPstnDevice) {\n const newStatus = dialInPstnDevice.dialingStatus ?? dialInPstnDevice.state;\n\n if (newStatus !== this.dialInDeviceStatus) {\n this.dialInDeviceStatus = newStatus;\n changed = true;\n }\n }\n\n if (dialOutPstnDevice) {\n const newStatus = dialOutPstnDevice.dialingStatus ?? dialOutPstnDevice.state;\n\n if (newStatus !== this.dialOutDeviceStatus) {\n this.dialOutDeviceStatus = newStatus;\n changed = true;\n }\n }\n\n if (changed) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_PHONE_AUDIO_UPDATE,\n {\n dialIn: {\n status: this.dialInDeviceStatus,\n attendeeId: dialInPstnDevice?.attendeeId,\n },\n dialOut: {\n status: this.dialOutDeviceStatus,\n attendeeId: dialOutPstnDevice?.attendeeId,\n reason: dialOutPstnDevice?.reason,\n },\n }\n );\n }\n }\n }\n\n /**\n * Set up the locus info host listener\n * update host value for members and updates the member\n * notifies consumer with members:host:update: {activeHostId, endedHostId}\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusHostListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_HOST, (payload) => {\n this.members.locusHostUpdate(payload);\n });\n }\n\n /**\n * Set up the locus info participants update listener\n * update members collection value for members\n * notifies consumer with members:update\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusParticipantsListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS, (payload) => {\n this.members.locusParticipantsUpdate(payload);\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.PARTICIPANT_REASON_CHANGED, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusParticipantsListener',\n },\n EVENT_TRIGGERS.MEETING_PARTICIPANT_REASON_CHANGED,\n {\n payload,\n }\n );\n });\n }\n\n /**\n * Set up the locus info recording update listener\n * update recording value for the meeting\n * notifies consumer with:\n * meeting:recording:started\n * meeting:recording:stopped\n * meeting:recording:paused\n * meeting:recording:resumed\n *\n * Set up the locus info meeeting container listener\n * update meetingContainerUrl value for the meeting\n * notifies consumer with:\n * meeting:meetingContainer:update\n *\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setupLocusControlsListener() {\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n ({state, modifiedBy, lastModified}) => {\n let event;\n\n switch (state) {\n case RECORDING_STATE.RECORDING:\n event = EVENT_TRIGGERS.MEETING_STARTED_RECORDING;\n break;\n case RECORDING_STATE.IDLE:\n event = EVENT_TRIGGERS.MEETING_STOPPED_RECORDING;\n break;\n case RECORDING_STATE.PAUSED:\n event = EVENT_TRIGGERS.MEETING_PAUSED_RECORDING;\n break;\n case RECORDING_STATE.RESUMED:\n event = EVENT_TRIGGERS.MEETING_RESUMED_RECORDING;\n break;\n default:\n event = null;\n break;\n }\n\n // `RESUMED` state should be converted to `RECORDING` after triggering the event\n this.recording = {\n state: state === RECORDING_STATE.RESUMED ? RECORDING_STATE.RECORDING : state,\n modifiedBy,\n lastModified,\n };\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n event,\n this.recording\n );\n }\n );\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n ({meetingContainerUrl}) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_MEETING_CONTAINER_UPDATE,\n {meetingContainerUrl}\n );\n }\n );\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n ({caption, transcribing}) => {\n // user need to be joined to start the llm and receive transcription\n if (this.isJoined()) {\n // @ts-ignore - config coming from registerPlugin\n if (transcribing && !this.transcription) {\n this.startTranscription();\n } else if (!transcribing && this.transcription) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_RECEIVING_TRANSCRIPTION,\n {caption, transcribing}\n );\n }\n }\n }\n );\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,\n ({spokenLanguage}) => {\n if (spokenLanguage) {\n if (this.transcription?.languageOptions) {\n this.transcription.languageOptions.currentSpokenLanguage = spokenLanguage;\n }\n // @ts-ignore\n this.webex.internal.voicea.onSpokenLanguageUpdate(spokenLanguage, this.id);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,\n {spokenLanguage, meetingId: this.id}\n );\n }\n }\n );\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, ({enable}) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_MANUAL_CAPTION_UPDATED,\n {enable}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, ({breakout}) => {\n this.breakouts.updateBreakout(breakout);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE\n );\n });\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n ({interpretation}) => {\n this.simultaneousInterpretation.updateInterpretation(interpretation);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n }\n );\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, ({entryExitTone}) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_ENTRY_EXIT_TONE_UPDATE,\n {entryExitTone}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_SHARE_CONTROL_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_REACTIONS_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_RAISE_HAND_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_WEBCAST_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_MEETING_FULL_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, ({state}) => {\n this.webinar.updatePracticeSessionStatus(state);\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_STAGE_VIEW_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_VIDEO_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_ANNOTATION_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_POLLING_QA_UPDATED,\n {state}\n );\n });\n }\n\n /**\n * Trigger annotation info update event\n @returns {undefined}\n @param {object} contentShare\n @param {object} previousContentShare\n */\n private triggerAnnotationInfoEvent(contentShare, previousContentShare) {\n if (\n contentShare?.annotation &&\n !isEqual(contentShare?.annotation, previousContentShare?.annotation)\n ) {\n Trigger.trigger(\n // @ts-ignore\n this.webex.meetings,\n {\n file: 'meeting/index',\n function: 'triggerAnnotationInfoEvent',\n },\n EVENT_TRIGGERS.MEETING_UPDATE_ANNOTATION_INFO,\n {\n annotationInfo: contentShare?.annotation,\n meetingId: this.id,\n resourceType: contentShare?.resourceType,\n }\n );\n }\n }\n\n /**\n * Set up the locus info media shares listener\n * update content and whiteboard sharing id value for members, and updates the member\n * notifies consumer with members:content:update {activeContentSharingId, endedContentSharingId}\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusMediaSharesListener() {\n // Will get triggered on local and remote share\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, async (payload) => {\n const {content: contentShare, whiteboard: whiteboardShare} = payload.current;\n const previousContentShare = payload.previous?.content;\n const previousWhiteboardShare = payload.previous?.whiteboard;\n\n this.triggerAnnotationInfoEvent(contentShare, previousContentShare);\n\n if (\n !payload.forceUpdate &&\n contentShare.beneficiaryId === previousContentShare?.beneficiaryId &&\n contentShare.disposition === previousContentShare?.disposition &&\n contentShare.deviceUrlSharing === previousContentShare.deviceUrlSharing &&\n whiteboardShare.beneficiaryId === previousWhiteboardShare?.beneficiaryId &&\n whiteboardShare.disposition === previousWhiteboardShare?.disposition &&\n whiteboardShare.resourceUrl === previousWhiteboardShare?.resourceUrl &&\n contentShare.resourceType === previousContentShare?.resourceType\n ) {\n // nothing changed, so ignore\n // (this happens when we steal presentation from remote)\n return;\n }\n\n let newShareStatus = this.shareStatus;\n\n // REMOTE - check if remote started sharing\n if (\n this.selfId !== contentShare.beneficiaryId &&\n contentShare.disposition === FLOOR_ACTION.GRANTED\n ) {\n // CONTENT - sharing content remote\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n }\n // LOCAL - check if we started sharing content\n else if (\n this.selfId === contentShare.beneficiaryId &&\n contentShare.disposition === FLOOR_ACTION.GRANTED &&\n contentShare.deviceUrlSharing === this.deviceUrl\n ) {\n // CONTENT - sharing content local\n newShareStatus = SHARE_STATUS.LOCAL_SHARE_ACTIVE;\n }\n // SAME USER REMOTE - check if same user started sharing content from another client\n else if (\n this.selfId === contentShare.beneficiaryId &&\n contentShare.disposition === FLOOR_ACTION.GRANTED &&\n contentShare.deviceUrlSharing !== this.deviceUrl\n ) {\n // CONTENT - same user sharing content remote\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n }\n // If we did not hit the cases above, no one is sharng content, so we check if we are sharing whiteboard\n // There is no concept of local/remote share for whiteboard\n // It does not matter who requested to share the whiteboard, everyone gets the same view\n else if (whiteboardShare.disposition === FLOOR_ACTION.GRANTED) {\n if (this.locusInfo?.info?.isWebinar && this.webinar?.selfIsAttendee) {\n // WHITEBOARD - sharing whiteboard\n // Webinar attendee should receive whiteboard as remote share\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n } else if (this.guest) {\n // If user is a guest to a meeting, they should receive whiteboard as remote share\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n } else {\n newShareStatus = SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;\n }\n }\n // or if content share is either released or null and whiteboard share is either released or null, no one is sharing\n else if (\n ((previousContentShare && contentShare.disposition === FLOOR_ACTION.RELEASED) ||\n contentShare.disposition === null) &&\n ((previousWhiteboardShare && whiteboardShare.disposition === FLOOR_ACTION.RELEASED) ||\n whiteboardShare.disposition === null)\n ) {\n newShareStatus = SHARE_STATUS.NO_SHARE;\n }\n\n LoggerProxy.logger.info(\n `Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=${this.shareStatus} newShareStatus=${newShareStatus}`\n );\n\n if (newShareStatus !== this.shareStatus) {\n const oldShareStatus = this.shareStatus;\n\n // update our state before we send out any notifications\n this.shareStatus = newShareStatus;\n\n // send out \"stop\" notifications for the old state\n switch (oldShareStatus) {\n case SHARE_STATUS.REMOTE_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'remoteShare',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE\n );\n break;\n\n case SHARE_STATUS.LOCAL_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'localShare',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\n {\n reason: SHARE_STOPPED_REASON.SELF_STOPPED,\n }\n );\n break;\n\n case SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'stopWhiteboardShare',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD\n );\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.stopped',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.stopped',\n payload: {\n mediaType: 'whiteboard',\n shareDuration:\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),\n },\n options: {\n meetingId: this.id,\n },\n });\n break;\n\n case SHARE_STATUS.NO_SHARE:\n // nothing to do\n break;\n\n default:\n break;\n }\n\n // send \"start\" notifications for the new state\n switch (newShareStatus) {\n case SHARE_STATUS.REMOTE_SHARE_ACTIVE: {\n const sendStartedSharingRemote = () => {\n this.remoteShareInstanceId = contentShare.shareInstanceId;\n this.shareCAEventSentStatus.receiveStart = false;\n this.shareCAEventSentStatus.receiveStop = false;\n\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'remoteShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE,\n {\n memberId: contentShare.beneficiaryId,\n url: contentShare.url,\n shareInstanceId: this.remoteShareInstanceId,\n annotationInfo: contentShare.annotation,\n resourceType: contentShare.resourceType,\n }\n );\n };\n\n try {\n // if a remote participant is stealing the presentation from us\n if (\n this.mediaProperties.mediaDirection?.sendShare &&\n oldShareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE\n ) {\n await this.unpublishStreams([\n this.mediaProperties.shareVideoStream,\n this.mediaProperties.shareAudioStream,\n ]);\n }\n } finally {\n sendStartedSharingRemote();\n }\n break;\n }\n\n case SHARE_STATUS.LOCAL_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'share',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_LOCAL\n );\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n },\n options: {meetingId: this.id},\n });\n\n break;\n\n case SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'startWhiteboardShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_WHITEBOARD,\n {\n resourceUrl: whiteboardShare.resourceUrl,\n memberId: whiteboardShare.beneficiaryId,\n }\n );\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'whiteboard',\n },\n options: {\n meetingId: this.id,\n },\n });\n break;\n\n case SHARE_STATUS.NO_SHARE:\n // nothing to do\n break;\n\n default:\n break;\n }\n\n this.members.locusMediaSharesUpdate(payload);\n } else if (newShareStatus === SHARE_STATUS.REMOTE_SHARE_ACTIVE) {\n // if we got here, then some remote participant has stolen\n // the presentation from another remote participant\n this.remoteShareInstanceId = contentShare.shareInstanceId;\n this.shareCAEventSentStatus.receiveStart = false;\n this.shareCAEventSentStatus.receiveStop = false;\n\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'remoteShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE,\n {\n memberId: contentShare.beneficiaryId,\n url: contentShare.url,\n shareInstanceId: this.remoteShareInstanceId,\n annotationInfo: contentShare.annotation,\n resourceType: contentShare.resourceType,\n }\n );\n this.members.locusMediaSharesUpdate(payload);\n } else if (newShareStatus === SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE) {\n // if we got here, then some remote participant has stolen\n // the presentation from another remote participant\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'startWhiteboardShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_WHITEBOARD,\n {\n resourceUrl: whiteboardShare.resourceUrl,\n memberId: whiteboardShare.beneficiaryId,\n }\n );\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'whiteboard',\n },\n options: {\n meetingId: this.id,\n },\n });\n this.members.locusMediaSharesUpdate(payload);\n }\n });\n }\n\n /**\n * Set up the locus info url listener\n * update locus_url value for members\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusUrlListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_URL, (payload) => {\n this.members.locusUrlUpdate(payload);\n this.breakouts.locusUrlUpdate(payload);\n this.simultaneousInterpretation.locusUrlUpdate(payload);\n this.annotation.locusUrlUpdate(payload);\n this.locusUrl = payload;\n this.locusId = this.locusUrl?.split('/').pop();\n this.recordingController.setLocusUrl(this.locusUrl);\n this.controlsOptionsManager.setLocusUrl(this.locusUrl);\n this.webinar.locusUrlUpdate(payload);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusSelfListener',\n },\n EVENT_TRIGGERS.MEETING_LOCUS_URL_UPDATE,\n {locusUrl: payload}\n );\n });\n }\n\n /**\n * Set up the locus info service link listener\n * update the locusInfo for recording controller\n * does not currently re-emit the event as it's internal only\n * payload is unused\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusServicesListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.LINKS_SERVICES, (payload) => {\n this.recordingController.setServiceUrl(payload?.services?.record?.url);\n this.recordingController.setSessionId(this.locusInfo?.fullState?.sessionId);\n this.breakouts.breakoutServiceUrlUpdate(payload?.services?.breakout?.url);\n this.annotation.approvalUrlUpdate(payload?.services?.approval?.url);\n this.simultaneousInterpretation.approvalUrlUpdate(payload?.services?.approval?.url);\n });\n }\n\n /**\n * Set up the locus info resources link listener\n * update the locusInfo for webcast instance url\n * @param {Object} payload - The event payload\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusResourcesListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.LINKS_RESOURCES, (payload) => {\n if (payload) {\n this.webinar.updateWebcastUrl(payload);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_RESOURCE_LINKS_UPDATE,\n {\n payload,\n }\n );\n }\n });\n }\n\n /**\n * Set up the locus info meeting info listener\n * @returns {undefined}\n * @private\n * @memberof meeting\n */\n private setUpLocusInfoMeetingInfoListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_LOCKED, (payload) => {\n if (payload) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_LOCKED,\n {\n payload,\n }\n );\n }\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_UNLOCKED, (payload) => {\n if (payload) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_UNLOCKED,\n {\n payload,\n }\n );\n }\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, ({isInitializing}) => {\n this.updateMeetingActions();\n this.recordingController.setDisplayHints(this.userDisplayHints);\n this.recordingController.setUserPolicy(this.selfUserPolicies);\n this.controlsOptionsManager.setDisplayHints(this.userDisplayHints);\n this.handleDataChannelUrlChange(this.datachannelUrl);\n\n if (!isInitializing) {\n // send updated trigger only if locus is not initializing the meeting\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_INFO_UPDATED\n );\n }\n });\n }\n\n /**\n * Handles a data channel URL change\n * @param {String} datachannelUrl\n * @returns {void}\n */\n handleDataChannelUrlChange(datachannelUrl) {\n // @ts-ignore - config coming from registerPlugin\n if (datachannelUrl && this.config.enableAutomaticLLM) {\n this.updateLLMConnection();\n }\n }\n\n /**\n * Set up the locus info embedded apps listener\n * @returns {undefined}\n * @private\n * @memberof meeting\n */\n private setUpLocusEmbeddedAppsListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, (embeddedApps) => {\n if (embeddedApps) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusEmbeddedAppsListener',\n },\n EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE,\n embeddedApps\n );\n }\n });\n }\n\n /**\n * Internal function to listen to the self object changes\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoSelfListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, (payload) => {\n if (this.audio) {\n this.audio.handleServerLocalUnmuteRequired(this, payload.unmuteAllowed);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS,\n {\n payload,\n }\n );\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, (payload) => {\n if (payload) {\n if (this.video) {\n payload.muted = payload.muted ?? this.video.isRemotelyMuted();\n payload.unmuteAllowed = payload.unmuteAllowed ?? this.video.isUnmuteAllowed();\n this.video.handleServerRemoteMuteUpdate(this, payload.muted, payload.unmuteAllowed);\n }\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n payload.muted\n ? EVENT_TRIGGERS.MEETING_SELF_VIDEO_MUTED_BY_OTHERS\n : EVENT_TRIGGERS.MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS,\n {\n payload,\n }\n );\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, (payload) => {\n if (payload) {\n if (this.audio) {\n this.audio.handleServerRemoteMuteUpdate(this, payload.muted, payload.unmuteAllowed);\n }\n // with \"mute on entry\" server will send us remote mute even if we don't have media configured,\n // so if being muted by others, always send the notification,\n // but if being unmuted, only send it if we are also locally unmuted\n if (payload.muted || !this.audio?.isMuted()) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n payload.muted\n ? EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS\n : EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS,\n {\n payload,\n }\n );\n }\n }\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE,\n {\n payload,\n }\n );\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, (payload) => {\n if (payload) {\n this.startKeepAlive();\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING,\n {\n payload,\n }\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.lobby.entered',\n options: {meetingId: this.id},\n });\n }\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.GUEST_ENTERED_LOBBY, {\n correlation_id: this.correlationId,\n });\n this.updateLLMConnection();\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, async (payload) => {\n this.stopKeepAlive();\n\n if (payload) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED,\n {\n payload,\n }\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.lobby.exited',\n options: {meetingId: this.id},\n });\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.GUEST_EXITED_LOBBY, {\n correlation_id: this.correlationId,\n });\n }\n this.rtcMetrics?.sendNextMetrics();\n this.updateLLMConnection();\n });\n\n // @ts-ignore - check if MEDIA_INACTIVITY exists\n this.locusInfo.on(LOCUSINFO.EVENTS.MEDIA_INACTIVITY, () => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MEDIA_INACTIVE, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n });\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...'\n );\n this.reconnect();\n });\n\n // There is two stats for mute one is the actual media being sent or received\n // The second on is if the audio is muted, we need to tell the statsAnalyzer when\n // the audio is muted or the user is not willing to send media\n this.locusInfo.on(LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE, (status) => {\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoSelfListener --> MEDIA_STATUS_CHANGE received, processing...'\n );\n\n if (this.statsAnalyzer) {\n this.statsAnalyzer.updateMediaStatus({\n actual: status,\n expected: {\n // We need to check what should be the actual direction of media\n sendAudio: this.mediaProperties.mediaDirection?.sendAudio && !this.audio?.isMuted(),\n sendVideo: this.mediaProperties.mediaDirection?.sendVideo && !this.video?.isMuted(),\n sendShare: this.mediaProperties.mediaDirection?.sendShare,\n receiveAudio: this.mediaProperties.mediaDirection?.receiveAudio,\n receiveVideo: this.mediaProperties.mediaDirection?.receiveVideo,\n receiveShare: this.mediaProperties.mediaDirection?.receiveShare,\n },\n });\n } else {\n LoggerProxy.logger.warn(\n 'Meeting:index#setUpLocusInfoSelfListener --> MEDIA_STATUS_CHANGE, statsAnalyzer is not available.'\n );\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, (payload) => {\n this.breakouts.updateBreakoutSessions(payload);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, (payload) => {\n const targetChanged = this.simultaneousInterpretation.updateSelfInterpretation(payload);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n if (targetChanged && this.mediaProperties.audioStream) {\n this.setSendNamedMediaGroup(MediaType.AudioMain);\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED, (payload) => {\n this.brbState?.handleServerBrbUpdate(payload?.brb?.enabled);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_BRB_UPDATE,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, (payload) => {\n const isModeratorOrCohost =\n payload.newRoles?.includes(SELF_ROLES.MODERATOR) ||\n payload.newRoles?.includes(SELF_ROLES.COHOST);\n this.breakouts.updateCanManageBreakouts(isModeratorOrCohost);\n this.simultaneousInterpretation.updateCanManageInterpreters(\n payload.newRoles?.includes(SELF_ROLES.MODERATOR)\n );\n this.webinar.updateRoleChanged(payload);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_ROLES_CHANGED,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED,\n {\n payload,\n }\n );\n });\n }\n\n /**\n * Add LocusInfo nested object listeners (from child to parent)\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoMeetingListener() {\n this.locusInfo.on(EVENTS.REMOTE_RESPONSE, (payload) => {\n this.meetingFiniteStateMachine.remote(payload);\n\n if (payload.remoteDeclined) {\n this.leave({reason: payload.reason})\n .then(() => {\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.'\n );\n })\n .catch((error) => {\n // @ts-ignore\n LoggerProxy.logger.error(\n `Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ${this}, error: ${error}`\n );\n });\n }\n });\n this.locusInfo.on(EVENTS.DESTROY_MEETING, async (payload) => {\n // if self state is NOT left\n\n // TODO: Handle sharing and wireless sharing when meeting end\n if (this.wirelessShare) {\n if (this.mediaProperties.shareVideoStream) {\n await this.setLocalShareVideoStream(undefined);\n }\n if (this.mediaProperties.shareAudioStream) {\n await this.setLocalShareAudioStream(undefined);\n }\n }\n // when multiple WEB deviceType join with same user\n // and some of the devices are joined and some are left\n // when your own device is still connected you want to leave and destroy\n // else you want to just destroy\n // this looks odd because when it leaves it should destroy, but we get a\n // leave response and we should destroy it on the next event loop\n // the leave response gets parsed and we decide if we want to destroy the meeting\n // the first time we just leave it, the second time it comes it destroys it from the collection\n if (payload.shouldLeave) {\n // TODO: We should do cleaning of meeting object if the shouldLeave: false because there might be meeting object which we are not cleaning\n\n try {\n await this.leave({reason: payload.reason});\n\n LoggerProxy.logger.warn(\n 'Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. The meeting has been left, but has not been destroyed, you should see a later event for leave.'\n );\n } catch (error) {\n // @ts-ignore\n LoggerProxy.logger.error(\n `Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ${this}, error: ${error}`\n );\n }\n } else {\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON',\n payload.reason\n );\n\n MeetingUtil.cleanUp(this);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingListener',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: payload.reason,\n meetingId: this.id,\n }\n );\n }\n });\n }\n\n /**\n * Set meeting values rather than events\n * @param {Object} object\n * @returns {undefined}\n * @private\n * @memberof Meeting\n * // TODO: is this function necessary?\n */\n private updateMeetingObject(object: object) {\n // Validate if these are valid meeting object property\n // TODO: add a check to make sure the value passed in the constructor\n // is not changed by any delta event\n if (object && Object.keys(object).length) {\n Object.keys(object).forEach((key) => {\n this[key] = object[key];\n });\n }\n }\n\n /**\n * Invite a guest to the call that isn't normally part of this call\n * @param {Invitee} invitee\n * @param {String} invitee.emailAddress\n * @param {String} invitee.email\n * @param {String} invitee.phoneNumber\n * @param {Boolean} [alertIfActive]\n * @param {Boolean} [invitee.skipEmailValidation]\n * @param {Boolean} [invitee.isInternalNumber]\n * @returns {Promise} see #members.addMember\n * @public\n * @memberof Meeting\n */\n public invite(invitee: Invitee, alertIfActive = true) {\n return this.members.addMember(invitee, alertIfActive);\n }\n\n /**\n * Cancel an outgoing phone call invitation made during a meeting\n * @param {Invitee} invitee\n * @param {String} invitee.phoneNumber\n * @returns {Promise} see #members.cancelPhoneInvite\n * @public\n * @memberof Meeting\n */\n public cancelPhoneInvite(invitee: Invitee) {\n return this.members.cancelPhoneInvite(invitee);\n }\n\n /**\n * Cancel an SIP/phone call invitation made during a meeting\n * @param {Invitee} invitee\n * @param {String} invitee.memberId\n * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal\n * @returns {Promise} see #members.cancelInviteByMemberId\n * @public\n * @memberof Meeting\n */\n public cancelInviteByMemberId(invitee: Invitee) {\n return this.members.cancelInviteByMemberId(invitee);\n }\n\n /**\n * Admit the guest(s) to the call once they are waiting.\n * If the host/cohost is in a breakout session, the locus url\n * of the session must be provided as the authorizingLocusUrl.\n * Regardless of host/cohost location, the locus Id (lid) in\n * the path should be the locus Id of the main, which means the\n * locus url of the api call must be from the main session.\n * If these loucs urls are not provided, the function will do the check.\n * @param {Array} memberIds\n * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}\n * @returns {Promise} see #members.admitMembers\n * @public\n * @memberof Meeting\n */\n public admit(\n memberIds: Array<any>,\n sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}\n ) {\n let locusUrls = sessionLocusUrls;\n if (!locusUrls) {\n const {locusUrl, mainLocusUrl} = this.breakouts;\n if (locusUrl && mainLocusUrl) {\n locusUrls = {authorizingLocusUrl: locusUrl, mainLocusUrl};\n }\n }\n\n return this.members.admitMembers(memberIds, locusUrls);\n }\n\n /**\n * Manages be right back status updates for the current participant.\n *\n * @param {boolean} enabled - Indicates whether the user enabled brb or not.\n * @returns {Promise<void>} resolves when the brb status is updated or does nothing if not in a multistream meeting.\n * @throws {Error} - Throws an error if the request fails.\n */\n public async beRightBack(enabled: boolean): Promise<void> {\n if (!this.isMultistream) {\n const errorMessage = 'Meeting:index#beRightBack --> Not a multistream meeting';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n if (!this.mediaProperties.webrtcMediaConnection) {\n const errorMessage = 'Meeting:index#beRightBack --> WebRTC media connection is not defined';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n return this.brbState\n .enable(enabled, this.sendSlotManager)\n .then(() => {\n if (this.audio && enabled) {\n // locus mutes the participant with brb enabled request,\n // so we need to explicitly update remote mute for correct logic flow\n this.audio.handleServerRemoteMuteUpdate(this, enabled);\n }\n })\n .catch((error) => Promise.reject(error));\n }\n\n /**\n * Remove the member from the meeting, boot them\n * @param {String} memberId\n * @returns {Promise} see #members.removeMember\n * @public\n * @memberof Meeting\n */\n public remove(memberId: string) {\n return this.members.removeMember(memberId);\n }\n\n /**\n * Mute another member from the meeting\n * @param {String} memberId\n * @param {Boolean} mute\n * @returns {Promise} see #members.muteMember\n * @public\n * @memberof Meeting\n */\n public mute(memberId: string, mute = true) {\n return this.members.muteMember(memberId, mute);\n }\n\n /**\n * Transfer the moderator role to another eligible member\n * @param {String} memberId\n * @param {Boolean} moderator\n * @returns {Promise} see #members.transferHostToMember\n * @public\n * @memberof Meeting\n */\n public transfer(memberId: string, moderator = true) {\n return this.members.transferHostToMember(memberId, moderator);\n }\n\n /**\n * Reference to the Members object\n * @returns {Members}\n * @public\n * @memberof Meeting\n */\n public getMembers() {\n return this.members;\n }\n\n /**\n * Sets the meeting info on the class instance\n * @param {Object} meetingInfo\n * @param {String} meetingInfo.conversationUrl\n * @param {String} meetingInfo.locusUrl\n * @param {String} meetingInfo.sipUri\n * @param {String} [meetingInfo.sipUrl]\n * @param {String} [meetingInfo.sipMeetingUri]\n * @param {String} [meetingInfo.meetingNumber]\n * @param {String} [meetingInfo.meetingJoinUrl]\n * @param {String} [meetingInfo.hostId]\n * @param {String} [meetingInfo.permissionToken]\n * @param {String} [meetingInfo.channel]\n * @param {Object} meetingInfo.owner\n * @param {Object | String} destination locus object with meeting data or destination string (sip url, meeting link, etc)\n * @param {Object | String} errors Meeting info request error\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n parseMeetingInfo(\n meetingInfo: {\n conversationUrl: string;\n locusUrl: string;\n sipUri: string;\n owner: object;\n sipUrl?: string;\n sipMeetingUri?: string;\n meetingNumber?: string;\n meetingJoinUrl?: string;\n hostId?: string;\n permissionToken?: string;\n channel?: string;\n },\n destination: object | string | null = null,\n errors: any = undefined\n ) {\n // We try to use as much info from Locus meeting object, stored in destination\n\n let locusMeetingObject;\n\n if (destination) {\n locusMeetingObject = typeof destination === 'object' ? destination : undefined;\n }\n\n // MeetingInfo will be undefined for 1:1 calls\n if (locusMeetingObject || (meetingInfo && !(errors?.length > 0))) {\n this.conversationUrl =\n locusMeetingObject?.conversationUrl || meetingInfo?.conversationUrl || this.conversationUrl;\n this.locusUrl = locusMeetingObject?.url || meetingInfo?.locusUrl || this.locusUrl;\n // @ts-ignore - config coming from registerPlugin\n this.setSipUri(\n // @ts-ignore\n this.config.experimental.enableUnifiedMeetings\n ? locusMeetingObject?.info.sipUri || meetingInfo?.sipUrl\n : locusMeetingObject?.info.sipUri || meetingInfo?.sipMeetingUri || this.sipUri\n );\n // @ts-ignore - config coming from registerPlugin\n if (this.config.experimental.enableUnifiedMeetings) {\n this.meetingNumber = locusMeetingObject?.info.webExMeetingId || meetingInfo?.meetingNumber;\n this.meetingJoinUrl = meetingInfo?.meetingJoinUrl;\n }\n this.owner =\n locusMeetingObject?.info.owner || meetingInfo?.owner || meetingInfo?.hostId || this.owner;\n this.permissionToken = meetingInfo?.permissionToken;\n if (this.permissionToken) {\n this.setPermissionTokenPayload(meetingInfo?.permissionToken);\n this.setSelfUserPolicies();\n }\n // Need to populate environment when sending CA event\n this.environment = locusMeetingObject?.info.channel || meetingInfo?.channel;\n }\n MeetingUtil.parseInterpretationInfo(this, meetingInfo);\n }\n\n /**\n * Indicates whether policy can be applied\n * @returns {boolean}\n */\n private arePolicyRestrictionsSupported() {\n // If we don't have policies we can't support policies\n if (!this.selfUserPolicies) {\n return false;\n }\n\n // 1-2-1 calls and SIP dialling will have no meeting info\n // so cannot support policy information\n if (isEmpty(this.meetingInfo)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Updates the meeting actions (display hints), depends on locus display hints, user policy and app api info\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private updateMeetingActions() {\n let changed = false;\n changed = this.inMeetingActions.set({\n canUseVoip:\n (this.meetingInfo?.supportVoIP === true &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_VOIP],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported(),\n canDoVideo:\n (ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_VIDEO],\n policies: this.selfUserPolicies,\n }) &&\n !!this.meetingInfo?.video) ||\n !this.arePolicyRestrictionsSupported(),\n supportHDV:\n (ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_HDV],\n policies: this.selfUserPolicies,\n }) &&\n this.meetingInfo?.video?.supportHDV) ||\n !this.arePolicyRestrictionsSupported(),\n enforceVirtualBackground:\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.ENFORCE_VIRTUAL_BACKGROUND],\n policies: this.selfUserPolicies,\n }) && this.arePolicyRestrictionsSupported(),\n supportHQV:\n (ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_HQV],\n policies: this.selfUserPolicies,\n }) &&\n this.meetingInfo?.video?.supportHQV) ||\n !this.arePolicyRestrictionsSupported(),\n });\n if (this.userDisplayHints !== undefined) {\n changed =\n this.inMeetingActions.set({\n canInviteNewParticipants: MeetingUtil.canInviteNewParticipants(this.userDisplayHints),\n canAdmitParticipant: MeetingUtil.canAdmitParticipant(this.userDisplayHints),\n canLock: MeetingUtil.canUserLock(this.userDisplayHints),\n canUnlock: MeetingUtil.canUserUnlock(this.userDisplayHints),\n canShareWhiteBoard: MeetingUtil.canShareWhiteBoard(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canSetDisallowUnmute: ControlsOptionsUtil.canSetDisallowUnmute(this.userDisplayHints),\n canUnsetDisallowUnmute: ControlsOptionsUtil.canUnsetDisallowUnmute(this.userDisplayHints),\n canSetMuteOnEntry: ControlsOptionsUtil.canSetMuteOnEntry(this.userDisplayHints),\n canUnsetMuteOnEntry: ControlsOptionsUtil.canUnsetMuteOnEntry(this.userDisplayHints),\n canSetMuted: ControlsOptionsUtil.canSetMuted(this.userDisplayHints),\n canUnsetMuted: ControlsOptionsUtil.canUnsetMuted(this.userDisplayHints),\n canStartRecording: RecordingUtil.canUserStart(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canStopRecording: RecordingUtil.canUserStop(this.userDisplayHints, this.selfUserPolicies),\n canPauseRecording: RecordingUtil.canUserPause(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canResumeRecording: RecordingUtil.canUserResume(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n isPremiseRecordingEnabled: RecordingUtil.isPremiseRecordingEnabled(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canRaiseHand: MeetingUtil.canUserRaiseHand(this.userDisplayHints),\n canLowerAllHands: MeetingUtil.canUserLowerAllHands(this.userDisplayHints),\n canLowerSomeoneElsesHand: MeetingUtil.canUserLowerSomeoneElsesHand(this.userDisplayHints),\n bothLeaveAndEndMeetingAvailable: MeetingUtil.bothLeaveAndEndMeetingAvailable(\n this.userDisplayHints\n ),\n canEnableClosedCaption: MeetingUtil.canEnableClosedCaption(this.userDisplayHints),\n canStartTranscribing: MeetingUtil.canStartTranscribing(this.userDisplayHints),\n canStopTranscribing: MeetingUtil.canStopTranscribing(this.userDisplayHints),\n isClosedCaptionActive: MeetingUtil.isClosedCaptionActive(this.userDisplayHints),\n canStartManualCaption: MeetingUtil.canStartManualCaption(this.userDisplayHints),\n canStopManualCaption: MeetingUtil.canStopManualCaption(this.userDisplayHints),\n isLocalRecordingStarted: MeetingUtil.isLocalRecordingStarted(this.userDisplayHints),\n isLocalRecordingStopped: MeetingUtil.isLocalRecordingStopped(this.userDisplayHints),\n isLocalRecordingPaused: MeetingUtil.isLocalRecordingPaused(this.userDisplayHints),\n isManualCaptionActive: MeetingUtil.isManualCaptionActive(this.userDisplayHints),\n isSaveTranscriptsEnabled: MeetingUtil.isSaveTranscriptsEnabled(this.userDisplayHints),\n isWebexAssistantActive: MeetingUtil.isWebexAssistantActive(this.userDisplayHints),\n canViewCaptionPanel: MeetingUtil.canViewCaptionPanel(this.userDisplayHints),\n isRealTimeTranslationEnabled: MeetingUtil.isRealTimeTranslationEnabled(\n this.userDisplayHints\n ),\n canSelectSpokenLanguages: MeetingUtil.canSelectSpokenLanguages(this.userDisplayHints),\n waitingForOthersToJoin: MeetingUtil.waitingForOthersToJoin(this.userDisplayHints),\n canSendReactions: MeetingUtil.canSendReactions(\n this.inMeetingActions.canSendReactions,\n this.userDisplayHints\n ),\n requiresPostMeetingDataConsentPrompt: MeetingUtil.requiresPostMeetingDataConsentPrompt(\n this.userDisplayHints\n ),\n canManageBreakout: MeetingUtil.canManageBreakout(this.userDisplayHints),\n canStartBreakout: MeetingUtil.canStartBreakout(this.userDisplayHints),\n canBroadcastMessageToBreakout: MeetingUtil.canBroadcastMessageToBreakout(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canAdmitLobbyToBreakout: MeetingUtil.canAdmitLobbyToBreakout(this.userDisplayHints),\n isBreakoutPreassignmentsEnabled: MeetingUtil.isBreakoutPreassignmentsEnabled(\n this.userDisplayHints\n ),\n canUserAskForHelp: MeetingUtil.canUserAskForHelp(this.userDisplayHints),\n canUserRenameSelfAndObserved: MeetingUtil.canUserRenameSelfAndObserved(\n this.userDisplayHints\n ),\n canUserRenameOthers: MeetingUtil.canUserRenameOthers(this.userDisplayHints),\n canMoveToLobby: MeetingUtil.canMoveToLobby(this.userDisplayHints),\n canMuteAll: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.MUTE_ALL],\n displayHints: this.userDisplayHints,\n }),\n canUnmuteAll: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.UNMUTE_ALL],\n displayHints: this.userDisplayHints,\n }),\n canEnableHardMute: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_HARD_MUTE],\n displayHints: this.userDisplayHints,\n }),\n canDisableHardMute: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_HARD_MUTE],\n displayHints: this.userDisplayHints,\n }),\n canEnableMuteOnEntry: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY],\n displayHints: this.userDisplayHints,\n }),\n canDisableMuteOnEntry: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY],\n displayHints: this.userDisplayHints,\n }),\n canEnableReactions: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_REACTIONS],\n displayHints: this.userDisplayHints,\n }),\n canDisableReactions: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_REACTIONS],\n displayHints: this.userDisplayHints,\n }),\n canEnableReactionDisplayNames: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_SHOW_DISPLAY_NAME],\n displayHints: this.userDisplayHints,\n }),\n canDisableReactionDisplayNames: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_SHOW_DISPLAY_NAME],\n displayHints: this.userDisplayHints,\n }),\n canUpdateShareControl: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_CONTROL],\n displayHints: this.userDisplayHints,\n }),\n canEnableViewTheParticipantsList: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST],\n displayHints: this.userDisplayHints,\n }),\n canDisableViewTheParticipantsList: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],\n displayHints: this.userDisplayHints,\n }),\n canEnableViewTheParticipantsListPanelist: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],\n displayHints: this.userDisplayHints,\n }),\n canDisableViewTheParticipantsListPanelist: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],\n displayHints: this.userDisplayHints,\n }),\n canEnableShowAttendeeCount: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT],\n displayHints: this.userDisplayHints,\n }),\n canDisableShowAttendeeCount: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT],\n displayHints: this.userDisplayHints,\n }),\n canEnableRaiseHand: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_RAISE_HAND],\n displayHints: this.userDisplayHints,\n }),\n canDisableRaiseHand: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_RAISE_HAND],\n displayHints: this.userDisplayHints,\n }),\n canEnableVideo: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_VIDEO],\n displayHints: this.userDisplayHints,\n }),\n canDisableVideo: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_VIDEO],\n displayHints: this.userDisplayHints,\n }),\n canStartWebcast: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.WEBCAST_CONTROL_START],\n displayHints: this.userDisplayHints,\n }),\n canStopWebcast: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.WEBCAST_CONTROL_STOP],\n displayHints: this.userDisplayHints,\n }),\n canShowStageView: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.STAGE_VIEW_ACTIVE],\n displayHints: this.userDisplayHints,\n }),\n canEnableStageView: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_STAGE_VIEW],\n displayHints: this.userDisplayHints,\n }),\n canDisableStageView: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_STAGE_VIEW],\n displayHints: this.userDisplayHints,\n }),\n isPracticeSessionOn: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.PRACTICE_SESSION_ON],\n displayHints: this.userDisplayHints,\n }),\n isPracticeSessionOff: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.PRACTICE_SESSION_OFF],\n displayHints: this.userDisplayHints,\n }),\n canStartPracticeSession: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHOW_PRACTICE_SESSION_START],\n displayHints: this.userDisplayHints,\n }),\n canStopPracticeSession: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHOW_PRACTICE_SESSION_STOP],\n displayHints: this.userDisplayHints,\n }),\n canShareFile:\n (ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_FILE],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_FILE_SHARE],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported,\n canTransferFile: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_FILE_TRANSFER],\n policies: this.selfUserPolicies,\n }),\n canRealtimeCloseCaption: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_REALTIME_CLOSE_CAPTION],\n policies: this.selfUserPolicies,\n }),\n canRealtimeCloseCaptionManual: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_REALTIME_CLOSE_CAPTION_MANUAL],\n policies: this.selfUserPolicies,\n }),\n canChat: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_CHAT],\n policies: this.selfUserPolicies,\n }),\n canPollingAndQA: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_POLLING_AND_QA],\n policies: this.selfUserPolicies,\n }),\n canShareApplication:\n (ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_APPLICATION],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_APP_SHARE],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported(),\n canShareCamera:\n ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_CAMERA],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_CAMERA_SHARE],\n policies: this.selfUserPolicies,\n }),\n canShareDesktop:\n (ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_DESKTOP],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_DESKTOP_SHARE],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported(),\n canShareContent:\n ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_CONTENT],\n displayHints: this.userDisplayHints,\n }) || !this.arePolicyRestrictionsSupported(),\n canAnnotate: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_ANNOTATION],\n policies: this.selfUserPolicies,\n }),\n canEnableAnnotation: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_ANNOTATION_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canDisableAnnotation: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_ANNOTATION_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canEnableRemoteDesktopControl: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_RDC_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canDisableRemoteDesktopControl: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canEnablePollingQA: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA],\n displayHints: this.userDisplayHints,\n }),\n canDisablePollingQA: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],\n displayHints: this.userDisplayHints,\n }),\n }) || changed;\n }\n if (changed) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'updateMeetingActions',\n },\n EVENT_TRIGGERS.MEETING_ACTIONS_UPDATE,\n this.inMeetingActions.get()\n );\n }\n }\n\n /**\n * Sets the self user policies based on the contents of the permission token\n * @returns {void}\n */\n setSelfUserPolicies() {\n this.selfUserPolicies = this.permissionTokenPayload?.permission?.userPolicies;\n this.enforceVBGImagesURL = this.permissionTokenPayload?.permission?.enforceVBGImagesURL;\n }\n\n /**\n * Sets the permission token payload on the class instance\n *\n * @param {String} permissionToken\n * @returns {void}\n */\n public setPermissionTokenPayload(permissionToken: string) {\n this.permissionTokenPayload = jwtDecode(permissionToken);\n this.permissionTokenReceivedLocalTime = new Date().getTime();\n }\n\n /**\n * Sets the sip uri on the class instance\n * uses meeting info as precedence\n * @param {String} sipUri\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n setSipUri(sipUri: string) {\n // This can be tel no, device id or a sip uri, user Id\n this.sipUri = sipUri;\n }\n\n /**\n * Set the locus info the class instance\n * @param {Object} locus\n * @param {Array} locus.mediaConnections\n * @param {String} locus.locusUrl\n * @param {String} locus.locusId\n * @param {String} locus.mediaId\n * @param {Object} locus.host\n * @todo change name to genertic parser\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n setLocus(\n locus:\n | {\n mediaConnections: Array<any>;\n locusUrl: string;\n locusId: string;\n mediaId: string;\n host: object;\n }\n | any\n ) {\n const mtgLocus: any = locus.locus || locus;\n\n // LocusInfo object saves the locus object\n // this.locus = mtgLocus;\n this.mediaConnections = locus.mediaConnections;\n this.locusUrl = locus.locusUrl || locus.url;\n this.locusId = locus.locusId;\n this.selfId = locus.selfId;\n this.mediaId = locus.mediaId;\n this.hostId = mtgLocus.host ? mtgLocus.host.id : this.hostId;\n this.locusInfo.initialSetup(mtgLocus);\n }\n\n /**\n * Upload logs for the current meeting\n * @param {object} options file name and function name\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public uploadLogs(options: object = {file: 'meeting/index', function: 'uploadLogs'}) {\n Trigger.trigger(this, options, EVENTS.REQUEST_UPLOAD_LOGS, this);\n }\n\n /**\n * sets the timer for periodic log upload\n * @returns {void}\n */\n private setLogUploadTimer() {\n // start with short timeouts and increase them later on so in case users have very long multi-hour meetings we don't get too fragmented logs\n const LOG_UPLOAD_INTERVALS = [0.1, 15, 30, 60]; // in minutes\n\n const delay =\n 1000 *\n 60 *\n // @ts-ignore - config coming from registerPlugin\n this.config.logUploadIntervalMultiplicationFactor *\n LOG_UPLOAD_INTERVALS[this.logUploadIntervalIndex];\n\n if (this.logUploadIntervalIndex < LOG_UPLOAD_INTERVALS.length - 1) {\n this.logUploadIntervalIndex += 1;\n }\n\n this.uploadLogsTimer = safeSetTimeout(() => {\n this.uploadLogsTimer = undefined;\n\n this.uploadLogs();\n\n // just as an extra precaution, to avoid uploading logs forever in case something goes wrong\n // and the page remains opened, we stop it if there is no media connection\n if (!this.mediaProperties.webrtcMediaConnection) {\n return;\n }\n\n this.setLogUploadTimer();\n }, delay);\n }\n\n /**\n * Starts a periodic upload of logs\n *\n * @returns {undefined}\n */\n public startPeriodicLogUpload() {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.logUploadIntervalMultiplicationFactor && !this.uploadLogsTimer) {\n this.logUploadIntervalIndex = 0;\n\n this.setLogUploadTimer();\n }\n }\n\n /**\n * Stops the periodic upload of logs\n *\n * @returns {undefined}\n */\n public stopPeriodicLogUpload() {\n if (this.uploadLogsTimer) {\n clearTimeout(this.uploadLogsTimer);\n this.uploadLogsTimer = undefined;\n }\n }\n\n /**\n * Removes remote audio, video and share streams from class instance's mediaProperties\n * @returns {undefined}\n */\n unsetRemoteStreams() {\n this.mediaProperties.unsetRemoteStreams();\n }\n\n /**\n * Removes the remote stream on the class instance and triggers an event\n * to developers\n * @returns {undefined}\n * @public\n * @memberof Meeting\n * @deprecated after v1.89.3\n */\n public closeRemoteStream() {\n LoggerProxy.logger.warn(\n 'Meeting:index#closeRemoteStream --> [DEPRECATION WARNING]: closeRemoteStream has been deprecated after v1.89.3'\n );\n this.closeRemoteStreams();\n }\n\n /**\n * Removes the remote streams on the class instance and triggers an event\n * to developers\n * @returns {undefined}\n * @memberof Meeting\n */\n closeRemoteStreams() {\n const {remoteAudioStream, remoteVideoStream, remoteShareStream} = this.mediaProperties;\n\n /**\n * Triggers an event to the developer\n * @param {string} mediaType Type of media that was stopped\n * @returns {void}\n * @inner\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const triggerMediaStoppedEvent = (mediaType: string) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'closeRemoteStreams',\n },\n EVENT_TRIGGERS.MEDIA_STOPPED,\n {\n type: mediaType,\n }\n );\n };\n\n /**\n * Stops a media stream and emits an event\n * @param {RemoteStream} stream Media stream to stop\n * @param {string} type Media stream type\n * @returns {Promise}\n * @inner\n */\n // eslint-disable-next-line arrow-body-style\n const stopStream = (stream: RemoteStream, type: string) => {\n return Media.stopStream(stream).then(() => {\n triggerMediaStoppedEvent(type);\n });\n };\n\n return Promise.all([\n stopStream(remoteAudioStream, EVENT_TYPES.REMOTE_AUDIO),\n stopStream(remoteVideoStream, EVENT_TYPES.REMOTE_VIDEO),\n stopStream(remoteShareStream, EVENT_TYPES.REMOTE_SHARE),\n ]);\n }\n\n /**\n * Stores the reference to a new microphone stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n *\n * @param {LocalMicrophoneStream | null} localStream local microphone stream\n * @returns {Promise<void>}\n */\n private async setLocalAudioStream(localStream?: LocalMicrophoneStream) {\n const oldStream = this.mediaProperties.audioStream;\n\n oldStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n oldStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n // we don't update this.mediaProperties.mediaDirection.sendAudio, because we always keep it as true to avoid extra SDP exchanges\n this.mediaProperties.setLocalAudioStream(localStream);\n\n this.audio?.handleLocalStreamChange(this);\n\n localStream?.on(\n LocalStreamEventNames.UserMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n localStream?.on(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n localStream?.on(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n if (!this.isMultistream || !localStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.AudioMain, oldStream);\n }\n await this.publishStream(MediaType.AudioMain, this.mediaProperties.audioStream);\n }\n\n /**\n * Stores the reference to a new camera stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n *\n * @param {LocalCameraStream | null} localStream local camera stream\n * @returns {Promise<void>}\n */\n private async setLocalVideoStream(localStream?: LocalCameraStream) {\n const oldStream = this.mediaProperties.videoStream;\n\n oldStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n oldStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges\n this.mediaProperties.setLocalVideoStream(localStream);\n\n this.video?.handleLocalStreamChange(this);\n\n localStream?.on(\n LocalStreamEventNames.UserMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n localStream?.on(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n localStream?.on(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n if (!this.isMultistream || !localStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.VideoMain, oldStream);\n }\n await this.publishStream(MediaType.VideoMain, this.mediaProperties.videoStream);\n }\n\n /**\n * Stores the reference to a new screen share stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n * It also sends the floor grant/release request.\n *\n * @param {LocalDisplayStream | undefined} localDisplayStream local display stream\n * @returns {Promise<void>}\n */\n private async setLocalShareVideoStream(localDisplayStream?: LocalDisplayStream) {\n const oldStream = this.mediaProperties.shareVideoStream;\n\n oldStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.handleShareVideoStreamMuteStateChange\n );\n oldStream?.off(StreamEventNames.Ended, this.handleShareVideoStreamEnded);\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n this.mediaProperties.setLocalShareVideoStream(localDisplayStream);\n\n localDisplayStream?.on(\n LocalStreamEventNames.SystemMuteStateChange,\n this.handleShareVideoStreamMuteStateChange\n );\n localDisplayStream?.on(StreamEventNames.Ended, this.handleShareVideoStreamEnded);\n localDisplayStream?.on(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();\n\n if (!this.isMultistream || !localDisplayStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.VideoSlides, oldStream);\n }\n await this.publishStream(MediaType.VideoSlides, this.mediaProperties.shareVideoStream);\n }\n\n /**\n * Stores the reference to a new screen share audio stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n *\n * @param {LocalSystemAudioStream | undefined} localSystemAudioStream local system audio stream\n * @returns {Promise<void>}\n */\n private async setLocalShareAudioStream(localSystemAudioStream?: LocalSystemAudioStream) {\n const oldStream = this.mediaProperties.shareAudioStream;\n\n oldStream?.off(StreamEventNames.Ended, this.handleShareAudioStreamEnded);\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n this.mediaProperties.setLocalShareAudioStream(localSystemAudioStream);\n\n localSystemAudioStream?.on(StreamEventNames.Ended, this.handleShareAudioStreamEnded);\n localSystemAudioStream?.on(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();\n\n if (!this.isMultistream || !localSystemAudioStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.AudioSlides, oldStream);\n }\n await this.publishStream(MediaType.AudioSlides, this.mediaProperties.shareAudioStream);\n }\n\n /**\n * Handles the local audio stream publish state change event\n * @internal\n * @param {Object} options parameters functionName, isPublished, mediaType and stream needed to trigger event\n * @returns {undefined}\n */\n private emitPublishStateChangeEvent(options: {\n functionName: string;\n isPublished: boolean;\n mediaType: MediaType;\n stream: LocalStream;\n }) {\n const {functionName, isPublished, mediaType, stream} = options;\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: functionName,\n },\n EVENT_TRIGGERS.MEETING_STREAM_PUBLISH_STATE_CHANGED,\n {\n isPublished,\n mediaType,\n stream,\n }\n );\n }\n\n /**\n * Removes references to local streams. This function should be called\n * on cleanup when we leave the meeting etc.\n *\n * @internal\n * @returns {void}\n */\n public cleanupLocalStreams() {\n const {audioStream, videoStream, shareAudioStream, shareVideoStream} = this.mediaProperties;\n\n audioStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n audioStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n audioStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n videoStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n videoStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n videoStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n shareAudioStream?.off(StreamEventNames.Ended, this.handleShareAudioStreamEnded);\n shareAudioStream?.off(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n shareVideoStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.handleShareVideoStreamMuteStateChange\n );\n shareVideoStream?.off(StreamEventNames.Ended, this.handleShareVideoStreamEnded);\n shareVideoStream?.off(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n this.mediaProperties.setLocalAudioStream(undefined);\n this.mediaProperties.setLocalVideoStream(undefined);\n this.mediaProperties.setLocalShareAudioStream(undefined);\n this.mediaProperties.setLocalShareVideoStream(undefined);\n\n this.mediaProperties.mediaDirection.sendAudio = false;\n this.mediaProperties.mediaDirection.sendVideo = false;\n this.mediaProperties.mediaDirection.sendShare = false;\n\n if (audioStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.AudioMain,\n stream: audioStream,\n });\n }\n if (videoStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.VideoMain,\n stream: videoStream,\n });\n }\n if (shareVideoStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.VideoSlides,\n stream: shareVideoStream,\n });\n }\n if (shareAudioStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.AudioSlides,\n stream: shareAudioStream,\n });\n }\n }\n\n /**\n * sets up listner for mercury event\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public setMercuryListener() {\n // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury\n // if the meeting has active peer connections, it should try to reconnect.\n // @ts-ignore\n this.webex.internal.mercury.on(ONLINE, () => {\n LoggerProxy.logger.info('Meeting:index#setMercuryListener --> Web socket online');\n\n // Only send restore event when it was disconnected before and for connected later\n if (!this.hasWebsocketConnected) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MERCURY_CONNECTION_RESTORED, {\n correlation_id: this.correlationId,\n });\n }\n this.hasWebsocketConnected = true;\n });\n\n // @ts-ignore\n this.webex.internal.mercury.on(OFFLINE, () => {\n LoggerProxy.logger.error('Meeting:index#setMercuryListener --> Web socket offline');\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MERCURY_CONNECTION_FAILURE, {\n correlation_id: this.correlationId,\n });\n });\n }\n\n /**\n * Close the peer connections and remove them from the class.\n * Cleanup any media connection related things.\n *\n * @param {boolean} resetMuteStates whether to also reset the audio/video mute state information\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public closePeerConnections(resetMuteStates = true) {\n if (this.mediaProperties.webrtcMediaConnection) {\n if (this.remoteMediaManager) {\n this.remoteMediaManager.stop();\n this.remoteMediaManager = null;\n }\n\n Object.values(this.mediaRequestManagers).forEach((mediaRequestManager) =>\n mediaRequestManager.reset()\n );\n\n this.receiveSlotManager.reset();\n this.mediaProperties.webrtcMediaConnection.close();\n this.mediaProperties.unsetPeerConnection();\n this.sendSlotManager.reset();\n this.setNetworkStatus(undefined);\n }\n\n if (resetMuteStates) {\n this.audio = null;\n this.video = null;\n }\n\n return Promise.resolve();\n }\n\n /**\n * Unsets the peer connections on the class\n * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public unsetPeerConnections() {\n this.mediaProperties.unsetPeerConnection();\n // @ts-ignore - config coming from registerPlugin\n if (this.config.reconnection.detection) {\n // @ts-ignore\n this.webex.internal.mercury.off(ONLINE);\n // @ts-ignore\n this.webex.internal.mercury.off(OFFLINE);\n }\n }\n\n /**\n * Convenience method to set the correlation id for the callStateForMetrics\n * @param {String} id correlation id to set on the callStateForMetrics\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public setCorrelationId(id: string) {\n this.callStateForMetrics.correlationId = id;\n }\n\n /**\n * Update the callStateForMetrics\n * @param {CallStateForMetrics} callStateForMetrics updated values for callStateForMetrics\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public updateCallStateForMetrics(callStateForMetrics: CallStateForMetrics) {\n this.callStateForMetrics = {...this.callStateForMetrics, ...callStateForMetrics};\n }\n\n /**\n * Enqueue request for screenshare floor and set the status to pending\n * @returns {Promise}\n * @private\n * @memberof Meeting\n */\n private enqueueScreenShareFloorRequest() {\n this.screenShareFloorState = ScreenShareFloorStatus.PENDING;\n\n return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.SHARE_FLOOR_REQUEST);\n }\n\n /**\n * Mute the audio for a meeting\n * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set\n * @public\n * @memberof Meeting\n */\n public muteAudio() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.audio) {\n return Promise.reject(new ParameterError('no audio control associated to the meeting'));\n }\n\n // First, stop sending the local audio media\n return logRequest(\n this.audio\n .handleClientRequest(this, true)\n .then(() => {\n MeetingUtil.handleAudioLogging(this.mediaProperties.audioStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.muted',\n payload: {trigger: 'user-interaction', mediaType: 'audio'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MUTE_AUDIO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#muteAudio --> correlationId=${this.correlationId} muting audio`,\n }\n );\n }\n\n /**\n * Unmute meeting audio\n * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set\n * @public\n * @memberof Meeting\n */\n public unmuteAudio() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.audio) {\n return Promise.reject(new ParameterError('no audio control associated to the meeting'));\n }\n\n // First, send the control to unmute the participant on the server\n return logRequest(\n this.audio\n .handleClientRequest(this, false)\n .then(() => {\n MeetingUtil.handleAudioLogging(this.mediaProperties.audioStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.unmuted',\n payload: {trigger: 'user-interaction', mediaType: 'audio'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UNMUTE_AUDIO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#unmuteAudio --> correlationId=${this.correlationId} unmuting audio`,\n }\n );\n }\n\n /**\n * Mute the video for a meeting\n * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set\n * @public\n * @memberof Meeting\n */\n public muteVideo() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.video) {\n return Promise.reject(new ParameterError('no video control associated to the meeting'));\n }\n\n return logRequest(\n this.video\n .handleClientRequest(this, true)\n .then(() => {\n MeetingUtil.handleVideoLogging(this.mediaProperties.videoStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.muted',\n payload: {trigger: 'user-interaction', mediaType: 'video'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MUTE_VIDEO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#muteVideo --> correlationId=${this.correlationId} muting video`,\n }\n );\n }\n\n /**\n * Unmute meeting video\n * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set\n * @public\n * @memberof Meeting\n */\n public unmuteVideo() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.video) {\n return Promise.reject(new ParameterError('no audio control associated to the meeting'));\n }\n\n return logRequest(\n this.video\n .handleClientRequest(this, false)\n .then(() => {\n MeetingUtil.handleVideoLogging(this.mediaProperties.videoStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.unmuted',\n payload: {trigger: 'user-interaction', mediaType: 'video'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UNMUTE_VIDEO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#unmuteVideo --> correlationId=${this.correlationId} unmuting video`,\n }\n );\n }\n\n /**\n * Shorthand function to join AND set up media\n * @param {Object} options - options to join with media\n * @param {JoinOptions} [options.joinOptions] - see #join()\n * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()\n * @returns {Promise} -- {join: see join(), media: see addMedia(), multistreamEnabled: flag to indicate if we managed to join in multistream mode}\n * @public\n * @memberof Meeting\n * @example\n * joinWithMedia({\n * joinOptions: {resourceId: 'resourceId' },\n * mediaOptions: {\n * localStreams: { microphone: microphoneStream, camera: cameraStream }\n * }\n * })\n */\n public async joinWithMedia(\n options: {\n joinOptions?: any;\n mediaOptions?: AddMediaOptions;\n } = {}\n ) {\n const {mediaOptions, joinOptions = {}} = options;\n const {isRetry, prevJoinResponse} = this.joinWithMediaRetryInfo;\n\n if (!mediaOptions?.allowMediaInLobby) {\n return Promise.reject(\n new ParameterError('joinWithMedia() can only be used with allowMediaInLobby set to true')\n );\n }\n this.allowMediaInLobby = true;\n\n LoggerProxy.logger.info('Meeting:index#joinWithMedia called');\n\n let joined = false;\n let joinResponse = prevJoinResponse;\n\n try {\n let turnServerInfo;\n let turnDiscoverySkippedReason;\n let forceTurnDiscovery = false;\n\n if (!joinResponse) {\n // This is the 1st attempt or a retry after join request failed -> we need to do a join with TURN discovery\n\n const turnDiscoveryRequest = await this.roap.generateTurnDiscoveryRequestMessage(\n this,\n true\n );\n\n ({turnDiscoverySkippedReason} = turnDiscoveryRequest);\n joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;\n\n LoggerProxy.logger.info(\n 'Meeting:index#joinWithMedia ---> calling join with joinOptions, ',\n joinOptions\n );\n\n joinResponse = await this.join(joinOptions);\n\n joined = true;\n\n // if we sent out TURN discovery Roap message with join, process the TURN discovery response\n if (joinOptions.roapMessage) {\n ({turnServerInfo, turnDiscoverySkippedReason} =\n await this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse));\n\n this.turnDiscoverySkippedReason = turnDiscoverySkippedReason;\n this.turnServerUsed = !!turnServerInfo;\n\n if (turnServerInfo === undefined) {\n this.roap.abortTurnDiscovery();\n }\n }\n } else {\n // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,\n // but we need to ensure that it also does a new TURN discovery\n forceTurnDiscovery = true;\n joined = true;\n }\n\n const mediaResponse = await this.addMediaInternal(\n () => {\n return this.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';\n },\n turnServerInfo,\n forceTurnDiscovery,\n mediaOptions\n );\n\n this.joinWithMediaRetryInfo = {isRetry: false, prevJoinResponse: undefined};\n\n return {\n join: joinResponse,\n media: mediaResponse,\n multistreamEnabled: this.isMultistream,\n };\n } catch (error) {\n LoggerProxy.logger.error('Meeting:index#joinWithMedia --> ', error);\n\n let leaveError;\n\n this.roap.abortTurnDiscovery();\n\n // if this was the first attempt, let's do a retry\n let shouldRetry = !isRetry;\n\n if (CallDiagnosticUtils.isSdpOfferCreationError(error)) {\n // errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,\n // so there is no point doing a retry\n shouldRetry = false;\n }\n\n // we only want to call leave if join was successful and this was a retry or we won't be doing any more retries\n if (joined && (isRetry || !shouldRetry)) {\n try {\n await this.leave({resourceId: joinOptions?.resourceId, reason: 'joinWithMedia failure'});\n } catch (e) {\n LoggerProxy.logger.error('Meeting:index#joinWithMedia --> leave error', e);\n leaveError = e;\n }\n }\n\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.JOIN_WITH_MEDIA_FAILURE,\n {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl?.split('/').pop(), // if join fails, we may end up with no locusUrl\n reason: error.message,\n stack: error.stack,\n leaveErrorReason: leaveError?.message,\n isRetry,\n },\n {\n type: error.name,\n }\n );\n\n if (shouldRetry) {\n LoggerProxy.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');\n this.joinWithMediaRetryInfo.isRetry = true;\n this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;\n\n return this.joinWithMedia(options);\n }\n\n this.joinWithMediaRetryInfo = {isRetry: false, prevJoinResponse: undefined};\n\n throw error;\n }\n }\n\n /**\n * Initiates the reconnection of the media in the meeting\n *\n * @param {object} options\n * @returns {Promise} resolves with {reconnect} or errors with {error}\n * @public\n * @memberof Meeting\n */\n public reconnect(options?: object) {\n LoggerProxy.logger.log(\n `Meeting:index#reconnect --> attempting to reconnect meeting ${this.id}`\n );\n\n if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {\n return Promise.reject(\n new ParameterError('Cannot reconnect, ReconnectionManager must first be defined.')\n );\n }\n\n // @ts-ignore - currentMediaStatus coming from SelfUtil\n if (!MeetingUtil.isMediaEstablished(this.currentMediaStatus)) {\n return Promise.reject(\n new ParameterError('Cannot reconnect, Media has not established to reconnect')\n );\n }\n\n this.cleanUpBeforeReconnection();\n\n return this.reconnectionManager\n .reconnect(options, async () => {\n await this.waitForRemoteSDPAnswer();\n await this.waitForMediaConnectionConnected();\n })\n .then(() => {\n LoggerProxy.logger.log('Meeting:index#reconnect --> Meeting reconnect success');\n })\n .catch((error) => {\n if (error instanceof ReconnectionNotStartedError) {\n LoggerProxy.logger.log('Meeting:index#reconnect --> Meeting reconnect not started');\n\n return Promise.resolve();\n }\n LoggerProxy.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);\n\n this.uploadLogs({\n file: 'meeting/index',\n function: 'reconnect',\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Check if the meeting supports the Webex Assistant feature\n * @returns {boolean}\n * @throws TranscriptionNotSupportedError\n */\n isTranscriptionSupported() {\n if (this.locusInfo.controls.transcribe?.caption) {\n return true;\n }\n\n LoggerProxy.logger.error(\n 'Meeting:index#isTranscriptionSupported --> Closed Captions is not enabled/supported'\n );\n\n return false;\n }\n\n /**\n * Check if the meeting supports the Reactions\n * @returns {boolean}\n */\n isReactionsSupported() {\n if (this.locusInfo?.controls?.reactions.enabled) {\n return true;\n }\n\n LoggerProxy.logger.error('Meeting:index#isReactionsSupported --> Reactions is not supported');\n\n return false;\n }\n\n /**\n * sets Caption language for the meeting\n * @param {string} language\n * @returns {Promise}\n */\n public setCaptionLanguage(language: string) {\n return new Promise((resolve, reject) => {\n if (!this.isTranscriptionSupported()) {\n LoggerProxy.logger.error(\n 'Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported'\n );\n\n reject(new Error('Webex Assistant is not enabled/supported'));\n }\n\n try {\n const voiceaListenerCaptionUpdate = (payload) => {\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.CAPTION_LANGUAGE_UPDATE,\n voiceaListenerCaptionUpdate\n );\n const {statusCode} = payload;\n\n if (statusCode === 200) {\n this.transcription.languageOptions = {\n ...this.transcription.languageOptions,\n currentCaptionLanguage: language,\n };\n resolve(language);\n } else {\n reject(payload);\n }\n };\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.CAPTION_LANGUAGE_UPDATE,\n voiceaListenerCaptionUpdate\n );\n // @ts-ignore\n this.webex.internal.voicea.requestLanguage(language);\n } catch (error) {\n LoggerProxy.logger.error(`Meeting:index#setCaptionLanguage --> ${error}`);\n\n reject(error);\n }\n });\n }\n\n /**\n * sets Spoken language for the meeting\n * @param {string} language\n * @returns {Promise}\n */\n public setSpokenLanguage(language: string) {\n return new Promise((resolve, reject) => {\n if (!this.isTranscriptionSupported()) {\n LoggerProxy.logger.error(\n 'Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported'\n );\n\n reject(new Error('Webex Assistant is not enabled/supported'));\n }\n\n if (this.getCurUserType() !== 'host') {\n LoggerProxy.logger.error(\n 'Meeting:index#setSpokenLanguage --> Only host can set spoken language'\n );\n\n reject(new Error('Only host can set spoken language'));\n }\n\n try {\n const voiceaListenerLanguageUpdate = (payload) => {\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.SPOKEN_LANGUAGE_UPDATE,\n voiceaListenerLanguageUpdate\n );\n const {languageCode} = payload;\n\n if (languageCode) {\n this.transcription.languageOptions = {\n ...this.transcription.languageOptions,\n currentSpokenLanguage: languageCode,\n };\n resolve(languageCode);\n } else {\n reject(payload);\n }\n };\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.SPOKEN_LANGUAGE_UPDATE,\n voiceaListenerLanguageUpdate\n );\n\n // @ts-ignore\n this.webex.internal.voicea.setSpokenLanguage(language);\n } catch (error) {\n LoggerProxy.logger.error(`Meeting:index#setSpokenLanguage --> ${error}`);\n\n reject(error);\n }\n });\n }\n\n /**\n * This method will enable the transcription for the current meeting if the meeting has enabled/supports Webex Assistant\n * @param {Object} options object with spokenlanguage setting\n * @public\n * @returns {Promise<void>} a promise to open the WebSocket connection\n */\n public async startTranscription(options?: {spokenLanguage?: string}) {\n if (this.isJoined()) {\n LoggerProxy.logger.info(\n 'Meeting:index#startTranscription --> Attempting to enable transcription!'\n );\n\n try {\n if (!this.areVoiceaEventsSetup) {\n this.setUpVoiceaListeners();\n }\n\n // @ts-ignore\n await this.webex.internal.voicea.turnOnCaptions(options?.spokenLanguage);\n } catch (error) {\n LoggerProxy.logger.error(`Meeting:index#startTranscription --> ${error}`);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.RECEIVE_TRANSCRIPTION_FAILURE, {\n correlation_id: this.correlationId,\n reason: error.message,\n stack: error.stack,\n });\n }\n } else {\n LoggerProxy.logger.error(\n `Meeting:index#startTranscription --> meeting joined : ${this.isJoined()}`\n );\n throw new Error('Meeting is not joined');\n }\n }\n\n /**\n * Callback called when a relay event is received from meeting LLM Connection\n * @param {RelayEvent} e Event object coming from LLM Connection\n * @private\n * @returns {void}\n */\n private processRelayEvent = (e: RelayEvent): void => {\n switch (e.data.relayType) {\n case REACTION_RELAY_TYPES.REACTION:\n if (\n // @ts-ignore - config coming from registerPlugin\n (this.config.receiveReactions || options.receiveReactions) &&\n this.isReactionsSupported()\n ) {\n const member = this.members.membersCollection.get(e.data.sender.participantId);\n if (!member) {\n // @ts-ignore -- fix type\n LoggerProxy.logger.warn(\n `Meeting:index#processRelayEvent --> Skipping handling of ${REACTION_RELAY_TYPES.REACTION} for ${this.id}. participantId ${e.data.sender.participantId} does not exist in membersCollection.`\n );\n break;\n }\n\n const {name} = member;\n const processedReaction: ProcessedReaction = {\n reaction: e.data.reaction,\n sender: {\n id: e.data.sender.participantId,\n name,\n },\n };\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'join',\n },\n EVENT_TRIGGERS.MEETING_RECEIVE_REACTIONS,\n processedReaction\n );\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * This method stops receiving transcription for the current meeting\n * @returns {void}\n */\n stopTranscription() {\n if (this.transcription) {\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.VOICEA_ANNOUNCEMENT,\n this.voiceaListenerCallbacks[VOICEAEVENTS.VOICEA_ANNOUNCEMENT]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.CAPTIONS_TURNED_ON,\n this.voiceaListenerCallbacks[VOICEAEVENTS.CAPTIONS_TURNED_ON]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.EVA_COMMAND,\n this.voiceaListenerCallbacks[VOICEAEVENTS.EVA_COMMAND]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.NEW_CAPTION,\n this.voiceaListenerCallbacks[VOICEAEVENTS.NEW_CAPTION]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.deregisterEvents();\n\n this.areVoiceaEventsSetup = false;\n this.triggerStopReceivingTranscriptionEvent();\n }\n }\n\n /**\n * triggers an event to notify that the user\n * will not receive any more transcription\n * @private\n * @returns{void}\n */\n private triggerStopReceivingTranscriptionEvent() {\n LoggerProxy.logger.info(`\n Meeting:index#stopReceivingTranscription -->\n closed voicea event listeners successfully.`);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'triggerStopReceivingTranscriptionEvent',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_RECEIVING_TRANSCRIPTION\n );\n }\n\n /**\n * This is a callback for the LLM event that is triggered when it comes online\n * This method in turn will trigger an event to the developers that the LLM is connected\n * @private\n * @memberof Meeting\n * @returns {null}\n */\n private handleLLMOnline = (): void => {\n // @ts-ignore\n this.webex.internal.llm.off('online', this.handleLLMOnline);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'handleLLMOnline',\n },\n EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED,\n undefined\n );\n };\n\n /**\n * Specify joining via audio (option: pstn), video, screenshare\n * @param {JoinOptions} options A configurable options object for joining a meeting\n * @returns {Promise} the join response\n * @public\n * @memberof Meeting\n * Scenario A: Joining own claimed personal meeting room\n * Scenario B: Joining other's claimed personal meeting room, do pass pin (if desired to join as host, or nullify), do pass moderator\n * Scenario C: Joining an unclaimed personal meeting room, -do not- pass pin or moderator on first try, -do- pass pin and moderator\n * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop\n * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)\n */\n public async join(options: any = {}) {\n // @ts-ignore - fix type\n if (!this.webex.meetings.registered) {\n const errorMessage = 'Meeting:index#join --> Device not registered';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(errorMessage);\n\n return Promise.reject(error);\n }\n\n // If a join request is being processed, refer to the deferred promise.\n if (this.deferJoin) {\n return this.deferJoin;\n }\n\n // Scope-up the resolve/reject methods for handling within join().\n let joinFailed;\n let joinSuccess;\n\n // Create a deferred promise for a consistent resolve value from utils.\n // This also prevents redundant API calls.\n this.deferJoin = new Promise((resolve, reject) => {\n joinFailed = reject;\n joinSuccess = resolve;\n });\n\n if (options.correlationId) {\n this.setCorrelationId(options.correlationId);\n LoggerProxy.logger.log(\n `Meeting:index#join --> Using a new correlation id from app ${this.correlationId}`\n );\n }\n\n if (!this.hasJoinedOnce) {\n this.hasJoinedOnce = true;\n } else if (!options.correlationId) {\n LoggerProxy.logger.log(\n `Meeting:index#join --> Generating a new correlation id for meeting ${this.id}`\n );\n LoggerProxy.logger.log(\n `Meeting:index#join --> Previous correlation id ${this.correlationId}`\n );\n this.setCorrelationId(uuid.v4());\n LoggerProxy.logger.log(`Meeting:index#join --> New correlation id ${this.correlationId}`);\n }\n\n if (options.rejoin) {\n this.meetingFiniteStateMachine.reset();\n }\n\n // send client.call.initiated unless told not to\n if (options.sendCallInitiated !== false) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.initiated',\n payload: {\n trigger: this.callStateForMetrics.joinTrigger || 'user-interaction',\n isRoapCallEnabled: true,\n pstnAudioType: options?.pstnAudioType,\n },\n options: {meetingId: this.id},\n });\n }\n\n LoggerProxy.logger.log('Meeting:index#join --> Joining a meeting');\n\n if (this.meetingFiniteStateMachine.state === MEETING_STATE_MACHINE.STATES.ENDED) {\n this.meetingFiniteStateMachine.reset();\n }\n if (this.meetingFiniteStateMachine.state !== MEETING_STATE_MACHINE.STATES.RINGING) {\n this.meetingFiniteStateMachine.ring(_JOIN_);\n }\n\n // TODO: does this really need to be here?\n if (options.resourceId && this.destination && options.resourceId === this.destination) {\n this.wirelessShare = true;\n }\n\n if (options.meetingQuality) {\n if (typeof options.meetingQuality === 'string') {\n if (!QUALITY_LEVELS[options.meetingQuality]) {\n const errorMessage = `Meeting:index#join --> ${options.meetingQuality} not defined`;\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(errorMessage);\n\n joinFailed(error);\n this.deferJoin = undefined;\n\n return Promise.reject(error);\n }\n\n this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);\n }\n\n if (typeof options.meetingQuality === 'object') {\n if (!QUALITY_LEVELS[options.meetingQuality.remote]) {\n const errorMessage = `Meeting:index#join --> ${options.meetingQuality.remote} not defined`;\n\n LoggerProxy.logger.error(errorMessage);\n\n const error = new Error(errorMessage);\n\n joinFailed(error);\n this.deferJoin = undefined;\n\n return Promise.reject(new Error(errorMessage));\n }\n\n if (options.meetingQuality.remote) {\n this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);\n }\n }\n }\n\n this.isMultistream = !!options.enableMultistream;\n\n try {\n // refresh the permission token if its about to expire in 10sec\n await this.checkAndRefreshPermissionToken(\n MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC,\n MEETING_PERMISSION_TOKEN_REFRESH_REASON\n );\n } catch (error) {\n LoggerProxy.logger.error('Meeting:index#join --> Failed to refresh permission token:', error);\n\n if (\n error instanceof CaptchaError ||\n error instanceof PasswordError ||\n error instanceof PermissionError\n ) {\n this.meetingFiniteStateMachine.fail(error);\n\n // Upload logs on refreshpermissionToken refresh Failure\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'join',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n joinFailed(error);\n\n this.deferJoin = undefined;\n\n // if refresh permission token requires captcha, password or permission, we are throwing the errors\n // and bubble it up to client\n return Promise.reject(error);\n }\n }\n\n return MeetingUtil.joinMeetingOptions(this, options)\n .then((join) => {\n this.meetingFiniteStateMachine.join();\n this.setupLocusMediaRequest();\n\n // @ts-ignore\n this.webex.internal.device.meetingStarted();\n\n LoggerProxy.logger.log('Meeting:index#join --> Success');\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.JOIN_SUCCESS, {\n correlation_id: this.correlationId,\n });\n\n joinSuccess(join);\n\n this.deferJoin = undefined;\n\n return join;\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n LoggerProxy.logger.error('Meeting:index#join --> Failed', error);\n\n // TODO: change this to error codes and pre defined dictionary\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.JOIN_FAILURE, {\n correlation_id: this.correlationId,\n reason: error.error?.message,\n stack: error.stack,\n });\n\n // Upload logs on join Failure\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'join',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n joinFailed(error);\n\n this.deferJoin = undefined;\n\n return Promise.reject(error);\n })\n .then((join) => {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.enableAutomaticLLM) {\n // @ts-ignore\n this.webex.internal.llm.on('online', this.handleLLMOnline);\n this.updateLLMConnection()\n .catch((error) => {\n LoggerProxy.logger.error(\n 'Meeting:index#join --> Transcription Socket Connection Failed',\n error\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LLM_CONNECTION_AFTER_JOIN_FAILURE, {\n correlation_id: this.correlationId,\n reason: error?.message,\n stack: error.stack,\n });\n })\n .then(() => {\n LoggerProxy.logger.info(\n 'Meeting:index#join --> Transcription Socket Connection Success'\n );\n });\n }\n\n return join;\n });\n }\n\n /**\n * Connects to low latency mercury and reconnects if the address has changed\n * It will also disconnect if called when the meeting has ended\n * @param {String} datachannelUrl\n * @returns {Promise}\n */\n async updateLLMConnection() {\n // @ts-ignore - Fix type\n const {url, info: {datachannelUrl, practiceSessionDatachannelUrl} = {}} = this.locusInfo;\n\n const isJoined = this.isJoined();\n\n // webinar panelist should use new data channel in practice session\n const dataChannelUrl =\n this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl\n ? practiceSessionDatachannelUrl\n : datachannelUrl;\n\n // @ts-ignore - Fix type\n if (this.webex.internal.llm.isConnected()) {\n if (\n // @ts-ignore - Fix type\n url === this.webex.internal.llm.getLocusUrl() &&\n // @ts-ignore - Fix type\n dataChannelUrl === this.webex.internal.llm.getDatachannelUrl() &&\n isJoined\n ) {\n return undefined;\n }\n // @ts-ignore - Fix type\n await this.webex.internal.llm.disconnectLLM(\n isJoined\n ? {\n code: 3050,\n reason: 'done (permanent)',\n }\n : undefined\n );\n // @ts-ignore - Fix type\n this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);\n }\n\n if (!isJoined) {\n return undefined;\n }\n\n // @ts-ignore - Fix type\n return this.webex.internal.llm\n .registerAndConnect(url, dataChannelUrl)\n .then((registerAndConnectResult) => {\n // @ts-ignore - Fix type\n this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);\n // @ts-ignore - Fix type\n this.webex.internal.llm.on('event:relay.event', this.processRelayEvent);\n LoggerProxy.logger.info(\n 'Meeting:index#updateLLMConnection --> enabled to receive relay events!'\n );\n\n return Promise.resolve(registerAndConnectResult);\n });\n }\n\n /**\n * Use phone for meeting audio\n * @param {String} phoneNumber If provided, it will dial-out using this number. If not provided, dial-in will be used\n * @returns {Promise} Resolves once the dial-in or dial-out request has completed, or rejects if it failed\n * @public\n * @memberof Meeting\n */\n public usePhoneAudio(phoneNumber: string) {\n if (!phoneNumber) {\n return this.dialInPstn();\n }\n\n return this.dialOutPstn(phoneNumber);\n }\n\n /**\n * Determines if the given pstnStatus is in a state which implies the phone is provisioned\n * @param {String} pstnStatus\n * @returns {Boolean}\n * @private\n * @memberof Meeting\n */\n private isPhoneProvisioned(pstnStatus: string) {\n return [PSTN_STATUS.JOINED, PSTN_STATUS.CONNECTED, PSTN_STATUS.SUCCESS].includes(pstnStatus);\n }\n\n /**\n * Enable dial-in for audio\n * @returns {Promise} Resolves once the dial-in request has completed, or rejects if it failed\n * @private\n * @memberof Meeting\n */\n private dialInPstn() {\n if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return Promise.resolve(); // prevent multiple dial in devices from being provisioned\n this.pstnCorrelationId = uuid.v4();\n\n const {pstnCorrelationId, locusUrl} = this;\n\n if (!this.dialInUrl) this.dialInUrl = `dialin:///${uuid.v4()}`;\n\n return (\n this.meetingRequest\n // @ts-ignore\n .dialIn({\n correlationId: pstnCorrelationId,\n dialInUrl: this.dialInUrl,\n locusUrl,\n clientUrl: this.deviceUrl,\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_DIAL_IN_FAILURE, {\n correlation_id: this.correlationId,\n dial_in_url: this.dialInUrl,\n dial_in_correlation_id: pstnCorrelationId,\n locus_id: locusUrl.split('/').pop(),\n client_url: this.deviceUrl,\n reason: error.error?.message,\n stack: error.stack,\n });\n\n if (this.pstnCorrelationId === pstnCorrelationId) {\n this.pstnCorrelationId = undefined;\n }\n\n return Promise.reject(error);\n })\n );\n }\n\n /**\n * Enable dial-out for audio\n * @param {String} phoneNumber Phone number to dial out to\n * @returns {Promise} Resolves once the dial-out request has completed (it doesn't wait for the user to answer the phone), or rejects if it failed\n * @private\n * @memberof Meeting\n */\n private dialOutPstn(phoneNumber: string) {\n if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return Promise.resolve(); // prevent multiple dial out devices from being provisioned\n this.pstnCorrelationId = uuid.v4();\n\n const {locusUrl, pstnCorrelationId} = this;\n\n if (!this.dialOutUrl) this.dialOutUrl = `dialout:///${uuid.v4()}`;\n\n return (\n this.meetingRequest\n // @ts-ignore\n .dialOut({\n correlationId: pstnCorrelationId,\n dialOutUrl: this.dialOutUrl,\n phoneNumber,\n locusUrl,\n clientUrl: this.deviceUrl,\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_DIAL_OUT_FAILURE, {\n correlation_id: this.correlationId,\n dial_out_url: this.dialOutUrl,\n dial_out_correlation_id: pstnCorrelationId,\n locus_id: locusUrl.split('/').pop(),\n client_url: this.deviceUrl,\n reason: error.error?.message,\n stack: error.stack,\n });\n\n if (this.pstnCorrelationId === pstnCorrelationId) {\n this.pstnCorrelationId = undefined;\n }\n\n return Promise.reject(error);\n })\n );\n }\n\n /**\n * Disconnect meeting audio via phone.\n * @returns {Promise} Resolves once the phone audio disconnection has completed\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public disconnectPhoneAudio() {\n const correlationToClear = this.pstnCorrelationId;\n\n return Promise.all([\n this.isPhoneProvisioned(this.dialInDeviceStatus)\n ? MeetingUtil.disconnectPhoneAudio(this, this.dialInUrl)\n : Promise.resolve(),\n this.isPhoneProvisioned(this.dialOutDeviceStatus)\n ? MeetingUtil.disconnectPhoneAudio(this, this.dialOutUrl)\n : Promise.resolve(),\n ]).then(() => {\n if (this.pstnCorrelationId === correlationToClear) {\n this.pstnCorrelationId = undefined;\n }\n });\n }\n\n /**\n * Moves the call to the specified resourceId\n * @param {String} resourceId\n * @returns {Promise} once the move has been completed\n * @public\n * @memberof Meeting\n */\n public moveTo(resourceId: string) {\n if (!resourceId) {\n throw new ParameterError('Cannot move call without a resourceId.');\n }\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.capabilities',\n payload: {\n mediaCapabilities: {\n rx: {\n audio: false,\n share: true,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n tx: {\n audio: false,\n share: false,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n },\n },\n options: {meetingId: this.id},\n });\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.move-media',\n options: {meetingId: this.id},\n });\n\n this.locusInfo.once(LOCUSINFO.EVENTS.SELF_OBSERVING, async () => {\n // Clean up the camera , microphone stream and re initiate it\n\n try {\n if (this.screenShareFloorState === ScreenShareFloorStatus.GRANTED) {\n await this.releaseScreenShareFloor();\n }\n const mediaSettings = {\n mediaDirection: {\n sendVideo: false,\n receiveVideo: false,\n sendAudio: false,\n receiveAudio: false,\n sendShare: false,\n receiveShare: true,\n },\n };\n\n this.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);\n this.mediaProperties.unsetRemoteMedia();\n\n // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting\n // once the device answers we close the old connection and create new media server connection with only share enabled\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n await this.closeRemoteStreams();\n await this.closePeerConnections();\n this.cleanupLocalStreams();\n this.unsetRemoteStreams();\n this.unsetPeerConnections();\n this.reconnectionManager.cleanUp();\n\n await this.addMedia({\n audioEnabled: false,\n videoEnabled: false,\n shareVideoEnabled: true,\n });\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_TO_SUCCESS);\n this.isMoveToInProgress = false;\n } catch (error) {\n LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_TO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n this.isMoveToInProgress = false;\n }\n });\n\n LoggerProxy.logger.info(\n 'Meeting:index#moveTo --> Initated moved to using resourceId',\n resourceId\n );\n\n // TODO: Check with locus if SELF_OBSERVING event would ever be not emitted\n // If yes, introduce a timeout mechanism\n this.isMoveToInProgress = true;\n\n return MeetingUtil.joinMeetingOptions(this, {resourceId, moveToResource: true})\n .then(() => {\n this.meetingFiniteStateMachine.join();\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_TO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);\n this.isMoveToInProgress = false;\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Moves the call from the specified resourceId, back to computer\n * @param {String} resourceId\n * @returns {Promise} once the move has been completed\n * @public\n * @memberof Meeting\n */\n public moveFrom(resourceId: string) {\n // On moveFrom ask the developer to re capture it moveFrom then updateMedia\n if (!resourceId) {\n throw new ParameterError('Cannot move call without a resourceId.');\n }\n const oldCorrelationId = this.correlationId;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.move-media',\n options: {meetingId: this.id},\n });\n\n return MeetingUtil.joinMeetingOptions(this)\n .then(() =>\n MeetingUtil.leaveMeeting(this, {\n resourceId,\n correlationId: oldCorrelationId,\n moveMeeting: true,\n }).then(() => {\n this.resourceId = '';\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_FROM_SUCCESS);\n })\n )\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_FROM_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Handles ROAP_FAILURE event from the webrtc media connection\n *\n * @param {Error} error\n * @returns {void}\n */\n handleRoapFailure = (error) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const sendBehavioralMetric = (metricName, error, correlationId) => {\n const data = {\n code: error.code,\n correlation_id: correlationId,\n reason: error.message,\n stack: error.stack,\n };\n const metadata = {\n type: error.cause?.name || error.name,\n };\n\n Metrics.sendBehavioralMetric(metricName, data, metadata);\n };\n\n if (error instanceof Errors.SdpOfferCreationError) {\n sendBehavioralMetric(BEHAVIORAL_METRICS.PEERCONNECTION_FAILURE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.local-sdp-generated',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n } else if (error instanceof Errors.SdpOfferHandlingError) {\n sendBehavioralMetric(BEHAVIORAL_METRICS.PEERCONNECTION_FAILURE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n } else if (error instanceof Errors.SdpAnswerHandlingError) {\n sendBehavioralMetric(BEHAVIORAL_METRICS.PEERCONNECTION_FAILURE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n\n if (this.deferSDPAnswer) {\n clearTimeout(this.sdpResponseTimer);\n this.sdpResponseTimer = undefined;\n\n this.deferSDPAnswer.reject();\n }\n } else if (error instanceof Errors.SdpError) {\n // this covers also the case of Errors.IceGatheringError which extends Errors.SdpError\n sendBehavioralMetric(BEHAVIORAL_METRICS.INVALID_ICE_CANDIDATE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.local-sdp-generated',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n }\n };\n\n /**\n * Handles an incoming Roap message\n * @internal\n * @param {RoapMessage} roapMessage roap message\n * @returns {undefined}\n */\n public roapMessageReceived = (roapMessage: RoapMessage) => {\n const mediaServer =\n roapMessage.messageType === 'ANSWER'\n ? MeetingsUtil.getMediaServer(roapMessage.sdp)\n : undefined;\n\n const mediaServerIp =\n roapMessage.messageType === 'ANSWER'\n ? MeetingsUtil.getMediaServerIp(roapMessage.sdp)\n : undefined;\n\n if (this.isMultistream && mediaServer && mediaServer !== 'homer') {\n throw new MultistreamNotSupportedError(\n `Client asked for multistream backend (Homer), but got ${mediaServer} instead`\n );\n }\n this.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);\n\n if (mediaServer) {\n this.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;\n }\n\n if (this.isMultistream && mediaServerIp) {\n this.mediaServerIp = mediaServerIp;\n }\n };\n\n /**\n * This function makes sure we send the right metrics when local and remote SDPs are processed/generated\n *\n * @returns {undefined}\n */\n setupSdpListeners = () => {\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.REMOTE_SDP_ANSWER_PROCESSED,\n () => {\n // @ts-ignore\n const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n options: {meetingId: this.id},\n });\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_OFFER_TO_ANSWER_LATENCY, {\n correlation_id: this.correlationId,\n latency: cdl.getLocalSDPGenRemoteSDPRecv(),\n meetingId: this.id,\n });\n\n if (this.deferSDPAnswer) {\n this.deferSDPAnswer.resolve();\n clearTimeout(this.sdpResponseTimer);\n this.sdpResponseTimer = undefined;\n }\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.LOCAL_SDP_OFFER_GENERATED,\n () => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.local-sdp-generated',\n options: {meetingId: this.id},\n });\n\n // Instantiate Defer so that the SDP offer/answer exchange timeout can start, see waitForRemoteSDPAnswer()\n this.deferSDPAnswer = new Defer();\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.LOCAL_SDP_ANSWER_GENERATED,\n () => {\n // we are sending \"remote-sdp-received\" only after we've generated the answer - this indicates that we've fully processed that incoming offer\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n options: {meetingId: this.id},\n });\n }\n );\n };\n\n setupMediaConnectionListeners = () => {\n this.setupSdpListeners();\n\n this.mediaProperties.webrtcMediaConnection.on(MediaConnectionEventNames.ROAP_STARTED, () => {\n this.isRoapInProgress = true;\n });\n\n this.mediaProperties.webrtcMediaConnection.on(MediaConnectionEventNames.ROAP_DONE, () => {\n this.mediaNegotiatedEvent();\n this.isRoapInProgress = false;\n this.processNextQueuedMediaUpdate();\n });\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ROAP_FAILURE,\n this.handleRoapFailure\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND,\n (event) => {\n const LOG_HEADER = `Meeting:index#setupMediaConnectionListeners.ROAP_MESSAGE_TO_SEND --> correlationId=${this.correlationId}`;\n\n switch (event.roapMessage.messageType) {\n case 'OK':\n logRequest(\n this.roap.sendRoapOK({\n seq: event.roapMessage.seq,\n mediaId: this.mediaId,\n correlationId: this.correlationId,\n }),\n {\n logText: `${LOG_HEADER} Roap OK`,\n }\n );\n break;\n\n case 'OFFER':\n logRequest(\n this.roap\n .sendRoapMediaRequest({\n sdp: event.roapMessage.sdp,\n seq: event.roapMessage.seq,\n tieBreaker: event.roapMessage.tieBreaker,\n meeting: this, // or can pass meeting ID\n })\n .then(({roapAnswer}) => {\n if (roapAnswer) {\n LoggerProxy.logger.log(`${LOG_HEADER} received Roap ANSWER in http response`);\n\n this.roapMessageReceived(roapAnswer);\n }\n }),\n {\n logText: `${LOG_HEADER} Roap Offer`,\n }\n ).catch((error) => {\n const multistreamNotSupported = error instanceof MultistreamNotSupportedError;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: multistreamNotSupported,\n errors: [\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode(\n {\n clientErrorCode: multistreamNotSupported\n ? CALL_DIAGNOSTIC_CONFIG.MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE\n : CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE,\n }\n ),\n ],\n },\n options: {meetingId: this.id, rawError: error},\n });\n\n this.deferSDPAnswer.reject(error);\n clearTimeout(this.sdpResponseTimer);\n this.sdpResponseTimer = undefined;\n });\n break;\n\n case 'ANSWER':\n logRequest(\n this.roap.sendRoapAnswer({\n sdp: event.roapMessage.sdp,\n seq: event.roapMessage.seq,\n mediaId: this.mediaId,\n correlationId: this.correlationId,\n }),\n {\n logText: `${LOG_HEADER} Roap Answer`,\n }\n ).catch((error) => {\n const metricName = BEHAVIORAL_METRICS.ROAP_ANSWER_FAILURE;\n const data = {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n };\n const metadata = {\n type: error.name,\n };\n\n Metrics.sendBehavioralMetric(metricName, data, metadata);\n });\n break;\n\n case 'ERROR':\n if (\n event.roapMessage.errorType === ErrorType.CONFLICT ||\n event.roapMessage.errorType === ErrorType.DOUBLECONFLICT\n ) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_GLARE_CONDITION, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n sequence: event.roapMessage.seq,\n });\n }\n logRequest(\n this.roap.sendRoapError({\n seq: event.roapMessage.seq,\n errorType: event.roapMessage.errorType,\n mediaId: this.mediaId,\n correlationId: this.correlationId,\n }),\n {\n logText: `${LOG_HEADER} Roap Error (${event.roapMessage.errorType})`,\n }\n );\n break;\n\n default:\n LoggerProxy.logger.error(\n `${LOG_HEADER} Unsupported message type: ${event.roapMessage.messageType}`\n );\n break;\n }\n }\n );\n\n // eslint-disable-next-line no-param-reassign\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.REMOTE_TRACK_ADDED,\n (event) => {\n LoggerProxy.logger.log(\n `Meeting:index#setupMediaConnectionListeners --> REMOTE_TRACK_ADDED event received for webrtcMediaConnection: ${JSON.stringify(\n event\n )}`\n );\n\n if (event.track) {\n const mediaTrack = event.track;\n const remoteStream = new RemoteStream(MediaUtil.createMediaStream([mediaTrack]));\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n let eventType;\n\n switch (event.type) {\n case RemoteTrackType.AUDIO:\n eventType = EVENT_TYPES.REMOTE_AUDIO;\n this.mediaProperties.setRemoteAudioStream(remoteStream);\n break;\n case RemoteTrackType.VIDEO:\n eventType = EVENT_TYPES.REMOTE_VIDEO;\n this.mediaProperties.setRemoteVideoStream(remoteStream);\n break;\n case RemoteTrackType.SCREENSHARE_VIDEO:\n eventType = EVENT_TYPES.REMOTE_SHARE;\n this.mediaProperties.setRemoteShareStream(remoteStream);\n break;\n default: {\n LoggerProxy.logger.log(\n 'Meeting:index#setupMediaConnectionListeners --> unexpected track'\n );\n }\n }\n\n if (eventType && mediaTrack) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupRemoteTrackListener:MediaConnectionEventNames.REMOTE_TRACK_ADDED',\n },\n EVENT_TRIGGERS.MEDIA_READY,\n {\n type: eventType,\n stream: remoteStream.outputStream,\n }\n );\n }\n }\n }\n );\n\n this.connectionStateHandler = new ConnectionStateHandler(\n this.mediaProperties.webrtcMediaConnection\n );\n\n this.connectionStateHandler.on(ConnectionStateEvent.stateChanged, (event) => {\n const connectionFailed = () => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.CONNECTION_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n networkStatus: this.networkStatus,\n hasMediaConnectionConnectedAtLeastOnce: this.hasMediaConnectionConnectedAtLeastOnce,\n });\n\n if (this.hasMediaConnectionConnectedAtLeastOnce) {\n // we know the media connection failed and browser will not attempt to recover it any more\n // so reset the timer as it's not needed anymore, we want to reconnect immediately\n this.reconnectionManager.resetReconnectionTimer();\n\n this.reconnect({networkDisconnect: true});\n\n this.uploadLogs({\n file: 'peer-connection-manager/index',\n function: 'connectionFailed',\n });\n }\n };\n\n LoggerProxy.logger.info(\n `Meeting:index#setupMediaConnectionListeners --> correlationId=${this.correlationId} connection state changed to ${event.state}`\n );\n\n // @ts-ignore\n const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;\n switch (event.state) {\n case ConnectionState.Connecting:\n if (!this.hasMediaConnectionConnectedAtLeastOnce) {\n // Only send CA event for join flow if we haven't successfully connected media yet\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.ice.start',\n options: {\n meetingId: this.id,\n },\n });\n }\n break;\n case ConnectionState.Connected:\n if (!this.hasMediaConnectionConnectedAtLeastOnce) {\n // Only send CA event for join flow if we haven't successfully connected media yet\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.ice.end',\n payload: {\n canProceed: true,\n icePhase: 'JOIN_MEETING_FINAL',\n },\n options: {\n meetingId: this.id,\n },\n });\n }\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.CONNECTION_SUCCESS, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n latency: cdl.getICESetupTime(),\n });\n this.setNetworkStatus(NETWORK_STATUS.CONNECTED);\n this.reconnectionManager.iceReconnected();\n this.statsAnalyzer.startAnalyzer(this.mediaProperties.webrtcMediaConnection);\n this.hasMediaConnectionConnectedAtLeastOnce = true;\n break;\n case ConnectionState.Disconnected:\n this.setNetworkStatus(NETWORK_STATUS.DISCONNECTED);\n this.reconnectionManager.waitForIceReconnect().catch(() => {\n LoggerProxy.logger.info(\n 'Meeting:index#setupMediaConnectionListeners --> state DISCONNECTED, automatic reconnection timed out.'\n );\n\n connectionFailed();\n });\n break;\n case ConnectionState.Failed:\n connectionFailed();\n break;\n default:\n break;\n }\n });\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ACTIVE_SPEAKERS_CHANGED,\n (csis) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupMediaConnectionListeners',\n },\n EVENT_TRIGGERS.ACTIVE_SPEAKER_CHANGED,\n {\n memberIds: csis\n // @ts-ignore\n .map((csi) => this.members.findMemberByCsi(csi)?.id)\n .filter((item) => item !== undefined),\n }\n );\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.VIDEO_SOURCES_COUNT_CHANGED,\n (numTotalSources, numLiveSources, mediaContent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupMediaConnectionListeners',\n },\n EVENT_TRIGGERS.REMOTE_VIDEO_SOURCE_COUNT_CHANGED,\n {\n numTotalSources,\n numLiveSources,\n mediaContent,\n }\n );\n\n if (mediaContent === MediaContent.Main) {\n this.mediaRequestManagers.video.setNumCurrentSources(numTotalSources, numLiveSources);\n }\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.AUDIO_SOURCES_COUNT_CHANGED,\n (numTotalSources, numLiveSources, mediaContent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupMediaConnectionListeners',\n },\n EVENT_TRIGGERS.REMOTE_AUDIO_SOURCE_COUNT_CHANGED,\n {\n numTotalSources,\n numLiveSources,\n mediaContent,\n }\n );\n }\n );\n\n this.iceCandidateErrors.clear();\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ICE_CANDIDATE_ERROR,\n (event) => {\n const {errorCode} = event.error;\n let {errorText} = event.error;\n\n if (\n errorCode === 600 &&\n errorText === 'Address not associated with the desired network interface.'\n ) {\n return;\n }\n\n if (errorText.endsWith('.')) {\n errorText = errorText.slice(0, -1);\n }\n\n errorText = errorText.toLowerCase();\n errorText = errorText.replace(/ /g, '_');\n\n const error = `${errorCode}_${errorText}`;\n\n const count = this.iceCandidateErrors.get(error) || 0;\n\n this.iceCandidateErrors.set(error, count + 1);\n }\n );\n\n this.iceCandidatesCount = 0;\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ICE_CANDIDATE,\n (event) => {\n if (event.candidate && event.candidate.candidate && event.candidate.candidate.length > 0) {\n this.iceCandidatesCount += 1;\n }\n }\n );\n };\n\n /**\n * Registers for all required StatsAnalyzer events\n * @private\n * @returns {void}\n * @memberof Meetings\n */\n setupStatsAnalyzerEventHandlers = () => {\n this.statsAnalyzer.on(StatsAnalyzerEventNames.MEDIA_QUALITY, (event) => {\n // Add IP address from geoHintInfo if missing.\n if (event.data.intervalMetadata.maskedPeerReflexiveIP === '0.0.0.0') {\n // @ts-ignore fix type\n const clientAddressFromGeoHint = this.webex.meetings.geoHintInfo?.clientAddress;\n if (clientAddressFromGeoHint) {\n event.data.intervalMetadata.maskedPeerReflexiveIP =\n CallDiagnosticUtils.anonymizeIPAddress(clientAddressFromGeoHint);\n }\n }\n\n // Count members that are in the meeting.\n const {members} = this.getMembers().membersCollection;\n event.data.intervalMetadata.meetingUserCount = Object.values(members).filter(\n (member: Member) => member.isInMeeting\n ).length;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitMQE({\n name: 'client.mediaquality.event',\n options: {\n meetingId: this.id,\n networkType: this.statsAnalyzer.getNetworkType(),\n },\n payload: {\n intervals: [event.data],\n },\n });\n });\n\n this.statsAnalyzer.on(StatsAnalyzerEventNames.LOCAL_MEDIA_STARTED, (data) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n data\n );\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.transmitStart) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.tx.start',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.localShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n this.shareCAEventSentStatus.transmitStart = true;\n }\n }\n });\n this.statsAnalyzer.on(StatsAnalyzerEventNames.LOCAL_MEDIA_STOPPED, (data) => {\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.transmitStop) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.tx.stop',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.localShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n this.shareCAEventSentStatus.transmitStop = true;\n }\n }\n });\n this.statsAnalyzer.on(StatsAnalyzerEventNames.REMOTE_MEDIA_STARTED, (data) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n data\n );\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.receiveStart) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.rx.start',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.remoteShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.render.start',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.remoteShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n this.shareCAEventSentStatus.receiveStart = true;\n }\n }\n });\n this.statsAnalyzer.on(StatsAnalyzerEventNames.REMOTE_MEDIA_STOPPED, (data) => {\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.receiveStop) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.rx.stop',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.remoteShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.render.stop',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.remoteShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n this.shareCAEventSentStatus.receiveStop = true;\n }\n }\n });\n };\n\n getMediaConnectionDebugId() {\n return `MC-${this.id.substring(0, 4)}`;\n }\n\n /**\n * Creates a webrtc media connection and publishes streams to it\n *\n * @param {Object} turnServerInfo TURN server information\n * @param {BundlePolicy} [bundlePolicy] Bundle policy settings\n * @param {AddMediaOptions} [options] Options for enabling/disabling audio/video\n * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}\n */\n private async createMediaConnection(\n turnServerInfo?: TurnServerInfo,\n bundlePolicy?: BundlePolicy\n ) {\n this.rtcMetrics = this.isMultistream\n ? // @ts-ignore\n new RtcMetrics(this.webex, {meetingId: this.id}, this.correlationId)\n : undefined;\n\n // ongoing reachability checks slow down new media connections especially on Firefox, so we stop them\n this.getWebexObject().meetings.reachability.stopReachability();\n\n const mc = Media.createMediaConnection(\n this.isMultistream,\n this.getMediaConnectionDebugId(),\n this.id,\n {\n rtcMetrics: this.rtcMetrics,\n mediaProperties: this.mediaProperties,\n remoteQualityLevel: this.mediaProperties.remoteQualityLevel,\n // @ts-ignore - config coming from registerPlugin\n enableRtx: this.config.enableRtx,\n // @ts-ignore - config coming from registerPlugin\n enableExtmap: this.config.enableExtmap,\n turnServerInfo,\n bundlePolicy,\n // @ts-ignore - config coming from registerPlugin\n iceCandidatesTimeout: this.config.iceCandidatesGatheringTimeout,\n // @ts-ignore - config coming from registerPlugin\n disableAudioMainDtx: this.config.experimental.disableAudioMainDtx,\n // @ts-ignore - config coming from registerPlugin\n enableAudioTwcc: this.config.enableAudioTwccForMultistream,\n stopIceGatheringAfterFirstRelayCandidate:\n // @ts-ignore - config coming from registerPlugin\n this.config.stopIceGatheringAfterFirstRelayCandidate,\n }\n );\n\n this.mediaProperties.setMediaPeerConnection(mc);\n this.setupMediaConnectionListeners();\n\n if (this.isMultistream) {\n const [audioEnabled, videoEnabled, shareEnabled] = [\n this.mediaProperties.mediaDirection.sendAudio ||\n this.mediaProperties.mediaDirection.receiveAudio,\n this.mediaProperties.mediaDirection.sendVideo ||\n this.mediaProperties.mediaDirection.receiveVideo,\n this.mediaProperties.mediaDirection.sendShare ||\n this.mediaProperties.mediaDirection.receiveShare,\n ];\n\n this.sendSlotManager.createSlot(mc, MediaType.VideoMain, videoEnabled);\n this.sendSlotManager.createSlot(mc, MediaType.AudioMain, audioEnabled);\n this.sendSlotManager.createSlot(mc, MediaType.VideoSlides, shareEnabled);\n this.sendSlotManager.createSlot(mc, MediaType.AudioSlides, shareEnabled);\n }\n\n // publish the streams\n if (this.mediaProperties.audioStream) {\n this.setSendNamedMediaGroup(MediaType.AudioMain);\n await this.publishStream(MediaType.AudioMain, this.mediaProperties.audioStream);\n }\n if (this.mediaProperties.videoStream) {\n await this.publishStream(MediaType.VideoMain, this.mediaProperties.videoStream);\n }\n if (this.mediaProperties.shareVideoStream) {\n await this.publishStream(MediaType.VideoSlides, this.mediaProperties.shareVideoStream);\n }\n if (this.isMultistream && this.mediaProperties.shareAudioStream) {\n await this.publishStream(MediaType.AudioSlides, this.mediaProperties.shareAudioStream);\n }\n\n return mc;\n }\n\n /**\n * Listens for an event emitted by eventEmitter and emits it from the meeting object\n *\n * @private\n * @param {*} eventEmitter object from which to forward the event\n * @param {*} eventTypeToForward which event type to listen on and to forward\n * @param {string} meetingEventType event type to be used in the event emitted from the meeting object\n * @returns {void}\n */\n forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {\n eventEmitter.on(eventTypeToForward, (data) =>\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'addMedia',\n },\n meetingEventType,\n data\n )\n );\n }\n\n /**\n * Sets up all the references to local streams in this.mediaProperties before creating media connection\n * and before TURN discovery, so that the correct mute state is sent with TURN discovery roap messages.\n *\n * @private\n * @param {LocalStreams} localStreams\n * @returns {Promise<void>}\n */\n private async setUpLocalStreamReferences(localStreams: LocalStreams) {\n const setUpStreamPromises = [];\n\n if (localStreams?.microphone && localStreams?.microphone?.readyState !== 'ended') {\n setUpStreamPromises.push(this.setLocalAudioStream(localStreams.microphone));\n }\n if (localStreams?.camera && localStreams?.camera?.readyState !== 'ended') {\n setUpStreamPromises.push(this.setLocalVideoStream(localStreams.camera));\n }\n if (\n localStreams?.screenShare?.video &&\n localStreams?.screenShare?.video?.readyState !== 'ended'\n ) {\n setUpStreamPromises.push(this.setLocalShareVideoStream(localStreams.screenShare.video));\n }\n if (\n localStreams?.screenShare?.audio &&\n localStreams?.screenShare?.audio?.readyState !== 'ended'\n ) {\n setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));\n }\n\n try {\n await Promise.all(setUpStreamPromises);\n } catch (error) {\n LoggerProxy.logger.error(\n `Meeting:index#addMedia():setUpLocalStreamReferences --> Error , `,\n error\n );\n\n throw error;\n }\n }\n\n /**\n * Calls mediaProperties.waitForMediaConnectionConnected() and sends CA client.ice.end metric on failure\n *\n * @private\n * @returns {Promise<void>}\n */\n private async waitForMediaConnectionConnected(): Promise<void> {\n try {\n await this.mediaProperties.waitForMediaConnectionConnected();\n } catch (error) {\n const {iceConnected} = error;\n\n if (!this.hasMediaConnectionConnectedAtLeastOnce) {\n // Only send CA event for join flow if we haven't successfully connected media yet\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.ice.end',\n payload: {\n canProceed: !this.turnServerUsed, // If we haven't done turn tls retry yet we will proceed with join attempt\n icePhase: this.addMediaData.icePhaseCallback(),\n errors: [\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode(\n {\n clientErrorCode: CallDiagnosticUtils.generateClientErrorCodeForIceFailure({\n signalingState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.signalingState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc\n ?.signalingState ||\n 'unknown',\n iceConnected,\n turnServerUsed: this.turnServerUsed,\n unreachable:\n // @ts-ignore\n await this.webex.meetings.reachability\n .isWebexMediaBackendUnreachable()\n .catch(() => false),\n }),\n }\n ),\n ],\n },\n options: {\n meetingId: this.id,\n rawError: error,\n },\n });\n }\n\n const timedOutError = new Error(\n `Timed out waiting for media connection to be connected, correlationId=${this.correlationId}`\n );\n\n timedOutError.cause = error;\n\n throw timedOutError;\n }\n }\n\n /**\n * Enables statsAnalyser if config allows it\n *\n * @private\n * @returns {void}\n */\n private createStatsAnalyzer() {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.stats.enableStatsAnalyzer) {\n // @ts-ignore - config coming from registerPlugin\n this.networkQualityMonitor = new NetworkQualityMonitor(this.config.stats);\n this.statsAnalyzer = new StatsAnalyzer({\n // @ts-ignore - config coming from registerPlugin\n config: this.config.stats,\n networkQualityMonitor: this.networkQualityMonitor,\n isMultistream: this.isMultistream,\n });\n this.shareCAEventSentStatus = {\n transmitStart: false,\n transmitStop: false,\n receiveStart: false,\n receiveStop: false,\n };\n this.setupStatsAnalyzerEventHandlers();\n this.networkQualityMonitor.on(\n NetworkQualityEventNames.NETWORK_QUALITY,\n this.sendNetworkQualityEvent.bind(this)\n );\n }\n }\n\n /**\n * Returns a promise. This promise is created once the local sdp offer has been successfully created and is resolved\n * once the remote sdp answer has been received.\n *\n * @private\n * @returns {Promise<void>}\n */\n private async waitForRemoteSDPAnswer(): Promise<void> {\n const LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';\n\n if (!this.deferSDPAnswer) {\n LoggerProxy.logger.warn(`${LOG_HEADER} offer not created yet`);\n\n return Promise.reject(\n new Error('waitForRemoteSDPAnswer() called before local sdp offer created')\n );\n }\n\n const {deferSDPAnswer} = this;\n\n this.sdpResponseTimer = setTimeout(() => {\n LoggerProxy.logger.warn(\n `${LOG_HEADER} timeout! no REMOTE SDP ANSWER received within ${\n ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000\n } seconds`\n );\n\n const error = new Error('Timed out waiting for REMOTE SDP ANSWER');\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: false,\n errors: [\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({\n clientErrorCode: CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE,\n }),\n ],\n },\n options: {meetingId: this.id, rawError: error},\n });\n\n deferSDPAnswer.reject(error);\n }, ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);\n\n LoggerProxy.logger.info(`${LOG_HEADER} waiting for REMOTE SDP ANSWER...`);\n\n return deferSDPAnswer.promise;\n }\n\n /**\n * Calls establishMediaConnection with isForced = true to force turn discovery to happen\n *\n * @private\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @returns {Promise<void>}\n */\n private async retryEstablishMediaConnectionWithForcedTurnDiscovery(\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy\n ): Promise<void> {\n const LOG_HEADER =\n 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';\n\n try {\n await this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);\n } catch (err) {\n LoggerProxy.logger.error(\n `${LOG_HEADER} retry with TURN-TLS failed, media connection unable to connect, `,\n err\n );\n\n throw err;\n }\n }\n\n /**\n * Does relevant clean up before retrying to establish media connection\n * and performs the retry with forced turn discovery\n *\n * @private\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @returns {Promise<void>}\n */\n private async retryWithForcedTurnDiscovery(\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy\n ): Promise<void> {\n this.addMediaData.retriedWithTurnServer = true;\n const LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';\n\n await this.cleanUpBeforeRetryWithTurnServer();\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_MEDIA_RETRY, {\n correlation_id: this.correlationId,\n state: this.state,\n meetingState: this.meetingState,\n reason: 'forcingTurnTls',\n });\n\n if (this.state === MEETING_STATE.STATES.LEFT) {\n LoggerProxy.logger.info(\n `${LOG_HEADER} meeting state was LEFT after first attempt to establish media connection. Attempting to rejoin. `\n );\n await this.join({rejoin: true});\n }\n\n await this.retryEstablishMediaConnectionWithForcedTurnDiscovery(\n remoteMediaManagerConfig,\n bundlePolicy\n );\n }\n\n /**\n * If waitForMediaConnectionConnected() fails when we haven't done turn discovery then we\n * attempt to establish a media connection again, but this time using turn discovery. If we\n * used turn discovery on the first pass we do not attempt connection again.\n *\n * @private\n * @param {Error} error\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @returns {Promise<void>}\n */\n private async handleWaitForMediaConnectionConnectedError(\n error: Error,\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy\n ): Promise<void> {\n const LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->';\n\n // @ts-ignore - config coming from registerPlugin\n if (!this.turnServerUsed) {\n LoggerProxy.logger.info(\n `${LOG_HEADER} error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, `,\n error\n );\n\n await this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);\n } else {\n LoggerProxy.logger.error(\n `${LOG_HEADER} error waiting for media to connect using UDP, TCP and TURN-TLS`,\n error\n );\n\n throw new AddMediaFailed(error);\n }\n }\n\n /**\n * Performs TURN discovery as a separate call to the Locus /media API\n *\n * @param {boolean} isReconnecting\n * @param {boolean} isForced\n * @returns {Promise}\n */\n private async doTurnDiscovery(\n isReconnecting: boolean,\n isForced: boolean\n ): Promise<TurnDiscoveryResult> {\n // @ts-ignore\n const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitInternalEvent({\n name: 'internal.client.add-media.turn-discovery.start',\n });\n\n const turnDiscoveryResult = await this.roap.doTurnDiscovery(this, isReconnecting, isForced);\n\n this.turnDiscoverySkippedReason = turnDiscoveryResult?.turnDiscoverySkippedReason;\n this.turnServerUsed = !this.turnDiscoverySkippedReason;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitInternalEvent({\n name: 'internal.client.add-media.turn-discovery.end',\n });\n\n if (this.turnServerUsed && turnDiscoveryResult.turnServerInfo) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.TURN_DISCOVERY_LATENCY, {\n correlation_id: this.correlationId,\n latency: cdl.getTurnDiscoveryTime(),\n turnServerUsed: this.turnServerUsed,\n retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,\n });\n }\n\n return turnDiscoveryResult;\n }\n\n /**\n * Does TURN discovery, SDP offer/answer exhange, establishes ICE connection and DTLS handshake.\n *\n * @private\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @param {boolean} [isForced] - let isForced be true to do turn discovery regardless of reachability results\n * @param {TurnServerInfo} [turnServerInfo]\n * @returns {Promise<void>}\n */\n private async establishMediaConnection(\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy,\n isForced?: boolean,\n turnServerInfo?: TurnServerInfo\n ): Promise<void> {\n const LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';\n const isReconnecting =\n this.isMoveToInProgress || !!this.locusMediaRequest?.isConfluenceCreated();\n\n // We are forcing turn discovery if the case is moveTo and a turn server was used already\n if (this.isMoveToInProgress && this.turnServerUsed) {\n isForced = true;\n }\n\n try {\n if (!turnServerInfo) {\n ({turnServerInfo} = await this.doTurnDiscovery(isReconnecting, isForced));\n }\n\n const mc = await this.createMediaConnection(turnServerInfo, bundlePolicy);\n\n LoggerProxy.logger.info(\n `${LOG_HEADER} media connection created this.isMultistream=${this.isMultistream}`\n );\n\n if (this.isMultistream) {\n this.remoteMediaManager = new RemoteMediaManager(\n this.receiveSlotManager,\n this.mediaRequestManagers,\n remoteMediaManagerConfig\n );\n\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.AudioCreated,\n EVENT_TRIGGERS.REMOTE_MEDIA_AUDIO_CREATED\n );\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.InterpretationAudioCreated,\n EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED\n );\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.ScreenShareAudioCreated,\n EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED\n );\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.VideoLayoutChanged,\n EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED\n );\n\n await this.remoteMediaManager.start();\n }\n\n await mc.initiateOffer();\n\n await this.waitForRemoteSDPAnswer();\n\n this.handleMediaLogging(this.mediaProperties);\n } catch (error) {\n LoggerProxy.logger.error(`${LOG_HEADER} error establishing media connection, `, error);\n\n throw error;\n }\n\n try {\n await this.waitForMediaConnectionConnected();\n } catch (error) {\n await this.handleWaitForMediaConnectionConnectedError(\n error,\n remoteMediaManagerConfig,\n bundlePolicy\n );\n }\n }\n\n /**\n * Cleans up stats analyzer, peer connection, and turns off listeners\n *\n * @private\n * @returns {Promise<void>}\n */\n private async cleanUpOnAddMediaFailure(): Promise<void> {\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n\n this.statsAnalyzer = null;\n\n // when media fails, we want to upload a webrtc dump to see whats going on\n // this function is async, but returns once the stats have been gathered\n await this.forceSendStatsReport({callFrom: 'addMedia'});\n\n if (this.mediaProperties.webrtcMediaConnection) {\n this.closePeerConnections();\n this.unsetPeerConnections();\n }\n }\n\n /**\n * Cleans up stats analyzer, peer connection and other things before\n * we can create a new transcoded media connection\n *\n * @private\n * @returns {Promise<void>}\n */\n private async downgradeFromMultistreamToTranscoded(): Promise<void> {\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n this.statsAnalyzer = null;\n\n this.isMultistream = false;\n\n if (this.mediaProperties.webrtcMediaConnection) {\n // close peer connection, but don't reset mute state information, because we will want to use it on the retry\n this.closePeerConnections(false);\n\n this.mediaProperties.unsetPeerConnection();\n }\n\n this.locusMediaRequest?.downgradeFromMultistreamToTranscoded();\n\n this.createStatsAnalyzer();\n }\n\n /**\n * Sends stats report, closes peer connection and cleans up any media connection\n * related things before trying to establish media connection again with turn server\n *\n * @private\n * @returns {Promise<void>}\n */\n private async cleanUpBeforeRetryWithTurnServer(): Promise<void> {\n // when media fails, we want to upload a webrtc dump to see whats going on\n // this function is async, but returns once the stats have been gathered\n await this.forceSendStatsReport({callFrom: 'cleanUpBeforeRetryWithTurnServer'});\n\n if (this.mediaProperties.webrtcMediaConnection) {\n if (this.remoteMediaManager) {\n this.remoteMediaManager.stop();\n this.remoteMediaManager = null;\n }\n\n Object.values(this.mediaRequestManagers).forEach((mediaRequestManager) =>\n mediaRequestManager.reset()\n );\n\n this.receiveSlotManager.reset();\n this.mediaProperties.webrtcMediaConnection.close();\n this.sendSlotManager.reset();\n\n this.mediaProperties.unsetPeerConnection();\n }\n }\n\n private async cleanUpBeforeReconnection(): Promise<void> {\n try {\n // when media fails, we want to upload a webrtc dump to see whats going on\n // this function is async, but returns once the stats have been gathered\n await this.forceSendStatsReport({callFrom: 'cleanUpBeforeReconnection'});\n\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n } catch (error) {\n LoggerProxy.logger.error(\n 'Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ',\n error\n );\n }\n }\n\n /**\n * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls\n * to Locus /media API (these are used for sending Roap messages and updating audio/video mute status).\n *\n * @returns {void}\n */\n private setupLocusMediaRequest() {\n this.locusMediaRequest = new LocusMediaRequest(\n {\n correlationId: this.correlationId,\n meetingId: this.id,\n device: {\n url: this.deviceUrl,\n // @ts-ignore\n deviceType: this.config.deviceType,\n // @ts-ignore\n countryCode: this.webex.meetings.geoHintInfo?.countryCode,\n // @ts-ignore\n regionCode: this.webex.meetings.geoHintInfo?.regionCode,\n },\n preferTranscoding: !this.isMultistream,\n },\n {\n // @ts-ignore\n parent: this.webex,\n }\n );\n }\n\n /**\n * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.\n *\n * @param {AddMediaOptions} options\n * @returns {Promise<void>}\n * @public\n * @memberof Meeting\n */\n addMedia(options: AddMediaOptions = {}): Promise<void> {\n return this.addMediaInternal(\n () => (this.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY'),\n undefined,\n false,\n options\n );\n }\n\n /**\n * Internal version of addMedia() with some more arguments for finer control of its behavior\n *\n * @param {Function} icePhaseCallback - callback to determine the icePhase for CA \"client.ice.end\" failure events\n * @param {TurnServerInfo} turnServerInfo - TURN server information\n * @param {boolean} forceTurnDiscovery - if true, TURN discovery will be done\n * @param {AddMediaOptions} options - same as options of the public addMedia() method\n * @returns {Promise<void>}\n * @protected\n * @memberof Meeting\n */\n protected async addMediaInternal(\n icePhaseCallback: () => string,\n turnServerInfo: TurnServerInfo,\n forceTurnDiscovery,\n options: AddMediaOptions = {}\n ): Promise<void> {\n this.addMediaData.retriedWithTurnServer = false;\n this.addMediaData.icePhaseCallback = icePhaseCallback;\n\n this.hasMediaConnectionConnectedAtLeastOnce = false;\n const LOG_HEADER = 'Meeting:index#addMedia -->';\n LoggerProxy.logger.info(\n `${LOG_HEADER} called with: options=${JSON.stringify(\n options\n )}, turnServerInfo=${JSON.stringify(\n turnServerInfo\n )}, forceTurnDiscovery=${forceTurnDiscovery}`\n );\n\n if (options.allowMediaInLobby !== true && this.meetingState !== FULL_STATE.ACTIVE) {\n throw new MeetingNotActiveError();\n }\n\n if (MeetingUtil.isUserInLeftState(this.locusInfo)) {\n throw new UserNotJoinedError();\n }\n\n const {\n localStreams,\n audioEnabled = true,\n videoEnabled = true,\n shareAudioEnabled = true,\n shareVideoEnabled = true,\n remoteMediaManagerConfig,\n bundlePolicy = 'max-bundle',\n additionalMediaOptions = {},\n } = options;\n\n const {\n sendVideo: rawSendVideo,\n receiveVideo: rawReceiveVideo,\n sendAudio: rawSendAudio,\n receiveAudio: rawReceiveAudio,\n } = additionalMediaOptions;\n\n const sendVideo = videoEnabled && (rawSendVideo ?? true);\n const receiveVideo = videoEnabled && (rawReceiveVideo ?? true);\n const sendAudio = audioEnabled && (rawSendAudio ?? true);\n const receiveAudio = audioEnabled && (rawReceiveAudio ?? true);\n\n this.allowMediaInLobby = options?.allowMediaInLobby;\n\n // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia\n // @ts-ignore - isUserUnadmitted coming from SelfUtil\n if (this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby) {\n throw new UserInLobbyError();\n }\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.capabilities',\n payload: {\n mediaCapabilities: {\n rx: {\n audio: false,\n share: false,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n tx: {\n audio: false,\n share: false,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n },\n },\n options: {meetingId: this.id},\n });\n\n // when audioEnabled/videoEnabled is true, we set sendAudio/sendVideo to true even before any streams are published\n // to avoid doing an extra SDP exchange when they are published for the first time\n this.mediaProperties.setMediaDirection({\n sendAudio,\n sendVideo,\n sendShare: false,\n receiveAudio,\n receiveVideo,\n receiveShare: shareAudioEnabled || shareVideoEnabled,\n });\n\n this.audio = createMuteState(AUDIO, this, audioEnabled);\n this.video = createMuteState(VIDEO, this, videoEnabled);\n this.brbState = createBrbState(this, false);\n\n try {\n await this.setUpLocalStreamReferences(localStreams);\n\n this.setMercuryListener();\n\n this.createStatsAnalyzer();\n\n try {\n await this.establishMediaConnection(\n remoteMediaManagerConfig,\n bundlePolicy,\n forceTurnDiscovery,\n turnServerInfo\n );\n } catch (error) {\n if (error instanceof MultistreamNotSupportedError) {\n LoggerProxy.logger.warn(\n `${LOG_HEADER} we asked for multistream backend (Homer), but got transcoded backend, recreating media connection...`\n );\n\n await this.downgradeFromMultistreamToTranscoded();\n\n // Establish new media connection with forced TURN discovery\n // We need to do TURN discovery again, because backend will be creating a new confluence, so it might land on a different node or cluster\n await this.establishMediaConnection(\n remoteMediaManagerConfig,\n bundlePolicy,\n true,\n undefined\n );\n } else {\n throw error;\n }\n }\n\n LoggerProxy.logger.info(`${LOG_HEADER} media connected, finalizing...`);\n\n if (this.mediaProperties.hasLocalShareStream()) {\n await this.enqueueScreenShareFloorRequest();\n }\n\n const {connectionType, ipVersion, selectedCandidatePairChanges, numTransports} =\n await this.mediaProperties.getCurrentConnectionInfo();\n\n const iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);\n\n const reachabilityMetrics = await this.getMediaReachabilityMetricFields();\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_MEDIA_SUCCESS, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n connectionType,\n ipVersion,\n selectedCandidatePairChanges,\n numTransports,\n isMultistream: this.isMultistream,\n retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,\n isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,\n ...reachabilityMetrics,\n ...iceCandidateErrors,\n iceCandidatesCount: this.iceCandidatesCount,\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.ready',\n payload: {\n ipVersion,\n },\n options: {\n meetingId: this.id,\n },\n });\n LoggerProxy.logger.info(\n `${LOG_HEADER} successfully established media connection, type=${connectionType}`\n );\n\n // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:\n this.remoteMediaManager?.logAllReceiveSlots();\n this.startPeriodicLogUpload();\n } catch (error) {\n LoggerProxy.logger.error(`${LOG_HEADER} failed to establish media connection: `, error);\n\n // @ts-ignore\n const reachabilityMetrics = await this.getMediaReachabilityMetricFields();\n\n const {selectedCandidatePairChanges, numTransports} =\n await this.mediaProperties.getCurrentConnectionInfo();\n\n const iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_MEDIA_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n code: error.code,\n selectedCandidatePairChanges,\n numTransports,\n turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,\n turnServerUsed: this.turnServerUsed,\n retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,\n isMultistream: this.isMultistream,\n isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,\n signalingState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.signalingState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc?.signalingState ||\n 'unknown',\n connectionState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.connectionState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc?.connectionState ||\n 'unknown',\n iceConnectionState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.iceConnectionState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc?.iceConnectionState ||\n 'unknown',\n ...reachabilityMetrics,\n ...iceCandidateErrors,\n iceCandidatesCount: this.iceCandidatesCount,\n });\n\n await this.cleanUpOnAddMediaFailure();\n\n // Upload logs on error while adding media\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n if (error instanceof Errors.SdpError) {\n this.leave({reason: MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED});\n }\n\n throw error;\n } finally {\n this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;\n }\n }\n\n /**\n * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)\n * @returns {Boolean}\n */\n canUpdateMedia() {\n // in theory we shouldn't need this as RoapMediaConnection handles multiple updates, glare, etc,\n // but there are some server issues, like https://jira-eng-gpk2.cisco.com/jira/browse/WEBEX-248394\n // so for now it's better to keep queuing any media updates at SDK meeting level\n return !this.isRoapInProgress;\n }\n\n /**\n * media failed, so collect a stats report from webrtc using the wcme connection to grab the rtc stats report\n * send a webrtc telemetry dump to the configured server using the internal media core check metrics configured callback\n * @param {String} callFrom - the function calling this function, optional.\n * @returns {Promise<void>}\n */\n private forceSendStatsReport = async ({callFrom}: {callFrom?: string}) => {\n const LOG_HEADER = `Meeting:index#forceSendStatsReport --> called from ${callFrom} : `;\n try {\n await this.mediaProperties?.webrtcMediaConnection?.forceRtcMetricsSend();\n LoggerProxy.logger.info(\n `${LOG_HEADER} successfully uploaded available webrtc telemetry statistics`\n );\n } catch (e) {\n LoggerProxy.logger.error(`${LOG_HEADER} failed to upload webrtc telemetry statistics: `, e);\n }\n };\n\n /**\n * Enqueues a media update operation.\n * @param {String} mediaUpdateType one of MEDIA_UPDATE_TYPE values\n * @param {Object} options\n * @returns {Promise}\n * @private\n * @memberof Meeting\n */\n private enqueueMediaUpdate(mediaUpdateType: string, options: any = {}): Promise<void> {\n const canUpdateMediaNow = this.canUpdateMedia();\n\n return new Promise((resolve, reject) => {\n const queueItem = {\n pendingPromiseResolve: resolve,\n pendingPromiseReject: reject,\n mediaUpdateType,\n options,\n };\n\n LoggerProxy.logger.log(\n `Meeting:index#enqueueMediaUpdate --> enqueuing media update type=${mediaUpdateType}`\n );\n this.queuedMediaUpdates.push(queueItem);\n\n if (canUpdateMediaNow) {\n this.processNextQueuedMediaUpdate();\n }\n });\n }\n\n /**\n * emits event when the negotation is completed\n * @returns {void}\n * @private\n * @memberof Meeting\n */\n mediaNegotiatedEvent = () => {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.experimental.enableMediaNegotiatedEvent) {\n LoggerProxy.logger.info('Meeting:mediaNegotiatedEvent --> Media server negotiated');\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'mediaNegotiatedEvent',\n },\n EVENT_TRIGGERS.MEDIA_NEGOTIATED\n );\n }\n };\n\n /**\n * Checks if there are any queued media updates and runs the first one from\n * the queue if we are in a state that allows doing that.\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n processNextQueuedMediaUpdate = () => {\n if (this.canUpdateMedia() && this.queuedMediaUpdates.length > 0) {\n const {pendingPromiseResolve, pendingPromiseReject, mediaUpdateType, options} =\n this.queuedMediaUpdates.shift();\n\n LoggerProxy.logger.log(\n `Meeting:index#processNextQueuedMediaUpdate --> performing delayed media update type=${mediaUpdateType}`\n );\n let mediaUpdate = Promise.resolve();\n\n switch (mediaUpdateType) {\n case MEDIA_UPDATE_TYPE.TRANSCODED_MEDIA_CONNECTION:\n mediaUpdate = this.updateTranscodedMediaConnection();\n break;\n case MEDIA_UPDATE_TYPE.SHARE_FLOOR_REQUEST:\n mediaUpdate = this.requestScreenShareFloor();\n break;\n case MEDIA_UPDATE_TYPE.UPDATE_MEDIA:\n mediaUpdate = this.updateMedia(options);\n break;\n default:\n LoggerProxy.logger.error(\n `Peer-connection-manager:index#processNextQueuedMediaUpdate --> unsupported media update type ${mediaUpdateType} found in the queue`\n );\n break;\n }\n\n mediaUpdate\n .then(pendingPromiseResolve, pendingPromiseReject)\n .then(() => this.processNextQueuedMediaUpdate());\n }\n };\n\n /**\n * Updates the media connection - it allows to enable/disable all audio/video/share in the meeting.\n * This does not affect the published tracks, so for example if a microphone track is published and\n * updateMedia({audioEnabled: false}) is called, the audio will not be sent or received anymore,\n * but the track's \"published\" state is not changed and when updateMedia({audioEnabled: true}) is called,\n * the sending of the audio from the same track will resume.\n *\n * @param {Object} options\n * @param {boolean} options.audioEnabled [optional] enables/disables receiving and sending of main audio in the meeting\n * @param {boolean} options.videoEnabled [optional] enables/disables receiving and sending of main video in the meeting\n * @param {boolean} options.shareEnabled [optional] enables/disables receiving and sending of screen share in the meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public async updateMedia(options: {\n audioEnabled?: boolean;\n videoEnabled?: boolean;\n shareAudioEnabled?: boolean;\n shareVideoEnabled?: boolean;\n }) {\n this.checkMediaConnection();\n\n const {audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled} = options;\n\n LoggerProxy.logger.log(\n `Meeting:index#updateMedia --> called with options=${JSON.stringify(options)}`\n );\n\n if (!this.canUpdateMedia()) {\n return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options);\n }\n\n if (this.isMultistream) {\n if (shareAudioEnabled !== undefined || shareVideoEnabled !== undefined) {\n throw new Error(\n 'toggling shareAudioEnabled or shareVideoEnabled in a multistream meeting is not supported, to control receiving screen share call meeting.remoteMediaManager.setLayout() with appropriate layout'\n );\n }\n } else if (shareAudioEnabled !== undefined) {\n throw new Error(\n 'toggling shareAudioEnabled in a transcoded meeting is not supported as of now'\n );\n }\n\n if (audioEnabled !== undefined) {\n this.mediaProperties.mediaDirection.sendAudio = audioEnabled;\n this.mediaProperties.mediaDirection.receiveAudio = audioEnabled;\n this.audio?.enable(this, audioEnabled);\n if (this.isMultistream) {\n this.sendSlotManager.setActive(MediaType.AudioMain, audioEnabled);\n }\n }\n\n if (videoEnabled !== undefined) {\n this.mediaProperties.mediaDirection.sendVideo = videoEnabled;\n this.mediaProperties.mediaDirection.receiveVideo = videoEnabled;\n this.video?.enable(this, videoEnabled);\n if (this.isMultistream) {\n this.sendSlotManager.setActive(MediaType.VideoMain, videoEnabled);\n }\n }\n\n if (shareAudioEnabled !== undefined || shareVideoEnabled !== undefined) {\n this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);\n }\n\n if (!this.isMultistream) {\n await this.updateTranscodedMediaConnection();\n }\n\n return undefined;\n }\n\n /**\n * Acknowledge the meeting, outgoing or incoming\n * @param {String} type\n * @returns {Promise} resolve {message, ringing, response}\n * @public\n * @memberof Meeting\n */\n public acknowledge(type: string) {\n if (!type) {\n return Promise.reject(new ParameterError('Type must be set to acknowledge the meeting.'));\n }\n if (type === _INCOMING_) {\n return this.meetingRequest\n .acknowledgeMeeting({\n locusUrl: this.locusUrl,\n deviceUrl: this.deviceUrl,\n correlationId: this.correlationId,\n })\n .then((response) => Promise.resolve(response))\n .then((response) => {\n this.meetingFiniteStateMachine.ring(type);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.alert.displayed',\n options: {meetingId: this.id},\n });\n\n return Promise.resolve({\n response,\n });\n });\n }\n\n // TODO: outside of 1:1 incoming, and all outgoing calls\n return Promise.resolve({\n message: 'noop',\n });\n }\n\n /**\n * Decline this meeting\n * @param {String} reason\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public decline(reason: string) {\n return MeetingUtil.declineMeeting(this, reason)\n .then((decline) => {\n this.meetingFiniteStateMachine.decline();\n\n return Promise.resolve(decline);\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for leaving a meeting.\n *\n * This is to support quickly submitting a leave request when the browser/tab is closing.\n * Calling meeting.leave will not work because there are some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when pagehide is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the $timings values will be wrong, but setRequestTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} options leave options\n * @param {String} options.resourceId the device with which to leave from, empty if just the computer\n * @param {any} options.reason the reason for leaving\n * @returns {Promise} resolves to options to be used with fetch\n */\n public buildLeaveFetchRequestOptions(options: {resourceId?: string; reason?: any} = {} as any) {\n const requestOptions = MeetingUtil.buildLeaveFetchRequestOptions(this, options);\n\n // @ts-ignore\n return this.webex.prepareFetchOptions(requestOptions);\n }\n\n /**\n * Leave the current meeting\n * @param {Object} options - leave options\n * @param {String} [options.resourceId] - the device with which to leave from, empty if just the computer\n * @param {String} [options.clientEventLeaveReason] - the leaveReason to include in the Call Analyzer event.\n * Must be one of: 'paired-leave' | 'one-to-one' | 'ended-by-locus' (defaults to no reason)\n * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/main/diagnostic-events.raml#L796\n * @param {String} [options.reason] - only used for logging\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public leave(\n options: {\n resourceId?: string;\n clientEventLeaveReason?: ClientEventLeaveReason;\n reason?: any;\n } = {} as any\n ) {\n const leaveReason = options.reason || MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;\n\n /// @ts-ignore\n this.webex.internal.newMetrics.submitInternalEvent({name: 'internal.reset.join.latencies'});\n\n const submitLeaveMetric = (payload = {}) =>\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.leave',\n payload: {\n trigger: 'user-interaction',\n canProceed: false,\n leaveReason: options.clientEventLeaveReason,\n ...payload,\n },\n options: {meetingId: this.id},\n });\n LoggerProxy.logger.log('Meeting:index#leave --> Leaving a meeting');\n\n return MeetingUtil.leaveMeeting(this, options)\n .then((leave) => {\n // CA team recommends submitting this *after* locus /leave\n submitLeaveMetric();\n\n this.meetingFiniteStateMachine.leave();\n this.clearMeetingData();\n\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'leave',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here\n if (this.wirelessShare || this.guest) {\n // If screen sharing clean the meeting object\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'leave',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: options.reason,\n meetingId: this.id,\n }\n );\n }\n LoggerProxy.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);\n\n return leave;\n })\n .catch((error) => {\n // CA team recommends submitting this *after* locus /leave\n submitLeaveMetric({\n errors: [\n {\n fatal: false,\n errorDescription: error.message,\n category: 'signaling',\n errorCode: 1000,\n name: 'client.leave',\n shownToUser: false,\n },\n ],\n });\n\n this.meetingFiniteStateMachine.fail(error);\n LoggerProxy.logger.error('Meeting:index#leave --> Failed to leave ', error);\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'leave',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_LEAVE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n code: error.code,\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Start sharing whiteboard given channelUrl\n * @param {string} channelUrl whiteboard url\n * @param {String} resourceToken token created by authorize media injector\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public startWhiteboardShare(channelUrl: string, resourceToken: string) {\n const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');\n\n if (!channelUrl) {\n return Promise.reject(new ParameterError('Cannot share without channelUrl.'));\n }\n\n if (whiteboard) {\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.initiated',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.initiated',\n payload: {\n mediaType: 'whiteboard',\n },\n options: {\n meetingId: this.id,\n },\n });\n\n const body: any = {\n disposition: FLOOR_ACTION.GRANTED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: whiteboard.url,\n resourceUrl: channelUrl,\n };\n\n if (resourceToken) {\n body.resourceToken = resourceToken;\n }\n\n return this.meetingRequest\n .changeMeetingFloor(body)\n .then(() => {\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.resolve();\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_START_WHITEBOARD_SHARE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n board: {channelUrl},\n });\n\n return Promise.reject(error);\n });\n }\n\n return Promise.reject(new ParameterError('Cannot share without whiteboard.'));\n }\n\n /**\n * Stop sharing whiteboard given channelUrl\n * @param {string} channelUrl whiteboard url\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public stopWhiteboardShare(channelUrl: string) {\n const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');\n\n if (whiteboard) {\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.stopped',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.stopped',\n payload: {\n mediaType: 'whiteboard',\n // @ts-ignore\n shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),\n },\n options: {\n meetingId: this.id,\n },\n });\n\n return this.meetingRequest\n .changeMeetingFloor({\n disposition: FLOOR_ACTION.RELEASED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: whiteboard.url,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n board: {channelUrl},\n });\n\n return Promise.reject(error);\n })\n .finally(() => {});\n }\n\n return Promise.reject(new ParameterError('Cannot stop share without whiteboard.'));\n }\n\n /**\n * Sends a request to Locus to obtain the screen share floor\n * @returns {Promise} see #meetingRequest.changeMeetingFloor\n * @private\n * @memberof Meeting\n */\n private requestScreenShareFloor() {\n if (\n !this.mediaProperties.hasLocalShareStream() ||\n !this.mediaProperties.mediaDirection.sendShare\n ) {\n LoggerProxy.logger.log(\n `Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=${\n this.mediaProperties.shareVideoStream ? 'yes' : 'no'\n }, sendShare=${this.mediaProperties.mediaDirection.sendShare})`\n );\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.resolve({});\n }\n if (this.state === MEETING_STATE.STATES.JOINED) {\n this.screenShareFloorState = ScreenShareFloorStatus.PENDING;\n const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);\n\n if (content && this.shareStatus !== SHARE_STATUS.LOCAL_SHARE_ACTIVE) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-grant.request',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n return this.meetingRequest\n .changeMeetingFloor({\n disposition: FLOOR_ACTION.GRANTED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: content.url,\n resourceUrl: this.resourceUrl,\n shareInstanceId: this.localShareInstanceId,\n })\n .then(() => {\n this.screenShareFloorState = ScreenShareFloorStatus.GRANTED;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_SHARE_SUCCESS, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n });\n\n return Promise.resolve();\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#share --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_SHARE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'share',\n errors: MeetingUtil.getChangeMeetingFloorErrorPayload(error.message),\n shareInstanceId: this.localShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.reject(error);\n });\n }\n if (!content) {\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.reject(new ParameterError('Cannot share without content.'));\n }\n\n return Promise.resolve();\n }\n this.floorGrantPending = true;\n\n return Promise.resolve({});\n }\n\n /**\n * Requests screen share floor if such request is pending.\n * It should be called whenever meeting state changes to JOINED\n *\n * @returns {void}\n */\n private requestScreenShareFloorIfPending() {\n if (this.floorGrantPending && this.state === MEETING_STATE.STATES.JOINED) {\n this.requestScreenShareFloor().then(() => {\n this.floorGrantPending = false;\n });\n }\n }\n\n /**\n * Sends a request to Locus to release the screen share floor.\n * @returns {Promise} see #meetingRequest.changeMeetingFloor\n * @private\n * @memberof Meeting\n */\n private releaseScreenShareFloor() {\n const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);\n\n if (this.screenShareFloorState === ScreenShareFloorStatus.RELEASED) {\n return Promise.resolve();\n }\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n if (content) {\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.stopped',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.stopped',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n // @ts-ignore\n shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),\n },\n options: {meetingId: this.id},\n });\n\n if (content.floor?.beneficiary.id !== this.selfId) {\n // remote participant started sharing and caused our sharing to stop, we don't want to send any floor action request in that case\n return Promise.resolve();\n }\n\n return this.meetingRequest\n .changeMeetingFloor({\n disposition: FLOOR_ACTION.RELEASED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: content.url,\n resourceUrl: this.resourceUrl,\n shareInstanceId: this.localShareInstanceId,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.STOP_FLOOR_REQUEST_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n return Promise.reject(error);\n });\n }\n\n // according to Locus there is no content, so we don't need to release the floor (it's probably already been released)\n return Promise.resolve();\n }\n\n /**\n * Intiate a recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public startRecording() {\n return this.recordingController.startRecording();\n }\n\n /**\n * set the mute on entry flag for participants if you're the host\n * @returns {Promise}\n * @param {boolean} enabled\n * @public\n * @memberof Meeting\n */\n public setMuteOnEntry(enabled: boolean) {\n return this.controlsOptionsManager.setMuteOnEntry(enabled);\n }\n\n /**\n * set the disallow unmute flag for participants if you're the host\n * @returns {Promise}\n * @param {boolean} enabled\n * @public\n * @memberof Meeting\n */\n public setDisallowUnmute(enabled: boolean) {\n return this.controlsOptionsManager.setDisallowUnmute(enabled);\n }\n\n /**\n * set the mute all flag for participants if you're the host\n * @returns {Promise}\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @param {array} roles\n * @public\n * @memberof Meeting\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean,\n roles: Array<string>\n ) {\n return this.controlsOptionsManager.setMuteAll(\n mutedEnabled,\n disallowUnmuteEnabled,\n muteOnEntryEnabled,\n roles\n );\n }\n\n /**\n * End the recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public stopRecording() {\n return this.recordingController.stopRecording();\n }\n\n /**\n * Pauses the recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public pauseRecording() {\n return this.recordingController.pauseRecording();\n }\n\n /**\n * Resumes the recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public resumeRecording() {\n return this.recordingController.resumeRecording();\n }\n\n /**\n * Locks the current meeting if possible\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public lockMeeting() {\n return MeetingUtil.lockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);\n }\n\n /**\n * Unlocks the current meeting if possible\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public unlockMeeting() {\n return MeetingUtil.unlockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);\n }\n\n /**\n * Logs an error message and returns a rejected promise with same message\n * @param {String} message\n * @returns {Promise}\n * @private\n * @memberof Meeting\n */\n private rejectWithErrorLog(message: string) {\n LoggerProxy.logger.error(message);\n\n return Promise.reject(new Error(message));\n }\n\n /**\n * Sends DTMF tones to the current meeting\n * @param {String} tones a string of one or more DTMF tones to send\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public sendDTMF(tones: string) {\n if (this.locusInfo && this.locusInfo.self) {\n if (this.locusInfo.self.enableDTMF) {\n return this.meetingRequest.sendDTMF({\n locusUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n tones,\n });\n }\n\n return this.rejectWithErrorLog(\n 'Meeting:index#sendDTMF --> cannot send DTMF, meeting does not have DTMF enabled'\n );\n }\n\n return this.rejectWithErrorLog(\n 'Meeting:index#sendDTMF --> cannot send DTMF, meeting does not have a connection to the \"locus\" call control service. Have you joined?'\n );\n }\n\n /**\n * Sends request to change layout type for the current meeting for the specific participant/device only\n * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} renderInfo preferred dimensions for the remote main and content streams (server can ignore it)\n * @param {Object} renderInfo.main preferred dimensions for the remote main video stream\n * @param {Number} renderInfo.main.width preferred width of main video stream\n * @param {Number} renderInfo.main.height preferred height of main video stream\n * @param {Object} renderInfo.content preferred dimensions for the remote content share stream\n * @param {Number} renderInfo.content.width preferred width of content share stream\n * @param {Number} renderInfo.content.height preferred height of content share stream\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public changeVideoLayout(\n layoutType?: string,\n renderInfo: {\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n } = {} as any\n ) {\n const {main, content} = renderInfo;\n const {mediaDirection, remoteShareStream, remoteVideoStream} = this.mediaProperties;\n\n const layoutInfo = cloneDeep(this.lastVideoLayoutInfo);\n\n // TODO: We need a real time value for Audio, Video and Share send indicator\n if (mediaDirection.receiveVideo !== true || !remoteVideoStream) {\n return this.rejectWithErrorLog(\n 'Meeting:index#changeVideoLayout --> cannot change video layout, you are not recieving any video/share stream'\n );\n }\n\n if (layoutType) {\n if (!LAYOUT_TYPES.includes(layoutType)) {\n return this.rejectWithErrorLog(\n `Meeting:index#changeVideoLayout --> cannot change video layout, invalid layoutType \"${layoutType}\" received.`\n );\n }\n\n layoutInfo.layoutType = layoutType;\n }\n\n if (main) {\n const mainWidth = Math.round(main.width);\n const mainHeight = Math.round(main.height);\n\n // Stop any \"twitching\" caused by very slight size changes\n if (\n !this.lastVideoLayoutInfo.main ||\n Math.abs(this.lastVideoLayoutInfo.main.height - mainHeight) > 2 ||\n Math.abs(this.lastVideoLayoutInfo.main.width - mainWidth) > 2\n ) {\n layoutInfo.main = {width: mainWidth, height: mainHeight};\n }\n }\n\n if (content) {\n if (this.mediaProperties.mediaDirection.receiveShare && remoteShareStream) {\n const contentWidth = Math.round(content.width);\n const contentHeight = Math.round(content.height);\n\n // Stop any \"twitching\" caused by very slight size changes\n if (\n !this.lastVideoLayoutInfo.content ||\n Math.abs(this.lastVideoLayoutInfo.content.height - contentHeight) > 2 ||\n Math.abs(this.lastVideoLayoutInfo.content.width - contentWidth) > 2\n ) {\n layoutInfo.content = {width: contentWidth, height: contentHeight};\n }\n } else {\n return this.rejectWithErrorLog(\n 'Meeting:index#changeVideoLayout --> unable to send renderInfo for content, you are not receiving remote share'\n );\n }\n }\n\n if (isEqual(layoutInfo, this.lastVideoLayoutInfo)) {\n // nothing changed, no need to send any request\n return Promise.resolve();\n }\n this.lastVideoLayoutInfo = cloneDeep(layoutInfo);\n\n this.locusInfo.once(LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, (envelope) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'changeVideoLayout',\n },\n EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE,\n {\n layout: envelope.layout,\n }\n );\n });\n\n return this.meetingRequest\n .changeVideoLayoutDebounced({\n locusUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n layoutType,\n main: layoutInfo.main,\n content: layoutInfo.content,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#changeVideoLayout --> Error ', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Sets the quality level of the remote incoming media\n * @param {String} level {LOW|MEDIUM|HIGH}\n * @returns {Promise}\n */\n setRemoteQualityLevel(level: string) {\n LoggerProxy.logger.log(`Meeting:index#setRemoteQualityLevel --> Setting quality to ${level}`);\n\n if (!QUALITY_LEVELS[level]) {\n return this.rejectWithErrorLog(\n `Meeting:index#setRemoteQualityLevel --> ${level} not defined`\n );\n }\n\n if (\n !this.mediaProperties.mediaDirection.receiveAudio &&\n !this.mediaProperties.mediaDirection.receiveVideo\n ) {\n return this.rejectWithErrorLog(\n 'Meeting:index#setRemoteQualityLevel --> unable to change remote quality, receiveVideo and receiveAudio is disabled'\n );\n }\n\n // If level is already the same, don't do anything\n if (level === this.mediaProperties.remoteQualityLevel) {\n LoggerProxy.logger.warn(\n `Meeting:index#setRemoteQualityLevel --> Quality already set to ${level}`\n );\n\n return Promise.resolve();\n }\n\n // Set the quality level in properties\n this.mediaProperties.setRemoteQualityLevel(level);\n\n return this.updateTranscodedMediaConnection();\n }\n\n /**\n * Functionality for when a share audio is ended.\n * @private\n * @memberof Meeting\n * @returns {undefined}\n */\n private handleShareAudioStreamEnded = async () => {\n LoggerProxy.logger.info(\n `Meeting:index#handleShareAudioStreamEnded --> audio share stream ended`\n );\n // current share audio stream has ended, but there might be an active\n // share video stream. we only leave from wireless share if share has\n // completely ended, which means no share audio or video streams active\n if (this.wirelessShare && !this.mediaProperties.shareVideoStream) {\n this.leave({reason: MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS});\n } else {\n try {\n await this.unpublishStreams([this.mediaProperties.shareAudioStream]);\n } catch (error) {\n LoggerProxy.logger.log(\n 'Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ',\n error\n );\n }\n }\n };\n\n /**\n * Functionality for when a share video is muted or unmuted.\n * @private\n * @memberof Meeting\n * @param {boolean} muted\n * @returns {undefined}\n */\n private handleShareVideoStreamMuteStateChange = (muted: boolean) => {\n LoggerProxy.logger.log(\n `Meeting:index#handleShareVideoStreamMuteStateChange --> Share video stream mute state changed to muted ${muted}`\n );\n\n const shareVideoStreamSettings = this.mediaProperties?.shareVideoStream?.getSettings();\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE, {\n correlationId: this.correlationId,\n muted,\n encoderImplementation: this.statsAnalyzer?.shareVideoEncoderImplementation,\n // TypeScript 4 does not recognize the `displaySurface` property. Instead of upgrading the\n // SDK to TypeScript 5, which may affect other packages, use bracket notation for now, since\n // all we're doing here is adding metrics.\n // eslint-disable-next-line dot-notation\n displaySurface: shareVideoStreamSettings?.['displaySurface'],\n isMultistream: this.isMultistream,\n frameRate: shareVideoStreamSettings?.frameRate,\n });\n };\n\n /**\n * Functionality for when a share video is ended.\n * @private\n * @memberof Meeting\n * @returns {undefined}\n */\n private handleShareVideoStreamEnded = async () => {\n LoggerProxy.logger.info(\n `Meeting:index#handleShareVideoStreamEnded --> video share stream ended`\n );\n // current share video stream has ended, but there might be an active\n // share audio stream. we only leave from wireless share if share has\n // completely ended, which means no share audio or video streams active\n if (this.wirelessShare && !this.mediaProperties.shareAudioStream) {\n this.leave({reason: MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS});\n } else {\n try {\n await this.unpublishStreams([this.mediaProperties.shareVideoStream]);\n } catch (error) {\n LoggerProxy.logger.log(\n 'Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ',\n error\n );\n }\n }\n this.triggerStoppedSharing();\n };\n\n /**\n * Emits meeting:stoppedSharingLocal\n * @private\n * @returns {undefined}\n * @memberof Meeting\n */\n private triggerStoppedSharing = () => {\n if (!this.mediaProperties.hasLocalShareStream()) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'handleShareStreamEnded',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\n {\n reason: SHARE_STOPPED_REASON.TRACK_ENDED,\n }\n );\n }\n };\n\n /**\n * Emits the 'network:quality' event\n * 1 indicates an acceptable uplink network.\n * 0 indicates an unacceptable uplink network based on a predefined threshold\n * @returns {undefined}\n * @param {Object} res - payload of emitNetworkQuality\n * @property {string} mediaType {video|audio}\n * @property {number} networkQualityScore - {1|0}\n * @private\n * @memberof Meeting\n */\n private sendNetworkQualityEvent(res: {networkQualityScore: number; mediaType: string}) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENT_TRIGGERS.NETWORK_QUALITY,\n {\n networkQualityScore: res.networkQualityScore,\n mediaType: res.mediaType,\n }\n );\n }\n\n /**\n * Handle logging the media\n * @param {Object} mediaProperties\n * @private\n * @returns {undefined}\n */\n private handleMediaLogging(mediaProperties: {\n audioStream?: LocalMicrophoneStream;\n videoStream?: LocalCameraStream;\n }) {\n MeetingUtil.handleVideoLogging(mediaProperties.videoStream);\n MeetingUtil.handleAudioLogging(mediaProperties.audioStream);\n }\n\n /**\n *\n * @returns {string} one of 'panelist', 'attendee', 'host', 'cohost', returns the user type of the current user\n */\n getCurUserType(): RawClientEvent['userType'] | null {\n const {roles} = this;\n if (roles) {\n if (roles.includes(SELF_ROLES.MODERATOR)) {\n return 'host';\n }\n if (roles.includes(SELF_ROLES.COHOST)) {\n return 'cohost';\n }\n if (roles.includes(SELF_ROLES.PANELIST)) {\n return 'panelist';\n }\n if (roles.includes(SELF_ROLES.ATTENDEE)) {\n return 'attendee';\n }\n }\n\n return null;\n }\n\n /**\n * End the current meeting for all\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public endMeetingForAll() {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.leave',\n payload: {trigger: 'user-interaction', canProceed: false},\n options: {meetingId: this.id},\n });\n\n LoggerProxy.logger.log('Meeting:index#endMeetingForAll --> End meeting for All');\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_END_ALL_INITIATED, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n });\n\n return MeetingUtil.endMeetingForAll(this)\n .then((end) => {\n this.meetingFiniteStateMachine.end();\n\n this.clearMeetingData();\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'endMeetingForAll',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n return end;\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n LoggerProxy.logger.error(\n 'Meeting:index#endMeetingForAll --> Failed to end meeting ',\n error\n );\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'endMeetingForAll',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_END_ALL_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n code: error.code,\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * clear the meeting data\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n clearMeetingData = () => {\n this.audio = null;\n this.video = null;\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {\n this.shareStatus = SHARE_STATUS.NO_SHARE;\n }\n this.queuedMediaUpdates = [];\n\n if (this.transcription) {\n this.stopTranscription();\n this.transcription = undefined;\n }\n\n this.annotation.deregisterEvents();\n\n // @ts-ignore - fix types\n this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);\n };\n\n /**\n * starts keepAlives being sent\n * @returns {void}\n * @private\n * @memberof Meeting\n */\n startKeepAlive = () => {\n if (this.keepAliveTimerId) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: keepAliveTimerId already exists'\n );\n\n return;\n }\n if (!this.joinedWith?.keepAliveUrl) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: no keepAliveUrl'\n );\n\n return;\n }\n if (!this.joinedWith?.keepAliveSecs) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: no keepAliveSecs'\n );\n\n return;\n }\n if (this.joinedWith.keepAliveSecs <= 1) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: keepAliveSecs <= 1'\n );\n\n return;\n }\n\n const keepAliveInterval = (this.joinedWith.keepAliveSecs - 1) * 750; // taken from UCF\n\n this.keepAliveTimerId = setInterval(() => {\n const {keepAliveUrl} = this.joinedWith;\n\n this.meetingRequest.keepAlive({keepAliveUrl}).catch((error) => {\n LoggerProxy.logger.warn(\n `Meeting:index#startKeepAlive --> Stopping sending keepAlives to ${keepAliveUrl} after error ${error}`\n );\n this.stopKeepAlive();\n });\n }, keepAliveInterval);\n };\n\n /**\n * stops keepAlives being sent\n * @returns {void}\n * @private\n * @memberof Meeting\n */\n stopKeepAlive = () => {\n if (!this.keepAliveTimerId) {\n return;\n }\n clearInterval(this.keepAliveTimerId);\n this.keepAliveTimerId = null;\n };\n\n /**\n * Send a reaction inside the meeting.\n *\n * @param {ReactionServerType} reactionType - type of reaction to be sent. Example: \"thumbs_up\"\n * @param {SkinToneType} skinToneType - skin tone for the reaction. Example: \"medium_dark\"\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType) {\n const reactionChannelUrl = this.locusInfo?.controls?.reactions?.reactionChannelUrl as string;\n const participantId = this.members.selfId;\n\n const reactionData = Reactions[reactionType];\n\n if (!reactionData) {\n return Promise.reject(new Error(`${reactionType} is not a valid reaction.`));\n }\n const skinToneData = SkinTones[skinToneType] || SkinTones.normal;\n const reaction: Reaction = {\n ...reactionData,\n tone: skinToneData,\n };\n\n if (reactionChannelUrl) {\n return this.meetingRequest.sendReaction({reactionChannelUrl, reaction, participantId});\n }\n\n return Promise.reject(new Error('Error sending reaction, service url not found.'));\n }\n\n /**\n * Method to enable or disable reactions inside the meeting.\n *\n * @param {boolean} enable - enable or disable reactions\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public toggleReactions(enable: boolean) {\n const isEnabled = this.locusInfo?.controls?.reactions?.enabled;\n\n if ((isEnabled && enable) || (!isEnabled && !enable)) {\n return Promise.resolve(`Reactions are already ${isEnabled ? 'enabled' : 'disabled'}.`);\n }\n\n return this.meetingRequest.toggleReactions({\n enable,\n locusUrl: this.locusUrl,\n requestingParticipantId: this.members.selfId,\n });\n }\n\n /**\n * Method to set post meeting data consent.\n *\n * @param {boolean} accept - whether consent accepted or declined\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public setPostMeetingDataConsent(accept: boolean) {\n return this.meetingRequest.setPostMeetingDataConsent({\n postMeetingDataConsent: accept,\n locusUrl: this.locusUrl,\n deviceUrl: this.deviceUrl,\n selfId: this.members.selfId,\n });\n }\n\n /**\n * Throws if we don't have a media connection created\n *\n * @returns {void}\n */\n private checkMediaConnection() {\n if (this.mediaProperties?.webrtcMediaConnection) {\n return;\n }\n throw new NoMediaEstablishedYetError();\n }\n\n /**\n * Method to enable or disable the 'Music mode' effect on audio stream\n *\n * @param {boolean} shouldEnableMusicMode\n * @returns {Promise}\n */\n async enableMusicMode(shouldEnableMusicMode: boolean) {\n this.checkMediaConnection();\n\n if (!this.isMultistream) {\n throw new Error('enableMusicMode() only supported with multistream');\n }\n\n if (shouldEnableMusicMode) {\n await this.sendSlotManager.setCodecParameters(MediaType.AudioMain, {\n maxaveragebitrate: '64000',\n maxplaybackrate: '48000',\n });\n } else {\n await this.sendSlotManager.deleteCodecParameters(MediaType.AudioMain, [\n 'maxaveragebitrate',\n 'maxplaybackrate',\n ]);\n }\n }\n\n /** Updates the tracks being sent on the transcoded media connection\n *\n * @returns {Promise<void>}\n */\n private updateTranscodedMediaConnection(): Promise<void> {\n const LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';\n\n LoggerProxy.logger.info(`${LOG_HEADER} starting`);\n\n if (!this.canUpdateMedia()) {\n return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.TRANSCODED_MEDIA_CONNECTION);\n }\n\n return this.mediaProperties.webrtcMediaConnection\n .update({\n // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now\n localTracks: {\n audio: this.mediaProperties.audioStream?.outputStream?.getTracks()[0] || null,\n video: this.mediaProperties.videoStream?.outputStream?.getTracks()[0] || null,\n screenShareVideo:\n this.mediaProperties.shareVideoStream?.outputStream?.getTracks()[0] || null,\n screenShareAudio:\n this.mediaProperties.shareAudioStream?.outputStream?.getTracks()[0] || null,\n },\n direction: {\n audio: Media.getDirection(\n true,\n this.mediaProperties.mediaDirection.receiveAudio,\n this.mediaProperties.mediaDirection.sendAudio\n ),\n video: Media.getDirection(\n true,\n this.mediaProperties.mediaDirection.receiveVideo,\n this.mediaProperties.mediaDirection.sendVideo\n ),\n screenShareVideo: Media.getDirection(\n false,\n this.mediaProperties.mediaDirection.receiveShare,\n this.mediaProperties.mediaDirection.sendShare\n ),\n },\n remoteQualityLevel: this.mediaProperties.remoteQualityLevel,\n })\n .then(() => {\n LoggerProxy.logger.info(`${LOG_HEADER} done`);\n })\n .catch((error) => {\n LoggerProxy.logger.error(`${LOG_HEADER} Error: `, error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPDATE_MEDIA_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n });\n }\n\n /**\n * set sending named media group which the audio should send to\n * @param {MediaType} mediaType of the stream\n * @param {number} languageCode of the stream\n * @returns {void}\n */\n public setSendNamedMediaGroup(mediaType: MediaType, languageCode = 0): void {\n if (mediaType !== MediaType.AudioMain) {\n throw new Error(`cannot set send named media group which media type is ${mediaType}`);\n }\n\n const value = languageCode || this.simultaneousInterpretation.getTargetLanguageCode();\n let groups = [];\n\n if (value) {\n groups = [\n {\n type: NAMED_MEDIA_GROUP_TYPE_AUDIO,\n value,\n },\n ];\n }\n if (this.isMultistream && this.mediaProperties.webrtcMediaConnection) {\n this.sendSlotManager.setNamedMediaGroups(mediaType, groups);\n }\n }\n\n /**\n * Publishes a stream.\n *\n * @param {MediaType} mediaType of the stream\n * @param {LocalStream} stream to publish\n * @returns {Promise}\n */\n private async publishStream(mediaType: MediaType, stream?: LocalStream) {\n if (!stream) {\n return;\n }\n\n if (this.mediaProperties.webrtcMediaConnection) {\n if (this.isMultistream && this.mediaProperties.webrtcMediaConnection) {\n await this.sendSlotManager.publishStream(mediaType, stream);\n }\n\n this.emitPublishStateChangeEvent({\n isPublished: true,\n mediaType,\n stream,\n functionName: 'publishStream',\n });\n }\n }\n\n /**\n * Un-publishes a stream.\n *\n * @param {MediaType} mediaType of the stream\n * @param {LocalStream} stream to unpublish\n * @returns {Promise}\n */\n private async unpublishStream(mediaType: MediaType, stream?: LocalStream) {\n if (!stream) {\n return;\n }\n\n if (this.isMultistream && this.mediaProperties.webrtcMediaConnection) {\n await this.sendSlotManager.unpublishStream(mediaType);\n }\n\n this.emitPublishStateChangeEvent({\n isPublished: false,\n mediaType,\n stream,\n functionName: 'unpublishStream',\n });\n }\n\n /**\n * Publishes specified local streams in the meeting\n *\n * @param {Object} streams\n * @returns {Promise}\n */\n async publishStreams(streams: LocalStreams): Promise<void> {\n LoggerProxy.logger.info(\n `Meeting:index#publishStreams --> called with: ${JSON.stringify(streams)}`\n );\n this.checkMediaConnection();\n if (\n !streams.microphone &&\n !streams.camera &&\n !streams.screenShare?.audio &&\n !streams.screenShare?.video\n ) {\n // nothing to do\n return;\n }\n\n const streamChecks = [\n {stream: streams?.microphone, name: 'microphone'},\n {stream: streams?.camera, name: 'camera'},\n {stream: streams?.screenShare?.audio, name: 'screenShare audio'},\n {stream: streams?.screenShare?.video, name: 'screenShare video'},\n ];\n\n for (const {stream, name} of streamChecks) {\n if (stream?.readyState === 'ended') {\n throw new Error(\n `Attempted to publish ${name} stream with ended readyState, correlationId=${this.correlationId}`\n );\n }\n }\n\n let floorRequestNeeded = false;\n\n // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting\n if (this.isMultistream && streams.screenShare?.audio) {\n await this.setLocalShareAudioStream(streams.screenShare.audio);\n\n floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;\n }\n\n if (streams.screenShare?.video) {\n await this.setLocalShareVideoStream(streams.screenShare?.video);\n\n floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;\n }\n\n if (streams.microphone) {\n await this.setLocalAudioStream(streams.microphone);\n }\n\n if (streams.camera) {\n await this.setLocalVideoStream(streams.camera);\n }\n\n if (!this.isMultistream) {\n await this.updateTranscodedMediaConnection();\n }\n\n if (floorRequestNeeded) {\n this.localShareInstanceId = uuid.v4();\n this.shareCAEventSentStatus.transmitStart = false;\n this.shareCAEventSentStatus.transmitStop = false;\n\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.initiated',\n });\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.initiated',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n },\n options: {meetingId: this.id},\n });\n\n this.statsAnalyzer.updateMediaStatus({\n expected: {\n sendShare: true,\n },\n });\n // we're sending the http request to Locus to request the screen share floor\n // only after the SDP update, because that's how it's always been done for transcoded meetings\n // and also if sharing from the start, we need confluence to have been created\n await this.enqueueScreenShareFloorRequest();\n }\n }\n\n /**\n * Un-publishes specified local streams in the meeting\n *\n * @param {Array<LocalStream>} streams\n * @returns {Promise}\n */\n async unpublishStreams(streams: LocalStream[]): Promise<void> {\n LoggerProxy.logger.info(\n `Meeting:index#unpublishStreams --> called with: ${JSON.stringify(streams)}`\n );\n this.checkMediaConnection();\n\n const promises = [];\n\n for (const stream of streams.filter((t) => !!t)) {\n if (stream === this.mediaProperties.shareAudioStream) {\n promises.push(this.setLocalShareAudioStream(undefined));\n }\n\n if (stream === this.mediaProperties.shareVideoStream) {\n promises.push(this.setLocalShareVideoStream(undefined));\n }\n\n if (stream === this.mediaProperties.audioStream) {\n promises.push(this.setLocalAudioStream(undefined));\n }\n\n if (stream === this.mediaProperties.videoStream) {\n promises.push(this.setLocalVideoStream(undefined));\n }\n }\n\n if (!this.isMultistream) {\n promises.push(this.updateTranscodedMediaConnection());\n }\n\n await Promise.all(promises);\n\n // we're allowing for the SDK to support just audio share as well\n // so a share could be active with only video, only audio, or both\n // we're only releasing the floor if both streams have ended\n if (!this.mediaProperties.hasLocalShareStream()) {\n try {\n this.releaseScreenShareFloor(); // we ignore the returned promise here on purpose\n\n this.statsAnalyzer.updateMediaStatus({\n expected: {\n sendShare: false,\n },\n });\n } catch (e) {\n // nothing to do here, error is logged already inside releaseScreenShareFloor()\n }\n }\n }\n\n /**\n * Gets permission token expiry information including timeLeft, expiryTime, currentTime\n * (from the time the function has been fired)\n *\n * @returns {object} permissionTokenExpiryInfo\n * @returns {number} permissionTokenExpiryInfo.timeLeft The time left for token to expire\n * @returns {number} permissionTokenExpiryInfo.expiryTime The expiry time of permission token from the server\n * @returns {number} permissionTokenExpiryInfo.currentTime The current time of the local machine\n */\n public getPermissionTokenExpiryInfo() {\n if (!this.permissionTokenPayload) {\n return undefined;\n }\n\n const permissionTokenExpiryFromServer = Number(this.permissionTokenPayload.exp);\n const permissionTokenIssuedTimeFromServer = Number(this.permissionTokenPayload.iat);\n\n const shiftInTime = this.permissionTokenReceivedLocalTime - permissionTokenIssuedTimeFromServer;\n\n // using new Date instead of Date.now() to allow for accurate unit testing\n // https://github.com/sinonjs/fake-timers/issues/321\n const currentTime = new Date().getTime();\n\n // adjusted time is calculated in case your machine time is wrong\n const adjustedCurrentTime = currentTime - shiftInTime;\n\n const timeLeft = (permissionTokenExpiryFromServer - adjustedCurrentTime) / 1000;\n\n return {timeLeft, expiryTime: permissionTokenExpiryFromServer, currentTime};\n }\n\n /**\n * Check if there is enough time left till the permission token expires\n * If not - refresh the permission token\n *\n * @param {number} threshold - time in seconds\n * @param {string} reason - reason for refreshing the permission token\n * @returns {Promise<void>}\n */\n public checkAndRefreshPermissionToken(threshold: number, reason: string): Promise<void> {\n const timeLeft = this.getPermissionTokenExpiryInfo()?.timeLeft;\n\n if (timeLeft !== undefined && timeLeft <= threshold) {\n return this.refreshPermissionToken(reason);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Gets the media reachability metrics\n *\n * @returns {Promise<MediaReachabilityMetrics>}\n */\n private async getMediaReachabilityMetricFields(): Promise<MediaReachabilityMetrics> {\n const reachabilityMetrics: ReachabilityMetrics =\n // @ts-ignore\n await this.webex.meetings.reachability.getReachabilityMetrics();\n\n const successKeys: Array<keyof ReachabilityMetrics> = [\n 'reachability_public_udp_success',\n 'reachability_public_tcp_success',\n 'reachability_public_xtls_success',\n 'reachability_vmn_udp_success',\n 'reachability_vmn_tcp_success',\n 'reachability_vmn_xtls_success',\n ];\n\n const totalSuccessCases = successKeys.reduce((total, key) => {\n const value = reachabilityMetrics[key];\n if (typeof value === 'number') {\n return total + value;\n }\n\n return total;\n }, 0);\n\n const selectedSubnetFirstOctet = this.mediaServerIp?.split('.')[0];\n\n let isSubnetReachable = null;\n if (totalSuccessCases > 0 && selectedSubnetFirstOctet) {\n isSubnetReachable =\n // @ts-ignore\n this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);\n }\n\n const selectedCluster = this.mediaConnections?.[0]?.mediaAgentCluster ?? null;\n\n return {\n ...reachabilityMetrics,\n subnet_reachable: isSubnetReachable,\n selected_cluster: selectedCluster,\n selected_subnet: selectedSubnetFirstOctet ? `${selectedSubnetFirstOctet}.X.X.X` : null,\n };\n }\n\n /**\n * Set the stage for the meeting\n *\n * @param {SetStageOptions} options Options to use when setting the stage\n * @returns {Promise} The locus request\n */\n setStage({\n activeSpeakerProportion = 0.5,\n customBackground,\n customLogo,\n customNameLabel,\n importantParticipants,\n lockAttendeeViewOnStage = false,\n showActiveSpeaker = false,\n }: SetStageOptions = {}) {\n const videoLayout: SetStageVideoLayout = {\n overrideDefault: true,\n lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,\n stageParameters: {\n activeSpeakerProportion,\n showActiveSpeaker: {show: showActiveSpeaker, order: 0},\n stageManagerType: 0,\n },\n };\n\n if (importantParticipants?.length) {\n videoLayout.stageParameters.importantParticipants = importantParticipants.map(\n (importantParticipant, index) => ({...importantParticipant, order: index + 1})\n );\n }\n\n if (customLogo) {\n if (!videoLayout.customLayouts) {\n videoLayout.customLayouts = {};\n }\n videoLayout.customLayouts.logo = customLogo;\n // eslint-disable-next-line no-bitwise\n videoLayout.stageParameters.stageManagerType |= STAGE_MANAGER_TYPE.LOGO;\n }\n\n if (customBackground) {\n if (!videoLayout.customLayouts) {\n videoLayout.customLayouts = {};\n }\n videoLayout.customLayouts.background = customBackground;\n // eslint-disable-next-line no-bitwise\n videoLayout.stageParameters.stageManagerType |= STAGE_MANAGER_TYPE.BACKGROUND;\n }\n\n if (customNameLabel) {\n videoLayout.nameLabelStyle = customNameLabel;\n // eslint-disable-next-line no-bitwise\n videoLayout.stageParameters.stageManagerType |= STAGE_MANAGER_TYPE.NAME_LABEL;\n }\n\n return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);\n }\n\n /**\n * Unset the stage for the meeting\n *\n * @returns {Promise} The locus request\n */\n unsetStage() {\n const videoLayout: UnsetStageVideoLayout = {overrideDefault: false};\n\n return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,sBAAA,GAAAN,OAAA;AASA,IAAAO,kBAAA,GAAAP,OAAA;AAeA,IAAAQ,aAAA,GAAAR,OAAA;AAWA,IAAAS,qBAAA,GAAAT,OAAA;AAMA,IAAAU,cAAA,GAAAV,OAAA;AAEA,IAAAW,YAAA,GAAAX,OAAA;AAQA,IAAAY,YAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,KAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,aAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,MAAA,GAAAhB,sBAAA,CAAAC,OAAA;AAEA,IAAAgB,MAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,WAAA,GAAAlB,sBAAA,CAAAC,OAAA;AACA,IAAAkB,MAAA,GAAAnB,sBAAA,CAAAC,OAAA;AACA,IAAAmB,UAAA,GAAAnB,OAAA;AACA,IAAAoB,UAAA,GAAArB,sBAAA,CAAAC,OAAA;AACA,IAAAqB,QAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,oBAAA,GAAAvB,sBAAA,CAAAC,OAAA;AACA,IAAAuB,uBAAA,GAAAxB,sBAAA,CAAAC,OAAA;AACA,IAAAwB,QAAA,GAAAzB,sBAAA,CAAAC,OAAA;AACA,IAAAyB,OAAA,GAAA1B,sBAAA,CAAAC,OAAA;AACA,IAAA0B,MAAA,GAAA3B,sBAAA,CAAAC,OAAA;AACA,IAAA2B,MAAA,GAAA5B,sBAAA,CAAAC,OAAA;AACA,IAAA4B,MAAA,GAAA7B,sBAAA,CAAAC,OAAA;AACA,IAAA6B,MAAA,GAAA9B,sBAAA,CAAAC,OAAA;AACA,IAAA8B,MAAA,GAAA/B,sBAAA,CAAAC,OAAA;AACA,IAAA+B,UAAA,GAAA/B,OAAA;AACA,IAAAgC,cAAA,GAAAjC,sBAAA,CAAAC,OAAA;AACA,IAAAiC,aAAA,GAAAlC,sBAAA,CAAAC,OAAA;AACA,IAAAkC,UAAA,GAAAlC,OAAA;AA2CA,IAAAmC,WAAA,GAAApC,sBAAA,CAAAC,OAAA;AACA,IAAAoC,UAAA,GAAArC,sBAAA,CAAAC,OAAA;AACA,IAAAqC,aAAA,GAAArC,OAAA;AAOA,IAAAsC,mBAAA,GAAAtC,OAAA;AACA,IAAAuC,gBAAA,GAAAxC,sBAAA,CAAAC,OAAA;AACA,IAAAwC,oBAAA,GAAAxC,OAAA;AACA,IAAAyC,mBAAA,GAAAzC,OAAA;AAYA,IAAA0C,UAAA,GAAA3C,sBAAA,CAAAC,OAAA;AACA,IAAA2C,eAAA,GAAA5C,sBAAA,CAAAC,OAAA;AACA,IAAA4C,WAAA,GAAA7C,sBAAA,CAAAC,OAAA;AACA,IAAA6C,QAAA,GAAA9C,sBAAA,CAAAC,OAAA;AAEA,IAAA8C,iBAAA,GAAA/C,sBAAA,CAAAC,OAAA;AACA,IAAA+C,WAAA,GAAA/C,OAAA;AACA,IAAAgD,oBAAA,GAAAjD,sBAAA,CAAAC,OAAA;AACA,IAAAiD,uBAAA,GAAAlD,sBAAA,CAAAC,OAAA;AACA,IAAAkD,WAAA,GAAAnD,sBAAA,CAAAC,OAAA;AACA,IAAAmD,kBAAA,GAAAnD,OAAA;AACA,IAAAoD,uBAAA,GAAApD,OAAA;AACA,IAAAqD,iBAAA,GAAAtD,sBAAA,CAAAC,OAAA;AAEA,IAAAsD,SAAA,GAAAtD,OAAA;AACA,IAAAuD,6BAAA,GAAAxD,sBAAA,CAAAC,OAAA;AACA,IAAAwD,mBAAA,GAAAzD,sBAAA,CAAAC,OAAA;AAAuE,SAAAyD,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,OAAA,oBAAAH,CAAA,CAAAI,gBAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,cAAA,CAAAL,CAAA,MAAAE,EAAA,GAAAI,2BAAA,CAAAN,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAO,MAAA,qBAAAL,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAM,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAR,CAAA,CAAAO,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAb,CAAA,CAAAQ,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAR,EAAA,GAAAA,EAAA,CAAAmB,IAAA,CAAArB,CAAA,MAAAW,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAApB,EAAA,CAAAqB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAhB,EAAA,CAAAuB,MAAA,UAAAvB,EAAA,CAAAuB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAN,CAAA,EAAA0B,MAAA,SAAA1B,CAAA,qBAAAA,CAAA,sBAAA2B,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAArB,CAAA,EAAA+B,KAAA,aAAApB,CAAA,iBAAAX,CAAA,CAAAgC,WAAA,EAAArB,CAAA,GAAAX,CAAA,CAAAgC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAuB,WAAA,CAAAlC,CAAA,OAAAW,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAC,KAAA,CAAAF,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAAA,SAAAE,QAAA1B,CAAA,EAAA2B,CAAA,QAAAC,CAAA,GAAAC,aAAA,CAAA7B,CAAA,OAAA8B,6BAAA,QAAA5C,CAAA,GAAA4C,6BAAA,CAAA9B,CAAA,GAAA2B,CAAA,KAAAzC,CAAA,GAAAA,CAAA,CAAA6C,MAAA,WAAAJ,CAAA,WAAAK,gCAAA,CAAAhC,CAAA,EAAA2B,CAAA,EAAAM,UAAA,OAAAL,CAAA,CAAAM,IAAA,CAAAC,KAAA,CAAAP,CAAA,EAAA1C,CAAA,YAAA0C,CAAA;AAAA,SAAAQ,cAAApC,CAAA,aAAA2B,CAAA,MAAAA,CAAA,GAAAU,SAAA,CAAA5C,MAAA,EAAAkC,CAAA,UAAAC,CAAA,WAAAS,SAAA,CAAAV,CAAA,IAAAU,SAAA,CAAAV,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAZ,MAAA,CAAAc,CAAA,OAAAU,OAAA,WAAAX,CAAA,QAAAY,gBAAA,CAAAC,OAAA,EAAAxC,CAAA,EAAA2B,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAc,iCAAA,GAAAC,wBAAA,CAAA1C,CAAA,EAAAyC,iCAAA,CAAAb,CAAA,KAAAF,OAAA,CAAAZ,MAAA,CAAAc,CAAA,GAAAU,OAAA,WAAAX,CAAA,IAAAgB,sBAAA,CAAA3C,CAAA,EAAA2B,CAAA,EAAAK,gCAAA,CAAAJ,CAAA,EAAAD,CAAA,iBAAA3B,CAAA;AAAA,SAAA4C,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAV,OAAA,EAAAK,OAAA,GAAAM,MAAA,MAAAL,yBAAA,QAAAM,SAAA,OAAAF,gBAAA,CAAAV,OAAA,QAAAtB,WAAA,EAAAiC,MAAA,GAAAE,kBAAA,CAAAJ,KAAA,EAAAZ,SAAA,EAAAe,SAAA,YAAAD,MAAA,GAAAF,KAAA,CAAAd,KAAA,OAAAE,SAAA,gBAAAiB,2BAAA,CAAAd,OAAA,QAAAW,MAAA;AAAA,SAAAJ,0BAAA,eAAAQ,OAAA,qBAAAF,kBAAA,oBAAAA,kBAAA,CAAAG,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAA3C,SAAA,CAAA4C,OAAA,CAAApD,IAAA,CAAA8C,kBAAA,CAAAK,OAAA,8CAAA1D,CAAA;AAAA,SAAA4D,2BAAAC,GAAA,EAAAC,UAAA,EAAA/D,KAAA,IAAAgE,0BAAA,CAAAF,GAAA,EAAAC,UAAA,GAAAA,UAAA,CAAAE,GAAA,CAAAH,GAAA,EAAA9D,KAAA;AAAA,SAAAgE,2BAAAF,GAAA,EAAAI,iBAAA,QAAAA,iBAAA,CAAAC,GAAA,CAAAL,GAAA,eAAA1D,SAAA,wEAlKvE;AAEA;AAqKA;AACA,IAAMgE,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAA;EAAA,OAAS,oBAAoB;AAAA;AAE7D,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,OAAY,EAAAC,IAAA,EAAqB;EAAA,IAAAC,YAAA,GAAAD,IAAA,CAAlBE,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,EAAE,GAAAA,YAAA;EAC7CE,oBAAW,CAACC,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIJ,OAAO,uBAAoB,CAAC;EAEvD,OAAOH,OAAO,CACXQ,IAAI,CAAC,UAACC,GAAG,EAAK;IACbL,oBAAW,CAACC,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIJ,OAAO,kCAA+B,CAAC;IAElE,OAAOM,GAAG;EACZ,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,KAAK,EAAK;IAChBP,oBAAW,CAACC,MAAM,CAACM,KAAK,IAAAJ,MAAA,CAAIJ,OAAO,sBAAmBQ,KAAK,CAAC;IAC5D,MAAMA,KAAK;EACb,CAAC,CAAC;AACN,CAAC;AAsEM,IAAMC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG;EAC/BE,2BAA2B,EAAE,6BAA6B;EAC1DC,mBAAmB,EAAE,qBAAqB;EAC1CC,YAAY,EAAE;AAChB,CAAC;AAAC,IAEUC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAAAC,8BAAA,oBAAAC,QAAA,CAAAhD,OAAA;AAoBlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAJA,IAKqBiD,OAAO,GAAAP,OAAA,CAAA1C,OAAA,0BAA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"}
|
1
|
+
{"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_jwtDecode","_webexCore","_common","_commonTimers","_internalPluginMetrics","_internalMediaCore","_mediaHelpers","_internalPluginVoicea","_voiceaMeeting","_webexErrors","_loggerProxy","_util","_triggerProxy","_index","_media","_properties","_state","_muteState","_locusInfo","_metrics","_reconnectionManager","_reconnectionNotStarted","_request","_index2","_util2","_util3","_util4","_util5","_util6","_reactions","_passwordError","_captchaError","_constants","_constants2","_parameter","_meetingInfoV","_receiveSlotManager","_sendSlotManager","_mediaRequestManager","_remoteMediaManager","_breakouts","_interpretation","_annotation","_webinar","_inMeetingActions","_constants3","_recordingController","_controlsOptionsManager","_permission","_locusMediaRequest","_connectionStateHandler","_joinWebinarError","_brbState","_multistreamNotSupportedError","_joinForbiddenError","_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$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","valueOf","_classPrivateFieldInitSpec","obj","privateMap","_checkPrivateRedeclaration","set","privateCollection","has","DEFAULT_ICE_PHASE_CALLBACK","logRequest","request","_ref","_ref$logText","logText","LoggerProxy","logger","info","concat","then","arg","catch","error","MEDIA_UPDATE_TYPE","exports","TRANSCODED_MEDIA_CONNECTION","SHARE_FLOOR_REQUEST","UPDATE_MEDIA","ScreenShareFloorStatus","_isoLocalClientMeetingJoinTime","_weakMap","Meeting","_StatelessWebexPlugin","_inherits2","_super","attrs","options","callback","_attrs$callStateForMe","_attrs$callStateForMe2","_this$locusInfo","_this$locusInfo$links","_this$locusInfo$links2","_this$locusInfo$links3","_this$locusInfo2","_this$locusInfo2$full","_this$locusInfo3","_this$locusInfo4","_this","_classCallCheck2","_assertThisInitialized2","writable","MEETINGS","VOICEAEVENTS","VOICEA_ANNOUNCEMENT","payload","transcription","languageOptions","debug","EventsUtil","getScopeLog","file","function","EVENT_TRIGGERS","MEETING_STARTED_RECEIVING_TRANSCRIPTION","getCurUserType","spokenLanguages","trigger","CAPTIONS_TURNED_ON","status","TURN_ON_CAPTION_STATUS","ENABLED","EVA_COMMAND","_data$text","data","isListening","commandText","text","NEW_CAPTION","processNewCaptions","meeting","MEETING_CAPTION_RECEIVED","captions","interimCaptions","SendSlotManager","relayType","REACTION_RELAY_TYPES","REACTION","config","receiveReactions","isReactionsSupported","member","members","membersCollection","get","sender","participantId","warn","id","processedReaction","reaction","Trigger","MEETING_RECEIVE_REACTIONS","webex","internal","llm","off","handleLLMOnline","MEETING_TRANSCRIPTION_CONNECTED","undefined","sendBehavioralMetric","metricName","correlationId","_error$cause","code","correlation_id","reason","message","stack","metadata","type","cause","Metrics","Errors","SdpOfferCreationError","BEHAVIORAL_METRICS","PEERCONNECTION_FAILURE","newMetrics","submitClientEvent","canProceed","meetingId","rawError","SdpOfferHandlingError","SdpAnswerHandlingError","deferSDPAnswer","clearTimeout","sdpResponseTimer","reject","SdpError","INVALID_ICE_CANDIDATE","roapMessage","mediaServer","messageType","MeetingsUtil","getMediaServer","sdp","mediaServerIp","getMediaServerIp","isMultistream","MultistreamNotSupportedError","mediaProperties","webrtcMediaConnection","roapMessageReceived","on","MediaConnectionEventNames","REMOTE_SDP_ANSWER_PROCESSED","cdl","callDiagnosticLatencies","ROAP_OFFER_TO_ANSWER_LATENCY","latency","getLocalSDPGenRemoteSDPRecv","resolve","LOCAL_SDP_OFFER_GENERATED","Defer","LOCAL_SDP_ANSWER_GENERATED","setupSdpListeners","ROAP_STARTED","isRoapInProgress","ROAP_DONE","mediaNegotiatedEvent","processNextQueuedMediaUpdate","ROAP_FAILURE","handleRoapFailure","ROAP_MESSAGE_TO_SEND","event","LOG_HEADER","roap","sendRoapOK","seq","mediaId","sendRoapMediaRequest","tieBreaker","_ref2","roapAnswer","log","multistreamNotSupported","errors","callDiagnosticMetrics","getErrorPayloadForClientErrorCode","clientErrorCode","CALL_DIAGNOSTIC_CONFIG","MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE","MISSING_ROAP_ANSWER_CLIENT_CODE","sendRoapAnswer","ROAP_ANSWER_FAILURE","locus_id","locusUrl","split","pop","errorType","ErrorType","CONFLICT","DOUBLECONFLICT","ROAP_GLARE_CONDITION","sequence","sendRoapError","REMOTE_TRACK_ADDED","_stringify","track","mediaTrack","remoteStream","RemoteStream","MediaUtil","createMediaStream","eventType","RemoteTrackType","AUDIO","EVENT_TYPES","REMOTE_AUDIO","setRemoteAudioStream","VIDEO","REMOTE_VIDEO","setRemoteVideoStream","SCREENSHARE_VIDEO","REMOTE_SHARE","setRemoteShareStream","MEDIA_READY","stream","outputStream","connectionStateHandler","ConnectionStateHandler","ConnectionStateEvent","stateChanged","connectionFailed","CONNECTION_FAILURE","locusId","networkStatus","hasMediaConnectionConnectedAtLeastOnce","reconnectionManager","resetReconnectionTimer","reconnect","networkDisconnect","uploadLogs","state","ConnectionState","Connecting","labels","MeetingUtil","getCaEventLabelsForIpVersion","Connected","icePhase","CONNECTION_SUCCESS","getICESetupTime","setNetworkStatus","NETWORK_STATUS","CONNECTED","iceReconnected","statsAnalyzer","startAnalyzer","Disconnected","DISCONNECTED","waitForIceReconnect","Failed","ACTIVE_SPEAKERS_CHANGED","csis","ACTIVE_SPEAKER_CHANGED","memberIds","map","csi","_this$members$findMem","findMemberByCsi","item","VIDEO_SOURCES_COUNT_CHANGED","numTotalSources","numLiveSources","mediaContent","REMOTE_VIDEO_SOURCE_COUNT_CHANGED","MediaContent","Main","mediaRequestManagers","video","setNumCurrentSources","AUDIO_SOURCES_COUNT_CHANGED","REMOTE_AUDIO_SOURCE_COUNT_CHANGED","iceCandidateErrors","clear","ICE_CANDIDATE_ERROR","errorCode","errorText","endsWith","toLowerCase","replace","count","iceCandidatesCount","ICE_CANDIDATE","candidate","StatsAnalyzerEventNames","MEDIA_QUALITY","intervalMetadata","maskedPeerReflexiveIP","_this$webex$meetings$","clientAddressFromGeoHint","meetings","geoHintInfo","clientAddress","CallDiagnosticUtils","anonymizeIPAddress","getMembers","meetingUserCount","_values","isInMeeting","isInLobby","submitMQE","networkType","getNetworkType","intervals","LOCAL_MEDIA_STARTED","MEETING_MEDIA_LOCAL_STARTED","mediaType","shareCAEventSentStatus","transmitStart","shareInstanceId","localShareInstanceId","LOCAL_MEDIA_STOPPED","transmitStop","REMOTE_MEDIA_STARTED","MEETING_MEDIA_REMOTE_STARTED","receiveStart","remoteShareInstanceId","REMOTE_MEDIA_STOPPED","receiveStop","_ref4","_asyncToGenerator2","_regenerator","mark","_callee","_ref3","callFrom","_this$mediaProperties","_this$mediaProperties2","wrap","_callee$","_context","prev","forceRtcMetricsSend","t0","stop","_x","experimental","enableMediaNegotiatedEvent","MEDIA_NEGOTIATED","canUpdateMedia","queuedMediaUpdates","_this$queuedMediaUpda","shift","pendingPromiseResolve","pendingPromiseReject","mediaUpdateType","mediaUpdate","_promise","updateTranscodedMediaConnection","requestScreenShareFloor","updateMedia","_callee2","_callee2$","_context2","wirelessShare","shareVideoStream","leave","MEETING_REMOVED_REASON","USER_ENDED_SHARE_STREAMS","unpublishStreams","shareAudioStream","muted","_this$mediaProperties3","_this$mediaProperties4","_this$statsAnalyzer","shareVideoStreamSettings","getSettings","MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE","encoderImplementation","shareVideoEncoderImplementation","displaySurface","frameRate","_callee3","_callee3$","_context3","triggerStoppedSharing","hasLocalShareStream","MEETING_STOPPED_SHARING_LOCAL","SHARE_STOPPED_REASON","TRACK_ENDED","audio","screenShareFloorState","RELEASED","shareStatus","SHARE_STATUS","LOCAL_SHARE_ACTIVE","NO_SHARE","stopTranscription","annotation","deregisterEvents","processRelayEvent","_this$joinedWith","_this$joinedWith2","keepAliveTimerId","joinedWith","keepAliveUrl","keepAliveSecs","keepAliveInterval","setInterval","meetingRequest","keepAlive","stopKeepAlive","clearInterval","uuid","v4","callStateForMetrics","sessionCorrelationId","logUploadIntervalIndex","userId","orgId","resource","deviceUrl","meetingInfo","breakouts","Breakouts","parent","simultaneousInterpretation","SimultaneousInterpretation","Annotation","webinar","Webinar","receiveSlotManager","ReceiveSlotManager","_this$mediaProperties5","Error","createReceiveSlot","_this$members$findMem2","MediaRequestManager","mediaRequests","requestMedia","MediaType","AudioMain","degradationPreferences","kind","trimRequestsToNumOfSources","VideoMain","screenShareAudio","AudioSlides","screenShareVideo","VideoSlides","Members","locus","url","Roap","ReconnectionManager","meetingFiniteStateMachine","MeetingStateMachine","create","conversationUrl","sipUri","destination","destinationType","partner","owner","hostId","policy","MeetingRequest","mediaConnections","fetchMeetingInfoTimeoutId","updateMediaConnections","isEqual","MediaProperties","inMeetingActions","InMeetingActions","callEvents","floorGrantPending","dialInDeviceStatus","PSTN_STATUS","UNKNOWN","dialInUrl","dialOutDeviceStatus","dialOutUrl","networkQualityMonitor","statsMonitor","locusInfo","LocusInfo","updateMeetingObject","bind","recording","deferJoin","hasWebsocketConnected","mercury","connected","lastVideoLayoutInfo","layoutType","main","content","currentSpokenLanguage","showCaptionBox","transcribingRequestStatus","isCaptioning","speakerProxy","passwordStatus","PASSWORD_STATUS","registrationIdStatus","REGISTRATION_ID_STATUS","requiredCaptcha","meetingInfoFailureReason","meetingInfoFailureCode","recordingController","RecordingController","serviceUrl","links","services","record","sessionId","fullState","displayHints","controlsOptionsManager","ControlsOptionsManager","setUpLocusInfoListeners","init","hasJoinedOnce","remoteMediaManager","localAudioStreamMuteStateHandler","_this$audio","handleLocalStreamMuteStateChange","localVideoStreamMuteStateHandler","_this$video","localOutputTrackChangeHandler","turnDiscoverySkippedReason","turnServerUsed","addMediaData","retriedWithTurnServer","icePhaseCallback","joinWithMediaRetryInfo","isRetry","prevJoinResponse","_map","_classPrivateFieldSet2","clearErrorCache","_createClass2","key","getWebexObject","isJoined","_this$joinedWith3","isLocusCall","pstnCorrelationId","_this$callStateForMet","userNameInput","_this$callStateForMet2","emailInput","_classPrivateFieldGet2","time","fallback","Date","toISOString","date","_isNan","getTime","setMeetingInfo","meetingLookupUrl","MEETING_INFO_FAILURE_REASON","NONE","REQUIRED","VERIFIED","NOT_REQUIRED","MEETING_INFO_AVAILABLE","updateMeetingActions","_injectMeetingInfo","_callee4","fetchParams","_callee4$","_context4","prepForFetchMeetingInfo","parseMeetingInfo","injectMeetingInfo","_x2","_x3","_x4","_ref7","caller","_ref7$password","password","_ref7$registrationId","registrationId","_ref7$captchaCode","captchaCode","_ref7$extraParams","extraParams","meetingInfoExtraParams","cloneDeep","_fetchMeetingInfoInternal","_callee5","_ref8","_ref8$password","_ref8$captchaCode","_ref8$extraParams","_ref8$sendCAevents","sendCAevents","_ref8$registrationId","_ref8$classificationI","classificationId","captchaInfo","_err$body","_err$body2","_callee5$","_context5","captchaId","meetingInfoProvider","fetchMeetingInfo","installedOrgID","sent","body","abrupt","MeetingInfoV2PolicyError","POLICY","wbxAppApiCode","PermissionError","MeetingInfoV2JoinWebinarError","WEBINAR_REGISTRATION","WEBINAR_ERROR_WEBCAST","includes","NEED_JOIN_WITH_WEBCAST","WEBINAR_ERROR_REGISTRATION_ID","WEBINAR_NEED_REGISTRATION_ID","JoinWebinarError","MeetingInfoV2JoinForbiddenError","JOIN_FORBIDDEN","JOIN_BEFORE_HOST","NOT_REACH_JBH","JoinForbiddenError","MeetingInfoV2PasswordError","meetingNumber","WRONG_PASSWORD","refreshCaptcha","PasswordError","MeetingInfoV2CaptchaError","WRONG_CAPTCHA","isRegistrationIdRequired","WRONG_REGISTRATION_ID","isPasswordRequired","CaptchaError","OTHER","fetchMeetingInfoInternal","_x5","_refreshPermissionToken","_callee6","_this$meetingInfo","isStartingSpaceInstantV2Meeting","permissionTokenExpiryInfo","timeLeft","expiryTime","currentTime","_callee6$","_context6","permissionToken","DESTINATION_TYPE","CONVERSATION_URL","enableAdhocMeetings","preferredWebexSite","meetingJoinUrl","MEETING_LINK","getPermissionTokenExpiryInfo","PERMISSION_TOKEN_REFRESH","PERMISSION_TOKEN_REFRESH_ERROR","refreshPermissionToken","_x6","_fetchMeetingInfo","_callee7","_callee7$","_context7","_x7","verifyPassword","_this2","VERIFY_PASSWORD_SUCCESS","isPasswordValid","failureReason","verifyRegistrationId","_this3","VERIFY_REGISTRATION_ID_SUCCESS","isRegistrationIdValid","VERIFY_REGISTRATION_ID_ERROR","_this4","_URL","URL","refreshURL","hostname","captchaRefreshUrl","response","captchaID","verificationImageURL","verificationAudioURL","postMetrics","eventName","setUpLocusInfoSelfListener","setUpLocusInfoMeetingListener","setUpLocusServicesListener","setUpLocusResourcesListener","setUpLocusFullStateListener","setUpLocusUrlListener","setUpLocusHostListener","setUpLocusSelfListener","setUpLocusParticipantsListener","setupLocusControlsListener","setUpLocusMediaSharesListener","setUpLocusEmbeddedAppsListener","setUpLocusInfoMeetingInfoListener","setUpLocusInfoAssignHostListener","setUpLocusInfoMediaInactiveListener","setUpBreakoutsListener","setUpInterpretationListener","_this5","BREAKOUTS","EVENTS","BREAKOUTS_CLOSING","MEETING_BREAKOUTS_CLOSING","MESSAGE","messageEvent","MEETING_BREAKOUTS_MESSAGE","MEMBERS_UPDATE","MEETING_BREAKOUTS_UPDATE","ASK_RETURN_TO_MAIN","MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN","LEAVE_BREAKOUT","MEETING_BREAKOUTS_LEAVE","ASK_FOR_HELP","helpEvent","MEETING_BREAKOUTS_ASK_FOR_HELP","PRE_ASSIGNMENTS_UPDATE","MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE","_this6","INTERPRETATION","SUPPORT_LANGUAGES_UPDATE","MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE","HANDOFF_REQUESTS_ARRIVED","MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED","setUpVoiceaListeners","voicea","listenToEvents","voiceaListenerCallbacks","areVoiceaEventsSetup","_this7","DISCONNECT_DUE_TO_INACTIVITY","res","REQUEST_UPLOAD_LOGS","reconnection","autoRejoin","MEETING_SELF_LEFT","_this8","LOCUS_INFO_CAN_ASSIGN_HOST","changed","canAssignHost","MEETING_ACTIONS_UPDATE","_this9","LOCUSINFO","FULL_STATE_MEETING_STATE_CHANGE","MEETING_STATE_CHANGE","FULL_STATE_TYPE_UPDATE","locusFullStateTypeUpdate","MEETINGS_NETWORK_DISCONNECTED","MEETINGS_NETWORK_CONNECTED","_this10","LOCUS_INFO_UPDATE_SELF","locusSelfUpdate","pstnUpdate","requestScreenShareFloorIfPending","_this11","self","_payload$newSelf","_payload$newSelf2","dialInPstnDevice","newSelf","pstnDevices","find","device","dialOutPstnDevice","_dialInPstnDevice$dia","newStatus","dialingStatus","_dialOutPstnDevice$di","MEETING_SELF_PHONE_AUDIO_UPDATE","dialIn","attendeeId","dialOut","_this12","LOCUS_INFO_UPDATE_HOST","locusHostUpdate","_this13","LOCUS_INFO_UPDATE_PARTICIPANTS","locusParticipantsUpdate","PARTICIPANT_REASON_CHANGED","MEETING_PARTICIPANT_REASON_CHANGED","_this14","CONTROLS_RECORDING_UPDATED","_ref9","modifiedBy","lastModified","RECORDING_STATE","RECORDING","MEETING_STARTED_RECORDING","IDLE","MEETING_STOPPED_RECORDING","PAUSED","MEETING_PAUSED_RECORDING","RESUMED","MEETING_RESUMED_RECORDING","CONTROLS_MEETING_CONTAINER_UPDATED","_ref10","meetingContainerUrl","MEETING_MEETING_CONTAINER_UPDATE","CONTROLS_MEETING_TRANSCRIBE_UPDATED","_ref11","caption","transcribing","startTranscription","MEETING_STOPPED_RECEIVING_TRANSCRIPTION","CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED","_ref12","spokenLanguage","_this14$transcription","onSpokenLanguageUpdate","MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED","CONTROLS_MEETING_MANUAL_CAPTION_UPDATED","_ref13","enable","MEETING_MANUAL_CAPTION_UPDATED","CONTROLS_MEETING_BREAKOUT_UPDATED","_ref14","breakout","updateBreakout","CONTROLS_MEETING_INTERPRETATION_UPDATED","_ref15","interpretation","updateInterpretation","MEETING_INTERPRETATION_UPDATE","CONTROLS_ENTRY_EXIT_TONE_UPDATED","_ref16","entryExitTone","MEETING_ENTRY_EXIT_TONE_UPDATE","CONTROLS_MUTE_ON_ENTRY_CHANGED","_ref17","MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED","CONTROLS_SHARE_CONTROL_CHANGED","_ref18","MEETING_CONTROLS_SHARE_CONTROL_UPDATED","CONTROLS_DISALLOW_UNMUTE_CHANGED","_ref19","MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED","CONTROLS_REACTIONS_CHANGED","_ref20","MEETING_CONTROLS_REACTIONS_UPDATED","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","_ref21","MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED","CONTROLS_RAISE_HAND_CHANGED","_ref22","MEETING_CONTROLS_RAISE_HAND_UPDATED","CONTROLS_WEBCAST_CHANGED","_ref23","MEETING_CONTROLS_WEBCAST_UPDATED","CONTROLS_MEETING_FULL_CHANGED","_ref24","MEETING_CONTROLS_MEETING_FULL_UPDATED","CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","_ref25","updatePracticeSessionStatus","MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","CONTROLS_STAGE_VIEW_UPDATED","_ref26","MEETING_CONTROLS_STAGE_VIEW_UPDATED","CONTROLS_VIDEO_CHANGED","_ref27","MEETING_CONTROLS_VIDEO_UPDATED","CONTROLS_ANNOTATION_CHANGED","_ref28","MEETING_CONTROLS_ANNOTATION_UPDATED","CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED","_ref29","MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED","CONTROLS_POLLING_QA_CHANGED","_ref30","MEETING_CONTROLS_POLLING_QA_UPDATED","triggerAnnotationInfoEvent","contentShare","previousContentShare","MEETING_UPDATE_ANNOTATION_INFO","annotationInfo","resourceType","_this15","LOCUS_INFO_UPDATE_MEDIA_SHARES","_ref31","_callee8","_payload$previous","_payload$previous2","_payload$current","whiteboardShare","previousWhiteboardShare","newShareStatus","_this15$locusInfo","_this15$locusInfo$inf","_this15$webinar","oldShareStatus","sendStartedSharingRemote","_this15$mediaProperti","_callee8$","_context8","current","whiteboard","previous","forceUpdate","beneficiaryId","disposition","deviceUrlSharing","resourceUrl","selfId","FLOOR_ACTION","GRANTED","REMOTE_SHARE_ACTIVE","isWebinar","selfIsAttendee","guest","WHITEBOARD_SHARE_ACTIVE","MEETING_STOPPED_SHARING_REMOTE","SELF_STOPPED","MEETING_STOPPED_SHARING_WHITEBOARD","saveTimestamp","shareDuration","getShareDuration","t1","_this15$locusInfo2","_this15$locusInfo2$in","_this15$webinar2","finalBeneficiaryId","MEETING_STARTED_SHARING_REMOTE","memberId","mediaDirection","sendShare","finish","MEETING_STARTED_SHARING_LOCAL","MEETING_STARTED_SHARING_WHITEBOARD","locusMediaSharesUpdate","_x8","_this16","LOCUS_INFO_UPDATE_URL","_this16$locusUrl","locusUrlUpdate","setLocusUrl","MEETING_LOCUS_URL_UPDATE","_this17","LINKS_SERVICES","_payload$services","_payload$services$rec","_this17$locusInfo","_this17$locusInfo$ful","_payload$services2","_payload$services2$br","_payload$services3","_payload$services3$ap","_payload$services4","_payload$services4$ap","setServiceUrl","setSessionId","breakoutServiceUrlUpdate","approvalUrlUpdate","approval","_this18","LINKS_RESOURCES","updateWebcastUrl","MEETING_RESOURCE_LINKS_UPDATE","_this19","MEETING_LOCKED","MEETING_UNLOCKED","MEETING_INFO_UPDATED","_ref32","isInitializing","setDisplayHints","userDisplayHints","setUserPolicy","selfUserPolicies","handleDataChannelUrlChange","datachannelUrl","enableAutomaticLLM","updateLLMConnection","_this20","EMBEDDED_APPS_UPDATED","embeddedApps","MEETING_EMBEDDED_APPS_UPDATE","_this21","LOCAL_UNMUTE_REQUIRED","handleServerLocalUnmuteRequired","unmuteAllowed","MEETING_SELF_UNMUTED_BY_OTHERS","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","_payload$muted","_payload$unmuteAllowe","isRemotelyMuted","isUnmuteAllowed","handleServerRemoteMuteUpdate","MEETING_SELF_VIDEO_MUTED_BY_OTHERS","MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS","SELF_REMOTE_MUTE_STATUS_UPDATED","_this21$audio","isMuted","MEETING_SELF_MUTED_BY_OTHERS","LOCAL_UNMUTE_REQUESTED","MEETING_SELF_REQUESTED_TO_UNMUTE","SELF_UNADMITTED_GUEST","startKeepAlive","MEETING_SELF_LOBBY_WAITING","GUEST_ENTERED_LOBBY","SELF_ADMITTED_GUEST","_ref33","_callee9","_this21$rtcMetrics","_callee9$","_context9","MEETING_SELF_GUEST_ADMITTED","GUEST_EXITED_LOBBY","rtcMetrics","sendNextMetrics","_x9","MEDIA_INACTIVITY","MEETING_MEDIA_INACTIVE","MEDIA_STATUS_CHANGE","_this21$mediaProperti","_this21$audio2","_this21$mediaProperti2","_this21$video","_this21$mediaProperti3","_this21$mediaProperti4","_this21$mediaProperti5","_this21$mediaProperti6","updateMediaStatus","actual","expected","sendAudio","sendVideo","receiveAudio","receiveVideo","receiveShare","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST","SELF_MEETING_BREAKOUTS_CHANGED","updateBreakoutSessions","SELF_MEETING_INTERPRETATION_CHANGED","targetChanged","updateSelfInterpretation","audioStream","setSendNamedMediaGroup","SELF_MEETING_BRB_CHANGED","_this21$brbState","_payload$brb","brbState","handleServerBrbUpdate","brb","enabled","MEETING_SELF_BRB_UPDATE","SELF_ROLES_CHANGED","_payload$newRoles","_payload$newRoles2","_payload$newRoles3","isModeratorOrCohost","newRoles","SELF_ROLES","MODERATOR","COHOST","updateCanManageBreakouts","updateCanManageInterpreters","updateRoleChanged","MEETING_SELF_ROLES_CHANGED","SELF_IS_SHARING_BLOCKED_CHANGE","MEETING_SELF_IS_SHARING_BLOCKED","_this22","REMOTE_RESPONSE","remote","remoteDeclined","DESTROY_MEETING","_ref34","_callee10","_callee10$","_context10","setLocalShareVideoStream","setLocalShareAudioStream","shouldLeave","cleanUp","_x10","object","_this23","_keys","invite","invitee","alertIfActive","addMember","cancelPhoneInvite","cancelInviteByMemberId","admit","sessionLocusUrls","locusUrls","_this$breakouts","mainLocusUrl","authorizingLocusUrl","admitMembers","_beRightBack","_callee11","_this24","errorMessage","_errorMessage","_error","_callee11$","_context11","sendSlotManager","beRightBack","_x11","remove","removeMember","mute","muteMember","transfer","moderator","transferHostToMember","locusMeetingObject","_typeof2","_locusMeetingObject","_locusMeetingObject2","_locusMeetingObject3","_locusMeetingObject4","_locusMeetingObject6","_locusMeetingObject7","setSipUri","enableUnifiedMeetings","sipUrl","sipMeetingUri","_locusMeetingObject5","webExMeetingId","setPermissionTokenPayload","setSelfUserPolicies","environment","channel","parseInterpretationInfo","arePolicyRestrictionsSupported","isEmpty","_this$meetingInfo2","_this$meetingInfo3","_this$meetingInfo4","_this$meetingInfo4$vi","_this$meetingInfo5","_this$meetingInfo5$vi","canUseVoip","supportVoIP","ControlsOptionsUtil","hasPolicies","requiredPolicies","SELF_POLICY","SUPPORT_VOIP","policies","canDoVideo","SUPPORT_VIDEO","supportHDV","SUPPORT_HDV","enforceVirtualBackground","ENFORCE_VIRTUAL_BACKGROUND","supportHQV","SUPPORT_HQV","canInviteNewParticipants","canAdmitParticipant","canLock","canUserLock","canUnlock","canUserUnlock","canShareWhiteBoard","canSetDisallowUnmute","canUnsetDisallowUnmute","canSetMuteOnEntry","canUnsetMuteOnEntry","canSetMuted","canUnsetMuted","canStartRecording","RecordingUtil","canUserStart","canStopRecording","canUserStop","canPauseRecording","canUserPause","canResumeRecording","canUserResume","isPremiseRecordingEnabled","canRaiseHand","canUserRaiseHand","canLowerAllHands","canUserLowerAllHands","canLowerSomeoneElsesHand","canUserLowerSomeoneElsesHand","bothLeaveAndEndMeetingAvailable","canEnableClosedCaption","canStartTranscribing","canStopTranscribing","isClosedCaptionActive","canStartManualCaption","canStopManualCaption","isLocalRecordingStarted","isLocalRecordingStopped","isLocalRecordingPaused","isManualCaptionActive","isSaveTranscriptsEnabled","isSpokenLanguageAutoDetectionEnabled","isWebexAssistantActive","canViewCaptionPanel","isRealTimeTranslationEnabled","canSelectSpokenLanguages","waitingForOthersToJoin","canSendReactions","requiresPostMeetingDataConsentPrompt","canManageBreakout","canStartBreakout","canBroadcastMessageToBreakout","canAdmitLobbyToBreakout","isBreakoutPreassignmentsEnabled","canUserAskForHelp","canUserRenameSelfAndObserved","canUserRenameOthers","canMoveToLobby","canMuteAll","hasHints","requiredHints","DISPLAY_HINTS","MUTE_ALL","canUnmuteAll","UNMUTE_ALL","canEnableHardMute","ENABLE_HARD_MUTE","canDisableHardMute","DISABLE_HARD_MUTE","canEnableMuteOnEntry","ENABLE_MUTE_ON_ENTRY","canDisableMuteOnEntry","DISABLE_MUTE_ON_ENTRY","canEnableReactions","ENABLE_REACTIONS","canDisableReactions","DISABLE_REACTIONS","canEnableReactionDisplayNames","ENABLE_SHOW_DISPLAY_NAME","canDisableReactionDisplayNames","DISABLE_SHOW_DISPLAY_NAME","canUpdateShareControl","SHARE_CONTROL","canEnableViewTheParticipantsList","ENABLE_VIEW_THE_PARTICIPANT_LIST","canDisableViewTheParticipantsList","DISABLE_VIEW_THE_PARTICIPANT_LIST","canEnableViewTheParticipantsListPanelist","ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST","canDisableViewTheParticipantsListPanelist","DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST","canEnableShowAttendeeCount","ENABLE_SHOW_ATTENDEE_COUNT","canDisableShowAttendeeCount","DISABLE_SHOW_ATTENDEE_COUNT","canEnableRaiseHand","ENABLE_RAISE_HAND","canDisableRaiseHand","DISABLE_RAISE_HAND","canEnableVideo","ENABLE_VIDEO","canDisableVideo","DISABLE_VIDEO","canStartWebcast","WEBCAST_CONTROL_START","canStopWebcast","WEBCAST_CONTROL_STOP","canShowStageView","STAGE_VIEW_ACTIVE","canEnableStageView","ENABLE_STAGE_VIEW","canDisableStageView","DISABLE_STAGE_VIEW","isPracticeSessionOn","PRACTICE_SESSION_ON","isPracticeSessionOff","PRACTICE_SESSION_OFF","canStartPracticeSession","SHOW_PRACTICE_SESSION_START","canStopPracticeSession","SHOW_PRACTICE_SESSION_STOP","canShareFile","SHARE_FILE","SUPPORT_FILE_SHARE","canTransferFile","SUPPORT_FILE_TRANSFER","canRealtimeCloseCaption","SUPPORT_REALTIME_CLOSE_CAPTION","canRealtimeCloseCaptionManual","SUPPORT_REALTIME_CLOSE_CAPTION_MANUAL","canChat","SUPPORT_CHAT","canPollingAndQA","SUPPORT_POLLING_AND_QA","canShareApplication","SHARE_APPLICATION","SUPPORT_APP_SHARE","canShareCamera","SHARE_CAMERA","SUPPORT_CAMERA_SHARE","canShareDesktop","SHARE_DESKTOP","SUPPORT_DESKTOP_SHARE","canShareContent","SHARE_CONTENT","canAnnotate","SUPPORT_ANNOTATION","canEnableAnnotation","ENABLE_ANNOTATION_MEETING_OPTION","canDisableAnnotation","DISABLE_ANNOTATION_MEETING_OPTION","canEnableRemoteDesktopControl","ENABLE_RDC_MEETING_OPTION","canDisableRemoteDesktopControl","DISABLE_RDC_MEETING_OPTION","canEnablePollingQA","ENABLE_ATTENDEE_START_POLLING_QA","canDisablePollingQA","DISABLE_ATTENDEE_START_POLLING_QA","_this$permissionToken","_this$permissionToken2","_this$permissionToken3","_this$permissionToken4","permissionTokenPayload","permission","userPolicies","enforceVBGImagesURL","jwtDecode","permissionTokenReceivedLocalTime","setLocus","mtgLocus","host","initialSetup","setLogUploadTimer","_this25","LOG_UPLOAD_INTERVALS","delay","logUploadIntervalMultiplicationFactor","uploadLogsTimer","safeSetTimeout","startPeriodicLogUpload","stopPeriodicLogUpload","unsetRemoteStreams","closeRemoteStream","closeRemoteStreams","_this26","_this$mediaProperties6","remoteAudioStream","remoteVideoStream","remoteShareStream","triggerMediaStoppedEvent","MEDIA_STOPPED","stopStream","Media","all","_setLocalAudioStream","_callee12","localStream","_this$audio2","oldStream","_callee12$","_context12","LocalStreamEventNames","UserMuteStateChange","SystemMuteStateChange","OutputTrackChange","setLocalAudioStream","handleLocalStreamChange","unpublishStream","publishStream","_x12","_setLocalVideoStream","_callee13","_this$video2","_callee13$","_context13","videoStream","setLocalVideoStream","_x13","_setLocalShareVideoStream","_callee14","localDisplayStream","_callee14$","_context14","handleShareVideoStreamMuteStateChange","StreamEventNames","Ended","handleShareVideoStreamEnded","_x14","_setLocalShareAudioStream","_callee15","localSystemAudioStream","_callee15$","_context15","handleShareAudioStreamEnded","_x15","emitPublishStateChangeEvent","functionName","isPublished","MEETING_STREAM_PUBLISH_STATE_CHANGED","cleanupLocalStreams","_this$mediaProperties7","setMercuryListener","_this27","ONLINE","MERCURY_CONNECTION_RESTORED","OFFLINE","MERCURY_CONNECTION_FAILURE","closePeerConnections","resetMuteStates","mediaRequestManager","reset","close","unsetPeerConnection","unsetPeerConnections","detection","setCorrelationId","updateCallStateForMetrics","enqueueScreenShareFloorRequest","PENDING","enqueueMediaUpdate","muteAudio","_this28","isUserInJoinedState","UserNotJoinedError","NoMediaEstablishedYetError","ParameterError","handleClientRequest","handleAudioLogging","MUTE_AUDIO_FAILURE","unmuteAudio","_this29","UNMUTE_AUDIO_FAILURE","muteVideo","_this30","handleVideoLogging","MUTE_VIDEO_FAILURE","unmuteVideo","_this31","UNMUTE_VIDEO_FAILURE","_joinWithMedia","_callee16","_this32","mediaOptions","_options$joinOptions","joinOptions","_this$joinWithMediaRe","joined","joinResponse","turnServerInfo","forceTurnDiscovery","turnDiscoveryRequest","_yield$this$roap$hand","mediaResponse","_this$locusUrl","_leaveError","leaveError","shouldRetry","_args16","_callee16$","_context16","allowMediaInLobby","generateTurnDiscoveryRequestMessage","join","handleTurnDiscoveryHttpResponse","abortTurnDiscovery","addMediaInternal","media","multistreamEnabled","isSdpOfferCreationError","resourceId","JOIN_WITH_MEDIA_FAILURE","leaveErrorReason","joinWithMedia","_this33","isMediaEstablished","currentMediaStatus","cleanUpBeforeReconnection","_callee17","_callee17$","_context17","waitForRemoteSDPAnswer","waitForMediaConnectionConnected","ReconnectionNotStartedError","isTranscriptionSupported","_this$locusInfo$contr","controls","transcribe","_this$locusInfo5","_this$locusInfo5$cont","reactions","setCaptionLanguage","language","_this34","voiceaListenerCaptionUpdate","CAPTION_LANGUAGE_UPDATE","statusCode","currentCaptionLanguage","requestLanguage","setSpokenLanguage","_this35","voiceaListenerLanguageUpdate","SPOKEN_LANGUAGE_UPDATE","languageCode","_startTranscription","_callee18","_callee18$","_context18","turnOnCaptions","RECEIVE_TRANSCRIPTION_FAILURE","_x16","triggerStopReceivingTranscriptionEvent","_join","_callee19","_this36","joinFailed","joinSuccess","_errorMessage2","_error2","_errorMessage3","_error3","_args19","_callee19$","_context19","registered","rejoin","sendCallInitiated","joinTrigger","isRoapCallEnabled","pstnAudioType","MEETING_STATE_MACHINE","STATES","ENDED","RINGING","ring","_JOIN_","meetingQuality","QUALITY_LEVELS","setRemoteQualityLevel","enableMultistream","checkAndRefreshPermissionToken","MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC","MEETING_PERMISSION_TOKEN_REFRESH_REASON","fail","joinMeetingOptions","setupLocusMediaRequest","meetingStarted","JOIN_SUCCESS","_error$error","JOIN_FAILURE","LLM_CONNECTION_AFTER_JOIN_FAILURE","_updateLLMConnection","_callee20","_this37","_this$locusInfo6","_this$locusInfo6$info","_this$locusInfo6$info2","practiceSessionDatachannelUrl","dataChannelUrl","_callee20$","_context20","isJoinPracticeSessionDataChannel","isConnected","getLocusUrl","getDatachannelUrl","disconnectLLM","registerAndConnect","registerAndConnectResult","usePhoneAudio","phoneNumber","dialInPstn","dialOutPstn","isPhoneProvisioned","pstnStatus","JOINED","SUCCESS","_this38","clientUrl","_error$error2","ADD_DIAL_IN_FAILURE","dial_in_url","dial_in_correlation_id","client_url","_this39","_error$error3","ADD_DIAL_OUT_FAILURE","dial_out_url","dial_out_correlation_id","disconnectPhoneAudio","_this40","correlationToClear","moveTo","_this41","mediaCapabilities","rx","share","share_audio","tx","once","SELF_OBSERVING","_callee21","mediaSettings","_callee21$","_context21","releaseScreenShareFloor","setMediaDirection","unsetRemoteMedia","stopAnalyzer","addMedia","audioEnabled","videoEnabled","shareVideoEnabled","MOVE_TO_SUCCESS","isMoveToInProgress","MOVE_TO_FAILURE","moveToResource","moveFrom","_this42","oldCorrelationId","leaveMeeting","moveMeeting","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","getMediaConnectionDebugId","substring","_createMediaConnection","_callee22","bundlePolicy","mc","shareEnabled","_callee22$","_context22","RtcMetrics","reachability","stopReachability","createMediaConnection","remoteQualityLevel","enableRtx","enableExtmap","iceCandidatesTimeout","iceCandidatesGatheringTimeout","disableAudioMainDtx","enableAudioTwcc","enableAudioTwccForMultistream","stopIceGatheringAfterFirstRelayCandidate","setMediaPeerConnection","setupMediaConnectionListeners","createSlot","_x17","_x18","forwardEvent","eventEmitter","eventTypeToForward","meetingEventType","_this43","_setUpLocalStreamReferences","_callee23","localStreams","_localStreams$microph","_localStreams$camera","_localStreams$screenS","_localStreams$screenS2","_localStreams$screenS3","_localStreams$screenS4","_localStreams$screenS5","_localStreams$screenS6","setUpStreamPromises","_callee23$","_context23","microphone","readyState","camera","screenShare","setUpLocalStreamReferences","_x19","_waitForMediaConnectionConnected","_callee24","iceConnected","_this$mediaProperties8","_this$mediaProperties9","_this$mediaProperties10","_this$mediaProperties11","_this$mediaProperties12","_this$mediaProperties13","_this$mediaProperties14","timedOutError","_callee24$","_context24","t2","t3","t4","t5","t6","multistreamConnection","pc","signalingState","mediaConnection","t7","t8","isWebexMediaBackendUnreachable","t9","t10","unreachable","t11","generateClientErrorCodeForIceFailure","t12","t13","t14","t15","t16","t17","createStatsAnalyzer","_this44","stats","enableStatsAnalyzer","NetworkQualityMonitor","StatsMonitor","StatsAnalyzer","setupStatsAnalyzerEventHandlers","NetworkQualityEventNames","NETWORK_QUALITY","sendNetworkQualityEvent","StatsMonitorEventNames","INBOUND_AUDIO_ISSUE","atLeastOneUnmutedOtherMember","getAll","isSelf","isPairedWithSelf","isAudioMuted","sendMediaIssueMetric","issueSubType","MEDIA_INBOUND_AUDIO_ISSUE_DETECTED","_waitForRemoteSDPAnswer","_callee25","_this45","_callee25$","_context25","setTimeout","ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT","promise","_retryEstablishMediaConnectionWithForcedTurnDiscovery","_callee26","remoteMediaManagerConfig","_callee26$","_context26","establishMediaConnection","retryEstablishMediaConnectionWithForcedTurnDiscovery","_x20","_x21","_retryWithForcedTurnDiscovery","_callee27","_callee27$","_context27","cleanUpBeforeRetryWithTurnServer","ADD_MEDIA_RETRY","meetingState","MEETING_STATE","LEFT","retryWithForcedTurnDiscovery","_x22","_x23","_handleWaitForMediaConnectionConnectedError","_callee28","_callee28$","_context28","AddMediaFailed","handleWaitForMediaConnectionConnectedError","_x24","_x25","_x26","_doTurnDiscovery","_callee29","isReconnecting","isForced","turnDiscoveryResult","_callee29$","_context29","submitInternalEvent","doTurnDiscovery","TURN_DISCOVERY_LATENCY","getTurnDiscoveryTime","_x27","_x28","_establishMediaConnection","_callee30","_this$locusMediaReque","_yield$this$doTurnDis","_callee30$","_context30","locusMediaRequest","isConfluenceCreated","RemoteMediaManager","RemoteMediaManagerEvent","AudioCreated","REMOTE_MEDIA_AUDIO_CREATED","InterpretationAudioCreated","REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED","ScreenShareAudioCreated","REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED","VideoLayoutChanged","REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED","start","initiateOffer","handleMediaLogging","_x29","_x30","_x31","_x32","_cleanUpOnAddMediaFailure","_callee31","_this$networkQualityM","_this$statsMonitor","_callee31$","_context31","removeAllListeners","forceSendStatsReport","cleanUpOnAddMediaFailure","_downgradeFromMultistreamToTranscoded","_callee32","_this$networkQualityM2","_this$statsMonitor2","_this$locusMediaReque2","_callee32$","_context32","downgradeFromMultistreamToTranscoded","_cleanUpBeforeRetryWithTurnServer","_callee33","_callee33$","_context33","_cleanUpBeforeReconnection","_callee34","_callee34$","_context34","_this$webex$meetings$2","_this$webex$meetings$3","LocusMediaRequest","deviceType","countryCode","regionCode","preferTranscoding","_this46","_addMediaInternal","_callee35","_options$audioEnabled","_options$videoEnabled","_options$shareAudioEn","shareAudioEnabled","_options$shareVideoEn","_options$bundlePolicy","_options$additionalMe","additionalMediaOptions","rawSendVideo","rawReceiveVideo","rawSendAudio","rawReceiveAudio","ipver","_this$remoteMediaMana","_yield$this$mediaProp","connectionType","ipVersion","selectedCandidatePairChanges","numTransports","reachabilityMetrics","_this$mediaProperties15","_this$mediaProperties16","_this$mediaProperties17","_this$mediaProperties18","_this$mediaProperties19","_this$mediaProperties20","_this$mediaProperties21","_this$mediaProperties22","_this$mediaProperties23","_this$mediaProperties24","_this$mediaProperties25","_this$mediaProperties26","_this$mediaProperties27","_this$mediaProperties28","_this$mediaProperties29","_this$mediaProperties30","_this$mediaProperties31","_this$mediaProperties32","_this$mediaProperties33","_this$mediaProperties34","_this$mediaProperties35","_reachabilityMetrics","_yield$this$mediaProp2","_selectedCandidatePairChanges","_numTransports","_iceCandidateErrors","_args35","_callee35$","_context35","FULL_STATE","ACTIVE","MeetingNotActiveError","isUserInLeftState","getIpVersion","isUserUnadmitted","UserInLobbyError","createMuteState","createBrbState","getCurrentConnectionInfo","fromEntries","getMediaReachabilityMetricFields","ADD_MEDIA_SUCCESS","isJoinWithMediaRetry","logAllReceiveSlots","ADD_MEDIA_FAILURE","connectionState","iceConnectionState","MEETING_CONNECTION_FAILED","_x33","_x34","_x35","_this47","canUpdateMediaNow","queueItem","_updateMedia","_callee36","_this$audio3","_this$video3","_callee36$","_context36","checkMediaConnection","setActive","_x36","acknowledge","_this48","_INCOMING_","acknowledgeMeeting","decline","_this49","declineMeeting","buildLeaveFetchRequestOptions","requestOptions","prepareFetchOptions","_this50","leaveReason","CLIENT_LEAVE_REQUEST","submitLeaveMetric","clientEventLeaveReason","clearMeetingData","fatal","errorDescription","category","shownToUser","MEETING_LEAVE_FAILURE","startWhiteboardShare","channelUrl","resourceToken","_this51","mediaShares","element","personUrl","uri","changeMeetingFloor","MEETING_START_WHITEBOARD_SHARE_FAILURE","board","stopWhiteboardShare","_this52","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","finally","_this53","CONTENT","MEETING_SHARE_SUCCESS","MEETING_SHARE_FAILURE","getChangeMeetingFloorErrorPayload","_this54","_this55","_content$floor","floor","beneficiary","STOP_FLOOR_REQUEST_FAILURE","startRecording","setMuteOnEntry","setDisallowUnmute","setMuteAll","mutedEnabled","disallowUnmuteEnabled","muteOnEntryEnabled","roles","stopRecording","pauseRecording","resumeRecording","lockMeeting","unlockMeeting","rejectWithErrorLog","sendDTMF","tones","enableDTMF","changeVideoLayout","_this56","renderInfo","_this$mediaProperties36","layoutInfo","LAYOUT_TYPES","mainWidth","Math","round","width","mainHeight","height","abs","contentWidth","contentHeight","CONTROLS_MEETING_LAYOUT_UPDATED","envelope","MEETING_CONTROLS_LAYOUT_UPDATE","layout","changeVideoLayoutDebounced","level","networkQualityScore","PANELIST","ATTENDEE","endMeetingForAll","_this57","MEETING_END_ALL_INITIATED","end","MEETING_END_ALL_FAILURE","sendReaction","reactionType","skinToneType","_this$locusInfo7","_this$locusInfo7$cont","_this$locusInfo7$cont2","reactionChannelUrl","reactionData","Reactions","skinToneData","SkinTones","normal","tone","toggleReactions","_this$locusInfo8","_this$locusInfo8$cont","_this$locusInfo8$cont2","isEnabled","requestingParticipantId","setPostMeetingDataConsent","accept","postMeetingDataConsent","_this$mediaProperties37","_enableMusicMode","_callee37","shouldEnableMusicMode","_callee37$","_context37","setCodecParameters","maxaveragebitrate","maxplaybackrate","deleteCodecParameters","enableMusicMode","_x37","_this$mediaProperties38","_this$mediaProperties39","_this$mediaProperties40","_this$mediaProperties41","_this$mediaProperties42","_this$mediaProperties43","_this$mediaProperties44","_this$mediaProperties45","_this58","update","localTracks","getTracks","direction","getDirection","UPDATE_MEDIA_FAILURE","getTargetLanguageCode","groups","NAMED_MEDIA_GROUP_TYPE_AUDIO","setNamedMediaGroups","_publishStream","_callee38","_callee38$","_context38","_x38","_x39","_unpublishStream","_callee39","_callee39$","_context39","_x40","_x41","_publishStreams","_callee40","streams","_streams$screenShare","_streams$screenShare2","_streams$screenShare3","_streams$screenShare4","_streams$screenShare5","_streams$screenShare6","streamChecks","_i","_streamChecks","_streamChecks$_i","floorRequestNeeded","_streams$screenShare7","_callee40$","_context40","publishStreams","_x42","_unpublishStreams","_callee41","promises","_iterator","_step","_callee41$","_context41","_x43","permissionTokenExpiryFromServer","Number","exp","permissionTokenIssuedTimeFromServer","iat","shiftInTime","adjustedCurrentTime","threshold","_this$getPermissionTo","_getMediaReachabilityMetricFields","_callee42","_this$mediaServerIp","_this$mediaConnection","_this$mediaConnection2","_this$mediaConnection3","successKeys","totalSuccessCases","selectedSubnetFirstOctet","isSubnetReachable","selectedCluster","_callee42$","_context42","getReachabilityMetrics","reduce","total","mediaAgentCluster","subnet_reachable","selected_cluster","selected_subnet","setStage","_ref37","_ref37$activeSpeakerP","activeSpeakerProportion","customBackground","customLogo","customNameLabel","importantParticipants","_ref37$lockAttendeeVi","lockAttendeeViewOnStage","_ref37$showActiveSpea","showActiveSpeaker","videoLayout","overrideDefault","lockAttendeeViewOnStageOnly","stageParameters","show","order","stageManagerType","importantParticipant","index","customLayouts","logo","STAGE_MANAGER_TYPE","LOGO","background","BACKGROUND","nameLabelStyle","NAME_LABEL","synchronizeStage","unsetStage","notifyHost","meetingUuid","displayName","siteFullUrl","StatelessWebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {cloneDeep, isEqual, isEmpty} from 'lodash';\nimport jwtDecode from 'jwt-decode';\n// @ts-ignore - Fix this\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore - Types not available for @webex/common\nimport {Defer} from '@webex/common';\nimport {safeSetTimeout, safeSetInterval} from '@webex/common-timers';\nimport {\n ClientEvent,\n ClientEventLeaveReason,\n CallDiagnosticUtils,\n CALL_DIAGNOSTIC_CONFIG,\n RtcMetrics,\n} from '@webex/internal-plugin-metrics';\nimport {ClientEvent as RawClientEvent} from '@webex/event-dictionary-ts';\n\nimport {\n ConnectionState,\n Errors,\n ErrorType,\n MediaConnectionEventNames,\n MediaContent,\n MediaType,\n RemoteTrackType,\n RoapMessage,\n StatsAnalyzer,\n StatsAnalyzerEventNames,\n NetworkQualityEventNames,\n NetworkQualityMonitor,\n StatsMonitor,\n StatsMonitorEventNames,\n} from '@webex/internal-media-core';\n\nimport {\n LocalStream,\n LocalCameraStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n LocalMicrophoneStream,\n LocalStreamEventNames,\n StreamEventNames,\n RemoteStream,\n} from '@webex/media-helpers';\n\nimport {\n EVENT_TRIGGERS as VOICEAEVENTS,\n TURN_ON_CAPTION_STATUS,\n type MeetingTranscriptPayload,\n} from '@webex/internal-plugin-voicea';\n\nimport {processNewCaptions} from './voicea-meeting';\n\nimport {\n MeetingNotActiveError,\n UserInLobbyError,\n NoMediaEstablishedYetError,\n UserNotJoinedError,\n AddMediaFailed,\n} from '../common/errors/webex-errors';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsUtil from '../common/events/util';\nimport Trigger from '../common/events/trigger-proxy';\nimport Roap, {type TurnDiscoveryResult, type TurnDiscoverySkipReason} from '../roap/index';\nimport {type TurnServerInfo} from '../roap/types';\nimport Media, {type BundlePolicy} from '../media';\nimport MediaProperties from '../media/properties';\nimport MeetingStateMachine from './state';\nimport {createMuteState} from './muteState';\nimport LocusInfo from '../locus-info';\nimport Metrics from '../metrics';\nimport ReconnectionManager from '../reconnection-manager';\nimport ReconnectionNotStartedError from '../common/errors/reconnection-not-started';\nimport MeetingRequest from './request';\nimport Members from '../members/index';\nimport MeetingUtil from './util';\nimport MeetingsUtil from '../meetings/util';\nimport RecordingUtil from '../recording-controller/util';\nimport ControlsOptionsUtil from '../controls-options-manager/util';\nimport MediaUtil from '../media/util';\nimport {Reactions, SkinTones} from '../reactions/reactions';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport {\n DESTINATION_TYPE,\n _INCOMING_,\n _JOIN_,\n AUDIO,\n CONTENT,\n DISPLAY_HINTS,\n EVENT_TRIGGERS,\n EVENT_TYPES,\n EVENTS,\n BREAKOUTS,\n FLOOR_ACTION,\n FULL_STATE,\n LAYOUT_TYPES,\n LOCUSINFO,\n MEETING_INFO_FAILURE_REASON,\n MEETING_REMOVED_REASON,\n MEETING_STATE_MACHINE,\n MEETING_STATE,\n MEETINGS,\n NETWORK_STATUS,\n ONLINE,\n OFFLINE,\n PASSWORD_STATUS,\n PSTN_STATUS,\n QUALITY_LEVELS,\n RECORDING_STATE,\n SHARE_STATUS,\n SHARE_STOPPED_REASON,\n VIDEO,\n SELF_ROLES,\n INTERPRETATION,\n SELF_POLICY,\n MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC,\n MEETING_PERMISSION_TOKEN_REFRESH_REASON,\n ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT,\n NAMED_MEDIA_GROUP_TYPE_AUDIO,\n WEBINAR_ERROR_WEBCAST,\n WEBINAR_ERROR_REGISTRATION_ID,\n JOIN_BEFORE_HOST,\n REGISTRATION_ID_STATUS,\n STAGE_MANAGER_TYPE,\n} from '../constants';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport ParameterError from '../common/errors/parameter';\nimport {\n MeetingInfoV2PasswordError,\n MeetingInfoV2CaptchaError,\n MeetingInfoV2PolicyError,\n MeetingInfoV2JoinWebinarError,\n MeetingInfoV2JoinForbiddenError,\n} from '../meeting-info/meeting-info-v2';\nimport {CSI, ReceiveSlotManager} from '../multistream/receiveSlotManager';\nimport SendSlotManager from '../multistream/sendSlotManager';\nimport {MediaRequestManager} from '../multistream/mediaRequestManager';\nimport {\n Configuration as RemoteMediaManagerConfiguration,\n RemoteMediaManager,\n Event as RemoteMediaManagerEvent,\n} from '../multistream/remoteMediaManager';\nimport {\n Reaction,\n ReactionServerType,\n SkinToneType,\n ProcessedReaction,\n RelayEvent,\n} from '../reactions/reactions.type';\nimport Breakouts from '../breakouts';\nimport SimultaneousInterpretation from '../interpretation';\nimport Annotation from '../annotation';\nimport Webinar from '../webinar';\n\nimport InMeetingActions from './in-meeting-actions';\nimport {REACTION_RELAY_TYPES} from '../reactions/constants';\nimport RecordingController from '../recording-controller';\nimport ControlsOptionsManager from '../controls-options-manager';\nimport PermissionError from '../common/errors/permission';\nimport {LocusMediaRequest} from './locusMediaRequest';\nimport {ConnectionStateHandler, ConnectionStateEvent} from './connectionStateHandler';\nimport JoinWebinarError from '../common/errors/join-webinar-error';\nimport Member from '../member';\nimport {BrbState, createBrbState} from './brbState';\nimport MultistreamNotSupportedError from '../common/errors/multistream-not-supported-error';\nimport JoinForbiddenError from '../common/errors/join-forbidden-error';\nimport {ReachabilityMetrics} from '../reachability/reachability.types';\nimport {SetStageOptions, SetStageVideoLayout, UnsetStageVideoLayout} from './request.type';\nimport {Invitee} from './type';\n\n// default callback so we don't call an undefined function, but in practice it should never be used\nconst DEFAULT_ICE_PHASE_CALLBACK = () => 'JOIN_MEETING_FINAL';\n\nconst logRequest = (request: any, {logText = ''}) => {\n LoggerProxy.logger.info(`${logText} - sending request`);\n\n return request\n .then((arg) => {\n LoggerProxy.logger.info(`${logText} - has been successfully sent`);\n\n return arg;\n })\n .catch((error) => {\n LoggerProxy.logger.error(`${logText} - has failed: `, error);\n throw error;\n });\n};\n\nexport type CaptionData = {\n id: string;\n isFinal: boolean;\n translations: Array<string>;\n text: string;\n currentCaptionLanguage: string;\n timestamp: string;\n speaker: string;\n};\n\nexport type Transcription = {\n languageOptions: {\n captionLanguages?: string; // list of supported caption languages from backend\n maxLanguages?: number;\n spokenLanguages?: Array<string>; // list of supported spoken languages from backend\n currentCaptionLanguage?: string; // current caption language - default is english\n requestedCaptionLanguage?: string; // requested caption language\n currentSpokenLanguage?: string; // current spoken language - default is english\n };\n status: string;\n isListening: boolean;\n commandText: string;\n captions: Array<CaptionData>;\n showCaptionBox: boolean;\n transcribingRequestStatus: string;\n isCaptioning: boolean;\n speakerProxy: Map<string, any>;\n interimCaptions: Map<string, CaptionData>;\n};\n\nexport type LocalStreams = {\n microphone?: LocalMicrophoneStream;\n camera?: LocalCameraStream;\n screenShare?: {\n audio?: LocalSystemAudioStream;\n video?: LocalDisplayStream;\n };\n};\n\nexport type AddMediaOptions = {\n localStreams?: LocalStreams;\n audioEnabled?: boolean; // if not specified, default value true is used\n videoEnabled?: boolean; // if not specified, default value true is used\n shareAudioEnabled?: boolean; // if not specified, default value true is used\n shareVideoEnabled?: boolean; // if not specified, default value true is used\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration; // applies only to multistream meetings\n bundlePolicy?: BundlePolicy; // applies only to multistream meetings\n allowMediaInLobby?: boolean; // allows adding media when in the lobby\n additionalMediaOptions?: AdditionalMediaOptions; // allows adding additional options like send/receive audio/video\n};\n\nexport type AdditionalMediaOptions = {\n sendVideo?: boolean; // if not specified, default value of videoEnabled is used\n receiveVideo?: boolean; // if not specified, default value of videoEnabled is used\n sendAudio?: boolean; // if not specified, default value of audioEnabled true is used\n receiveAudio?: boolean; // if not specified, default value of audioEnabled true is used\n};\n\nexport type CallStateForMetrics = {\n correlationId?: string;\n sessionCorrelationId?: string;\n joinTrigger?: string;\n loginType?: string;\n userNameInput?: string;\n emailInput?: string;\n pstnCorrelationId?: string;\n};\n\nexport const MEDIA_UPDATE_TYPE = {\n TRANSCODED_MEDIA_CONNECTION: 'TRANSCODED_MEDIA_CONNECTION',\n SHARE_FLOOR_REQUEST: 'SHARE_FLOOR_REQUEST',\n UPDATE_MEDIA: 'UPDATE_MEDIA',\n};\n\nexport enum ScreenShareFloorStatus {\n PENDING = 'floor_request_pending',\n GRANTED = 'floor_request_granted',\n RELEASED = 'floor_released',\n}\n\ntype FetchMeetingInfoParams = {\n password?: string;\n registrationId?: string;\n classificationId?: string;\n captchaCode?: string;\n extraParams?: Record<string, any>;\n sendCAevents?: boolean;\n};\n\ntype MediaReachabilityMetrics = ReachabilityMetrics & {\n subnet_reachable: boolean;\n selected_cluster: string | null;\n selected_subnet: string | null;\n};\n\n/**\n * MediaDirection\n * @typedef {Object} MediaDirection\n * @property {boolean} sendAudio\n * @property {boolean} receiveAudio\n * @property {boolean} sendVideo\n * @property {boolean} receiveVideo\n * @property {boolean} sendShare\n * @property {boolean} receiveShare\n * @property {boolean} isSharing\n */\n\n/**\n * SharePreferences\n * @typedef {Object} SharePreferences\n * @property {Object} [shareConstraints]\n * @property {Boolean} [highFrameRate]\n */\n\n/**\n * JoinOptions\n * @typedef {Object} JoinOptions\n * @property {String} [resourceId]\n * @property {String} [pin]\n * @property {Boolean} [moderator]\n * @property {String|Object} [meetingQuality]\n * @property {String} [meetingQuality.remote]\n * @property {Boolean} [rejoin]\n * @property {Boolean} [enableMultistream]\n */\n\n/**\n * Recording\n * @typedef {Object} Recording\n * @property {Object} state\n * @property {String} modifiedBy\n */\n\n/**\n * Meeting State Change Event\n * Emitted when ever there is a meeting state change\n * @event meeting:stateChange\n * @instance\n * @type {Object}\n * @property {String} currentState current state of the meeting\n * @property {String} previousState previous state of the meeting\n * @memberof Meeting\n */\n\n/**\n * Media Ready Event\n * Emitted when a stream is ready to be rendered\n * @event media:ready\n * @instance\n * @type {Object}\n * @property {MediaStream} stream the media stream\n * @property {String} type what type of stream, remote, local\n * @memberof Meeting\n */\n\n/**\n * Media Stopped Event\n * Emitted when a stream has stopped sending\n * @event media:stopped\n * @instance\n * @type {Object}\n * @property {String} type what type of stream, remote, local\n * @memberof Meeting\n */\n\n/**\n * Meeting Ringing Event\n * Emitted when this client should play a ringing sound, because this member is getting an incoming meeting\n * or sending out an incoming meeting\n * @event meeting:ringing\n * @instance\n * @type {Object}\n * @property {String} type // INCOMING or JOIN\n * @property {String} id\n * @memberof Meeting\n */\n\n/**\n * Meeting Ringing Stop Event\n * Emitted when this client should stop playing a ringing sound\n * @event meeting:ringingStop\n * @instance\n * @type {Object}\n * @property {Object} type\n * @property {Boolean} type.remoteAnswered\n * @property {Boolean} type.remoteDeclined\n * @property {String} id\n * @memberof Meeting\n */\n\n/**\n * Meeting Started Sharing Local Event\n * Emitted when this member starts sharing\n * @event meeting:startedSharingLocal\n * @instance\n * @type {Object}\n * @memberof Meeting\n */\n\n/**\n * Meeting Stopped Sharing Local Event\n * Emitted when this member stops sharing\n * @event meeting:stoppedSharingLocal\n * @instance\n * @type {Object}\n * @memberof Meeting\n */\n\n/**\n * Meeting Started Sharing Remote Event\n * Emitted when remote sharing starts\n * @event meeting:startedSharingRemote\n * @instance\n * @type {Object}\n * @property {Boolean} memberId id of the meeting member that started screen share\n * @property {String} url of this content share\n * @property {String} shareInstanceId of this content share\n * @property {Object} annotation Info of this content share\n * @memberof Meeting\n *\n */\n\n/**\n * Meeting Stopped Sharing Remote Event\n * Emitted when remote screen sharing ends\n * @event meeting:stoppedSharingRemote\n * @instance\n * @type {Object}\n * @memberof Meeting\n */\n\n/**\n * Meeting Locked Event\n * Emitted when a meeting is locked\n * @event meeting:locked\n * @instance\n * @type {Object}\n * @property {Object} info\n * @memberof Meeting\n */\n\n/**\n * Meeting Unlocked Event\n * Emitted when a meeting is unlocked\n * @event meeting:unlocked\n * @instance\n * @type {Object}\n * @property {Object} info\n * @memberof Meeting\n */\n\n/**\n * Meeting Actions Update Event\n * Emitted when a user can take actions on a meeting such as lock, unlock, assign host\n * @event meeting:actionsUpdate\n * @instance\n * @type {Object}\n * @property {Boolean} canLock\n * @property {Boolean} canUnlock\n * @property {Boolean} canAssignHost\n * @memberof Meeting\n */\n\n/**\n * Meeting Unmuted By Others Event\n * Emitted when a member is unmuted by another member\n * @event meeting:self:unmutedByOthers\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Meeting Muted By Others Event\n * Emitted when a member is muted by another member\n * @event meeting:self:mutedByOthers\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @property {Boolean} payload.unmuteAllowed - whether the user is allowed to unmute self\n * @memberof Meeting\n */\n\n/**\n * Meeting Muted By Others Event\n * Emitted when the host(moderator)/co-host requests a user to unmute\n * @event meeting:self:requestedToUnmute\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Meeting Self Guest Admitted Event\n * Emitted when a joined user get admitted to the meeting by another member or host\n * @event meeting:self:guestAdmitted\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Meeting Self Lobby Waiting Event\n * Emitted when joined user enters the lobby and is waiting for the webex meeting to begin\n * @event meeting:self:lobbyWaiting\n * @instance\n * @type {Object}\n * @property {Object} reason Reason why user left the meeting\n * @memberof Meeting\n */\n\n/**\n * Meeting Self Left State\n * Emitted when user is inactive for more then 40 seconds, User can rejoin the meeting again\n * @event meeting:self:left\n * @instance\n * @type {Object}\n * @property {Object} payload\n * @memberof Meeting\n */\n\n/**\n * Reconnection Starting Event\n * Emitted when reconnection of media to the active meeting was successful\n * @event meeting:reconnectionStarting\n * @instance\n * @memberof Meeting\n */\n\n/**\n * Reconnection Success Event\n * Emitted when reconnection of media to the active meeting was successful\n * @event meeting:reconnectionSuccess\n * @instance\n * @type {Object}\n * @property {Object} reconnect\n * @memberof Meeting\n */\n\n/**\n * Reconnection Failure Event\n * Emitted when reconnection of media to the active meeting was successful\n * @event meeting:reconnectionFailure\n * @instance\n * @type {Object}\n * @property {Error} error\n * @memberof Meeting\n */\n\n/**\n * Meeting network quality event\n * Emitted on each interval of retrieving stats Analyzer data\n * @event network:quality\n * @type {Object}\n * @property {string} mediaType {video|audio}\n * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold\n * @memberof Meeting\n */\n\n/**\n * @description Meeting is the crux of the plugin\n * @export\n * @class Meeting\n */\nexport default class Meeting extends StatelessWebexPlugin {\n attrs: any;\n audio: any;\n breakouts: any;\n simultaneousInterpretation: any;\n annotation: any;\n webinar: any;\n conversationUrl: string;\n callStateForMetrics: CallStateForMetrics;\n destination: string;\n destinationType: DESTINATION_TYPE;\n deviceUrl: string;\n hostId: string;\n id: string;\n isMultistream: boolean;\n locusUrl: string;\n #isoLocalClientMeetingJoinTime?: string;\n mediaConnections: any[];\n mediaId?: string;\n meetingFiniteStateMachine: any;\n meetingInfo: any;\n meetingRequest: MeetingRequest;\n members: Members;\n options: object;\n orgId: string;\n owner: string;\n partner: any;\n policy: string;\n reconnectionManager: ReconnectionManager;\n resource: string;\n roap: Roap;\n roapSeq: number;\n selfUrl?: string; // comes from Locus, initialized by updateMeetingObject()\n sipUri: string;\n type: string;\n userId: string;\n video: any;\n callEvents: any[];\n datachannelUrl: string;\n deferJoin: Promise<any>;\n dialInDeviceStatus: string;\n dialInUrl: string;\n dialOutDeviceStatus: string;\n dialOutUrl: string;\n fetchMeetingInfoTimeoutId: NodeJS.Timeout;\n floorGrantPending: boolean;\n hasJoinedOnce: boolean;\n hasWebsocketConnected: boolean;\n inMeetingActions: InMeetingActions;\n isLocalShareLive: boolean;\n isRoapInProgress: boolean;\n keepAliveTimerId: NodeJS.Timeout;\n lastVideoLayoutInfo: any;\n locusInfo: any;\n locusMediaRequest?: LocusMediaRequest;\n mediaProperties: MediaProperties;\n mediaRequestManagers: {\n audio: MediaRequestManager;\n video: MediaRequestManager;\n screenShareAudio: MediaRequestManager;\n screenShareVideo: MediaRequestManager;\n };\n\n meetingInfoFailureReason: string;\n meetingInfoFailureCode?: number;\n meetingInfoExtraParams?: Record<string, any>;\n networkQualityMonitor: NetworkQualityMonitor;\n networkStatus?: NETWORK_STATUS;\n passwordStatus: string;\n queuedMediaUpdates: any[];\n recording: any;\n remoteMediaManager: RemoteMediaManager | null;\n recordingController: RecordingController;\n controlsOptionsManager: ControlsOptionsManager;\n requiredCaptcha: any;\n receiveSlotManager: ReceiveSlotManager;\n selfUserPolicies: any;\n enforceVBGImagesURL: string;\n shareStatus: string;\n screenShareFloorState: ScreenShareFloorStatus;\n statsAnalyzer: StatsAnalyzer;\n statsMonitor: StatsMonitor;\n transcription: Transcription;\n updateMediaConnections: (mediaConnections: any[]) => void;\n userDisplayHints: any;\n endCallInitJoinReq: any;\n endJoinReqResp: any;\n endLocalSDPGenRemoteSDPRecvDelay: any;\n joinedWith: any;\n locusId: any;\n startCallInitJoinReq: any;\n startJoinReqResp: any;\n startLocalSDPGenRemoteSDPRecvDelay: any;\n wirelessShare: any;\n guest: any;\n meetingJoinUrl: any;\n meetingNumber: any;\n meetingState: any;\n permissionToken: string;\n permissionTokenPayload: any;\n permissionTokenReceivedLocalTime: number;\n resourceId: any;\n resourceUrl: string;\n selfId: string;\n state: any;\n localAudioStreamMuteStateHandler: () => void;\n localVideoStreamMuteStateHandler: () => void;\n localOutputTrackChangeHandler: () => void;\n roles: any[];\n environment: string;\n namespace = MEETINGS;\n allowMediaInLobby: boolean;\n localShareInstanceId: string;\n remoteShareInstanceId: string;\n shareCAEventSentStatus: {\n transmitStart: boolean;\n transmitStop: boolean;\n receiveStart: boolean;\n receiveStop: boolean;\n };\n\n turnDiscoverySkippedReason: TurnDiscoverySkipReason;\n turnServerUsed: boolean;\n areVoiceaEventsSetup = false;\n isMoveToInProgress = false;\n registrationIdStatus: string;\n brbState: BrbState;\n\n voiceaListenerCallbacks: object = {\n [VOICEAEVENTS.VOICEA_ANNOUNCEMENT]: (payload: Transcription['languageOptions']) => {\n this.transcription.languageOptions = payload;\n\n LoggerProxy.logger.debug(\n `${EventsUtil.getScopeLog({\n file: 'meeting/index',\n function: 'setUpVoiceaListeners',\n })}event#${EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION}`\n );\n\n if (this.getCurUserType() !== 'host') {\n delete payload.spokenLanguages;\n }\n\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.MEETING_STARTED_RECEIVING_TRANSCRIPTION, payload);\n },\n [VOICEAEVENTS.CAPTIONS_TURNED_ON]: () => {\n this.transcription.status = TURN_ON_CAPTION_STATUS.ENABLED;\n },\n [VOICEAEVENTS.EVA_COMMAND]: (payload) => {\n const {data} = payload;\n\n this.transcription.isListening = !!data.isListening;\n this.transcription.commandText = data.text ?? '';\n },\n [VOICEAEVENTS.NEW_CAPTION]: (data: MeetingTranscriptPayload) => {\n processNewCaptions({data, meeting: this});\n\n LoggerProxy.logger.debug(\n `${EventsUtil.getScopeLog({\n file: 'meeting/index',\n function: 'setUpVoiceaListeners',\n })}event#${EVENT_TRIGGERS.MEETING_CAPTION_RECEIVED}`\n );\n\n // @ts-ignore\n this.trigger(EVENT_TRIGGERS.MEETING_CAPTION_RECEIVED, {\n captions: this.transcription.captions,\n interimCaptions: this.transcription.interimCaptions,\n });\n },\n };\n\n private addMediaData: {\n retriedWithTurnServer: boolean;\n icePhaseCallback: () => string;\n };\n\n private sendSlotManager: SendSlotManager = new SendSlotManager(LoggerProxy);\n private deferSDPAnswer?: Defer; // used for waiting for a response\n private sdpResponseTimer?: ReturnType<typeof setTimeout>;\n private hasMediaConnectionConnectedAtLeastOnce: boolean;\n private joinWithMediaRetryInfo?: {isRetry: boolean; prevJoinResponse?: any};\n private connectionStateHandler?: ConnectionStateHandler;\n private iceCandidateErrors: Map<string, number>;\n private iceCandidatesCount: number;\n private rtcMetrics?: RtcMetrics;\n private uploadLogsTimer?: ReturnType<typeof setTimeout>;\n private logUploadIntervalIndex: number;\n private mediaServerIp: string;\n\n /**\n * @param {Object} attrs\n * @param {Object} options\n * @param {Function} callback - if provided, it will be called with the newly created meeting object as soon as the meeting.id is set\n * @constructor\n * @memberof Meeting\n */\n constructor(attrs: any, options: object, callback: (meeting: Meeting) => void) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.options = options;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.id = uuid.v4();\n\n if (callback) {\n callback(this);\n }\n\n /**\n * Call state used for metrics\n * @instance\n * @type {CallStateForMetrics}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.callStateForMetrics = attrs.callStateForMetrics || {};\n const correlationId = attrs.correlationId || attrs.callStateForMetrics?.correlationId;\n const sessionCorrelationId =\n attrs.sessionCorrelationId || attrs.callStateForMetrics?.sessionCorrelationId;\n if (sessionCorrelationId) {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> Initializing the meeting object with session correlation id from app ${correlationId}`\n );\n this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;\n } else {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> No session correlation id supplied. None will be generated and this field will remain blank`\n );\n // TODO: supply a session from the meetings instance\n this.callStateForMetrics.sessionCorrelationId = '';\n }\n if (correlationId) {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> Initializing the meeting object with correlation id from app ${correlationId}`\n );\n this.callStateForMetrics.correlationId = correlationId;\n } else {\n LoggerProxy.logger.log(\n `Meetings:index#constructor --> Initializing the meeting object with generated correlation id from sdk ${this.id}`\n );\n this.callStateForMetrics.correlationId = this.id;\n }\n this.logUploadIntervalIndex = 0;\n\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.userId = attrs.userId;\n /**\n * Organization ID\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.orgId = attrs.orgId;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.resource = attrs.resource;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.deviceUrl = attrs.deviceUrl;\n /**\n * @instance\n * @type {Object}\n * @readonly\n * @public\n * @memberof Meeting\n */\n // TODO: needs to be defined as a class\n this.meetingInfo = {};\n /**\n * @instance\n * @type {Breakouts}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.breakouts = new Breakouts({meetingId: this.id}, {parent: this.webex});\n /**\n * @instance\n * @type {SimultaneousInterpretation}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.simultaneousInterpretation = new SimultaneousInterpretation({}, {parent: this.webex});\n /**\n * @instance\n * @type {Annotation}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.annotation = new Annotation({parent: this.webex});\n /**\n * @instance\n * @type {Webinar}\n * @public\n * @memberof Meeting\n */\n // @ts-ignore\n this.webinar = new Webinar({meetingId: this.id}, {parent: this.webex});\n /**\n * helper class for managing receive slots (for multistream media connections)\n */\n this.receiveSlotManager = new ReceiveSlotManager(\n (mediaType: MediaType) => {\n if (!this.mediaProperties?.webrtcMediaConnection) {\n return Promise.reject(new Error('Webrtc media connection is missing'));\n }\n\n return this.mediaProperties.webrtcMediaConnection.createReceiveSlot(mediaType);\n },\n (csi: CSI) => (this.members.findMemberByCsi(csi) as any)?.id\n );\n /**\n * Object containing helper classes for managing media requests for audio/video/screenshare (for multistream media connections)\n * All multistream media requests sent out for this meeting have to go through them.\n */\n this.mediaRequestManagers = {\n audio: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send audio media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.AudioMain,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'audio',\n trimRequestsToNumOfSources: false,\n }\n ),\n video: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send video media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.VideoMain,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'video',\n trimRequestsToNumOfSources: true,\n }\n ),\n screenShareAudio: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send screenshare audio media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.AudioSlides,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'audio',\n trimRequestsToNumOfSources: false,\n }\n ),\n screenShareVideo: new MediaRequestManager(\n (mediaRequests) => {\n if (!this.mediaProperties.webrtcMediaConnection) {\n LoggerProxy.logger.warn(\n 'Meeting:index#mediaRequestManager --> trying to send screenshare video media request before media connection was created'\n );\n\n return;\n }\n this.mediaProperties.webrtcMediaConnection.requestMedia(\n MediaType.VideoSlides,\n mediaRequests\n );\n },\n {\n // @ts-ignore - config coming from registerPlugin\n degradationPreferences: this.config.degradationPreferences,\n kind: 'video',\n trimRequestsToNumOfSources: false,\n }\n ),\n };\n /**\n * @instance\n * @type {Members}\n * @public\n * @memberof Meeting\n */\n this.members = new Members(\n {\n locusUrl: attrs.locus && attrs.locus.url,\n receiveSlotManager: this.receiveSlotManager,\n mediaRequestManagers: this.mediaRequestManagers,\n meeting: this,\n },\n // @ts-ignore - Fix type\n {parent: this.webex}\n );\n /**\n * @instance\n * @type {Roap}\n * @readonly\n * @private\n * @memberof Meeting\n */\n // @ts-ignore - Fix type\n this.roap = new Roap({}, {parent: this.webex});\n /**\n * indicates if an SDP exchange is happening\n *\n * @instance\n * @type {Boolean}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.isRoapInProgress = false;\n /**\n * created later\n * @instance\n * @type {ReconnectionManager}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.reconnectionManager = new ReconnectionManager(this);\n /**\n * created with media connection\n * @instance\n * @type {MuteState}\n * @private\n * @memberof Meeting\n */\n this.audio = null;\n /**\n * created with media connection\n * @instance\n * @type {MuteState}\n * @private\n * @memberof Meeting\n */\n this.video = null;\n /**\n * @instance\n * @type {MeetingStateMachine}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.meetingFiniteStateMachine = MeetingStateMachine.create(this);\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.conversationUrl = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.locusUrl = (attrs.locus && attrs.locus.url) || null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.sipUri = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.destination = attrs.destination;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.destinationType = attrs.destinationType;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.partner = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.type = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.owner = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.hostId = null;\n /**\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.policy = null;\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof Meeting\n */\n this.meetingRequest = new MeetingRequest(\n {\n meeting: this,\n },\n options\n );\n /**\n * @instance\n * @type {Array}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.mediaConnections = null;\n\n /**\n * If true, then media is sent over multiple separate streams.\n * If false, then media is transcoded by the server into a single stream.\n */\n this.isMultistream = false;\n /**\n * Fetching meeting info can be done randomly 2-5 mins before meeting start\n * In case it is done before the timer expires, this timeout id is reset to cancel the timer.\n * @instance\n * @type {Number}\n * @readonly\n * @private\n * @memberof Meeting\n */\n this.fetchMeetingInfoTimeoutId = null;\n\n /**\n * Update the MediaConnections property with new information\n * @param {array} mediaConnections\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n this.updateMediaConnections = (mediaConnections: any[]) => {\n if (!isEqual(this.mediaConnections, mediaConnections)) {\n // grab last/latest item in the new mediaConnections information\n this.mediaConnections = mediaConnections.slice(-1);\n }\n };\n /**\n * Passing only info as we send basic info for meeting added event\n * @instance\n * @type {MediaProperties}\n * @public\n * @memberof Meeting\n */\n this.mediaProperties = new MediaProperties();\n /**\n * @instance\n * @type {InMeetingActions}\n * @public\n * @memberof Meeting\n */\n this.inMeetingActions = new InMeetingActions();\n /**\n * @instance\n * @type {string}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.shareStatus = SHARE_STATUS.NO_SHARE;\n /**\n * @instance\n * @type {ScreenShareFloorStatus}\n * @private\n * @memberof\n */\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n /**\n * @instance\n * @type {Array}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.callEvents = [];\n /**\n * There is a pending floor requested by the user\n * @instance\n * @type {boolean}\n * @private\n * @memberof Meeting\n */\n this.floorGrantPending = false;\n /**\n * The latest status of the dial in device (can be \"JOINED\", \"CONNECTED\", \"LEFT\",\n * \"TRANSFERRING\", \"SUCCESS\" or \"\")\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialInDeviceStatus = PSTN_STATUS.UNKNOWN;\n /**\n * the url for provisioned device used to dial in\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialInUrl = '';\n /**\n * The latest status of the dial out device (can be \"JOINED\", \"CONNECTED\", \"LEFT\",\n * \"TRANSFERRING\", \"SUCCESS\" or \"\")\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialOutDeviceStatus = PSTN_STATUS.UNKNOWN;\n /**\n * the url for provisioned device used to dial out\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.dialOutUrl = '';\n /**\n * @instance\n * @type {StatsAnalyzer}\n * @private\n * @memberof Meeting\n */\n this.statsAnalyzer = null;\n /**\n * @instance\n * @type {NetworkQualityMonitor}\n * @private\n * @memberof Meeting\n */\n this.networkQualityMonitor = null;\n /**\n * @instance\n * @type {StatsMonitor}\n * @private\n * @memberof Meeting\n */\n this.statsMonitor = null;\n /**\n * Indicates network status of the webrtc media connection\n * @instance\n * @type {String}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.networkStatus = undefined;\n /**\n * Passing only info as we send basic info for meeting added event\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof Meeting\n */\n // @ts-ignore - Fix type\n this.locusInfo = new LocusInfo(this.updateMeetingObject.bind(this), this.webex, this.id);\n\n // We had to add listeners first before setting up the locus instance\n /**\n * @instance\n * @type {Recording}\n * @readonly\n * @public\n * @memberof Meeting\n */\n this.recording = null;\n\n /**\n * Promise that exists if joining, and resolves upon method completion.\n * @instance\n * @type {Promise}\n * @private\n * @memberof Meeting\n */\n this.deferJoin = undefined;\n\n /**\n * Staus of websocket connection/mercury connection.\n * @instance\n * @type {Boolean}\n * @private\n * @memberof Meeting\n */\n // @ts-ignore - Fix type\n this.hasWebsocketConnected = this.webex.internal.mercury.connected;\n\n /**\n * Last sent render information\n * @instance\n * @type {Object}\n * @private\n * @memberof Meeting\n */\n this.lastVideoLayoutInfo = {layoutType: undefined, main: undefined, content: undefined};\n\n /**\n * Queue of pending media updates requested by the app\n * @instance\n * @type {Array}\n * @private\n * @memberof Meeting\n */\n this.queuedMediaUpdates = [];\n\n /**\n * Meeting transcription object\n * @instance\n * @type {Transcription}\n * @private\n * @memberof Meeting\n */\n this.transcription = {\n captions: [],\n isListening: false,\n commandText: '',\n languageOptions: {currentSpokenLanguage: 'en'},\n showCaptionBox: false,\n transcribingRequestStatus: 'INACTIVE',\n isCaptioning: false,\n interimCaptions: {} as Map<string, CaptionData>,\n speakerProxy: {} as Map<string, any>,\n } as Transcription;\n\n /**\n * Password status. If it's PASSWORD_STATUS.REQUIRED then verifyPassword() needs to be called\n * with the correct password before calling join()\n * @instance\n * @type {PASSWORD_STATUS}\n * @public\n * @memberof Meeting\n */\n this.passwordStatus = PASSWORD_STATUS.UNKNOWN;\n\n /**\n * registrationId status. If it's REGISTRATIONID_STATUS.REQUIRED then verifyRegistrationId() needs to be called\n * with the correct registrationId before calling join()\n * @instance\n * @type {REGISTRATION_ID_STATUS}\n * @public\n * @memberof Meeting\n */\n this.registrationIdStatus = REGISTRATION_ID_STATUS.UNKNOWN;\n\n /**\n * Information about required captcha. If null, then no captcha is required. status. If it's PASSWORD_STATUS.REQUIRED then verifyPassword() needs to be called\n * with the correct password before calling join()\n * @instance\n * @type {Object}\n * @property {string} captchaId captcha id\n * @property {string} verificationImageURL Url of the captcha image\n * @property {string} verificationAudioURL Url of the captcha audio file\n * @property {string} refreshURL Url used for refreshing the captcha (don't use it directly, call refreshCaptcha() instead)\n * @public\n * @memberof Meeting\n */\n this.requiredCaptcha = null;\n\n /**\n * Indicates the reason for last failure to obtain meeting.meetingInfo. MEETING_INFO_FAILURE_REASON.NONE if meeting info was\n * retrieved successfully\n * @instance\n * @type {MEETING_INFO_FAILURE_REASON}\n * @private\n * @memberof Meeting\n */\n this.meetingInfoFailureReason = undefined;\n\n /**\n * The numeric code, if any, associated with the last failure to obtain the meeting info\n * @instance\n * @type {number}\n * @private\n * @memberof Meeting\n */\n this.meetingInfoFailureCode = undefined;\n\n /**\n * Repeating timer used to send keepAlives when in lobby\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.keepAliveTimerId = null;\n\n /**\n * id for tracking Local Share instances in Call Analyzer\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.localShareInstanceId = null;\n\n /**\n * id for tracking Remote Share instances in Call Analyzer\n * @instance\n * @type {String}\n * @private\n * @memberof Meeting\n */\n this.remoteShareInstanceId = null;\n\n /**\n * Status used for ensuring we do not oversend metrics\n * @instance\n * @private\n * @memberof Meeting\n */\n this.shareCAEventSentStatus = {\n transmitStart: false,\n transmitStop: false,\n receiveStart: false,\n receiveStop: false,\n };\n\n /**\n * The class that helps to control recording functions: start, stop, pause, resume, etc\n * @instance\n * @type {RecordingController}\n * @public\n * @memberof Meeting\n */\n this.recordingController = new RecordingController(this.meetingRequest, {\n serviceUrl: this.locusInfo?.links?.services?.record?.url,\n sessionId: this.locusInfo?.fullState?.sessionId,\n locusUrl: this.locusInfo?.url,\n displayHints: [],\n });\n\n /**\n * The class that helps to control recording functions: start, stop, pause, resume, etc\n * @instance\n * @type {ControlsOptionsManager}\n * @public\n * @memberof Meeting\n */\n this.controlsOptionsManager = new ControlsOptionsManager(this.meetingRequest, {\n locusUrl: this.locusInfo?.url,\n displayHints: [],\n });\n\n this.setUpLocusInfoListeners();\n this.locusInfo.init(attrs.locus ? attrs.locus : {});\n this.hasJoinedOnce = false;\n\n /**\n * helper class for managing remote streams\n */\n this.remoteMediaManager = null;\n\n this.localAudioStreamMuteStateHandler = () => {\n this.audio?.handleLocalStreamMuteStateChange(this);\n };\n\n this.localVideoStreamMuteStateHandler = () => {\n this.video?.handleLocalStreamMuteStateChange(this);\n };\n\n // The handling of output track changes should be done inside\n // @webex/internal-media-core, but for now we have to do it here, because\n // RoapMediaConnection has to use raw MediaStreamTracks in its API until\n // the Calling SDK also moves to using webrtc-core streams\n this.localOutputTrackChangeHandler = () => {\n if (!this.isMultistream) {\n this.updateTranscodedMediaConnection();\n }\n };\n\n /**\n * Promise that exists if SDP offer has been generated, and resolves once sdp answer is received.\n * @instance\n * @type {Defer}\n * @private\n * @memberof Meeting\n */\n this.deferSDPAnswer = undefined;\n\n /**\n * Timer for waiting for sdp answer.\n * @instance\n * @type {ReturnType<typeof setTimeout>}\n * @private\n * @memberof Meeting\n */\n this.sdpResponseTimer = undefined;\n\n /**\n * Reason why TURN discovery is skipped.\n * @instance\n * @type {string}\n * @public\n * @memberof Meeting\n */\n this.turnDiscoverySkippedReason = undefined;\n\n /**\n * Whether TURN discovery is used or not.\n * @instance\n * @type {boolean}\n * @public\n * @memberof Meeting\n */\n this.turnServerUsed = false;\n\n /**\n * Contains information used during the addMedia() operation:\n * retriedWithTurnServer - whether retry was done using TURN Discovery\n * icePhaseCallback - callback for determining the value for icePhase when sending failure event to CA\n *\n * @instance\n * @type {Object}\n * @private\n * @memberof Meeting\n */\n this.addMediaData = {\n retriedWithTurnServer: false,\n icePhaseCallback: DEFAULT_ICE_PHASE_CALLBACK,\n };\n\n /**\n * Whether or not the media connection has ever successfully connected.\n * @instance\n * @type {boolean}\n * @private\n * @memberof Meeting\n */\n this.hasMediaConnectionConnectedAtLeastOnce = false;\n\n /**\n * Information needed for a retry of a call to joinWithMedia\n * @instance\n * @type {{isRetry: boolean; prevJoinResponse?: any}}\n * @private\n * @memberof Meeting\n */\n this.joinWithMediaRetryInfo = {isRetry: false, prevJoinResponse: undefined};\n\n /**\n * Connection state handler\n * @instance\n * @type {ConnectionStateHandler}\n * @private\n * @memberof Meeting\n */\n this.connectionStateHandler = undefined;\n\n /**\n * ICE Candidates errors map\n * @instance\n * @type {Map<[number, string], number>}\n * @private\n * @memberof Meeting\n */\n this.iceCandidateErrors = new Map();\n\n /**\n * Gathered ICE Candidates count\n * @instance\n * @type {number}\n * @private\n * @memberof Meeting\n */\n this.iceCandidatesCount = 0;\n\n /**\n * Start time of meeting as an ISO string\n * based on browser time, so can only be used to compute durations client side\n * undefined if meeting has not been joined, set once on meeting join, and not updated again\n * @instance\n * @type {string}\n * @private\n * @memberof Meeting\n */\n this.#isoLocalClientMeetingJoinTime = undefined;\n\n // We clear the error cache of CA events on every new meeting instance\n // @ts-ignore - Fix type\n this.webex.internal.newMetrics.callDiagnosticMetrics.clearErrorCache();\n\n /**\n * IP Address of the remote media server\n * @instance\n * @type {string}\n * @private\n * @memberof Meeting\n */\n this.mediaServerIp = undefined;\n }\n\n /**\n * Temporary func to return webex object,\n * in order to access internal plugin metrics\n * in the utils file.\n * @internal\n * @returns {object} webex object\n */\n getWebexObject() {\n // @ts-ignore\n return this.webex;\n }\n\n /**\n * returns meeting is joined\n * @private\n * @memberof Meeting\n * @returns {Boolean}\n */\n private isJoined() {\n return this.joinedWith?.state === 'JOINED';\n }\n\n /**\n * Returns whether this meeting is a Locus CALL\n * @returns {Boolean}\n */\n isLocusCall() {\n return this.type === 'CALL';\n }\n\n /**\n * Getter - Returns callStateForMetrics.correlationId\n * @returns {string}\n */\n get correlationId() {\n return this.callStateForMetrics.correlationId;\n }\n\n /**\n * Setter - sets callStateForMetrics.correlationId\n * @param {string} correlationId\n */\n set correlationId(correlationId: string) {\n this.callStateForMetrics.correlationId = correlationId;\n }\n\n /**\n * Getter - Returns callStateForMetrics.pstnCorrelationId\n * @returns {string | undefined}\n */\n get pstnCorrelationId(): string | undefined {\n return this.callStateForMetrics.pstnCorrelationId;\n }\n\n /**\n * Setter - sets callStateForMetrics.pstnCorrelationId\n * @param {string | undefined} correlationId\n */\n set pstnCorrelationId(correlationId: string | undefined) {\n this.callStateForMetrics.pstnCorrelationId = correlationId;\n }\n\n /**\n * Getter - Returns callStateForMetrics.userNameInput\n * @returns {string}\n */\n get userNameInput() {\n return this.callStateForMetrics?.userNameInput;\n }\n\n /**\n * Setter - sets callStateForMetrics.userNameInput\n * @param {string} userNameInput\n */\n set userNameInput(userNameInput: string) {\n this.callStateForMetrics.userNameInput = userNameInput;\n }\n\n /**\n * Getter - Returns callStateForMetrics.emailInput\n * @returns {string}\n */\n get emailInput() {\n return this.callStateForMetrics?.emailInput;\n }\n\n /**\n * Setter - sets callStateForMetrics.emailInput\n * @param {string} emailInput\n */\n set emailInput(emailInput: string) {\n this.callStateForMetrics.emailInput = emailInput;\n }\n\n /**\n * Getter - Returns callStateForMetrics.sessionCorrelationId\n * @returns {string}\n */\n get sessionCorrelationId() {\n return this.callStateForMetrics.sessionCorrelationId;\n }\n\n /**\n * Setter - sets callStateForMetrics.sessionCorrelationId\n * @param {string} sessionCorrelationId\n */\n set sessionCorrelationId(sessionCorrelationId: string) {\n this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;\n }\n\n /**\n * Getter - Returns isoLocalClientMeetingJoinTime\n * This will be set once on meeting join, and not updated again\n * @returns {string | undefined}\n */\n get isoLocalClientMeetingJoinTime(): string | undefined {\n return this.#isoLocalClientMeetingJoinTime;\n }\n\n /**\n * Setter - sets isoLocalClientMeetingJoinTime\n * This will be set once on meeting join, and not updated again\n * this will always produce an ISO string\n * If the iso string is invalid, it will fallback to the current system time\n * @param {string | undefined} time\n */\n set isoLocalClientMeetingJoinTime(time: string | undefined) {\n const fallback = new Date().toISOString();\n if (!time) {\n this.#isoLocalClientMeetingJoinTime = fallback;\n } else {\n const date = new Date(time);\n\n // Check if the date is valid\n if (Number.isNaN(date.getTime())) {\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meeting:index#isoLocalClientMeetingJoinTime --> Invalid date provided: ${time}. Falling back to system clock.`\n );\n this.#isoLocalClientMeetingJoinTime = fallback;\n } else {\n this.#isoLocalClientMeetingJoinTime = date.toISOString();\n }\n }\n }\n\n /**\n * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event\n * @param {any} info\n * @param {string} [meetingLookupUrl] Lookup url, defined when the meeting info fetched\n * @returns {void}\n */\n private setMeetingInfo(info, meetingLookupUrl) {\n this.meetingInfo = info ? {...info, meetingLookupUrl} : null;\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.NONE;\n\n this.requiredCaptcha = null;\n if (\n this.passwordStatus === PASSWORD_STATUS.REQUIRED ||\n this.passwordStatus === PASSWORD_STATUS.VERIFIED\n ) {\n this.passwordStatus = PASSWORD_STATUS.VERIFIED;\n } else {\n this.passwordStatus = PASSWORD_STATUS.NOT_REQUIRED;\n }\n\n if (\n this.registrationIdStatus === REGISTRATION_ID_STATUS.REQUIRED ||\n this.registrationIdStatus === REGISTRATION_ID_STATUS.VERIFIED\n ) {\n this.registrationIdStatus = REGISTRATION_ID_STATUS.VERIFIED;\n } else {\n this.registrationIdStatus = REGISTRATION_ID_STATUS.NOT_REQUIRED;\n }\n\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'fetchMeetingInfo',\n },\n EVENT_TRIGGERS.MEETING_INFO_AVAILABLE\n );\n\n this.updateMeetingActions();\n }\n\n /**\n * Add pre-fetched meeting info\n *\n * The passed meeting info should be be complete, e.g.: fetched after password or captcha provided\n *\n * @param {Object} meetingInfo - Complete meeting info\n * @param {FetchMeetingInfoParams} fetchParams - Fetch parameters for validation\n * @param {String|undefined} meetingLookupUrl - Lookup url, defined when the meeting info fetched\n * @returns {Promise<void>}\n */\n public async injectMeetingInfo(\n meetingInfo: any,\n fetchParams: FetchMeetingInfoParams,\n meetingLookupUrl: string | undefined\n ): Promise<void> {\n await this.prepForFetchMeetingInfo(fetchParams, 'injectMeetingInfo');\n\n this.parseMeetingInfo(meetingInfo, this.destination);\n this.setMeetingInfo(meetingInfo, meetingLookupUrl);\n }\n\n /**\n * Validate fetch parameters and clear the fetchMeetingInfoTimeout timeout\n *\n * @param {FetchMeetingInfoParams} fetchParams - fetch parameters for validation\n * @param {String} caller - Name of the caller for logging\n *\n * @returns {Promise<void>}\n * @private\n */\n private prepForFetchMeetingInfo(\n {\n password = null,\n registrationId = null,\n captchaCode = null,\n extraParams = {},\n }: FetchMeetingInfoParams,\n caller: string\n ): Promise<void> {\n // when fetch meeting info is called directly by the client, we want to clear out the random timer for sdk to do it\n if (this.fetchMeetingInfoTimeoutId) {\n clearTimeout(this.fetchMeetingInfoTimeoutId);\n this.fetchMeetingInfoTimeoutId = undefined;\n }\n if (captchaCode && !this.requiredCaptcha) {\n return Promise.reject(\n new Error(`${caller}() called with captchaCode when captcha was not required`)\n );\n }\n if (\n password &&\n this.passwordStatus !== PASSWORD_STATUS.REQUIRED &&\n this.passwordStatus !== PASSWORD_STATUS.UNKNOWN\n ) {\n return Promise.reject(\n new Error(`${caller}() called with password when password was not required`)\n );\n }\n\n this.meetingInfoExtraParams = cloneDeep(extraParams);\n\n return Promise.resolve();\n }\n\n /**\n * Internal method for fetching meeting info\n *\n * @returns {Promise}\n */\n private async fetchMeetingInfoInternal({\n destination,\n destinationType,\n password = null,\n captchaCode = null,\n extraParams = {},\n sendCAevents = false,\n registrationId = null,\n classificationId = null,\n }): Promise<void> {\n try {\n const captchaInfo = captchaCode\n ? {code: captchaCode, id: this.requiredCaptcha.captchaId}\n : null;\n\n const info = await this.attrs.meetingInfoProvider.fetchMeetingInfo(\n destination,\n destinationType,\n password,\n captchaInfo,\n // @ts-ignore - config coming from registerPlugin\n this.config.installedOrgID,\n this.locusId,\n extraParams,\n {meetingId: this.id, sendCAevents},\n registrationId,\n null,\n classificationId\n );\n\n this.parseMeetingInfo(info?.body, this.destination, info?.errors);\n this.setMeetingInfo(info?.body, info?.url);\n\n return Promise.resolve();\n } catch (err) {\n this.updateMeetingActions();\n\n if (err instanceof MeetingInfoV2PolicyError) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.POLICY;\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n }\n throw new PermissionError();\n } else if (err instanceof MeetingInfoV2JoinWebinarError) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WEBINAR_REGISTRATION;\n if (WEBINAR_ERROR_WEBCAST.includes(err.wbxAppApiCode)) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.NEED_JOIN_WITH_WEBCAST;\n } else if (WEBINAR_ERROR_REGISTRATION_ID.includes(err.wbxAppApiCode)) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WEBINAR_NEED_REGISTRATION_ID;\n }\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n }\n this.requiredCaptcha = null;\n\n throw new JoinWebinarError();\n } else if (err instanceof MeetingInfoV2JoinForbiddenError) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.JOIN_FORBIDDEN;\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n }\n\n // Handle the case where user hasn't reached Join Before Host (JBH) time (error code 403003)\n if (JOIN_BEFORE_HOST === err.wbxAppApiCode) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.NOT_REACH_JBH;\n }\n\n throw new JoinForbiddenError(this.meetingInfoFailureReason, err);\n } else if (err instanceof MeetingInfoV2PasswordError) {\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ${this.destination} - password required (code=${err?.body?.code}).`\n );\n\n // when wbxappapi requires password it still populates partial meeting info in the response\n if (err.meetingInfo) {\n this.meetingInfo = err.meetingInfo;\n this.meetingNumber = err.meetingInfo.meetingNumber;\n }\n\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n this.passwordStatus = PASSWORD_STATUS.REQUIRED;\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;\n if (this.requiredCaptcha) {\n // this is a workaround for captcha service bug, see WEBEX-224862\n await this.refreshCaptcha();\n }\n\n throw new PasswordError();\n } else if (err instanceof MeetingInfoV2CaptchaError) {\n LoggerProxy.logger.info(\n // @ts-ignore\n `Meeting:index#fetchMeetingInfo --> Info Unable to fetch meeting info for ${this.destination} - captcha required (code=${err?.body?.code}).`\n );\n\n if (this.requiredCaptcha) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_CAPTCHA;\n } else if (err.isRegistrationIdRequired) {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_REGISTRATION_ID;\n } else {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.WRONG_PASSWORD;\n }\n\n this.meetingInfoFailureCode = err.wbxAppApiCode;\n\n if (err.isPasswordRequired) {\n this.passwordStatus = PASSWORD_STATUS.REQUIRED;\n }\n\n if (err.isRegistrationIdRequired) {\n this.registrationIdStatus = REGISTRATION_ID_STATUS.REQUIRED;\n }\n\n this.requiredCaptcha = err.captchaInfo;\n throw new CaptchaError();\n } else {\n this.meetingInfoFailureReason = MEETING_INFO_FAILURE_REASON.OTHER;\n throw err;\n }\n }\n }\n\n /**\n * Refreshes the meeting info permission token (it's required for joining meetings)\n *\n * @param {string} [reason] used for metrics and logging purposes (optional)\n * @returns {Promise}\n */\n public async refreshPermissionToken(reason?: string): Promise<void> {\n if (!this.meetingInfo?.permissionToken) {\n LoggerProxy.logger.info(\n `Meeting:index#refreshPermissionToken --> cannot refresh the permission token, because we don't have it (reason=${reason})`\n );\n\n return;\n }\n\n const isStartingSpaceInstantV2Meeting =\n this.destinationType === DESTINATION_TYPE.CONVERSATION_URL &&\n // @ts-ignore - config coming from registerPlugin\n this.config.experimental.enableAdhocMeetings &&\n // @ts-ignore\n this.webex.meetings.preferredWebexSite;\n\n const destination = isStartingSpaceInstantV2Meeting\n ? this.meetingInfo.meetingJoinUrl\n : this.destination;\n const destinationType = isStartingSpaceInstantV2Meeting\n ? DESTINATION_TYPE.MEETING_LINK\n : this.destinationType;\n\n const permissionTokenExpiryInfo = this.getPermissionTokenExpiryInfo();\n\n const timeLeft = permissionTokenExpiryInfo?.timeLeft;\n const expiryTime = permissionTokenExpiryInfo?.expiryTime;\n const currentTime = permissionTokenExpiryInfo?.currentTime;\n\n LoggerProxy.logger.info(\n `Meeting:index#refreshPermissionToken --> refreshing permission token, destinationType=${destinationType}, timeLeft=${timeLeft}, permissionTokenExpiry=${expiryTime}, currentTimestamp=${currentTime},reason=${reason}`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.PERMISSION_TOKEN_REFRESH, {\n correlationId: this.correlationId,\n timeLeft,\n expiryTime,\n currentTime,\n reason,\n destinationType,\n });\n\n try {\n await this.fetchMeetingInfoInternal({\n destination,\n destinationType,\n extraParams: {\n ...this.meetingInfoExtraParams,\n permissionToken: this.meetingInfo.permissionToken,\n },\n sendCAevents: true, // because if we're refreshing the permissionToken, it means that user is intending to join that meeting, so we want CA events\n });\n } catch (error) {\n LoggerProxy.logger.info(\n 'Meeting:index#refreshPermissionToken --> failed to refresh the permission token:',\n error\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.PERMISSION_TOKEN_REFRESH_ERROR, {\n correlationId: this.correlationId,\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }\n }\n\n /**\n * Fetches meeting information.\n * @param {Object} options\n * @param {String} [options.password] optional\n * @param {String} [options.captchaCode] optional\n * @param {Boolean} [options.sendCAevents] optional - Whether to submit Call Analyzer events or not. Default: false.\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public async fetchMeetingInfo(options: FetchMeetingInfoParams) {\n await this.prepForFetchMeetingInfo(options, 'fetchMeetingInfo');\n\n return this.fetchMeetingInfoInternal({\n destination: this.destination,\n destinationType: this.destinationType,\n ...options,\n });\n }\n\n /**\n * Checks if the supplied password/host key is correct. It returns a promise with information whether the\n * password and captcha code were correct or not.\n * @param {String} password - this can be either a password or a host key, can be undefined if only captcha was required\n * @param {String} captchaCode - can be undefined if captcha was not required by the server\n * @param {Boolean} sendCAevents - whether Call Analyzer events should be sent when fetching meeting information\n * @public\n * @memberof Meeting\n * @returns {Promise<{isPasswordValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}\n */\n public verifyPassword(password: string, captchaCode: string, sendCAevents = false) {\n return this.fetchMeetingInfo({\n password,\n captchaCode,\n sendCAevents,\n })\n .then(() => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_SUCCESS);\n\n return {\n isPasswordValid: true,\n requiredCaptcha: null,\n failureReason: MEETING_INFO_FAILURE_REASON.NONE,\n };\n })\n .catch((error) => {\n if (error instanceof PasswordError || error instanceof CaptchaError) {\n return {\n isPasswordValid: this.passwordStatus === PASSWORD_STATUS.VERIFIED,\n requiredCaptcha: this.requiredCaptcha,\n failureReason: this.meetingInfoFailureReason,\n };\n }\n throw error;\n });\n }\n\n /**\n * Checks if the supplied registrationId is correct. It returns a promise with information whether the\n * registrationId and captcha code were correct or not.\n * @param {String | undefined} registrationId - can be undefined if only captcha was required\n * @param {String | undefined} captchaCode - can be undefined if captcha was not required by the server\n * @param {Boolean} sendCAevents - whether Call Analyzer events should be sent when fetching meeting information\n * @public\n * @memberof Meeting\n * @returns {Promise<{isRegistrationIdValid: boolean, requiredCaptcha: boolean, failureReason: MEETING_INFO_FAILURE_REASON}>}\n */\n public verifyRegistrationId(registrationId: string, captchaCode: string, sendCAevents = false) {\n return this.fetchMeetingInfo({\n registrationId,\n captchaCode,\n sendCAevents,\n })\n .then(() => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_REGISTRATION_ID_SUCCESS);\n\n return {\n isRegistrationIdValid: true,\n requiredCaptcha: null,\n failureReason: MEETING_INFO_FAILURE_REASON.NONE,\n };\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_REGISTRATION_ID_ERROR);\n\n if (error instanceof JoinWebinarError || error instanceof CaptchaError) {\n return {\n isRegistrationIdValid: this.registrationIdStatus === REGISTRATION_ID_STATUS.VERIFIED,\n requiredCaptcha: this.requiredCaptcha,\n failureReason:\n error instanceof JoinWebinarError\n ? MEETING_INFO_FAILURE_REASON.WRONG_REGISTRATION_ID\n : this.meetingInfoFailureReason,\n };\n }\n throw error;\n });\n }\n\n /**\n * Refreshes the captcha. As a result the meeting will have new captcha id, image and audio.\n * If the refresh operation fails, meeting remains with the old captcha properties.\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public refreshCaptcha() {\n if (!this.requiredCaptcha) {\n return Promise.reject(new Error('There is no captcha to refresh'));\n }\n\n // in order to get fully populated uris for captcha audio and image in response to refresh captcha request\n // we have to pass the wbxappapi hostname as the siteFullName parameter\n const {hostname} = new URL(this.requiredCaptcha.refreshURL);\n\n return (\n this.meetingRequest\n // @ts-ignore\n .refreshCaptcha({\n captchaRefreshUrl: `${this.requiredCaptcha.refreshURL}&siteFullName=${hostname}`,\n captchaId: this.requiredCaptcha.captchaId,\n })\n .then((response) => {\n this.requiredCaptcha.captchaId = response.body.captchaID;\n this.requiredCaptcha.verificationImageURL = response.body.verificationImageURL;\n this.requiredCaptcha.verificationAudioURL = response.body.verificationAudioURL;\n })\n .catch((error) => {\n LoggerProxy.logger.error(\n `Meeting:index#refreshCaptcha --> Error Unable to refresh captcha for ${this.destination} - ${error}`\n );\n throw error;\n })\n );\n }\n\n /**\n * Posts metrics event for this meeting. Allows the app to send Call Analyzer events.\n * @param {String} eventName - Call Analyzer event\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public postMetrics(eventName: ClientEvent['name']) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: eventName,\n options: {\n meetingId: this.id,\n },\n });\n }\n\n /**\n * Proxy function for all the listener set ups\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoListeners() {\n // meeting update listeners\n this.setUpLocusInfoSelfListener();\n this.setUpLocusInfoMeetingListener();\n this.setUpLocusServicesListener();\n this.setUpLocusResourcesListener();\n // members update listeners\n this.setUpLocusFullStateListener();\n this.setUpLocusUrlListener();\n this.setUpLocusHostListener();\n this.setUpLocusSelfListener();\n this.setUpLocusParticipantsListener();\n this.setupLocusControlsListener();\n this.setUpLocusMediaSharesListener();\n this.setUpLocusEmbeddedAppsListener();\n this.setUpLocusInfoMeetingInfoListener();\n this.setUpLocusInfoAssignHostListener();\n this.setUpLocusInfoMediaInactiveListener();\n this.setUpBreakoutsListener();\n this.setUpInterpretationListener();\n }\n\n /**\n * Set up the listeners for breakouts\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n setUpBreakoutsListener() {\n this.breakouts.on(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_CLOSING\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.MESSAGE, (messageEvent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_MESSAGE,\n messageEvent\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.MEMBERS_UPDATE, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN, () => {\n if (this.isJoined()) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN\n );\n }\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.LEAVE_BREAKOUT, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_LEAVE\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.ASK_FOR_HELP, (helpEvent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_ASK_FOR_HELP,\n helpEvent\n );\n });\n\n this.breakouts.on(BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpBreakoutsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE\n );\n });\n }\n\n /**\n * Set up the listeners for interpretation\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpInterpretationListener() {\n // TODO: check if its getting used or not\n this.simultaneousInterpretation.on(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE, () => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpInterpretationListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE\n );\n });\n // TODO: check if its getting used or not\n this.simultaneousInterpretation.on(\n INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED,\n (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpInterpretationListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED,\n payload\n );\n }\n );\n }\n\n /**\n * Set up the listeners for captions\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpVoiceaListeners() {\n // @ts-ignore\n this.webex.internal.voicea.listenToEvents();\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.VOICEA_ANNOUNCEMENT,\n this.voiceaListenerCallbacks[VOICEAEVENTS.VOICEA_ANNOUNCEMENT]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.CAPTIONS_TURNED_ON,\n this.voiceaListenerCallbacks[VOICEAEVENTS.CAPTIONS_TURNED_ON]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.EVA_COMMAND,\n this.voiceaListenerCallbacks[VOICEAEVENTS.EVA_COMMAND]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.NEW_CAPTION,\n this.voiceaListenerCallbacks[VOICEAEVENTS.NEW_CAPTION]\n );\n\n this.areVoiceaEventsSetup = true;\n }\n\n /**\n * Set up the locus info listener for meetings disconnected due to inactivity\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoMediaInactiveListener() {\n // User gets kicked off the meeting due to inactivity or user did a refresh\n this.locusInfo.on(EVENTS.DISCONNECT_DUE_TO_INACTIVITY, (res) => {\n // https:// jira-eng-gpk2.cisco.com/jira/browse/SPARK-240520\n // TODO: send custom parameter explaining why the inactivity happened\n // refresh , no media or network got dsconnected or something else\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.DISCONNECT_DUE_TO_INACTIVITY, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n });\n\n // Upload logs on media inactivity\n // Normally media should not be inactive\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMediaInactiveListener',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n LoggerProxy.logger.error(\n `Meeting:index#setUpLocusInfoMediaInactiveListener --> Meeting disconnected due to inactivity: ${res.reason}`\n );\n\n // @ts-ignore - config coming from registerPlugin\n if (this.config.reconnection.autoRejoin) {\n this.reconnect();\n } else {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMediaInactiveListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_LEFT,\n res.reason\n );\n }\n });\n }\n\n /**\n * Set up the locus info listener for assign host permissions on a meeting\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoAssignHostListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST, (payload) => {\n const changed = this.inMeetingActions.set({\n canAssignHost: payload.canAssignHost,\n });\n\n if (changed) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoAssignHostListener',\n },\n EVENT_TRIGGERS.MEETING_ACTIONS_UPDATE,\n this.inMeetingActions.get()\n );\n }\n });\n }\n\n /**\n * Set up the internal locus info full state object listener\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusFullStateListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusFullStateListener',\n },\n EVENT_TRIGGERS.MEETING_STATE_CHANGE,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE, (payload) => {\n this.members.locusFullStateTypeUpdate(payload);\n });\n }\n\n /**\n * sets the network status on meeting object\n * @param {NETWORK_STATUS} networkStatus\n * @private\n * @returns {undefined}\n * @memberof Meeting\n */\n private setNetworkStatus(networkStatus?: NETWORK_STATUS) {\n if (networkStatus === NETWORK_STATUS.DISCONNECTED) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setNetworkStatus',\n },\n EVENT_TRIGGERS.MEETINGS_NETWORK_DISCONNECTED\n );\n } else if (\n networkStatus === NETWORK_STATUS.CONNECTED &&\n this.networkStatus === NETWORK_STATUS.DISCONNECTED\n ) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setNetworkStatus',\n },\n EVENT_TRIGGERS.MEETINGS_NETWORK_CONNECTED\n );\n }\n\n this.networkStatus = networkStatus;\n }\n\n /**\n * Set up the locus info self listener\n * update self value for members and updates the member\n * notifies consumer with members:self:update {activeSelfId endedSelfId}\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusSelfListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_SELF, (payload) => {\n this.members.locusSelfUpdate(payload);\n this.pstnUpdate(payload);\n\n // If user moved to a JOINED state and there is a pending floor grant trigger it\n this.requestScreenShareFloorIfPending();\n });\n }\n\n /**\n * Notify any changes on the pstn devices\n * @param {Object} payload\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private pstnUpdate(payload: any) {\n if (this.locusInfo.self) {\n const dialInPstnDevice = payload.newSelf?.pstnDevices.find(\n (device) => device.url === this.dialInUrl\n );\n const dialOutPstnDevice = payload.newSelf?.pstnDevices.find(\n (device) => device.url === this.dialOutUrl\n );\n let changed = false;\n\n if (dialInPstnDevice) {\n const newStatus = dialInPstnDevice.dialingStatus ?? dialInPstnDevice.state;\n\n if (newStatus !== this.dialInDeviceStatus) {\n this.dialInDeviceStatus = newStatus;\n changed = true;\n }\n }\n\n if (dialOutPstnDevice) {\n const newStatus = dialOutPstnDevice.dialingStatus ?? dialOutPstnDevice.state;\n\n if (newStatus !== this.dialOutDeviceStatus) {\n this.dialOutDeviceStatus = newStatus;\n changed = true;\n }\n }\n\n if (changed) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_PHONE_AUDIO_UPDATE,\n {\n dialIn: {\n status: this.dialInDeviceStatus,\n attendeeId: dialInPstnDevice?.attendeeId,\n },\n dialOut: {\n status: this.dialOutDeviceStatus,\n attendeeId: dialOutPstnDevice?.attendeeId,\n reason: dialOutPstnDevice?.reason,\n },\n }\n );\n }\n }\n }\n\n /**\n * Set up the locus info host listener\n * update host value for members and updates the member\n * notifies consumer with members:host:update: {activeHostId, endedHostId}\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusHostListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_HOST, (payload) => {\n this.members.locusHostUpdate(payload);\n });\n }\n\n /**\n * Set up the locus info participants update listener\n * update members collection value for members\n * notifies consumer with members:update\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusParticipantsListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS, (payload) => {\n this.members.locusParticipantsUpdate(payload);\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.PARTICIPANT_REASON_CHANGED, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusParticipantsListener',\n },\n EVENT_TRIGGERS.MEETING_PARTICIPANT_REASON_CHANGED,\n {\n payload,\n }\n );\n });\n }\n\n /**\n * Set up the locus info recording update listener\n * update recording value for the meeting\n * notifies consumer with:\n * meeting:recording:started\n * meeting:recording:stopped\n * meeting:recording:paused\n * meeting:recording:resumed\n *\n * Set up the locus info meeeting container listener\n * update meetingContainerUrl value for the meeting\n * notifies consumer with:\n * meeting:meetingContainer:update\n *\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setupLocusControlsListener() {\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n ({state, modifiedBy, lastModified}) => {\n let event;\n\n switch (state) {\n case RECORDING_STATE.RECORDING:\n event = EVENT_TRIGGERS.MEETING_STARTED_RECORDING;\n break;\n case RECORDING_STATE.IDLE:\n event = EVENT_TRIGGERS.MEETING_STOPPED_RECORDING;\n break;\n case RECORDING_STATE.PAUSED:\n event = EVENT_TRIGGERS.MEETING_PAUSED_RECORDING;\n break;\n case RECORDING_STATE.RESUMED:\n event = EVENT_TRIGGERS.MEETING_RESUMED_RECORDING;\n break;\n default:\n event = null;\n break;\n }\n\n // `RESUMED` state should be converted to `RECORDING` after triggering the event\n this.recording = {\n state: state === RECORDING_STATE.RESUMED ? RECORDING_STATE.RECORDING : state,\n modifiedBy,\n lastModified,\n };\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n event,\n this.recording\n );\n }\n );\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n ({meetingContainerUrl}) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_MEETING_CONTAINER_UPDATE,\n {meetingContainerUrl}\n );\n }\n );\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n ({caption, transcribing}) => {\n // user need to be joined to start the llm and receive transcription\n if (this.isJoined()) {\n // @ts-ignore - config coming from registerPlugin\n if (transcribing && !this.transcription) {\n this.startTranscription();\n } else if (!transcribing && this.transcription) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_RECEIVING_TRANSCRIPTION,\n {caption, transcribing}\n );\n }\n }\n }\n );\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,\n ({spokenLanguage}) => {\n if (spokenLanguage) {\n if (this.transcription?.languageOptions) {\n this.transcription.languageOptions.currentSpokenLanguage = spokenLanguage;\n }\n // @ts-ignore\n this.webex.internal.voicea.onSpokenLanguageUpdate(spokenLanguage, this.id);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,\n {spokenLanguage, meetingId: this.id}\n );\n }\n }\n );\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, ({enable}) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_MANUAL_CAPTION_UPDATED,\n {enable}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, ({breakout}) => {\n this.breakouts.updateBreakout(breakout);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE\n );\n });\n\n this.locusInfo.on(\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n ({interpretation}) => {\n this.simultaneousInterpretation.updateInterpretation(interpretation);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n }\n );\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, ({entryExitTone}) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupLocusControlsListener',\n },\n EVENT_TRIGGERS.MEETING_ENTRY_EXIT_TONE_UPDATE,\n {entryExitTone}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_SHARE_CONTROL_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_REACTIONS_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_RAISE_HAND_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_WEBCAST_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_MEETING_FULL_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED, ({state}) => {\n this.webinar.updatePracticeSessionStatus(state);\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_STAGE_VIEW_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_VIDEO_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_ANNOTATION_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED,\n {state}\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, ({state}) => {\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'setupLocusControlsListener'},\n EVENT_TRIGGERS.MEETING_CONTROLS_POLLING_QA_UPDATED,\n {state}\n );\n });\n }\n\n /**\n * Trigger annotation info update event\n @returns {undefined}\n @param {object} contentShare\n @param {object} previousContentShare\n */\n private triggerAnnotationInfoEvent(contentShare, previousContentShare) {\n if (\n contentShare?.annotation &&\n !isEqual(contentShare?.annotation, previousContentShare?.annotation)\n ) {\n Trigger.trigger(\n // @ts-ignore\n this.webex.meetings,\n {\n file: 'meeting/index',\n function: 'triggerAnnotationInfoEvent',\n },\n EVENT_TRIGGERS.MEETING_UPDATE_ANNOTATION_INFO,\n {\n annotationInfo: contentShare?.annotation,\n meetingId: this.id,\n resourceType: contentShare?.resourceType,\n }\n );\n }\n }\n\n /**\n * Set up the locus info media shares listener\n * update content and whiteboard sharing id value for members, and updates the member\n * notifies consumer with members:content:update {activeContentSharingId, endedContentSharingId}\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusMediaSharesListener() {\n // Will get triggered on local and remote share\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES, async (payload) => {\n const {content: contentShare, whiteboard: whiteboardShare} = payload.current;\n const previousContentShare = payload.previous?.content;\n const previousWhiteboardShare = payload.previous?.whiteboard;\n\n this.triggerAnnotationInfoEvent(contentShare, previousContentShare);\n\n if (\n !payload.forceUpdate &&\n contentShare.beneficiaryId === previousContentShare?.beneficiaryId &&\n contentShare.disposition === previousContentShare?.disposition &&\n contentShare.deviceUrlSharing === previousContentShare.deviceUrlSharing &&\n whiteboardShare.beneficiaryId === previousWhiteboardShare?.beneficiaryId &&\n whiteboardShare.disposition === previousWhiteboardShare?.disposition &&\n whiteboardShare.resourceUrl === previousWhiteboardShare?.resourceUrl &&\n contentShare.resourceType === previousContentShare?.resourceType\n ) {\n // nothing changed, so ignore\n // (this happens when we steal presentation from remote)\n return;\n }\n\n let newShareStatus = this.shareStatus;\n\n // REMOTE - check if remote started sharing\n if (\n this.selfId !== contentShare.beneficiaryId &&\n contentShare.disposition === FLOOR_ACTION.GRANTED\n ) {\n // CONTENT - sharing content remote\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n }\n // LOCAL - check if we started sharing content\n else if (\n this.selfId === contentShare.beneficiaryId &&\n contentShare.disposition === FLOOR_ACTION.GRANTED &&\n contentShare.deviceUrlSharing === this.deviceUrl\n ) {\n // CONTENT - sharing content local\n newShareStatus = SHARE_STATUS.LOCAL_SHARE_ACTIVE;\n }\n // SAME USER REMOTE - check if same user started sharing content from another client\n else if (\n this.selfId === contentShare.beneficiaryId &&\n contentShare.disposition === FLOOR_ACTION.GRANTED &&\n contentShare.deviceUrlSharing !== this.deviceUrl\n ) {\n // CONTENT - same user sharing content remote\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n }\n // If we did not hit the cases above, no one is sharng content, so we check if we are sharing whiteboard\n // There is no concept of local/remote share for whiteboard\n // It does not matter who requested to share the whiteboard, everyone gets the same view\n else if (whiteboardShare.disposition === FLOOR_ACTION.GRANTED) {\n if (this.locusInfo?.info?.isWebinar && this.webinar?.selfIsAttendee) {\n // WHITEBOARD - sharing whiteboard\n // Webinar attendee should receive whiteboard as remote share\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n } else if (this.guest) {\n // If user is a guest to a meeting, they should receive whiteboard as remote share\n newShareStatus = SHARE_STATUS.REMOTE_SHARE_ACTIVE;\n } else {\n newShareStatus = SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE;\n }\n }\n // or if content share is either released or null and whiteboard share is either released or null, no one is sharing\n else if (\n ((previousContentShare && contentShare.disposition === FLOOR_ACTION.RELEASED) ||\n contentShare.disposition === null) &&\n ((previousWhiteboardShare && whiteboardShare.disposition === FLOOR_ACTION.RELEASED) ||\n whiteboardShare.disposition === null)\n ) {\n newShareStatus = SHARE_STATUS.NO_SHARE;\n }\n\n LoggerProxy.logger.info(\n `Meeting:index#setUpLocusInfoMediaInactiveListener --> this.shareStatus=${this.shareStatus} newShareStatus=${newShareStatus}`\n );\n\n if (newShareStatus !== this.shareStatus) {\n const oldShareStatus = this.shareStatus;\n\n // update our state before we send out any notifications\n this.shareStatus = newShareStatus;\n\n // send out \"stop\" notifications for the old state\n switch (oldShareStatus) {\n case SHARE_STATUS.REMOTE_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'remoteShare',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_REMOTE\n );\n break;\n\n case SHARE_STATUS.LOCAL_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'localShare',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\n {\n reason: SHARE_STOPPED_REASON.SELF_STOPPED,\n }\n );\n break;\n\n case SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'stopWhiteboardShare',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_WHITEBOARD\n );\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.stopped',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.stopped',\n payload: {\n mediaType: 'whiteboard',\n shareDuration:\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),\n },\n options: {\n meetingId: this.id,\n },\n });\n break;\n\n case SHARE_STATUS.NO_SHARE:\n // nothing to do\n break;\n\n default:\n break;\n }\n\n // send \"start\" notifications for the new state\n switch (newShareStatus) {\n case SHARE_STATUS.REMOTE_SHARE_ACTIVE: {\n const sendStartedSharingRemote = () => {\n this.remoteShareInstanceId = contentShare.shareInstanceId;\n this.shareCAEventSentStatus.receiveStart = false;\n this.shareCAEventSentStatus.receiveStop = false;\n\n let finalBeneficiaryId = contentShare.beneficiaryId;\n // In case of attendee in webinar, the whiteboard is shared by other participants\n if (this.locusInfo?.info?.isWebinar && this.webinar?.selfIsAttendee) {\n if (!finalBeneficiaryId && whiteboardShare.beneficiaryId) {\n finalBeneficiaryId = whiteboardShare.beneficiaryId;\n }\n }\n\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'remoteShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE,\n {\n memberId: finalBeneficiaryId,\n url: contentShare.url,\n shareInstanceId: this.remoteShareInstanceId,\n annotationInfo: contentShare.annotation,\n resourceType: contentShare.resourceType,\n }\n );\n };\n\n try {\n // if a remote participant is stealing the presentation from us\n if (\n this.mediaProperties.mediaDirection?.sendShare &&\n oldShareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE\n ) {\n await this.unpublishStreams([\n this.mediaProperties.shareVideoStream,\n this.mediaProperties.shareAudioStream,\n ]);\n }\n } finally {\n sendStartedSharingRemote();\n }\n break;\n }\n\n case SHARE_STATUS.LOCAL_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'share',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_LOCAL\n );\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n },\n options: {meetingId: this.id},\n });\n\n break;\n\n case SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE:\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'startWhiteboardShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_WHITEBOARD,\n {\n resourceUrl: whiteboardShare.resourceUrl,\n memberId: whiteboardShare.beneficiaryId,\n }\n );\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'whiteboard',\n },\n options: {\n meetingId: this.id,\n },\n });\n break;\n\n case SHARE_STATUS.NO_SHARE:\n // nothing to do\n break;\n\n default:\n break;\n }\n\n this.members.locusMediaSharesUpdate(payload);\n } else if (newShareStatus === SHARE_STATUS.REMOTE_SHARE_ACTIVE) {\n // if we got here, then some remote participant has stolen\n // the presentation from another remote participant\n this.remoteShareInstanceId = contentShare.shareInstanceId;\n this.shareCAEventSentStatus.receiveStart = false;\n this.shareCAEventSentStatus.receiveStop = false;\n\n Trigger.trigger(\n this,\n {\n file: 'meetings/index',\n function: 'remoteShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_REMOTE,\n {\n memberId: contentShare.beneficiaryId,\n url: contentShare.url,\n shareInstanceId: this.remoteShareInstanceId,\n annotationInfo: contentShare.annotation,\n resourceType: contentShare.resourceType,\n }\n );\n this.members.locusMediaSharesUpdate(payload);\n } else if (newShareStatus === SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE) {\n // if we got here, then some remote participant has stolen\n // the presentation from another remote participant\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'startWhiteboardShare',\n },\n EVENT_TRIGGERS.MEETING_STARTED_SHARING_WHITEBOARD,\n {\n resourceUrl: whiteboardShare.resourceUrl,\n memberId: whiteboardShare.beneficiaryId,\n }\n );\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'whiteboard',\n },\n options: {\n meetingId: this.id,\n },\n });\n this.members.locusMediaSharesUpdate(payload);\n }\n });\n }\n\n /**\n * Set up the locus info url listener\n * update locus_url value for members\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusUrlListener() {\n this.locusInfo.on(EVENTS.LOCUS_INFO_UPDATE_URL, (payload) => {\n this.members.locusUrlUpdate(payload);\n this.breakouts.locusUrlUpdate(payload);\n this.simultaneousInterpretation.locusUrlUpdate(payload);\n this.annotation.locusUrlUpdate(payload);\n this.locusUrl = payload;\n this.locusId = this.locusUrl?.split('/').pop();\n this.recordingController.setLocusUrl(this.locusUrl);\n this.controlsOptionsManager.setLocusUrl(this.locusUrl);\n this.webinar.locusUrlUpdate(payload);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusSelfListener',\n },\n EVENT_TRIGGERS.MEETING_LOCUS_URL_UPDATE,\n {locusUrl: payload}\n );\n });\n }\n\n /**\n * Set up the locus info service link listener\n * update the locusInfo for recording controller\n * does not currently re-emit the event as it's internal only\n * payload is unused\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusServicesListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.LINKS_SERVICES, (payload) => {\n this.recordingController.setServiceUrl(payload?.services?.record?.url);\n this.recordingController.setSessionId(this.locusInfo?.fullState?.sessionId);\n this.breakouts.breakoutServiceUrlUpdate(payload?.services?.breakout?.url);\n this.annotation.approvalUrlUpdate(payload?.services?.approval?.url);\n this.simultaneousInterpretation.approvalUrlUpdate(payload?.services?.approval?.url);\n });\n }\n\n /**\n * Set up the locus info resources link listener\n * update the locusInfo for webcast instance url\n * @param {Object} payload - The event payload\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusResourcesListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.LINKS_RESOURCES, (payload) => {\n if (payload) {\n this.webinar.updateWebcastUrl(payload);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_RESOURCE_LINKS_UPDATE,\n {\n payload,\n }\n );\n }\n });\n }\n\n /**\n * Set up the locus info meeting info listener\n * @returns {undefined}\n * @private\n * @memberof meeting\n */\n private setUpLocusInfoMeetingInfoListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_LOCKED, (payload) => {\n if (payload) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_LOCKED,\n {\n payload,\n }\n );\n }\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_UNLOCKED, (payload) => {\n if (payload) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_UNLOCKED,\n {\n payload,\n }\n );\n }\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.MEETING_INFO_UPDATED, ({isInitializing}) => {\n this.updateMeetingActions();\n this.recordingController.setDisplayHints(this.userDisplayHints);\n this.recordingController.setUserPolicy(this.selfUserPolicies);\n this.controlsOptionsManager.setDisplayHints(this.userDisplayHints);\n this.handleDataChannelUrlChange(this.datachannelUrl);\n\n if (!isInitializing) {\n // send updated trigger only if locus is not initializing the meeting\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'setUpLocusInfoMeetingInfoListener',\n },\n EVENT_TRIGGERS.MEETING_INFO_UPDATED\n );\n }\n });\n }\n\n /**\n * Handles a data channel URL change\n * @param {String} datachannelUrl\n * @returns {void}\n */\n handleDataChannelUrlChange(datachannelUrl) {\n // @ts-ignore - config coming from registerPlugin\n if (datachannelUrl && this.config.enableAutomaticLLM) {\n this.updateLLMConnection();\n }\n }\n\n /**\n * Set up the locus info embedded apps listener\n * @returns {undefined}\n * @private\n * @memberof meeting\n */\n private setUpLocusEmbeddedAppsListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, (embeddedApps) => {\n if (embeddedApps) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusEmbeddedAppsListener',\n },\n EVENT_TRIGGERS.MEETING_EMBEDDED_APPS_UPDATE,\n embeddedApps\n );\n }\n });\n }\n\n /**\n * Internal function to listen to the self object changes\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoSelfListener() {\n this.locusInfo.on(LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED, (payload) => {\n if (this.audio) {\n this.audio.handleServerLocalUnmuteRequired(this, payload.unmuteAllowed);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS,\n {\n payload,\n }\n );\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, (payload) => {\n if (payload) {\n if (this.video) {\n payload.muted = payload.muted ?? this.video.isRemotelyMuted();\n payload.unmuteAllowed = payload.unmuteAllowed ?? this.video.isUnmuteAllowed();\n this.video.handleServerRemoteMuteUpdate(this, payload.muted, payload.unmuteAllowed);\n }\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n payload.muted\n ? EVENT_TRIGGERS.MEETING_SELF_VIDEO_MUTED_BY_OTHERS\n : EVENT_TRIGGERS.MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS,\n {\n payload,\n }\n );\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED, (payload) => {\n if (payload) {\n if (this.audio) {\n this.audio.handleServerRemoteMuteUpdate(this, payload.muted, payload.unmuteAllowed);\n }\n // with \"mute on entry\" server will send us remote mute even if we don't have media configured,\n // so if being muted by others, always send the notification,\n // but if being unmuted, only send it if we are also locally unmuted\n if (payload.muted || !this.audio?.isMuted()) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n payload.muted\n ? EVENT_TRIGGERS.MEETING_SELF_MUTED_BY_OTHERS\n : EVENT_TRIGGERS.MEETING_SELF_UNMUTED_BY_OTHERS,\n {\n payload,\n }\n );\n }\n }\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_REQUESTED_TO_UNMUTE,\n {\n payload,\n }\n );\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, (payload) => {\n if (payload) {\n this.startKeepAlive();\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_LOBBY_WAITING,\n {\n payload,\n }\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.lobby.entered',\n options: {meetingId: this.id},\n });\n }\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.GUEST_ENTERED_LOBBY, {\n correlation_id: this.correlationId,\n });\n this.updateLLMConnection();\n });\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, async (payload) => {\n this.stopKeepAlive();\n\n if (payload) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_GUEST_ADMITTED,\n {\n payload,\n }\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.lobby.exited',\n options: {meetingId: this.id},\n });\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.GUEST_EXITED_LOBBY, {\n correlation_id: this.correlationId,\n });\n }\n this.rtcMetrics?.sendNextMetrics();\n this.updateLLMConnection();\n });\n\n // @ts-ignore - check if MEDIA_INACTIVITY exists\n this.locusInfo.on(LOCUSINFO.EVENTS.MEDIA_INACTIVITY, () => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MEDIA_INACTIVE, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n });\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoSelfListener --> MEDIA_INACTIVITY received, reconnecting...'\n );\n this.reconnect();\n });\n\n // There is two stats for mute one is the actual media being sent or received\n // The second on is if the audio is muted, we need to tell the statsAnalyzer when\n // the audio is muted or the user is not willing to send media\n this.locusInfo.on(LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE, (status) => {\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoSelfListener --> MEDIA_STATUS_CHANGE received, processing...'\n );\n\n if (this.statsAnalyzer) {\n this.statsAnalyzer.updateMediaStatus({\n actual: status,\n expected: {\n // We need to check what should be the actual direction of media\n sendAudio: this.mediaProperties.mediaDirection?.sendAudio && !this.audio?.isMuted(),\n sendVideo: this.mediaProperties.mediaDirection?.sendVideo && !this.video?.isMuted(),\n sendShare: this.mediaProperties.mediaDirection?.sendShare,\n receiveAudio: this.mediaProperties.mediaDirection?.receiveAudio,\n receiveVideo: this.mediaProperties.mediaDirection?.receiveVideo,\n receiveShare: this.mediaProperties.mediaDirection?.receiveShare,\n },\n });\n } else {\n LoggerProxy.logger.warn(\n 'Meeting:index#setUpLocusInfoSelfListener --> MEDIA_STATUS_CHANGE, statsAnalyzer is not available.'\n );\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, (payload) => {\n this.breakouts.updateBreakoutSessions(payload);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_BREAKOUTS_UPDATE\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, (payload) => {\n const targetChanged = this.simultaneousInterpretation.updateSelfInterpretation(payload);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n if (targetChanged && this.mediaProperties.audioStream) {\n this.setSendNamedMediaGroup(MediaType.AudioMain);\n }\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED, (payload) => {\n this.brbState?.handleServerBrbUpdate(payload?.brb?.enabled);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_BRB_UPDATE,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, (payload) => {\n const isModeratorOrCohost =\n payload.newRoles?.includes(SELF_ROLES.MODERATOR) ||\n payload.newRoles?.includes(SELF_ROLES.COHOST);\n this.breakouts.updateCanManageBreakouts(isModeratorOrCohost);\n this.simultaneousInterpretation.updateCanManageInterpreters(\n payload.newRoles?.includes(SELF_ROLES.MODERATOR)\n );\n this.webinar.updateRoleChanged(payload);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_ROLES_CHANGED,\n {\n payload,\n }\n );\n });\n\n this.locusInfo.on(LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE, (payload) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoSelfListener',\n },\n EVENT_TRIGGERS.MEETING_SELF_IS_SHARING_BLOCKED,\n {\n payload,\n }\n );\n });\n }\n\n /**\n * Add LocusInfo nested object listeners (from child to parent)\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private setUpLocusInfoMeetingListener() {\n this.locusInfo.on(EVENTS.REMOTE_RESPONSE, (payload) => {\n this.meetingFiniteStateMachine.remote(payload);\n\n if (payload.remoteDeclined) {\n this.leave({reason: payload.reason})\n .then(() => {\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Attempting to leave meeting.'\n );\n })\n .catch((error) => {\n // @ts-ignore\n LoggerProxy.logger.error(\n `Meeting:index#setUpLocusInfoMeetingListener --> REMOTE_RESPONSE. Issue with leave for meeting, meeting still in collection: ${this}, error: ${error}`\n );\n });\n }\n });\n this.locusInfo.on(EVENTS.DESTROY_MEETING, async (payload) => {\n // if self state is NOT left\n\n // TODO: Handle sharing and wireless sharing when meeting end\n if (this.wirelessShare) {\n if (this.mediaProperties.shareVideoStream) {\n await this.setLocalShareVideoStream(undefined);\n }\n if (this.mediaProperties.shareAudioStream) {\n await this.setLocalShareAudioStream(undefined);\n }\n }\n // when multiple WEB deviceType join with same user\n // and some of the devices are joined and some are left\n // when your own device is still connected you want to leave and destroy\n // else you want to just destroy\n // this looks odd because when it leaves it should destroy, but we get a\n // leave response and we should destroy it on the next event loop\n // the leave response gets parsed and we decide if we want to destroy the meeting\n // the first time we just leave it, the second time it comes it destroys it from the collection\n if (payload.shouldLeave) {\n // TODO: We should do cleaning of meeting object if the shouldLeave: false because there might be meeting object which we are not cleaning\n\n try {\n await this.leave({reason: payload.reason});\n\n LoggerProxy.logger.warn(\n 'Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. The meeting has been left, but has not been destroyed, you should see a later event for leave.'\n );\n } catch (error) {\n // @ts-ignore\n LoggerProxy.logger.error(\n `Meeting:index#setUpLocusInfoMeetingListener --> DESTROY_MEETING. Issue with leave for meeting, meeting still in collection: ${this}, error: ${error}`\n );\n }\n } else {\n LoggerProxy.logger.info(\n 'Meeting:index#setUpLocusInfoMeetingListener --> MEETING_REMOVED_REASON',\n payload.reason\n );\n\n MeetingUtil.cleanUp(this);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setUpLocusInfoMeetingListener',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: payload.reason,\n meetingId: this.id,\n }\n );\n }\n });\n }\n\n /**\n * Set meeting values rather than events\n * @param {Object} object\n * @returns {undefined}\n * @private\n * @memberof Meeting\n * // TODO: is this function necessary?\n */\n private updateMeetingObject(object: object) {\n // Validate if these are valid meeting object property\n // TODO: add a check to make sure the value passed in the constructor\n // is not changed by any delta event\n if (object && Object.keys(object).length) {\n Object.keys(object).forEach((key) => {\n this[key] = object[key];\n });\n }\n }\n\n /**\n * Invite a guest to the call that isn't normally part of this call\n * @param {Invitee} invitee\n * @param {String} invitee.emailAddress\n * @param {String} invitee.email\n * @param {String} invitee.phoneNumber\n * @param {Boolean} [alertIfActive]\n * @param {Boolean} [invitee.skipEmailValidation]\n * @param {Boolean} [invitee.isInternalNumber]\n * @returns {Promise} see #members.addMember\n * @public\n * @memberof Meeting\n */\n public invite(invitee: Invitee, alertIfActive = true) {\n return this.members.addMember(invitee, alertIfActive);\n }\n\n /**\n * Cancel an outgoing phone call invitation made during a meeting\n * @param {Invitee} invitee\n * @param {String} invitee.phoneNumber\n * @returns {Promise} see #members.cancelPhoneInvite\n * @public\n * @memberof Meeting\n */\n public cancelPhoneInvite(invitee: Invitee) {\n return this.members.cancelPhoneInvite(invitee);\n }\n\n /**\n * Cancel an SIP/phone call invitation made during a meeting\n * @param {Invitee} invitee\n * @param {String} invitee.memberId\n * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal\n * @returns {Promise} see #members.cancelInviteByMemberId\n * @public\n * @memberof Meeting\n */\n public cancelInviteByMemberId(invitee: Invitee) {\n return this.members.cancelInviteByMemberId(invitee);\n }\n\n /**\n * Admit the guest(s) to the call once they are waiting.\n * If the host/cohost is in a breakout session, the locus url\n * of the session must be provided as the authorizingLocusUrl.\n * Regardless of host/cohost location, the locus Id (lid) in\n * the path should be the locus Id of the main, which means the\n * locus url of the api call must be from the main session.\n * If these loucs urls are not provided, the function will do the check.\n * @param {Array} memberIds\n * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl}\n * @returns {Promise} see #members.admitMembers\n * @public\n * @memberof Meeting\n */\n public admit(\n memberIds: Array<any>,\n sessionLocusUrls?: {authorizingLocusUrl: string; mainLocusUrl: string}\n ) {\n let locusUrls = sessionLocusUrls;\n if (!locusUrls) {\n const {locusUrl, mainLocusUrl} = this.breakouts;\n if (locusUrl && mainLocusUrl) {\n locusUrls = {authorizingLocusUrl: locusUrl, mainLocusUrl};\n }\n }\n\n return this.members.admitMembers(memberIds, locusUrls);\n }\n\n /**\n * Manages be right back status updates for the current participant.\n *\n * @param {boolean} enabled - Indicates whether the user enabled brb or not.\n * @returns {Promise<void>} resolves when the brb status is updated or does nothing if not in a multistream meeting.\n * @throws {Error} - Throws an error if the request fails.\n */\n public async beRightBack(enabled: boolean): Promise<void> {\n if (!this.isMultistream) {\n const errorMessage = 'Meeting:index#beRightBack --> Not a multistream meeting';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n if (!this.mediaProperties.webrtcMediaConnection) {\n const errorMessage = 'Meeting:index#beRightBack --> WebRTC media connection is not defined';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n return this.brbState\n .enable(enabled, this.sendSlotManager)\n .then(() => {\n if (this.audio && enabled) {\n // locus mutes the participant with brb enabled request,\n // so we need to explicitly update remote mute for correct logic flow\n this.audio.handleServerRemoteMuteUpdate(this, enabled);\n }\n })\n .catch((error) => Promise.reject(error));\n }\n\n /**\n * Remove the member from the meeting, boot them\n * @param {String} memberId\n * @returns {Promise} see #members.removeMember\n * @public\n * @memberof Meeting\n */\n public remove(memberId: string) {\n return this.members.removeMember(memberId);\n }\n\n /**\n * Mute another member from the meeting\n * @param {String} memberId\n * @param {Boolean} mute\n * @returns {Promise} see #members.muteMember\n * @public\n * @memberof Meeting\n */\n public mute(memberId: string, mute = true) {\n return this.members.muteMember(memberId, mute);\n }\n\n /**\n * Transfer the moderator role to another eligible member\n * @param {String} memberId\n * @param {Boolean} moderator\n * @returns {Promise} see #members.transferHostToMember\n * @public\n * @memberof Meeting\n */\n public transfer(memberId: string, moderator = true) {\n return this.members.transferHostToMember(memberId, moderator);\n }\n\n /**\n * Reference to the Members object\n * @returns {Members}\n * @public\n * @memberof Meeting\n */\n public getMembers() {\n return this.members;\n }\n\n /**\n * Sets the meeting info on the class instance\n * @param {Object} meetingInfo\n * @param {String} meetingInfo.conversationUrl\n * @param {String} meetingInfo.locusUrl\n * @param {String} meetingInfo.sipUri\n * @param {String} [meetingInfo.sipUrl]\n * @param {String} [meetingInfo.sipMeetingUri]\n * @param {String} [meetingInfo.meetingNumber]\n * @param {String} [meetingInfo.meetingJoinUrl]\n * @param {String} [meetingInfo.hostId]\n * @param {String} [meetingInfo.permissionToken]\n * @param {String} [meetingInfo.channel]\n * @param {Object} meetingInfo.owner\n * @param {Object | String} destination locus object with meeting data or destination string (sip url, meeting link, etc)\n * @param {Object | String} errors Meeting info request error\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n parseMeetingInfo(\n meetingInfo: {\n conversationUrl: string;\n locusUrl: string;\n sipUri: string;\n owner: object;\n sipUrl?: string;\n sipMeetingUri?: string;\n meetingNumber?: string;\n meetingJoinUrl?: string;\n hostId?: string;\n permissionToken?: string;\n channel?: string;\n },\n destination: object | string | null = null,\n errors: any = undefined\n ) {\n // We try to use as much info from Locus meeting object, stored in destination\n\n let locusMeetingObject;\n\n if (destination) {\n locusMeetingObject = typeof destination === 'object' ? destination : undefined;\n }\n\n // MeetingInfo will be undefined for 1:1 calls\n if (locusMeetingObject || (meetingInfo && !(errors?.length > 0))) {\n this.conversationUrl =\n locusMeetingObject?.conversationUrl || meetingInfo?.conversationUrl || this.conversationUrl;\n this.locusUrl = locusMeetingObject?.url || meetingInfo?.locusUrl || this.locusUrl;\n // @ts-ignore - config coming from registerPlugin\n this.setSipUri(\n // @ts-ignore\n this.config.experimental.enableUnifiedMeetings\n ? locusMeetingObject?.info.sipUri || meetingInfo?.sipUrl\n : locusMeetingObject?.info.sipUri || meetingInfo?.sipMeetingUri || this.sipUri\n );\n // @ts-ignore - config coming from registerPlugin\n if (this.config.experimental.enableUnifiedMeetings) {\n this.meetingNumber = locusMeetingObject?.info.webExMeetingId || meetingInfo?.meetingNumber;\n this.meetingJoinUrl = meetingInfo?.meetingJoinUrl;\n }\n this.owner =\n locusMeetingObject?.info.owner || meetingInfo?.owner || meetingInfo?.hostId || this.owner;\n this.permissionToken = meetingInfo?.permissionToken;\n if (this.permissionToken) {\n this.setPermissionTokenPayload(meetingInfo?.permissionToken);\n this.setSelfUserPolicies();\n }\n // Need to populate environment when sending CA event\n this.environment = locusMeetingObject?.info.channel || meetingInfo?.channel;\n }\n MeetingUtil.parseInterpretationInfo(this, meetingInfo);\n }\n\n /**\n * Indicates whether policy can be applied\n * @returns {boolean}\n */\n private arePolicyRestrictionsSupported() {\n // If we don't have policies we can't support policies\n if (!this.selfUserPolicies) {\n return false;\n }\n\n // 1-2-1 calls and SIP dialling will have no meeting info\n // so cannot support policy information\n if (isEmpty(this.meetingInfo)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Updates the meeting actions (display hints), depends on locus display hints, user policy and app api info\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n private updateMeetingActions() {\n let changed = false;\n changed = this.inMeetingActions.set({\n canUseVoip:\n (this.meetingInfo?.supportVoIP === true &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_VOIP],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported(),\n canDoVideo:\n (ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_VIDEO],\n policies: this.selfUserPolicies,\n }) &&\n !!this.meetingInfo?.video) ||\n !this.arePolicyRestrictionsSupported(),\n supportHDV:\n (ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_HDV],\n policies: this.selfUserPolicies,\n }) &&\n this.meetingInfo?.video?.supportHDV) ||\n !this.arePolicyRestrictionsSupported(),\n enforceVirtualBackground:\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.ENFORCE_VIRTUAL_BACKGROUND],\n policies: this.selfUserPolicies,\n }) && this.arePolicyRestrictionsSupported(),\n supportHQV:\n (ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_HQV],\n policies: this.selfUserPolicies,\n }) &&\n this.meetingInfo?.video?.supportHQV) ||\n !this.arePolicyRestrictionsSupported(),\n });\n if (this.userDisplayHints !== undefined) {\n changed =\n this.inMeetingActions.set({\n canInviteNewParticipants: MeetingUtil.canInviteNewParticipants(this.userDisplayHints),\n canAdmitParticipant: MeetingUtil.canAdmitParticipant(this.userDisplayHints),\n canLock: MeetingUtil.canUserLock(this.userDisplayHints),\n canUnlock: MeetingUtil.canUserUnlock(this.userDisplayHints),\n canShareWhiteBoard: MeetingUtil.canShareWhiteBoard(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canSetDisallowUnmute: ControlsOptionsUtil.canSetDisallowUnmute(this.userDisplayHints),\n canUnsetDisallowUnmute: ControlsOptionsUtil.canUnsetDisallowUnmute(this.userDisplayHints),\n canSetMuteOnEntry: ControlsOptionsUtil.canSetMuteOnEntry(this.userDisplayHints),\n canUnsetMuteOnEntry: ControlsOptionsUtil.canUnsetMuteOnEntry(this.userDisplayHints),\n canSetMuted: ControlsOptionsUtil.canSetMuted(this.userDisplayHints),\n canUnsetMuted: ControlsOptionsUtil.canUnsetMuted(this.userDisplayHints),\n canStartRecording: RecordingUtil.canUserStart(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canStopRecording: RecordingUtil.canUserStop(this.userDisplayHints, this.selfUserPolicies),\n canPauseRecording: RecordingUtil.canUserPause(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canResumeRecording: RecordingUtil.canUserResume(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n isPremiseRecordingEnabled: RecordingUtil.isPremiseRecordingEnabled(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canRaiseHand: MeetingUtil.canUserRaiseHand(this.userDisplayHints),\n canLowerAllHands: MeetingUtil.canUserLowerAllHands(this.userDisplayHints),\n canLowerSomeoneElsesHand: MeetingUtil.canUserLowerSomeoneElsesHand(this.userDisplayHints),\n bothLeaveAndEndMeetingAvailable: MeetingUtil.bothLeaveAndEndMeetingAvailable(\n this.userDisplayHints\n ),\n canEnableClosedCaption: MeetingUtil.canEnableClosedCaption(this.userDisplayHints),\n canStartTranscribing: MeetingUtil.canStartTranscribing(this.userDisplayHints),\n canStopTranscribing: MeetingUtil.canStopTranscribing(this.userDisplayHints),\n isClosedCaptionActive: MeetingUtil.isClosedCaptionActive(this.userDisplayHints),\n canStartManualCaption: MeetingUtil.canStartManualCaption(this.userDisplayHints),\n canStopManualCaption: MeetingUtil.canStopManualCaption(this.userDisplayHints),\n isLocalRecordingStarted: MeetingUtil.isLocalRecordingStarted(this.userDisplayHints),\n isLocalRecordingStopped: MeetingUtil.isLocalRecordingStopped(this.userDisplayHints),\n isLocalRecordingPaused: MeetingUtil.isLocalRecordingPaused(this.userDisplayHints),\n isManualCaptionActive: MeetingUtil.isManualCaptionActive(this.userDisplayHints),\n isSaveTranscriptsEnabled: MeetingUtil.isSaveTranscriptsEnabled(this.userDisplayHints),\n isSpokenLanguageAutoDetectionEnabled: MeetingUtil.isSpokenLanguageAutoDetectionEnabled(\n this.userDisplayHints\n ),\n isWebexAssistantActive: MeetingUtil.isWebexAssistantActive(this.userDisplayHints),\n canViewCaptionPanel: MeetingUtil.canViewCaptionPanel(this.userDisplayHints),\n isRealTimeTranslationEnabled: MeetingUtil.isRealTimeTranslationEnabled(\n this.userDisplayHints\n ),\n canSelectSpokenLanguages: MeetingUtil.canSelectSpokenLanguages(this.userDisplayHints),\n waitingForOthersToJoin: MeetingUtil.waitingForOthersToJoin(this.userDisplayHints),\n canSendReactions: MeetingUtil.canSendReactions(\n this.inMeetingActions.canSendReactions,\n this.userDisplayHints\n ),\n requiresPostMeetingDataConsentPrompt: MeetingUtil.requiresPostMeetingDataConsentPrompt(\n this.userDisplayHints\n ),\n canManageBreakout: MeetingUtil.canManageBreakout(this.userDisplayHints),\n canStartBreakout: MeetingUtil.canStartBreakout(this.userDisplayHints),\n canBroadcastMessageToBreakout: MeetingUtil.canBroadcastMessageToBreakout(\n this.userDisplayHints,\n this.selfUserPolicies\n ),\n canAdmitLobbyToBreakout: MeetingUtil.canAdmitLobbyToBreakout(this.userDisplayHints),\n isBreakoutPreassignmentsEnabled: MeetingUtil.isBreakoutPreassignmentsEnabled(\n this.userDisplayHints\n ),\n canUserAskForHelp: MeetingUtil.canUserAskForHelp(this.userDisplayHints),\n canUserRenameSelfAndObserved: MeetingUtil.canUserRenameSelfAndObserved(\n this.userDisplayHints\n ),\n canUserRenameOthers: MeetingUtil.canUserRenameOthers(this.userDisplayHints),\n canMoveToLobby: MeetingUtil.canMoveToLobby(this.userDisplayHints),\n canMuteAll: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.MUTE_ALL],\n displayHints: this.userDisplayHints,\n }),\n canUnmuteAll: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.UNMUTE_ALL],\n displayHints: this.userDisplayHints,\n }),\n canEnableHardMute: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_HARD_MUTE],\n displayHints: this.userDisplayHints,\n }),\n canDisableHardMute: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_HARD_MUTE],\n displayHints: this.userDisplayHints,\n }),\n canEnableMuteOnEntry: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY],\n displayHints: this.userDisplayHints,\n }),\n canDisableMuteOnEntry: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY],\n displayHints: this.userDisplayHints,\n }),\n canEnableReactions: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_REACTIONS],\n displayHints: this.userDisplayHints,\n }),\n canDisableReactions: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_REACTIONS],\n displayHints: this.userDisplayHints,\n }),\n canEnableReactionDisplayNames: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_SHOW_DISPLAY_NAME],\n displayHints: this.userDisplayHints,\n }),\n canDisableReactionDisplayNames: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_SHOW_DISPLAY_NAME],\n displayHints: this.userDisplayHints,\n }),\n canUpdateShareControl: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_CONTROL],\n displayHints: this.userDisplayHints,\n }),\n canEnableViewTheParticipantsList: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST],\n displayHints: this.userDisplayHints,\n }),\n canDisableViewTheParticipantsList: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST],\n displayHints: this.userDisplayHints,\n }),\n canEnableViewTheParticipantsListPanelist: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],\n displayHints: this.userDisplayHints,\n }),\n canDisableViewTheParticipantsListPanelist: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST],\n displayHints: this.userDisplayHints,\n }),\n canEnableShowAttendeeCount: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT],\n displayHints: this.userDisplayHints,\n }),\n canDisableShowAttendeeCount: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT],\n displayHints: this.userDisplayHints,\n }),\n canEnableRaiseHand: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_RAISE_HAND],\n displayHints: this.userDisplayHints,\n }),\n canDisableRaiseHand: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_RAISE_HAND],\n displayHints: this.userDisplayHints,\n }),\n canEnableVideo: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_VIDEO],\n displayHints: this.userDisplayHints,\n }),\n canDisableVideo: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_VIDEO],\n displayHints: this.userDisplayHints,\n }),\n canStartWebcast: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.WEBCAST_CONTROL_START],\n displayHints: this.userDisplayHints,\n }),\n canStopWebcast: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.WEBCAST_CONTROL_STOP],\n displayHints: this.userDisplayHints,\n }),\n canShowStageView: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.STAGE_VIEW_ACTIVE],\n displayHints: this.userDisplayHints,\n }),\n canEnableStageView: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_STAGE_VIEW],\n displayHints: this.userDisplayHints,\n }),\n canDisableStageView: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_STAGE_VIEW],\n displayHints: this.userDisplayHints,\n }),\n isPracticeSessionOn: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.PRACTICE_SESSION_ON],\n displayHints: this.userDisplayHints,\n }),\n isPracticeSessionOff: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.PRACTICE_SESSION_OFF],\n displayHints: this.userDisplayHints,\n }),\n canStartPracticeSession: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHOW_PRACTICE_SESSION_START],\n displayHints: this.userDisplayHints,\n }),\n canStopPracticeSession: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHOW_PRACTICE_SESSION_STOP],\n displayHints: this.userDisplayHints,\n }),\n canShareFile:\n (ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_FILE],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_FILE_SHARE],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported,\n canTransferFile: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_FILE_TRANSFER],\n policies: this.selfUserPolicies,\n }),\n canRealtimeCloseCaption: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_REALTIME_CLOSE_CAPTION],\n policies: this.selfUserPolicies,\n }),\n canRealtimeCloseCaptionManual: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_REALTIME_CLOSE_CAPTION_MANUAL],\n policies: this.selfUserPolicies,\n }),\n canChat: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_CHAT],\n policies: this.selfUserPolicies,\n }),\n canPollingAndQA: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_POLLING_AND_QA],\n policies: this.selfUserPolicies,\n }),\n canShareApplication:\n (ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_APPLICATION],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_APP_SHARE],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported(),\n canShareCamera:\n ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_CAMERA],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_CAMERA_SHARE],\n policies: this.selfUserPolicies,\n }),\n canShareDesktop:\n (ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_DESKTOP],\n displayHints: this.userDisplayHints,\n }) &&\n ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_DESKTOP_SHARE],\n policies: this.selfUserPolicies,\n })) ||\n !this.arePolicyRestrictionsSupported(),\n canShareContent:\n ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.SHARE_CONTENT],\n displayHints: this.userDisplayHints,\n }) || !this.arePolicyRestrictionsSupported(),\n canAnnotate: ControlsOptionsUtil.hasPolicies({\n requiredPolicies: [SELF_POLICY.SUPPORT_ANNOTATION],\n policies: this.selfUserPolicies,\n }),\n canEnableAnnotation: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_ANNOTATION_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canDisableAnnotation: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_ANNOTATION_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canEnableRemoteDesktopControl: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_RDC_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canDisableRemoteDesktopControl: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION],\n displayHints: this.userDisplayHints,\n }),\n canEnablePollingQA: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA],\n displayHints: this.userDisplayHints,\n }),\n canDisablePollingQA: ControlsOptionsUtil.hasHints({\n requiredHints: [DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],\n displayHints: this.userDisplayHints,\n }),\n }) || changed;\n }\n if (changed) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'updateMeetingActions',\n },\n EVENT_TRIGGERS.MEETING_ACTIONS_UPDATE,\n this.inMeetingActions.get()\n );\n }\n }\n\n /**\n * Sets the self user policies based on the contents of the permission token\n * @returns {void}\n */\n setSelfUserPolicies() {\n this.selfUserPolicies = this.permissionTokenPayload?.permission?.userPolicies;\n this.enforceVBGImagesURL = this.permissionTokenPayload?.permission?.enforceVBGImagesURL;\n }\n\n /**\n * Sets the permission token payload on the class instance\n *\n * @param {String} permissionToken\n * @returns {void}\n */\n public setPermissionTokenPayload(permissionToken: string) {\n this.permissionTokenPayload = jwtDecode(permissionToken);\n this.permissionTokenReceivedLocalTime = new Date().getTime();\n }\n\n /**\n * Sets the sip uri on the class instance\n * uses meeting info as precedence\n * @param {String} sipUri\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n setSipUri(sipUri: string) {\n // This can be tel no, device id or a sip uri, user Id\n this.sipUri = sipUri;\n }\n\n /**\n * Set the locus info the class instance\n * @param {Object} locus\n * @param {Array} locus.mediaConnections\n * @param {String} locus.locusUrl\n * @param {String} locus.locusId\n * @param {String} locus.mediaId\n * @param {Object} locus.host\n * @todo change name to genertic parser\n * @returns {undefined}\n * @private\n * @memberof Meeting\n */\n setLocus(\n locus:\n | {\n mediaConnections: Array<any>;\n locusUrl: string;\n locusId: string;\n mediaId: string;\n host: object;\n }\n | any\n ) {\n const mtgLocus: any = locus.locus || locus;\n\n // LocusInfo object saves the locus object\n // this.locus = mtgLocus;\n this.mediaConnections = locus.mediaConnections;\n this.locusUrl = locus.locusUrl || locus.url;\n this.locusId = locus.locusId;\n this.selfId = locus.selfId;\n this.mediaId = locus.mediaId;\n this.hostId = mtgLocus.host ? mtgLocus.host.id : this.hostId;\n this.locusInfo.initialSetup(mtgLocus);\n }\n\n /**\n * Upload logs for the current meeting\n * @param {object} options file name and function name\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public uploadLogs(options: object = {file: 'meeting/index', function: 'uploadLogs'}) {\n Trigger.trigger(this, options, EVENTS.REQUEST_UPLOAD_LOGS, this);\n }\n\n /**\n * sets the timer for periodic log upload\n * @returns {void}\n */\n private setLogUploadTimer() {\n // start with short timeouts and increase them later on so in case users have very long multi-hour meetings we don't get too fragmented logs\n const LOG_UPLOAD_INTERVALS = [0.1, 15, 30, 60]; // in minutes\n\n const delay =\n 1000 *\n 60 *\n // @ts-ignore - config coming from registerPlugin\n this.config.logUploadIntervalMultiplicationFactor *\n LOG_UPLOAD_INTERVALS[this.logUploadIntervalIndex];\n\n if (this.logUploadIntervalIndex < LOG_UPLOAD_INTERVALS.length - 1) {\n this.logUploadIntervalIndex += 1;\n }\n\n this.uploadLogsTimer = safeSetTimeout(() => {\n this.uploadLogsTimer = undefined;\n\n this.uploadLogs();\n\n // just as an extra precaution, to avoid uploading logs forever in case something goes wrong\n // and the page remains opened, we stop it if there is no media connection\n if (!this.mediaProperties.webrtcMediaConnection) {\n return;\n }\n\n this.setLogUploadTimer();\n }, delay);\n }\n\n /**\n * Starts a periodic upload of logs\n *\n * @returns {undefined}\n */\n public startPeriodicLogUpload() {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.logUploadIntervalMultiplicationFactor && !this.uploadLogsTimer) {\n this.logUploadIntervalIndex = 0;\n\n this.setLogUploadTimer();\n }\n }\n\n /**\n * Stops the periodic upload of logs\n *\n * @returns {undefined}\n */\n public stopPeriodicLogUpload() {\n if (this.uploadLogsTimer) {\n clearTimeout(this.uploadLogsTimer);\n this.uploadLogsTimer = undefined;\n }\n }\n\n /**\n * Removes remote audio, video and share streams from class instance's mediaProperties\n * @returns {undefined}\n */\n unsetRemoteStreams() {\n this.mediaProperties.unsetRemoteStreams();\n }\n\n /**\n * Removes the remote stream on the class instance and triggers an event\n * to developers\n * @returns {undefined}\n * @public\n * @memberof Meeting\n * @deprecated after v1.89.3\n */\n public closeRemoteStream() {\n LoggerProxy.logger.warn(\n 'Meeting:index#closeRemoteStream --> [DEPRECATION WARNING]: closeRemoteStream has been deprecated after v1.89.3'\n );\n this.closeRemoteStreams();\n }\n\n /**\n * Removes the remote streams on the class instance and triggers an event\n * to developers\n * @returns {undefined}\n * @memberof Meeting\n */\n closeRemoteStreams() {\n const {remoteAudioStream, remoteVideoStream, remoteShareStream} = this.mediaProperties;\n\n /**\n * Triggers an event to the developer\n * @param {string} mediaType Type of media that was stopped\n * @returns {void}\n * @inner\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const triggerMediaStoppedEvent = (mediaType: string) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'closeRemoteStreams',\n },\n EVENT_TRIGGERS.MEDIA_STOPPED,\n {\n type: mediaType,\n }\n );\n };\n\n /**\n * Stops a media stream and emits an event\n * @param {RemoteStream} stream Media stream to stop\n * @param {string} type Media stream type\n * @returns {Promise}\n * @inner\n */\n // eslint-disable-next-line arrow-body-style\n const stopStream = (stream: RemoteStream, type: string) => {\n return Media.stopStream(stream).then(() => {\n triggerMediaStoppedEvent(type);\n });\n };\n\n return Promise.all([\n stopStream(remoteAudioStream, EVENT_TYPES.REMOTE_AUDIO),\n stopStream(remoteVideoStream, EVENT_TYPES.REMOTE_VIDEO),\n stopStream(remoteShareStream, EVENT_TYPES.REMOTE_SHARE),\n ]);\n }\n\n /**\n * Stores the reference to a new microphone stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n *\n * @param {LocalMicrophoneStream | null} localStream local microphone stream\n * @returns {Promise<void>}\n */\n private async setLocalAudioStream(localStream?: LocalMicrophoneStream) {\n const oldStream = this.mediaProperties.audioStream;\n\n oldStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n oldStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n // we don't update this.mediaProperties.mediaDirection.sendAudio, because we always keep it as true to avoid extra SDP exchanges\n this.mediaProperties.setLocalAudioStream(localStream);\n\n this.audio?.handleLocalStreamChange(this);\n\n localStream?.on(\n LocalStreamEventNames.UserMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n localStream?.on(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n localStream?.on(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n if (!this.isMultistream || !localStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.AudioMain, oldStream);\n }\n await this.publishStream(MediaType.AudioMain, this.mediaProperties.audioStream);\n }\n\n /**\n * Stores the reference to a new camera stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n *\n * @param {LocalCameraStream | null} localStream local camera stream\n * @returns {Promise<void>}\n */\n private async setLocalVideoStream(localStream?: LocalCameraStream) {\n const oldStream = this.mediaProperties.videoStream;\n\n oldStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n oldStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n // we don't update this.mediaProperties.mediaDirection.sendVideo, because we always keep it as true to avoid extra SDP exchanges\n this.mediaProperties.setLocalVideoStream(localStream);\n\n this.video?.handleLocalStreamChange(this);\n\n localStream?.on(\n LocalStreamEventNames.UserMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n localStream?.on(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n localStream?.on(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n if (!this.isMultistream || !localStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.VideoMain, oldStream);\n }\n await this.publishStream(MediaType.VideoMain, this.mediaProperties.videoStream);\n }\n\n /**\n * Stores the reference to a new screen share stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n * It also sends the floor grant/release request.\n *\n * @param {LocalDisplayStream | undefined} localDisplayStream local display stream\n * @returns {Promise<void>}\n */\n private async setLocalShareVideoStream(localDisplayStream?: LocalDisplayStream) {\n const oldStream = this.mediaProperties.shareVideoStream;\n\n oldStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.handleShareVideoStreamMuteStateChange\n );\n oldStream?.off(StreamEventNames.Ended, this.handleShareVideoStreamEnded);\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n this.mediaProperties.setLocalShareVideoStream(localDisplayStream);\n\n localDisplayStream?.on(\n LocalStreamEventNames.SystemMuteStateChange,\n this.handleShareVideoStreamMuteStateChange\n );\n localDisplayStream?.on(StreamEventNames.Ended, this.handleShareVideoStreamEnded);\n localDisplayStream?.on(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();\n\n if (!this.isMultistream || !localDisplayStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.VideoSlides, oldStream);\n }\n await this.publishStream(MediaType.VideoSlides, this.mediaProperties.shareVideoStream);\n }\n\n /**\n * Stores the reference to a new screen share audio stream, sets up the required event listeners\n * on it, cleans up previous stream, etc.\n *\n * @param {LocalSystemAudioStream | undefined} localSystemAudioStream local system audio stream\n * @returns {Promise<void>}\n */\n private async setLocalShareAudioStream(localSystemAudioStream?: LocalSystemAudioStream) {\n const oldStream = this.mediaProperties.shareAudioStream;\n\n oldStream?.off(StreamEventNames.Ended, this.handleShareAudioStreamEnded);\n oldStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n this.mediaProperties.setLocalShareAudioStream(localSystemAudioStream);\n\n localSystemAudioStream?.on(StreamEventNames.Ended, this.handleShareAudioStreamEnded);\n localSystemAudioStream?.on(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n this.mediaProperties.mediaDirection.sendShare = this.mediaProperties.hasLocalShareStream();\n\n if (!this.isMultistream || !localSystemAudioStream) {\n // for multistream WCME automatically un-publishes the old stream when we publish a new one\n await this.unpublishStream(MediaType.AudioSlides, oldStream);\n }\n await this.publishStream(MediaType.AudioSlides, this.mediaProperties.shareAudioStream);\n }\n\n /**\n * Handles the local audio stream publish state change event\n * @internal\n * @param {Object} options parameters functionName, isPublished, mediaType and stream needed to trigger event\n * @returns {undefined}\n */\n private emitPublishStateChangeEvent(options: {\n functionName: string;\n isPublished: boolean;\n mediaType: MediaType;\n stream: LocalStream;\n }) {\n const {functionName, isPublished, mediaType, stream} = options;\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: functionName,\n },\n EVENT_TRIGGERS.MEETING_STREAM_PUBLISH_STATE_CHANGED,\n {\n isPublished,\n mediaType,\n stream,\n }\n );\n }\n\n /**\n * Removes references to local streams. This function should be called\n * on cleanup when we leave the meeting etc.\n *\n * @internal\n * @returns {void}\n */\n public cleanupLocalStreams() {\n const {audioStream, videoStream, shareAudioStream, shareVideoStream} = this.mediaProperties;\n\n audioStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n audioStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localAudioStreamMuteStateHandler\n );\n audioStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n videoStream?.off(\n LocalStreamEventNames.UserMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n videoStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.localVideoStreamMuteStateHandler\n );\n videoStream?.off(LocalStreamEventNames.OutputTrackChange, this.localOutputTrackChangeHandler);\n\n shareAudioStream?.off(StreamEventNames.Ended, this.handleShareAudioStreamEnded);\n shareAudioStream?.off(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n shareVideoStream?.off(\n LocalStreamEventNames.SystemMuteStateChange,\n this.handleShareVideoStreamMuteStateChange\n );\n shareVideoStream?.off(StreamEventNames.Ended, this.handleShareVideoStreamEnded);\n shareVideoStream?.off(\n LocalStreamEventNames.OutputTrackChange,\n this.localOutputTrackChangeHandler\n );\n\n this.mediaProperties.setLocalAudioStream(undefined);\n this.mediaProperties.setLocalVideoStream(undefined);\n this.mediaProperties.setLocalShareAudioStream(undefined);\n this.mediaProperties.setLocalShareVideoStream(undefined);\n\n this.mediaProperties.mediaDirection.sendAudio = false;\n this.mediaProperties.mediaDirection.sendVideo = false;\n this.mediaProperties.mediaDirection.sendShare = false;\n\n if (audioStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.AudioMain,\n stream: audioStream,\n });\n }\n if (videoStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.VideoMain,\n stream: videoStream,\n });\n }\n if (shareVideoStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.VideoSlides,\n stream: shareVideoStream,\n });\n }\n if (shareAudioStream) {\n this.emitPublishStateChangeEvent({\n functionName: 'cleanupLocalStreams',\n isPublished: false,\n mediaType: MediaType.AudioSlides,\n stream: shareAudioStream,\n });\n }\n }\n\n /**\n * sets up listner for mercury event\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public setMercuryListener() {\n // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury\n // if the meeting has active peer connections, it should try to reconnect.\n // @ts-ignore\n this.webex.internal.mercury.on(ONLINE, () => {\n LoggerProxy.logger.info('Meeting:index#setMercuryListener --> Web socket online');\n\n // Only send restore event when it was disconnected before and for connected later\n if (!this.hasWebsocketConnected) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MERCURY_CONNECTION_RESTORED, {\n correlation_id: this.correlationId,\n });\n }\n this.hasWebsocketConnected = true;\n });\n\n // @ts-ignore\n this.webex.internal.mercury.on(OFFLINE, () => {\n LoggerProxy.logger.error('Meeting:index#setMercuryListener --> Web socket offline');\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MERCURY_CONNECTION_FAILURE, {\n correlation_id: this.correlationId,\n });\n });\n }\n\n /**\n * Close the peer connections and remove them from the class.\n * Cleanup any media connection related things.\n *\n * @param {boolean} resetMuteStates whether to also reset the audio/video mute state information\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public closePeerConnections(resetMuteStates = true) {\n if (this.mediaProperties.webrtcMediaConnection) {\n if (this.remoteMediaManager) {\n this.remoteMediaManager.stop();\n this.remoteMediaManager = null;\n }\n\n Object.values(this.mediaRequestManagers).forEach((mediaRequestManager) =>\n mediaRequestManager.reset()\n );\n\n this.receiveSlotManager.reset();\n this.mediaProperties.webrtcMediaConnection.close();\n this.mediaProperties.unsetPeerConnection();\n this.sendSlotManager.reset();\n this.setNetworkStatus(undefined);\n }\n\n if (resetMuteStates) {\n this.audio = null;\n this.video = null;\n }\n\n return Promise.resolve();\n }\n\n /**\n * Unsets the peer connections on the class\n * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public unsetPeerConnections() {\n this.mediaProperties.unsetPeerConnection();\n // @ts-ignore - config coming from registerPlugin\n if (this.config.reconnection.detection) {\n // @ts-ignore\n this.webex.internal.mercury.off(ONLINE);\n // @ts-ignore\n this.webex.internal.mercury.off(OFFLINE);\n }\n }\n\n /**\n * Convenience method to set the correlation id for the callStateForMetrics\n * @param {String} id correlation id to set on the callStateForMetrics\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public setCorrelationId(id: string) {\n this.callStateForMetrics.correlationId = id;\n }\n\n /**\n * Update the callStateForMetrics\n * @param {CallStateForMetrics} callStateForMetrics updated values for callStateForMetrics\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public updateCallStateForMetrics(callStateForMetrics: CallStateForMetrics) {\n this.callStateForMetrics = {...this.callStateForMetrics, ...callStateForMetrics};\n }\n\n /**\n * Enqueue request for screenshare floor and set the status to pending\n * @returns {Promise}\n * @private\n * @memberof Meeting\n */\n private enqueueScreenShareFloorRequest() {\n this.screenShareFloorState = ScreenShareFloorStatus.PENDING;\n\n return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.SHARE_FLOOR_REQUEST);\n }\n\n /**\n * Mute the audio for a meeting\n * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set\n * @public\n * @memberof Meeting\n */\n public muteAudio() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.audio) {\n return Promise.reject(new ParameterError('no audio control associated to the meeting'));\n }\n\n // First, stop sending the local audio media\n return logRequest(\n this.audio\n .handleClientRequest(this, true)\n .then(() => {\n MeetingUtil.handleAudioLogging(this.mediaProperties.audioStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.muted',\n payload: {trigger: 'user-interaction', mediaType: 'audio'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MUTE_AUDIO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#muteAudio --> correlationId=${this.correlationId} muting audio`,\n }\n );\n }\n\n /**\n * Unmute meeting audio\n * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set\n * @public\n * @memberof Meeting\n */\n public unmuteAudio() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.audio) {\n return Promise.reject(new ParameterError('no audio control associated to the meeting'));\n }\n\n // First, send the control to unmute the participant on the server\n return logRequest(\n this.audio\n .handleClientRequest(this, false)\n .then(() => {\n MeetingUtil.handleAudioLogging(this.mediaProperties.audioStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.unmuted',\n payload: {trigger: 'user-interaction', mediaType: 'audio'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UNMUTE_AUDIO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#unmuteAudio --> correlationId=${this.correlationId} unmuting audio`,\n }\n );\n }\n\n /**\n * Mute the video for a meeting\n * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set\n * @public\n * @memberof Meeting\n */\n public muteVideo() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.video) {\n return Promise.reject(new ParameterError('no video control associated to the meeting'));\n }\n\n return logRequest(\n this.video\n .handleClientRequest(this, true)\n .then(() => {\n MeetingUtil.handleVideoLogging(this.mediaProperties.videoStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.muted',\n payload: {trigger: 'user-interaction', mediaType: 'video'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MUTE_VIDEO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#muteVideo --> correlationId=${this.correlationId} muting video`,\n }\n );\n }\n\n /**\n * Unmute meeting video\n * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set\n * @public\n * @memberof Meeting\n */\n public unmuteVideo() {\n if (!MeetingUtil.isUserInJoinedState(this.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n // @ts-ignore\n if (!this.mediaId) {\n // Happens when addMedia and mute are triggered in succession\n return Promise.reject(new NoMediaEstablishedYetError());\n }\n\n if (!this.video) {\n return Promise.reject(new ParameterError('no audio control associated to the meeting'));\n }\n\n return logRequest(\n this.video\n .handleClientRequest(this, false)\n .then(() => {\n MeetingUtil.handleVideoLogging(this.mediaProperties.videoStream);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.unmuted',\n payload: {trigger: 'user-interaction', mediaType: 'video'},\n options: {meetingId: this.id},\n });\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UNMUTE_VIDEO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n }),\n {\n logText: `Meeting:index#unmuteVideo --> correlationId=${this.correlationId} unmuting video`,\n }\n );\n }\n\n /**\n * Shorthand function to join AND set up media\n * @param {Object} options - options to join with media\n * @param {JoinOptions} [options.joinOptions] - see #join()\n * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()\n * @returns {Promise} -- {join: see join(), media: see addMedia(), multistreamEnabled: flag to indicate if we managed to join in multistream mode}\n * @public\n * @memberof Meeting\n * @example\n * joinWithMedia({\n * joinOptions: {resourceId: 'resourceId' },\n * mediaOptions: {\n * localStreams: { microphone: microphoneStream, camera: cameraStream }\n * }\n * })\n */\n public async joinWithMedia(\n options: {\n joinOptions?: any;\n mediaOptions?: AddMediaOptions;\n } = {}\n ) {\n const {mediaOptions, joinOptions = {}} = options;\n const {isRetry, prevJoinResponse} = this.joinWithMediaRetryInfo;\n\n if (!mediaOptions?.allowMediaInLobby) {\n return Promise.reject(\n new ParameterError('joinWithMedia() can only be used with allowMediaInLobby set to true')\n );\n }\n this.allowMediaInLobby = true;\n\n LoggerProxy.logger.info('Meeting:index#joinWithMedia called');\n\n let joined = false;\n let joinResponse = prevJoinResponse;\n\n try {\n let turnServerInfo;\n let turnDiscoverySkippedReason;\n let forceTurnDiscovery = false;\n\n if (!joinResponse) {\n // This is the 1st attempt or a retry after join request failed -> we need to do a join with TURN discovery\n\n const turnDiscoveryRequest = await this.roap.generateTurnDiscoveryRequestMessage(\n this,\n true\n );\n\n ({turnDiscoverySkippedReason} = turnDiscoveryRequest);\n joinOptions.roapMessage = turnDiscoveryRequest.roapMessage;\n\n LoggerProxy.logger.info(\n 'Meeting:index#joinWithMedia ---> calling join with joinOptions, ',\n joinOptions\n );\n\n joinResponse = await this.join(joinOptions);\n\n joined = true;\n\n // if we sent out TURN discovery Roap message with join, process the TURN discovery response\n if (joinOptions.roapMessage) {\n ({turnServerInfo, turnDiscoverySkippedReason} =\n await this.roap.handleTurnDiscoveryHttpResponse(this, joinResponse));\n\n this.turnDiscoverySkippedReason = turnDiscoverySkippedReason;\n this.turnServerUsed = !!turnServerInfo;\n\n if (turnServerInfo === undefined) {\n this.roap.abortTurnDiscovery();\n }\n }\n } else {\n // This is a retry, when join succeeded but addMedia failed, so we'll just call addMedia() again,\n // but we need to ensure that it also does a new TURN discovery\n forceTurnDiscovery = true;\n joined = true;\n }\n\n const mediaResponse = await this.addMediaInternal(\n () => {\n return this.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';\n },\n turnServerInfo,\n forceTurnDiscovery,\n mediaOptions\n );\n\n this.joinWithMediaRetryInfo = {isRetry: false, prevJoinResponse: undefined};\n\n return {\n join: joinResponse,\n media: mediaResponse,\n multistreamEnabled: this.isMultistream,\n };\n } catch (error) {\n LoggerProxy.logger.error('Meeting:index#joinWithMedia --> ', error);\n\n let leaveError;\n\n this.roap.abortTurnDiscovery();\n\n // if this was the first attempt, let's do a retry\n let shouldRetry = !isRetry;\n\n if (CallDiagnosticUtils.isSdpOfferCreationError(error)) {\n // errors related to offer creation (for example missing H264 codec) will happen again no matter how many times we try,\n // so there is no point doing a retry\n shouldRetry = false;\n }\n\n // we only want to call leave if join was successful and this was a retry or we won't be doing any more retries\n if (joined && (isRetry || !shouldRetry)) {\n try {\n await this.leave({resourceId: joinOptions?.resourceId, reason: 'joinWithMedia failure'});\n } catch (e) {\n LoggerProxy.logger.error('Meeting:index#joinWithMedia --> leave error', e);\n leaveError = e;\n }\n }\n\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.JOIN_WITH_MEDIA_FAILURE,\n {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl?.split('/').pop(), // if join fails, we may end up with no locusUrl\n reason: error.message,\n stack: error.stack,\n leaveErrorReason: leaveError?.message,\n isRetry,\n },\n {\n type: error.name,\n }\n );\n\n if (shouldRetry) {\n LoggerProxy.logger.warn('Meeting:index#joinWithMedia --> retrying call to joinWithMedia');\n this.joinWithMediaRetryInfo.isRetry = true;\n this.joinWithMediaRetryInfo.prevJoinResponse = joinResponse;\n\n return this.joinWithMedia(options);\n }\n\n this.joinWithMediaRetryInfo = {isRetry: false, prevJoinResponse: undefined};\n\n throw error;\n }\n }\n\n /**\n * Initiates the reconnection of the media in the meeting\n *\n * @param {object} options\n * @returns {Promise} resolves with {reconnect} or errors with {error}\n * @public\n * @memberof Meeting\n */\n public reconnect(options?: object) {\n LoggerProxy.logger.log(\n `Meeting:index#reconnect --> attempting to reconnect meeting ${this.id}`\n );\n\n if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {\n return Promise.reject(\n new ParameterError('Cannot reconnect, ReconnectionManager must first be defined.')\n );\n }\n\n // @ts-ignore - currentMediaStatus coming from SelfUtil\n if (!MeetingUtil.isMediaEstablished(this.currentMediaStatus)) {\n return Promise.reject(\n new ParameterError('Cannot reconnect, Media has not established to reconnect')\n );\n }\n\n this.cleanUpBeforeReconnection();\n\n return this.reconnectionManager\n .reconnect(options, async () => {\n await this.waitForRemoteSDPAnswer();\n await this.waitForMediaConnectionConnected();\n })\n .then(() => {\n LoggerProxy.logger.log('Meeting:index#reconnect --> Meeting reconnect success');\n })\n .catch((error) => {\n if (error instanceof ReconnectionNotStartedError) {\n LoggerProxy.logger.log('Meeting:index#reconnect --> Meeting reconnect not started');\n\n return Promise.resolve();\n }\n LoggerProxy.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);\n\n this.uploadLogs({\n file: 'meeting/index',\n function: 'reconnect',\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Check if the meeting supports the Webex Assistant feature\n * @returns {boolean}\n * @throws TranscriptionNotSupportedError\n */\n isTranscriptionSupported() {\n if (this.locusInfo.controls.transcribe?.caption) {\n return true;\n }\n\n LoggerProxy.logger.error(\n 'Meeting:index#isTranscriptionSupported --> Closed Captions is not enabled/supported'\n );\n\n return false;\n }\n\n /**\n * Check if the meeting supports the Reactions\n * @returns {boolean}\n */\n isReactionsSupported() {\n if (this.locusInfo?.controls?.reactions.enabled) {\n return true;\n }\n\n LoggerProxy.logger.error('Meeting:index#isReactionsSupported --> Reactions is not supported');\n\n return false;\n }\n\n /**\n * sets Caption language for the meeting\n * @param {string} language\n * @returns {Promise}\n */\n public setCaptionLanguage(language: string) {\n return new Promise((resolve, reject) => {\n if (!this.isTranscriptionSupported()) {\n LoggerProxy.logger.error(\n 'Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported'\n );\n\n reject(new Error('Webex Assistant is not enabled/supported'));\n }\n\n try {\n const voiceaListenerCaptionUpdate = (payload) => {\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.CAPTION_LANGUAGE_UPDATE,\n voiceaListenerCaptionUpdate\n );\n const {statusCode} = payload;\n\n if (statusCode === 200) {\n this.transcription.languageOptions = {\n ...this.transcription.languageOptions,\n currentCaptionLanguage: language,\n };\n resolve(language);\n } else {\n reject(payload);\n }\n };\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.CAPTION_LANGUAGE_UPDATE,\n voiceaListenerCaptionUpdate\n );\n // @ts-ignore\n this.webex.internal.voicea.requestLanguage(language);\n } catch (error) {\n LoggerProxy.logger.error(`Meeting:index#setCaptionLanguage --> ${error}`);\n\n reject(error);\n }\n });\n }\n\n /**\n * sets Spoken language for the meeting\n * @param {string} language\n * @returns {Promise}\n */\n public setSpokenLanguage(language: string) {\n return new Promise((resolve, reject) => {\n if (!this.isTranscriptionSupported()) {\n LoggerProxy.logger.error(\n 'Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported'\n );\n\n reject(new Error('Webex Assistant is not enabled/supported'));\n }\n\n if (this.getCurUserType() !== 'host') {\n LoggerProxy.logger.error(\n 'Meeting:index#setSpokenLanguage --> Only host can set spoken language'\n );\n\n reject(new Error('Only host can set spoken language'));\n }\n\n try {\n const voiceaListenerLanguageUpdate = (payload) => {\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.SPOKEN_LANGUAGE_UPDATE,\n voiceaListenerLanguageUpdate\n );\n const {languageCode} = payload;\n\n if (languageCode) {\n this.transcription.languageOptions = {\n ...this.transcription.languageOptions,\n currentSpokenLanguage: languageCode,\n };\n resolve(languageCode);\n } else {\n reject(payload);\n }\n };\n\n // @ts-ignore\n this.webex.internal.voicea.on(\n VOICEAEVENTS.SPOKEN_LANGUAGE_UPDATE,\n voiceaListenerLanguageUpdate\n );\n\n // @ts-ignore\n this.webex.internal.voicea.setSpokenLanguage(language);\n } catch (error) {\n LoggerProxy.logger.error(`Meeting:index#setSpokenLanguage --> ${error}`);\n\n reject(error);\n }\n });\n }\n\n /**\n * This method will enable the transcription for the current meeting if the meeting has enabled/supports Webex Assistant\n * @param {Object} options object with spokenlanguage setting\n * @public\n * @returns {Promise<void>} a promise to open the WebSocket connection\n */\n public async startTranscription(options?: {spokenLanguage?: string}) {\n if (this.isJoined()) {\n LoggerProxy.logger.info(\n 'Meeting:index#startTranscription --> Attempting to enable transcription!'\n );\n\n try {\n if (!this.areVoiceaEventsSetup) {\n this.setUpVoiceaListeners();\n }\n\n // @ts-ignore\n await this.webex.internal.voicea.turnOnCaptions(options?.spokenLanguage);\n } catch (error) {\n LoggerProxy.logger.error(`Meeting:index#startTranscription --> ${error}`);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.RECEIVE_TRANSCRIPTION_FAILURE, {\n correlation_id: this.correlationId,\n reason: error.message,\n stack: error.stack,\n });\n }\n } else {\n LoggerProxy.logger.error(\n `Meeting:index#startTranscription --> meeting joined : ${this.isJoined()}`\n );\n throw new Error('Meeting is not joined');\n }\n }\n\n /**\n * Callback called when a relay event is received from meeting LLM Connection\n * @param {RelayEvent} e Event object coming from LLM Connection\n * @private\n * @returns {void}\n */\n private processRelayEvent = (e: RelayEvent): void => {\n switch (e.data.relayType) {\n case REACTION_RELAY_TYPES.REACTION:\n if (\n // @ts-ignore - config coming from registerPlugin\n (this.config.receiveReactions || options.receiveReactions) &&\n this.isReactionsSupported()\n ) {\n const member = this.members.membersCollection.get(e.data.sender.participantId);\n if (!member) {\n // @ts-ignore -- fix type\n LoggerProxy.logger.warn(\n `Meeting:index#processRelayEvent --> Skipping handling of ${REACTION_RELAY_TYPES.REACTION} for ${this.id}. participantId ${e.data.sender.participantId} does not exist in membersCollection.`\n );\n break;\n }\n\n const {name} = member;\n const processedReaction: ProcessedReaction = {\n reaction: e.data.reaction,\n sender: {\n id: e.data.sender.participantId,\n name,\n },\n };\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'join',\n },\n EVENT_TRIGGERS.MEETING_RECEIVE_REACTIONS,\n processedReaction\n );\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * This method stops receiving transcription for the current meeting\n * @returns {void}\n */\n stopTranscription() {\n if (this.transcription) {\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.VOICEA_ANNOUNCEMENT,\n this.voiceaListenerCallbacks[VOICEAEVENTS.VOICEA_ANNOUNCEMENT]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.CAPTIONS_TURNED_ON,\n this.voiceaListenerCallbacks[VOICEAEVENTS.CAPTIONS_TURNED_ON]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.EVA_COMMAND,\n this.voiceaListenerCallbacks[VOICEAEVENTS.EVA_COMMAND]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.off(\n VOICEAEVENTS.NEW_CAPTION,\n this.voiceaListenerCallbacks[VOICEAEVENTS.NEW_CAPTION]\n );\n\n // @ts-ignore\n this.webex.internal.voicea.deregisterEvents();\n\n this.areVoiceaEventsSetup = false;\n this.triggerStopReceivingTranscriptionEvent();\n }\n }\n\n /**\n * triggers an event to notify that the user\n * will not receive any more transcription\n * @private\n * @returns{void}\n */\n private triggerStopReceivingTranscriptionEvent() {\n LoggerProxy.logger.info(`\n Meeting:index#stopReceivingTranscription -->\n closed voicea event listeners successfully.`);\n\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'triggerStopReceivingTranscriptionEvent',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_RECEIVING_TRANSCRIPTION\n );\n }\n\n /**\n * This is a callback for the LLM event that is triggered when it comes online\n * This method in turn will trigger an event to the developers that the LLM is connected\n * @private\n * @memberof Meeting\n * @returns {null}\n */\n private handleLLMOnline = (): void => {\n // @ts-ignore\n this.webex.internal.llm.off('online', this.handleLLMOnline);\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'handleLLMOnline',\n },\n EVENT_TRIGGERS.MEETING_TRANSCRIPTION_CONNECTED,\n undefined\n );\n };\n\n /**\n * Specify joining via audio (option: pstn), video, screenshare\n * @param {JoinOptions} options A configurable options object for joining a meeting\n * @returns {Promise} the join response\n * @public\n * @memberof Meeting\n * Scenario A: Joining own claimed personal meeting room\n * Scenario B: Joining other's claimed personal meeting room, do pass pin (if desired to join as host, or nullify), do pass moderator\n * Scenario C: Joining an unclaimed personal meeting room, -do not- pass pin or moderator on first try, -do- pass pin and moderator\n * if joining as host on second loop, pass pin and pass moderator if joining as guest on second loop\n * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)\n */\n public async join(options: any = {}) {\n // @ts-ignore - fix type\n if (!this.webex.meetings.registered) {\n const errorMessage = 'Meeting:index#join --> Device not registered';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(errorMessage);\n\n return Promise.reject(error);\n }\n\n // If a join request is being processed, refer to the deferred promise.\n if (this.deferJoin) {\n return this.deferJoin;\n }\n\n // Scope-up the resolve/reject methods for handling within join().\n let joinFailed;\n let joinSuccess;\n\n // Create a deferred promise for a consistent resolve value from utils.\n // This also prevents redundant API calls.\n this.deferJoin = new Promise((resolve, reject) => {\n joinFailed = reject;\n joinSuccess = resolve;\n });\n\n if (options.correlationId) {\n this.setCorrelationId(options.correlationId);\n LoggerProxy.logger.log(\n `Meeting:index#join --> Using a new correlation id from app ${this.correlationId}`\n );\n }\n\n if (!this.hasJoinedOnce) {\n this.hasJoinedOnce = true;\n } else if (!options.correlationId) {\n LoggerProxy.logger.log(\n `Meeting:index#join --> Generating a new correlation id for meeting ${this.id}`\n );\n LoggerProxy.logger.log(\n `Meeting:index#join --> Previous correlation id ${this.correlationId}`\n );\n this.setCorrelationId(uuid.v4());\n LoggerProxy.logger.log(`Meeting:index#join --> New correlation id ${this.correlationId}`);\n }\n\n if (options.rejoin) {\n this.meetingFiniteStateMachine.reset();\n }\n\n // send client.call.initiated unless told not to\n if (options.sendCallInitiated !== false) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.initiated',\n payload: {\n trigger: this.callStateForMetrics.joinTrigger || 'user-interaction',\n isRoapCallEnabled: true,\n pstnAudioType: options?.pstnAudioType,\n },\n options: {meetingId: this.id},\n });\n }\n\n LoggerProxy.logger.log('Meeting:index#join --> Joining a meeting');\n\n if (this.meetingFiniteStateMachine.state === MEETING_STATE_MACHINE.STATES.ENDED) {\n this.meetingFiniteStateMachine.reset();\n }\n if (this.meetingFiniteStateMachine.state !== MEETING_STATE_MACHINE.STATES.RINGING) {\n this.meetingFiniteStateMachine.ring(_JOIN_);\n }\n\n // TODO: does this really need to be here?\n if (options.resourceId && this.destination && options.resourceId === this.destination) {\n this.wirelessShare = true;\n }\n\n if (options.meetingQuality) {\n if (typeof options.meetingQuality === 'string') {\n if (!QUALITY_LEVELS[options.meetingQuality]) {\n const errorMessage = `Meeting:index#join --> ${options.meetingQuality} not defined`;\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(errorMessage);\n\n joinFailed(error);\n this.deferJoin = undefined;\n\n return Promise.reject(error);\n }\n\n this.mediaProperties.setRemoteQualityLevel(options.meetingQuality);\n }\n\n if (typeof options.meetingQuality === 'object') {\n if (!QUALITY_LEVELS[options.meetingQuality.remote]) {\n const errorMessage = `Meeting:index#join --> ${options.meetingQuality.remote} not defined`;\n\n LoggerProxy.logger.error(errorMessage);\n\n const error = new Error(errorMessage);\n\n joinFailed(error);\n this.deferJoin = undefined;\n\n return Promise.reject(new Error(errorMessage));\n }\n\n if (options.meetingQuality.remote) {\n this.mediaProperties.setRemoteQualityLevel(options.meetingQuality.remote);\n }\n }\n }\n\n this.isMultistream = !!options.enableMultistream;\n\n try {\n // refresh the permission token if its about to expire in 10sec\n await this.checkAndRefreshPermissionToken(\n MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC,\n MEETING_PERMISSION_TOKEN_REFRESH_REASON\n );\n } catch (error) {\n LoggerProxy.logger.error('Meeting:index#join --> Failed to refresh permission token:', error);\n\n if (\n error instanceof CaptchaError ||\n error instanceof PasswordError ||\n error instanceof PermissionError\n ) {\n this.meetingFiniteStateMachine.fail(error);\n\n // Upload logs on refreshpermissionToken refresh Failure\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'join',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n joinFailed(error);\n\n this.deferJoin = undefined;\n\n // if refresh permission token requires captcha, password or permission, we are throwing the errors\n // and bubble it up to client\n return Promise.reject(error);\n }\n }\n\n return MeetingUtil.joinMeetingOptions(this, options)\n .then((join) => {\n this.meetingFiniteStateMachine.join();\n this.setupLocusMediaRequest();\n\n // @ts-ignore\n this.webex.internal.device.meetingStarted();\n\n LoggerProxy.logger.log('Meeting:index#join --> Success');\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.JOIN_SUCCESS, {\n correlation_id: this.correlationId,\n });\n\n joinSuccess(join);\n\n this.deferJoin = undefined;\n\n return join;\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n LoggerProxy.logger.error('Meeting:index#join --> Failed', error);\n\n // TODO: change this to error codes and pre defined dictionary\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.JOIN_FAILURE, {\n correlation_id: this.correlationId,\n reason: error.error?.message,\n stack: error.stack,\n });\n\n // Upload logs on join Failure\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'join',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n joinFailed(error);\n\n this.deferJoin = undefined;\n\n return Promise.reject(error);\n })\n .then((join) => {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.enableAutomaticLLM) {\n // @ts-ignore\n this.webex.internal.llm.on('online', this.handleLLMOnline);\n this.updateLLMConnection()\n .catch((error) => {\n LoggerProxy.logger.error(\n 'Meeting:index#join --> Transcription Socket Connection Failed',\n error\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LLM_CONNECTION_AFTER_JOIN_FAILURE, {\n correlation_id: this.correlationId,\n reason: error?.message,\n stack: error.stack,\n });\n })\n .then(() => {\n LoggerProxy.logger.info(\n 'Meeting:index#join --> Transcription Socket Connection Success'\n );\n });\n }\n\n return join;\n });\n }\n\n /**\n * Connects to low latency mercury and reconnects if the address has changed\n * It will also disconnect if called when the meeting has ended\n * @param {String} datachannelUrl\n * @returns {Promise}\n */\n async updateLLMConnection() {\n // @ts-ignore - Fix type\n const {url, info: {datachannelUrl, practiceSessionDatachannelUrl} = {}} = this.locusInfo;\n\n const isJoined = this.isJoined();\n\n // webinar panelist should use new data channel in practice session\n const dataChannelUrl =\n this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl\n ? practiceSessionDatachannelUrl\n : datachannelUrl;\n\n // @ts-ignore - Fix type\n if (this.webex.internal.llm.isConnected()) {\n if (\n // @ts-ignore - Fix type\n url === this.webex.internal.llm.getLocusUrl() &&\n // @ts-ignore - Fix type\n dataChannelUrl === this.webex.internal.llm.getDatachannelUrl() &&\n isJoined\n ) {\n return undefined;\n }\n // @ts-ignore - Fix type\n await this.webex.internal.llm.disconnectLLM(\n isJoined\n ? {\n code: 3050,\n reason: 'done (permanent)',\n }\n : undefined\n );\n // @ts-ignore - Fix type\n this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);\n }\n\n if (!isJoined) {\n return undefined;\n }\n\n // @ts-ignore - Fix type\n return this.webex.internal.llm\n .registerAndConnect(url, dataChannelUrl)\n .then((registerAndConnectResult) => {\n // @ts-ignore - Fix type\n this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);\n // @ts-ignore - Fix type\n this.webex.internal.llm.on('event:relay.event', this.processRelayEvent);\n LoggerProxy.logger.info(\n 'Meeting:index#updateLLMConnection --> enabled to receive relay events!'\n );\n\n return Promise.resolve(registerAndConnectResult);\n });\n }\n\n /**\n * Use phone for meeting audio\n * @param {String} phoneNumber If provided, it will dial-out using this number. If not provided, dial-in will be used\n * @returns {Promise} Resolves once the dial-in or dial-out request has completed, or rejects if it failed\n * @public\n * @memberof Meeting\n */\n public usePhoneAudio(phoneNumber: string) {\n if (!phoneNumber) {\n return this.dialInPstn();\n }\n\n return this.dialOutPstn(phoneNumber);\n }\n\n /**\n * Determines if the given pstnStatus is in a state which implies the phone is provisioned\n * @param {String} pstnStatus\n * @returns {Boolean}\n * @private\n * @memberof Meeting\n */\n private isPhoneProvisioned(pstnStatus: string) {\n return [PSTN_STATUS.JOINED, PSTN_STATUS.CONNECTED, PSTN_STATUS.SUCCESS].includes(pstnStatus);\n }\n\n /**\n * Enable dial-in for audio\n * @returns {Promise} Resolves once the dial-in request has completed, or rejects if it failed\n * @private\n * @memberof Meeting\n */\n private dialInPstn() {\n if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return Promise.resolve(); // prevent multiple dial in devices from being provisioned\n this.pstnCorrelationId = uuid.v4();\n\n const {pstnCorrelationId, locusUrl} = this;\n\n if (!this.dialInUrl) this.dialInUrl = `dialin:///${uuid.v4()}`;\n\n return (\n this.meetingRequest\n // @ts-ignore\n .dialIn({\n correlationId: pstnCorrelationId,\n dialInUrl: this.dialInUrl,\n locusUrl,\n clientUrl: this.deviceUrl,\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_DIAL_IN_FAILURE, {\n correlation_id: this.correlationId,\n dial_in_url: this.dialInUrl,\n dial_in_correlation_id: pstnCorrelationId,\n locus_id: locusUrl.split('/').pop(),\n client_url: this.deviceUrl,\n reason: error.error?.message,\n stack: error.stack,\n });\n\n if (this.pstnCorrelationId === pstnCorrelationId) {\n this.pstnCorrelationId = undefined;\n }\n\n return Promise.reject(error);\n })\n );\n }\n\n /**\n * Enable dial-out for audio\n * @param {String} phoneNumber Phone number to dial out to\n * @returns {Promise} Resolves once the dial-out request has completed (it doesn't wait for the user to answer the phone), or rejects if it failed\n * @private\n * @memberof Meeting\n */\n private dialOutPstn(phoneNumber: string) {\n if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return Promise.resolve(); // prevent multiple dial out devices from being provisioned\n this.pstnCorrelationId = uuid.v4();\n\n const {locusUrl, pstnCorrelationId} = this;\n\n if (!this.dialOutUrl) this.dialOutUrl = `dialout:///${uuid.v4()}`;\n\n return (\n this.meetingRequest\n // @ts-ignore\n .dialOut({\n correlationId: pstnCorrelationId,\n dialOutUrl: this.dialOutUrl,\n phoneNumber,\n locusUrl,\n clientUrl: this.deviceUrl,\n })\n .catch((error) => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_DIAL_OUT_FAILURE, {\n correlation_id: this.correlationId,\n dial_out_url: this.dialOutUrl,\n dial_out_correlation_id: pstnCorrelationId,\n locus_id: locusUrl.split('/').pop(),\n client_url: this.deviceUrl,\n reason: error.error?.message,\n stack: error.stack,\n });\n\n if (this.pstnCorrelationId === pstnCorrelationId) {\n this.pstnCorrelationId = undefined;\n }\n\n return Promise.reject(error);\n })\n );\n }\n\n /**\n * Disconnect meeting audio via phone.\n * @returns {Promise} Resolves once the phone audio disconnection has completed\n * @public\n * @memberof Meeting\n * @returns {Promise}\n */\n public disconnectPhoneAudio() {\n const correlationToClear = this.pstnCorrelationId;\n\n return Promise.all([\n this.isPhoneProvisioned(this.dialInDeviceStatus)\n ? MeetingUtil.disconnectPhoneAudio(this, this.dialInUrl)\n : Promise.resolve(),\n this.isPhoneProvisioned(this.dialOutDeviceStatus)\n ? MeetingUtil.disconnectPhoneAudio(this, this.dialOutUrl)\n : Promise.resolve(),\n ]).then(() => {\n if (this.pstnCorrelationId === correlationToClear) {\n this.pstnCorrelationId = undefined;\n }\n });\n }\n\n /**\n * Moves the call to the specified resourceId\n * @param {String} resourceId\n * @returns {Promise} once the move has been completed\n * @public\n * @memberof Meeting\n */\n public moveTo(resourceId: string) {\n if (!resourceId) {\n throw new ParameterError('Cannot move call without a resourceId.');\n }\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.capabilities',\n payload: {\n mediaCapabilities: {\n rx: {\n audio: false,\n share: true,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n tx: {\n audio: false,\n share: false,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n },\n },\n options: {meetingId: this.id},\n });\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.move-media',\n options: {meetingId: this.id},\n });\n\n this.locusInfo.once(LOCUSINFO.EVENTS.SELF_OBSERVING, async () => {\n // Clean up the camera , microphone stream and re initiate it\n\n try {\n if (this.screenShareFloorState === ScreenShareFloorStatus.GRANTED) {\n await this.releaseScreenShareFloor();\n }\n const mediaSettings = {\n mediaDirection: {\n sendVideo: false,\n receiveVideo: false,\n sendAudio: false,\n receiveAudio: false,\n sendShare: false,\n receiveShare: true,\n },\n };\n\n this.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);\n this.mediaProperties.unsetRemoteMedia();\n\n // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting\n // once the device answers we close the old connection and create new media server connection with only share enabled\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n await this.closeRemoteStreams();\n await this.closePeerConnections();\n this.cleanupLocalStreams();\n this.unsetRemoteStreams();\n this.unsetPeerConnections();\n this.reconnectionManager.cleanUp();\n\n await this.addMedia({\n audioEnabled: false,\n videoEnabled: false,\n shareVideoEnabled: true,\n });\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_TO_SUCCESS);\n this.isMoveToInProgress = false;\n } catch (error) {\n LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_TO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n this.isMoveToInProgress = false;\n }\n });\n\n LoggerProxy.logger.info(\n 'Meeting:index#moveTo --> Initated moved to using resourceId',\n resourceId\n );\n\n // TODO: Check with locus if SELF_OBSERVING event would ever be not emitted\n // If yes, introduce a timeout mechanism\n this.isMoveToInProgress = true;\n\n return MeetingUtil.joinMeetingOptions(this, {resourceId, moveToResource: true})\n .then(() => {\n this.meetingFiniteStateMachine.join();\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_TO_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);\n this.isMoveToInProgress = false;\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Moves the call from the specified resourceId, back to computer\n * @param {String} resourceId\n * @returns {Promise} once the move has been completed\n * @public\n * @memberof Meeting\n */\n public moveFrom(resourceId: string) {\n // On moveFrom ask the developer to re capture it moveFrom then updateMedia\n if (!resourceId) {\n throw new ParameterError('Cannot move call without a resourceId.');\n }\n const oldCorrelationId = this.correlationId;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.move-media',\n options: {meetingId: this.id},\n });\n\n return MeetingUtil.joinMeetingOptions(this)\n .then(() =>\n MeetingUtil.leaveMeeting(this, {\n resourceId,\n correlationId: oldCorrelationId,\n moveMeeting: true,\n }).then(() => {\n this.resourceId = '';\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_FROM_SUCCESS);\n })\n )\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MOVE_FROM_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n LoggerProxy.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Handles ROAP_FAILURE event from the webrtc media connection\n *\n * @param {Error} error\n * @returns {void}\n */\n handleRoapFailure = (error) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const sendBehavioralMetric = (metricName, error, correlationId) => {\n const data = {\n code: error.code,\n correlation_id: correlationId,\n reason: error.message,\n stack: error.stack,\n };\n const metadata = {\n type: error.cause?.name || error.name,\n };\n\n Metrics.sendBehavioralMetric(metricName, data, metadata);\n };\n\n if (error instanceof Errors.SdpOfferCreationError) {\n sendBehavioralMetric(BEHAVIORAL_METRICS.PEERCONNECTION_FAILURE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.local-sdp-generated',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n } else if (error instanceof Errors.SdpOfferHandlingError) {\n sendBehavioralMetric(BEHAVIORAL_METRICS.PEERCONNECTION_FAILURE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n } else if (error instanceof Errors.SdpAnswerHandlingError) {\n sendBehavioralMetric(BEHAVIORAL_METRICS.PEERCONNECTION_FAILURE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n\n if (this.deferSDPAnswer) {\n clearTimeout(this.sdpResponseTimer);\n this.sdpResponseTimer = undefined;\n\n this.deferSDPAnswer.reject();\n }\n } else if (error instanceof Errors.SdpError) {\n // this covers also the case of Errors.IceGatheringError which extends Errors.SdpError\n sendBehavioralMetric(BEHAVIORAL_METRICS.INVALID_ICE_CANDIDATE, error, this.correlationId);\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.local-sdp-generated',\n payload: {\n canProceed: false,\n },\n options: {meetingId: this.id, rawError: error},\n });\n }\n };\n\n /**\n * Handles an incoming Roap message\n * @internal\n * @param {RoapMessage} roapMessage roap message\n * @returns {undefined}\n */\n public roapMessageReceived = (roapMessage: RoapMessage) => {\n const mediaServer =\n roapMessage.messageType === 'ANSWER'\n ? MeetingsUtil.getMediaServer(roapMessage.sdp)\n : undefined;\n\n const mediaServerIp =\n roapMessage.messageType === 'ANSWER'\n ? MeetingsUtil.getMediaServerIp(roapMessage.sdp)\n : undefined;\n\n if (this.isMultistream && mediaServer && mediaServer !== 'homer') {\n throw new MultistreamNotSupportedError(\n `Client asked for multistream backend (Homer), but got ${mediaServer} instead`\n );\n }\n this.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);\n\n if (mediaServer) {\n this.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;\n }\n\n if (this.isMultistream && mediaServerIp) {\n this.mediaServerIp = mediaServerIp;\n }\n };\n\n /**\n * This function makes sure we send the right metrics when local and remote SDPs are processed/generated\n *\n * @returns {undefined}\n */\n setupSdpListeners = () => {\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.REMOTE_SDP_ANSWER_PROCESSED,\n () => {\n // @ts-ignore\n const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n options: {meetingId: this.id},\n });\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_OFFER_TO_ANSWER_LATENCY, {\n correlation_id: this.correlationId,\n latency: cdl.getLocalSDPGenRemoteSDPRecv(),\n meetingId: this.id,\n });\n\n if (this.deferSDPAnswer) {\n this.deferSDPAnswer.resolve();\n clearTimeout(this.sdpResponseTimer);\n this.sdpResponseTimer = undefined;\n }\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.LOCAL_SDP_OFFER_GENERATED,\n () => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.local-sdp-generated',\n options: {meetingId: this.id},\n });\n\n // Instantiate Defer so that the SDP offer/answer exchange timeout can start, see waitForRemoteSDPAnswer()\n this.deferSDPAnswer = new Defer();\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.LOCAL_SDP_ANSWER_GENERATED,\n () => {\n // we are sending \"remote-sdp-received\" only after we've generated the answer - this indicates that we've fully processed that incoming offer\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n options: {meetingId: this.id},\n });\n }\n );\n };\n\n setupMediaConnectionListeners = () => {\n this.setupSdpListeners();\n\n this.mediaProperties.webrtcMediaConnection.on(MediaConnectionEventNames.ROAP_STARTED, () => {\n this.isRoapInProgress = true;\n });\n\n this.mediaProperties.webrtcMediaConnection.on(MediaConnectionEventNames.ROAP_DONE, () => {\n this.mediaNegotiatedEvent();\n this.isRoapInProgress = false;\n this.processNextQueuedMediaUpdate();\n });\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ROAP_FAILURE,\n this.handleRoapFailure\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND,\n (event) => {\n const LOG_HEADER = `Meeting:index#setupMediaConnectionListeners.ROAP_MESSAGE_TO_SEND --> correlationId=${this.correlationId}`;\n\n switch (event.roapMessage.messageType) {\n case 'OK':\n logRequest(\n this.roap.sendRoapOK({\n seq: event.roapMessage.seq,\n mediaId: this.mediaId,\n correlationId: this.correlationId,\n }),\n {\n logText: `${LOG_HEADER} Roap OK`,\n }\n );\n break;\n\n case 'OFFER':\n logRequest(\n this.roap\n .sendRoapMediaRequest({\n sdp: event.roapMessage.sdp,\n seq: event.roapMessage.seq,\n tieBreaker: event.roapMessage.tieBreaker,\n meeting: this, // or can pass meeting ID\n })\n .then(({roapAnswer}) => {\n if (roapAnswer) {\n LoggerProxy.logger.log(`${LOG_HEADER} received Roap ANSWER in http response`);\n\n this.roapMessageReceived(roapAnswer);\n }\n }),\n {\n logText: `${LOG_HEADER} Roap Offer`,\n }\n ).catch((error) => {\n const multistreamNotSupported = error instanceof MultistreamNotSupportedError;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: multistreamNotSupported,\n errors: [\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode(\n {\n clientErrorCode: multistreamNotSupported\n ? CALL_DIAGNOSTIC_CONFIG.MULTISTREAM_NOT_AVAILABLE_CLIENT_CODE\n : CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE,\n }\n ),\n ],\n },\n options: {meetingId: this.id, rawError: error},\n });\n\n this.deferSDPAnswer.reject(error);\n clearTimeout(this.sdpResponseTimer);\n this.sdpResponseTimer = undefined;\n });\n break;\n\n case 'ANSWER':\n logRequest(\n this.roap.sendRoapAnswer({\n sdp: event.roapMessage.sdp,\n seq: event.roapMessage.seq,\n mediaId: this.mediaId,\n correlationId: this.correlationId,\n }),\n {\n logText: `${LOG_HEADER} Roap Answer`,\n }\n ).catch((error) => {\n const metricName = BEHAVIORAL_METRICS.ROAP_ANSWER_FAILURE;\n const data = {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n };\n const metadata = {\n type: error.name,\n };\n\n Metrics.sendBehavioralMetric(metricName, data, metadata);\n });\n break;\n\n case 'ERROR':\n if (\n event.roapMessage.errorType === ErrorType.CONFLICT ||\n event.roapMessage.errorType === ErrorType.DOUBLECONFLICT\n ) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_GLARE_CONDITION, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n sequence: event.roapMessage.seq,\n });\n }\n logRequest(\n this.roap.sendRoapError({\n seq: event.roapMessage.seq,\n errorType: event.roapMessage.errorType,\n mediaId: this.mediaId,\n correlationId: this.correlationId,\n }),\n {\n logText: `${LOG_HEADER} Roap Error (${event.roapMessage.errorType})`,\n }\n );\n break;\n\n default:\n LoggerProxy.logger.error(\n `${LOG_HEADER} Unsupported message type: ${event.roapMessage.messageType}`\n );\n break;\n }\n }\n );\n\n // eslint-disable-next-line no-param-reassign\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.REMOTE_TRACK_ADDED,\n (event) => {\n LoggerProxy.logger.log(\n `Meeting:index#setupMediaConnectionListeners --> REMOTE_TRACK_ADDED event received for webrtcMediaConnection: ${JSON.stringify(\n event\n )}`\n );\n\n if (event.track) {\n const mediaTrack = event.track;\n const remoteStream = new RemoteStream(MediaUtil.createMediaStream([mediaTrack]));\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n let eventType;\n\n switch (event.type) {\n case RemoteTrackType.AUDIO:\n eventType = EVENT_TYPES.REMOTE_AUDIO;\n this.mediaProperties.setRemoteAudioStream(remoteStream);\n break;\n case RemoteTrackType.VIDEO:\n eventType = EVENT_TYPES.REMOTE_VIDEO;\n this.mediaProperties.setRemoteVideoStream(remoteStream);\n break;\n case RemoteTrackType.SCREENSHARE_VIDEO:\n eventType = EVENT_TYPES.REMOTE_SHARE;\n this.mediaProperties.setRemoteShareStream(remoteStream);\n break;\n default: {\n LoggerProxy.logger.log(\n 'Meeting:index#setupMediaConnectionListeners --> unexpected track'\n );\n }\n }\n\n if (eventType && mediaTrack) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupRemoteTrackListener:MediaConnectionEventNames.REMOTE_TRACK_ADDED',\n },\n EVENT_TRIGGERS.MEDIA_READY,\n {\n type: eventType,\n stream: remoteStream.outputStream,\n }\n );\n }\n }\n }\n );\n\n this.connectionStateHandler = new ConnectionStateHandler(\n this.mediaProperties.webrtcMediaConnection\n );\n\n this.connectionStateHandler.on(ConnectionStateEvent.stateChanged, (event) => {\n const connectionFailed = () => {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.CONNECTION_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n networkStatus: this.networkStatus,\n hasMediaConnectionConnectedAtLeastOnce: this.hasMediaConnectionConnectedAtLeastOnce,\n });\n\n if (this.hasMediaConnectionConnectedAtLeastOnce) {\n // we know the media connection failed and browser will not attempt to recover it any more\n // so reset the timer as it's not needed anymore, we want to reconnect immediately\n this.reconnectionManager.resetReconnectionTimer();\n\n this.reconnect({networkDisconnect: true});\n\n this.uploadLogs({\n file: 'peer-connection-manager/index',\n function: 'connectionFailed',\n });\n }\n };\n\n LoggerProxy.logger.info(\n `Meeting:index#setupMediaConnectionListeners --> correlationId=${this.correlationId} connection state changed to ${event.state}`\n );\n\n // @ts-ignore\n const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;\n switch (event.state) {\n case ConnectionState.Connecting:\n if (!this.hasMediaConnectionConnectedAtLeastOnce) {\n // Only send CA event for join flow if we haven't successfully connected media yet\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.ice.start',\n payload: {\n // @ts-ignore\n labels: MeetingUtil.getCaEventLabelsForIpVersion(this.webex),\n },\n options: {\n meetingId: this.id,\n },\n });\n }\n break;\n case ConnectionState.Connected:\n if (!this.hasMediaConnectionConnectedAtLeastOnce) {\n // Only send CA event for join flow if we haven't successfully connected media yet\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.ice.end',\n payload: {\n canProceed: true,\n icePhase: 'JOIN_MEETING_FINAL',\n },\n options: {\n meetingId: this.id,\n },\n });\n }\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.CONNECTION_SUCCESS, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n latency: cdl.getICESetupTime(),\n });\n this.setNetworkStatus(NETWORK_STATUS.CONNECTED);\n this.reconnectionManager.iceReconnected();\n this.statsAnalyzer.startAnalyzer(this.mediaProperties.webrtcMediaConnection);\n this.hasMediaConnectionConnectedAtLeastOnce = true;\n break;\n case ConnectionState.Disconnected:\n this.setNetworkStatus(NETWORK_STATUS.DISCONNECTED);\n this.reconnectionManager.waitForIceReconnect().catch(() => {\n LoggerProxy.logger.info(\n 'Meeting:index#setupMediaConnectionListeners --> state DISCONNECTED, automatic reconnection timed out.'\n );\n\n connectionFailed();\n });\n break;\n case ConnectionState.Failed:\n connectionFailed();\n break;\n default:\n break;\n }\n });\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ACTIVE_SPEAKERS_CHANGED,\n (csis) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupMediaConnectionListeners',\n },\n EVENT_TRIGGERS.ACTIVE_SPEAKER_CHANGED,\n {\n memberIds: csis\n // @ts-ignore\n .map((csi) => this.members.findMemberByCsi(csi)?.id)\n .filter((item) => item !== undefined),\n }\n );\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.VIDEO_SOURCES_COUNT_CHANGED,\n (numTotalSources, numLiveSources, mediaContent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupMediaConnectionListeners',\n },\n EVENT_TRIGGERS.REMOTE_VIDEO_SOURCE_COUNT_CHANGED,\n {\n numTotalSources,\n numLiveSources,\n mediaContent,\n }\n );\n\n if (mediaContent === MediaContent.Main) {\n this.mediaRequestManagers.video.setNumCurrentSources(numTotalSources, numLiveSources);\n }\n }\n );\n\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.AUDIO_SOURCES_COUNT_CHANGED,\n (numTotalSources, numLiveSources, mediaContent) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'setupMediaConnectionListeners',\n },\n EVENT_TRIGGERS.REMOTE_AUDIO_SOURCE_COUNT_CHANGED,\n {\n numTotalSources,\n numLiveSources,\n mediaContent,\n }\n );\n }\n );\n\n this.iceCandidateErrors.clear();\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ICE_CANDIDATE_ERROR,\n (event) => {\n const {errorCode} = event.error;\n let {errorText} = event.error;\n\n if (\n errorCode === 600 &&\n errorText === 'Address not associated with the desired network interface.'\n ) {\n return;\n }\n\n if (errorText.endsWith('.')) {\n errorText = errorText.slice(0, -1);\n }\n\n errorText = errorText.toLowerCase();\n errorText = errorText.replace(/ /g, '_');\n\n const error = `${errorCode}_${errorText}`;\n\n const count = this.iceCandidateErrors.get(error) || 0;\n\n this.iceCandidateErrors.set(error, count + 1);\n }\n );\n\n this.iceCandidatesCount = 0;\n this.mediaProperties.webrtcMediaConnection.on(\n MediaConnectionEventNames.ICE_CANDIDATE,\n (event) => {\n if (event.candidate && event.candidate.candidate && event.candidate.candidate.length > 0) {\n this.iceCandidatesCount += 1;\n }\n }\n );\n };\n\n /**\n * Registers for all required StatsAnalyzer events\n * @private\n * @returns {void}\n * @memberof Meetings\n */\n setupStatsAnalyzerEventHandlers = () => {\n this.statsAnalyzer.on(StatsAnalyzerEventNames.MEDIA_QUALITY, (event) => {\n // Add IP address from geoHintInfo if missing.\n if (event.data.intervalMetadata.maskedPeerReflexiveIP === '0.0.0.0') {\n // @ts-ignore fix type\n const clientAddressFromGeoHint = this.webex.meetings.geoHintInfo?.clientAddress;\n if (clientAddressFromGeoHint) {\n event.data.intervalMetadata.maskedPeerReflexiveIP =\n CallDiagnosticUtils.anonymizeIPAddress(clientAddressFromGeoHint);\n }\n }\n\n // Count members that are in the meeting or in the lobby.\n const {members} = this.getMembers().membersCollection;\n event.data.intervalMetadata.meetingUserCount = Object.values(members).filter(\n (member: Member) => member.isInMeeting || member.isInLobby\n ).length;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitMQE({\n name: 'client.mediaquality.event',\n options: {\n meetingId: this.id,\n networkType: this.statsAnalyzer.getNetworkType(),\n },\n payload: {\n intervals: [event.data],\n },\n });\n });\n\n this.statsAnalyzer.on(StatsAnalyzerEventNames.LOCAL_MEDIA_STARTED, (data) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENT_TRIGGERS.MEETING_MEDIA_LOCAL_STARTED,\n data\n );\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.transmitStart) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.tx.start',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.localShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n this.shareCAEventSentStatus.transmitStart = true;\n }\n }\n });\n this.statsAnalyzer.on(StatsAnalyzerEventNames.LOCAL_MEDIA_STOPPED, (data) => {\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.transmitStop) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.tx.stop',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.localShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n this.shareCAEventSentStatus.transmitStop = true;\n }\n }\n });\n this.statsAnalyzer.on(StatsAnalyzerEventNames.REMOTE_MEDIA_STARTED, (data) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENT_TRIGGERS.MEETING_MEDIA_REMOTE_STARTED,\n data\n );\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.receiveStart) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.rx.start',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.remoteShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.render.start',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.remoteShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n this.shareCAEventSentStatus.receiveStart = true;\n }\n }\n });\n this.statsAnalyzer.on(StatsAnalyzerEventNames.REMOTE_MEDIA_STOPPED, (data) => {\n if (data.mediaType !== 'share' || !this.shareCAEventSentStatus.receiveStop) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.rx.stop',\n payload: {\n mediaType: data.mediaType,\n shareInstanceId: data.mediaType === 'share' ? this.remoteShareInstanceId : undefined,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n if (data.mediaType === 'share') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.render.stop',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.remoteShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n this.shareCAEventSentStatus.receiveStop = true;\n }\n }\n });\n };\n\n getMediaConnectionDebugId() {\n return `MC-${this.id.substring(0, 4)}`;\n }\n\n /**\n * Creates a webrtc media connection and publishes streams to it\n *\n * @param {Object} turnServerInfo TURN server information\n * @param {BundlePolicy} [bundlePolicy] Bundle policy settings\n * @param {AddMediaOptions} [options] Options for enabling/disabling audio/video\n * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}\n */\n private async createMediaConnection(\n turnServerInfo?: TurnServerInfo,\n bundlePolicy?: BundlePolicy\n ) {\n this.rtcMetrics = this.isMultistream\n ? // @ts-ignore\n new RtcMetrics(this.webex, {meetingId: this.id}, this.correlationId)\n : undefined;\n\n // ongoing reachability checks slow down new media connections especially on Firefox, so we stop them\n this.getWebexObject().meetings.reachability.stopReachability();\n\n const mc = Media.createMediaConnection(\n this.isMultistream,\n this.getMediaConnectionDebugId(),\n this.id,\n {\n rtcMetrics: this.rtcMetrics,\n mediaProperties: this.mediaProperties,\n remoteQualityLevel: this.mediaProperties.remoteQualityLevel,\n // @ts-ignore - config coming from registerPlugin\n enableRtx: this.config.enableRtx,\n // @ts-ignore - config coming from registerPlugin\n enableExtmap: this.config.enableExtmap,\n turnServerInfo,\n bundlePolicy,\n // @ts-ignore - config coming from registerPlugin\n iceCandidatesTimeout: this.config.iceCandidatesGatheringTimeout,\n // @ts-ignore - config coming from registerPlugin\n disableAudioMainDtx: this.config.experimental.disableAudioMainDtx,\n // @ts-ignore - config coming from registerPlugin\n enableAudioTwcc: this.config.enableAudioTwccForMultistream,\n stopIceGatheringAfterFirstRelayCandidate:\n // @ts-ignore - config coming from registerPlugin\n this.config.stopIceGatheringAfterFirstRelayCandidate,\n }\n );\n\n this.mediaProperties.setMediaPeerConnection(mc);\n this.setupMediaConnectionListeners();\n\n if (this.isMultistream) {\n const [audioEnabled, videoEnabled, shareEnabled] = [\n this.mediaProperties.mediaDirection.sendAudio ||\n this.mediaProperties.mediaDirection.receiveAudio,\n this.mediaProperties.mediaDirection.sendVideo ||\n this.mediaProperties.mediaDirection.receiveVideo,\n this.mediaProperties.mediaDirection.sendShare ||\n this.mediaProperties.mediaDirection.receiveShare,\n ];\n\n this.sendSlotManager.createSlot(mc, MediaType.VideoMain, videoEnabled);\n this.sendSlotManager.createSlot(mc, MediaType.AudioMain, audioEnabled);\n this.sendSlotManager.createSlot(mc, MediaType.VideoSlides, shareEnabled);\n this.sendSlotManager.createSlot(mc, MediaType.AudioSlides, shareEnabled);\n }\n\n // publish the streams\n if (this.mediaProperties.audioStream) {\n this.setSendNamedMediaGroup(MediaType.AudioMain);\n await this.publishStream(MediaType.AudioMain, this.mediaProperties.audioStream);\n }\n if (this.mediaProperties.videoStream) {\n await this.publishStream(MediaType.VideoMain, this.mediaProperties.videoStream);\n }\n if (this.mediaProperties.shareVideoStream) {\n await this.publishStream(MediaType.VideoSlides, this.mediaProperties.shareVideoStream);\n }\n if (this.isMultistream && this.mediaProperties.shareAudioStream) {\n await this.publishStream(MediaType.AudioSlides, this.mediaProperties.shareAudioStream);\n }\n\n return mc;\n }\n\n /**\n * Listens for an event emitted by eventEmitter and emits it from the meeting object\n *\n * @private\n * @param {*} eventEmitter object from which to forward the event\n * @param {*} eventTypeToForward which event type to listen on and to forward\n * @param {string} meetingEventType event type to be used in the event emitted from the meeting object\n * @returns {void}\n */\n forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {\n eventEmitter.on(eventTypeToForward, (data) =>\n Trigger.trigger(\n this,\n {\n file: 'meetings',\n function: 'addMedia',\n },\n meetingEventType,\n data\n )\n );\n }\n\n /**\n * Sets up all the references to local streams in this.mediaProperties before creating media connection\n * and before TURN discovery, so that the correct mute state is sent with TURN discovery roap messages.\n *\n * @private\n * @param {LocalStreams} localStreams\n * @returns {Promise<void>}\n */\n private async setUpLocalStreamReferences(localStreams: LocalStreams) {\n const setUpStreamPromises = [];\n\n if (localStreams?.microphone && localStreams?.microphone?.readyState !== 'ended') {\n setUpStreamPromises.push(this.setLocalAudioStream(localStreams.microphone));\n }\n if (localStreams?.camera && localStreams?.camera?.readyState !== 'ended') {\n setUpStreamPromises.push(this.setLocalVideoStream(localStreams.camera));\n }\n if (\n localStreams?.screenShare?.video &&\n localStreams?.screenShare?.video?.readyState !== 'ended'\n ) {\n setUpStreamPromises.push(this.setLocalShareVideoStream(localStreams.screenShare.video));\n }\n if (\n localStreams?.screenShare?.audio &&\n localStreams?.screenShare?.audio?.readyState !== 'ended'\n ) {\n setUpStreamPromises.push(this.setLocalShareAudioStream(localStreams.screenShare.audio));\n }\n\n try {\n await Promise.all(setUpStreamPromises);\n } catch (error) {\n LoggerProxy.logger.error(\n `Meeting:index#addMedia():setUpLocalStreamReferences --> Error , `,\n error\n );\n\n throw error;\n }\n }\n\n /**\n * Calls mediaProperties.waitForMediaConnectionConnected() and sends CA client.ice.end metric on failure\n *\n * @private\n * @returns {Promise<void>}\n */\n private async waitForMediaConnectionConnected(): Promise<void> {\n try {\n await this.mediaProperties.waitForMediaConnectionConnected();\n } catch (error) {\n const {iceConnected} = error;\n\n if (!this.hasMediaConnectionConnectedAtLeastOnce) {\n // Only send CA event for join flow if we haven't successfully connected media yet\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.ice.end',\n payload: {\n canProceed: !this.turnServerUsed, // If we haven't done turn tls retry yet we will proceed with join attempt\n icePhase: this.addMediaData.icePhaseCallback(),\n errors: [\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode(\n {\n clientErrorCode: CallDiagnosticUtils.generateClientErrorCodeForIceFailure({\n signalingState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.signalingState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc\n ?.signalingState ||\n 'unknown',\n iceConnected,\n turnServerUsed: this.turnServerUsed,\n unreachable:\n // @ts-ignore\n await this.webex.meetings.reachability\n .isWebexMediaBackendUnreachable()\n .catch(() => false),\n }),\n }\n ),\n ],\n },\n options: {\n meetingId: this.id,\n rawError: error,\n },\n });\n }\n\n const timedOutError = new Error(\n `Timed out waiting for media connection to be connected, correlationId=${this.correlationId}`\n );\n\n timedOutError.cause = error;\n\n throw timedOutError;\n }\n }\n\n /**\n * Enables statsAnalyser if config allows it\n *\n * @private\n * @returns {void}\n */\n private createStatsAnalyzer() {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.stats.enableStatsAnalyzer) {\n // @ts-ignore - config coming from registerPlugin\n this.networkQualityMonitor = new NetworkQualityMonitor(this.config.stats);\n this.statsMonitor = new StatsMonitor();\n this.statsAnalyzer = new StatsAnalyzer({\n // @ts-ignore - config coming from registerPlugin\n config: this.config.stats,\n networkQualityMonitor: this.networkQualityMonitor,\n statsMonitor: this.statsMonitor,\n isMultistream: this.isMultistream,\n });\n this.shareCAEventSentStatus = {\n transmitStart: false,\n transmitStop: false,\n receiveStart: false,\n receiveStop: false,\n };\n this.setupStatsAnalyzerEventHandlers();\n this.networkQualityMonitor.on(\n NetworkQualityEventNames.NETWORK_QUALITY,\n this.sendNetworkQualityEvent.bind(this)\n );\n\n this.statsMonitor.on(StatsMonitorEventNames.INBOUND_AUDIO_ISSUE, (data) => {\n // Before forwarding any inbound audio issues to the app, make sure that we have at least one other\n // participant in the meeting with unmuted audio.\n // We don't check this.mediaProperties.mediaDirection here, because that's already handled in statsAnalyzer,\n // so we won't get this event if we are not setup to receive any audio\n const atLeastOneUnmutedOtherMember = Object.values(\n this.members.membersCollection.getAll()\n ).find((member) => {\n return !member.isSelf && !member.isPairedWithSelf && !member.isAudioMuted;\n });\n\n if (atLeastOneUnmutedOtherMember) {\n this.mediaProperties.sendMediaIssueMetric(\n 'inbound_audio',\n data.issueSubType,\n this.correlationId\n );\n\n Trigger.trigger(\n this,\n {file: 'meeting/index', function: 'createStatsAnalyzer'},\n EVENT_TRIGGERS.MEDIA_INBOUND_AUDIO_ISSUE_DETECTED,\n data\n );\n }\n });\n }\n }\n\n /**\n * Returns a promise. This promise is created once the local sdp offer has been successfully created and is resolved\n * once the remote sdp answer has been received.\n *\n * @private\n * @returns {Promise<void>}\n */\n private async waitForRemoteSDPAnswer(): Promise<void> {\n const LOG_HEADER = 'Meeting:index#addMedia():waitForRemoteSDPAnswer -->';\n\n if (!this.deferSDPAnswer) {\n LoggerProxy.logger.warn(`${LOG_HEADER} offer not created yet`);\n\n return Promise.reject(\n new Error('waitForRemoteSDPAnswer() called before local sdp offer created')\n );\n }\n\n const {deferSDPAnswer} = this;\n\n this.sdpResponseTimer = setTimeout(() => {\n LoggerProxy.logger.warn(\n `${LOG_HEADER} timeout! no REMOTE SDP ANSWER received within ${\n ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000\n } seconds`\n );\n\n const error = new Error('Timed out waiting for REMOTE SDP ANSWER');\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.remote-sdp-received',\n payload: {\n canProceed: false,\n errors: [\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({\n clientErrorCode: CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE,\n }),\n ],\n },\n options: {meetingId: this.id, rawError: error},\n });\n\n deferSDPAnswer.reject(error);\n }, ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT);\n\n LoggerProxy.logger.info(`${LOG_HEADER} waiting for REMOTE SDP ANSWER...`);\n\n return deferSDPAnswer.promise;\n }\n\n /**\n * Calls establishMediaConnection with isForced = true to force turn discovery to happen\n *\n * @private\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @returns {Promise<void>}\n */\n private async retryEstablishMediaConnectionWithForcedTurnDiscovery(\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy\n ): Promise<void> {\n const LOG_HEADER =\n 'Meeting:index#addMedia():retryEstablishMediaConnectionWithForcedTurnDiscovery -->';\n\n try {\n await this.establishMediaConnection(remoteMediaManagerConfig, bundlePolicy, true);\n } catch (err) {\n LoggerProxy.logger.error(\n `${LOG_HEADER} retry with TURN-TLS failed, media connection unable to connect, `,\n err\n );\n\n throw err;\n }\n }\n\n /**\n * Does relevant clean up before retrying to establish media connection\n * and performs the retry with forced turn discovery\n *\n * @private\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @returns {Promise<void>}\n */\n private async retryWithForcedTurnDiscovery(\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy\n ): Promise<void> {\n this.addMediaData.retriedWithTurnServer = true;\n const LOG_HEADER = 'Meeting:index#addMedia():retryWithForcedTurnDiscovery -->';\n\n await this.cleanUpBeforeRetryWithTurnServer();\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_MEDIA_RETRY, {\n correlation_id: this.correlationId,\n state: this.state,\n meetingState: this.meetingState,\n reason: 'forcingTurnTls',\n });\n\n if (this.state === MEETING_STATE.STATES.LEFT) {\n LoggerProxy.logger.info(\n `${LOG_HEADER} meeting state was LEFT after first attempt to establish media connection. Attempting to rejoin. `\n );\n await this.join({rejoin: true});\n }\n\n await this.retryEstablishMediaConnectionWithForcedTurnDiscovery(\n remoteMediaManagerConfig,\n bundlePolicy\n );\n }\n\n /**\n * If waitForMediaConnectionConnected() fails when we haven't done turn discovery then we\n * attempt to establish a media connection again, but this time using turn discovery. If we\n * used turn discovery on the first pass we do not attempt connection again.\n *\n * @private\n * @param {Error} error\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @returns {Promise<void>}\n */\n private async handleWaitForMediaConnectionConnectedError(\n error: Error,\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy\n ): Promise<void> {\n const LOG_HEADER = 'Meeting:index#addMedia():handleWaitForMediaConnectionConnectedError -->';\n\n // @ts-ignore - config coming from registerPlugin\n if (!this.turnServerUsed) {\n LoggerProxy.logger.info(\n `${LOG_HEADER} error waiting for media to connect on UDP, TCP, retrying using TURN-TLS, `,\n error\n );\n\n await this.retryWithForcedTurnDiscovery(remoteMediaManagerConfig, bundlePolicy);\n } else {\n LoggerProxy.logger.error(\n `${LOG_HEADER} error waiting for media to connect using UDP, TCP and TURN-TLS`,\n error\n );\n\n throw new AddMediaFailed(error);\n }\n }\n\n /**\n * Performs TURN discovery as a separate call to the Locus /media API\n *\n * @param {boolean} isReconnecting\n * @param {boolean} isForced\n * @returns {Promise}\n */\n private async doTurnDiscovery(\n isReconnecting: boolean,\n isForced: boolean\n ): Promise<TurnDiscoveryResult> {\n // @ts-ignore\n const cdl = this.webex.internal.newMetrics.callDiagnosticLatencies;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitInternalEvent({\n name: 'internal.client.add-media.turn-discovery.start',\n });\n\n const turnDiscoveryResult = await this.roap.doTurnDiscovery(this, isReconnecting, isForced);\n\n this.turnDiscoverySkippedReason = turnDiscoveryResult?.turnDiscoverySkippedReason;\n this.turnServerUsed = !this.turnDiscoverySkippedReason;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitInternalEvent({\n name: 'internal.client.add-media.turn-discovery.end',\n });\n\n if (this.turnServerUsed && turnDiscoveryResult.turnServerInfo) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.TURN_DISCOVERY_LATENCY, {\n correlation_id: this.correlationId,\n latency: cdl.getTurnDiscoveryTime(),\n turnServerUsed: this.turnServerUsed,\n retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,\n });\n }\n\n return turnDiscoveryResult;\n }\n\n /**\n * Does TURN discovery, SDP offer/answer exhange, establishes ICE connection and DTLS handshake.\n *\n * @private\n * @param {RemoteMediaManagerConfiguration} [remoteMediaManagerConfig]\n * @param {BundlePolicy} [bundlePolicy]\n * @param {boolean} [isForced] - let isForced be true to do turn discovery regardless of reachability results\n * @param {TurnServerInfo} [turnServerInfo]\n * @returns {Promise<void>}\n */\n private async establishMediaConnection(\n remoteMediaManagerConfig?: RemoteMediaManagerConfiguration,\n bundlePolicy?: BundlePolicy,\n isForced?: boolean,\n turnServerInfo?: TurnServerInfo\n ): Promise<void> {\n const LOG_HEADER = 'Meeting:index#addMedia():establishMediaConnection -->';\n const isReconnecting =\n this.isMoveToInProgress || !!this.locusMediaRequest?.isConfluenceCreated();\n\n // We are forcing turn discovery if the case is moveTo and a turn server was used already\n if (this.isMoveToInProgress && this.turnServerUsed) {\n isForced = true;\n }\n\n try {\n if (!turnServerInfo) {\n ({turnServerInfo} = await this.doTurnDiscovery(isReconnecting, isForced));\n }\n\n const mc = await this.createMediaConnection(turnServerInfo, bundlePolicy);\n\n LoggerProxy.logger.info(\n `${LOG_HEADER} media connection created this.isMultistream=${this.isMultistream}`\n );\n\n if (this.isMultistream) {\n this.remoteMediaManager = new RemoteMediaManager(\n this.receiveSlotManager,\n this.mediaRequestManagers,\n remoteMediaManagerConfig\n );\n\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.AudioCreated,\n EVENT_TRIGGERS.REMOTE_MEDIA_AUDIO_CREATED\n );\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.InterpretationAudioCreated,\n EVENT_TRIGGERS.REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED\n );\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.ScreenShareAudioCreated,\n EVENT_TRIGGERS.REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED\n );\n this.forwardEvent(\n this.remoteMediaManager,\n RemoteMediaManagerEvent.VideoLayoutChanged,\n EVENT_TRIGGERS.REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED\n );\n\n await this.remoteMediaManager.start();\n }\n\n await mc.initiateOffer();\n\n await this.waitForRemoteSDPAnswer();\n\n this.handleMediaLogging(this.mediaProperties);\n } catch (error) {\n LoggerProxy.logger.error(`${LOG_HEADER} error establishing media connection, `, error);\n\n throw error;\n }\n\n try {\n await this.waitForMediaConnectionConnected();\n } catch (error) {\n await this.handleWaitForMediaConnectionConnectedError(\n error,\n remoteMediaManagerConfig,\n bundlePolicy\n );\n }\n }\n\n /**\n * Cleans up stats analyzer, peer connection, and turns off listeners\n *\n * @private\n * @returns {Promise<void>}\n */\n private async cleanUpOnAddMediaFailure(): Promise<void> {\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n\n this.statsAnalyzer = null;\n this.networkQualityMonitor?.removeAllListeners();\n this.networkQualityMonitor = null;\n this.statsMonitor?.removeAllListeners();\n this.statsMonitor = null;\n\n // when media fails, we want to upload a webrtc dump to see whats going on\n // this function is async, but returns once the stats have been gathered\n await this.forceSendStatsReport({callFrom: 'addMedia'});\n\n if (this.mediaProperties.webrtcMediaConnection) {\n this.closePeerConnections();\n this.unsetPeerConnections();\n }\n }\n\n /**\n * Cleans up stats analyzer, peer connection and other things before\n * we can create a new transcoded media connection\n *\n * @private\n * @returns {Promise<void>}\n */\n private async downgradeFromMultistreamToTranscoded(): Promise<void> {\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n this.statsAnalyzer = null;\n this.networkQualityMonitor?.removeAllListeners();\n this.networkQualityMonitor = null;\n this.statsMonitor?.removeAllListeners();\n this.statsMonitor = null;\n\n this.isMultistream = false;\n\n if (this.mediaProperties.webrtcMediaConnection) {\n // close peer connection, but don't reset mute state information, because we will want to use it on the retry\n this.closePeerConnections(false);\n\n this.mediaProperties.unsetPeerConnection();\n }\n\n this.locusMediaRequest?.downgradeFromMultistreamToTranscoded();\n\n this.createStatsAnalyzer();\n }\n\n /**\n * Sends stats report, closes peer connection and cleans up any media connection\n * related things before trying to establish media connection again with turn server\n *\n * @private\n * @returns {Promise<void>}\n */\n private async cleanUpBeforeRetryWithTurnServer(): Promise<void> {\n // when media fails, we want to upload a webrtc dump to see whats going on\n // this function is async, but returns once the stats have been gathered\n await this.forceSendStatsReport({callFrom: 'cleanUpBeforeRetryWithTurnServer'});\n\n if (this.mediaProperties.webrtcMediaConnection) {\n if (this.remoteMediaManager) {\n this.remoteMediaManager.stop();\n this.remoteMediaManager = null;\n }\n\n Object.values(this.mediaRequestManagers).forEach((mediaRequestManager) =>\n mediaRequestManager.reset()\n );\n\n this.receiveSlotManager.reset();\n this.mediaProperties.webrtcMediaConnection.close();\n this.sendSlotManager.reset();\n\n this.mediaProperties.unsetPeerConnection();\n }\n }\n\n private async cleanUpBeforeReconnection(): Promise<void> {\n try {\n // when media fails, we want to upload a webrtc dump to see whats going on\n // this function is async, but returns once the stats have been gathered\n await this.forceSendStatsReport({callFrom: 'cleanUpBeforeReconnection'});\n\n if (this.statsAnalyzer) {\n await this.statsAnalyzer.stopAnalyzer();\n }\n } catch (error) {\n LoggerProxy.logger.error(\n 'Meeting:index#cleanUpBeforeReconnection --> Error during cleanup: ',\n error\n );\n }\n }\n\n /**\n * Creates an instance of LocusMediaRequest for this meeting - it is needed for doing any calls\n * to Locus /media API (these are used for sending Roap messages and updating audio/video mute status).\n *\n * @returns {void}\n */\n private setupLocusMediaRequest() {\n this.locusMediaRequest = new LocusMediaRequest(\n {\n correlationId: this.correlationId,\n meetingId: this.id,\n device: {\n url: this.deviceUrl,\n // @ts-ignore\n deviceType: this.config.deviceType,\n // @ts-ignore\n countryCode: this.webex.meetings.geoHintInfo?.countryCode,\n // @ts-ignore\n regionCode: this.webex.meetings.geoHintInfo?.regionCode,\n },\n preferTranscoding: !this.isMultistream,\n },\n {\n // @ts-ignore\n parent: this.webex,\n }\n );\n }\n\n /**\n * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.\n *\n * @param {AddMediaOptions} options\n * @returns {Promise<void>}\n * @public\n * @memberof Meeting\n */\n addMedia(options: AddMediaOptions = {}): Promise<void> {\n return this.addMediaInternal(\n () => (this.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY'),\n undefined,\n false,\n options\n );\n }\n\n /**\n * Internal version of addMedia() with some more arguments for finer control of its behavior\n *\n * @param {Function} icePhaseCallback - callback to determine the icePhase for CA \"client.ice.end\" failure events\n * @param {TurnServerInfo} turnServerInfo - TURN server information\n * @param {boolean} forceTurnDiscovery - if true, TURN discovery will be done\n * @param {AddMediaOptions} options - same as options of the public addMedia() method\n * @returns {Promise<void>}\n * @protected\n * @memberof Meeting\n */\n protected async addMediaInternal(\n icePhaseCallback: () => string,\n turnServerInfo: TurnServerInfo,\n forceTurnDiscovery,\n options: AddMediaOptions = {}\n ): Promise<void> {\n this.addMediaData.retriedWithTurnServer = false;\n this.addMediaData.icePhaseCallback = icePhaseCallback;\n\n this.hasMediaConnectionConnectedAtLeastOnce = false;\n const LOG_HEADER = 'Meeting:index#addMedia -->';\n LoggerProxy.logger.info(\n `${LOG_HEADER} called with: options=${JSON.stringify(\n options\n )}, turnServerInfo=${JSON.stringify(\n turnServerInfo\n )}, forceTurnDiscovery=${forceTurnDiscovery}`\n );\n\n if (options.allowMediaInLobby !== true && this.meetingState !== FULL_STATE.ACTIVE) {\n throw new MeetingNotActiveError();\n }\n\n if (MeetingUtil.isUserInLeftState(this.locusInfo)) {\n throw new UserNotJoinedError();\n }\n\n const {\n localStreams,\n audioEnabled = true,\n videoEnabled = true,\n shareAudioEnabled = true,\n shareVideoEnabled = true,\n remoteMediaManagerConfig,\n bundlePolicy = 'max-bundle',\n additionalMediaOptions = {},\n } = options;\n\n const {\n sendVideo: rawSendVideo,\n receiveVideo: rawReceiveVideo,\n sendAudio: rawSendAudio,\n receiveAudio: rawReceiveAudio,\n } = additionalMediaOptions;\n\n const sendVideo = videoEnabled && (rawSendVideo ?? true);\n const receiveVideo = videoEnabled && (rawReceiveVideo ?? true);\n const sendAudio = audioEnabled && (rawSendAudio ?? true);\n const receiveAudio = audioEnabled && (rawReceiveAudio ?? true);\n\n this.allowMediaInLobby = options?.allowMediaInLobby;\n\n // @ts-ignore\n const ipver = MeetingUtil.getIpVersion(this.webex); // used just for metrics\n\n // If the user is unjoined or guest waiting in lobby dont allow the user to addMedia\n // @ts-ignore - isUserUnadmitted coming from SelfUtil\n if (this.isUserUnadmitted && !this.wirelessShare && !this.allowMediaInLobby) {\n throw new UserInLobbyError();\n }\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media.capabilities',\n payload: {\n mediaCapabilities: {\n rx: {\n audio: false,\n share: false,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n tx: {\n audio: false,\n share: false,\n share_audio: false,\n video: false,\n whiteboard: false,\n },\n },\n },\n options: {meetingId: this.id},\n });\n\n // when audioEnabled/videoEnabled is true, we set sendAudio/sendVideo to true even before any streams are published\n // to avoid doing an extra SDP exchange when they are published for the first time\n this.mediaProperties.setMediaDirection({\n sendAudio,\n sendVideo,\n sendShare: false,\n receiveAudio,\n receiveVideo,\n receiveShare: shareAudioEnabled || shareVideoEnabled,\n });\n\n this.audio = createMuteState(AUDIO, this, audioEnabled);\n this.video = createMuteState(VIDEO, this, videoEnabled);\n this.brbState = createBrbState(this, false);\n\n try {\n await this.setUpLocalStreamReferences(localStreams);\n\n this.setMercuryListener();\n\n this.createStatsAnalyzer();\n\n try {\n await this.establishMediaConnection(\n remoteMediaManagerConfig,\n bundlePolicy,\n forceTurnDiscovery,\n turnServerInfo\n );\n } catch (error) {\n if (error instanceof MultistreamNotSupportedError) {\n LoggerProxy.logger.warn(\n `${LOG_HEADER} we asked for multistream backend (Homer), but got transcoded backend, recreating media connection...`\n );\n\n await this.downgradeFromMultistreamToTranscoded();\n\n // Establish new media connection with forced TURN discovery\n // We need to do TURN discovery again, because backend will be creating a new confluence, so it might land on a different node or cluster\n await this.establishMediaConnection(\n remoteMediaManagerConfig,\n bundlePolicy,\n true,\n undefined\n );\n } else {\n throw error;\n }\n }\n\n LoggerProxy.logger.info(`${LOG_HEADER} media connected, finalizing...`);\n\n if (this.mediaProperties.hasLocalShareStream()) {\n await this.enqueueScreenShareFloorRequest();\n }\n\n const {connectionType, ipVersion, selectedCandidatePairChanges, numTransports} =\n await this.mediaProperties.getCurrentConnectionInfo();\n\n const iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);\n\n const reachabilityMetrics = await this.getMediaReachabilityMetricFields();\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_MEDIA_SUCCESS, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n connectionType,\n ipVersion,\n ipver,\n selectedCandidatePairChanges,\n numTransports,\n isMultistream: this.isMultistream,\n retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,\n isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,\n ...reachabilityMetrics,\n ...iceCandidateErrors,\n iceCandidatesCount: this.iceCandidatesCount,\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.media-engine.ready',\n payload: {\n ipVersion,\n },\n options: {\n meetingId: this.id,\n },\n });\n LoggerProxy.logger.info(\n `${LOG_HEADER} successfully established media connection, type=${connectionType}`\n );\n\n // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:\n this.remoteMediaManager?.logAllReceiveSlots();\n this.startPeriodicLogUpload();\n } catch (error) {\n LoggerProxy.logger.error(`${LOG_HEADER} failed to establish media connection: `, error);\n\n // @ts-ignore\n const reachabilityMetrics = await this.getMediaReachabilityMetricFields();\n\n const {selectedCandidatePairChanges, numTransports} =\n await this.mediaProperties.getCurrentConnectionInfo();\n\n const iceCandidateErrors = Object.fromEntries(this.iceCandidateErrors);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADD_MEDIA_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n code: error.code,\n selectedCandidatePairChanges,\n numTransports,\n turnDiscoverySkippedReason: this.turnDiscoverySkippedReason,\n turnServerUsed: this.turnServerUsed,\n retriedWithTurnServer: this.addMediaData.retriedWithTurnServer,\n isMultistream: this.isMultistream,\n isJoinWithMediaRetry: this.joinWithMediaRetryInfo.isRetry,\n signalingState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.signalingState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc?.signalingState ||\n 'unknown',\n connectionState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.connectionState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc?.connectionState ||\n 'unknown',\n iceConnectionState:\n this.mediaProperties.webrtcMediaConnection?.multistreamConnection?.pc?.pc\n ?.iceConnectionState ||\n this.mediaProperties.webrtcMediaConnection?.mediaConnection?.pc?.iceConnectionState ||\n 'unknown',\n ...reachabilityMetrics,\n ...iceCandidateErrors,\n iceCandidatesCount: this.iceCandidatesCount,\n ipver,\n });\n\n await this.cleanUpOnAddMediaFailure();\n\n // Upload logs on error while adding media\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n if (error instanceof Errors.SdpError) {\n this.leave({reason: MEETING_REMOVED_REASON.MEETING_CONNECTION_FAILED});\n }\n\n throw error;\n } finally {\n this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;\n }\n }\n\n /**\n * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)\n * @returns {Boolean}\n */\n canUpdateMedia() {\n // in theory we shouldn't need this as RoapMediaConnection handles multiple updates, glare, etc,\n // but there are some server issues, like https://jira-eng-gpk2.cisco.com/jira/browse/WEBEX-248394\n // so for now it's better to keep queuing any media updates at SDK meeting level\n return !this.isRoapInProgress;\n }\n\n /**\n * media failed, so collect a stats report from webrtc using the wcme connection to grab the rtc stats report\n * send a webrtc telemetry dump to the configured server using the internal media core check metrics configured callback\n * @param {String} callFrom - the function calling this function, optional.\n * @returns {Promise<void>}\n */\n private forceSendStatsReport = async ({callFrom}: {callFrom?: string}) => {\n const LOG_HEADER = `Meeting:index#forceSendStatsReport --> called from ${callFrom} : `;\n try {\n await this.mediaProperties?.webrtcMediaConnection?.forceRtcMetricsSend();\n LoggerProxy.logger.info(\n `${LOG_HEADER} successfully uploaded available webrtc telemetry statistics`\n );\n } catch (e) {\n LoggerProxy.logger.error(`${LOG_HEADER} failed to upload webrtc telemetry statistics: `, e);\n }\n };\n\n /**\n * Enqueues a media update operation.\n * @param {String} mediaUpdateType one of MEDIA_UPDATE_TYPE values\n * @param {Object} options\n * @returns {Promise}\n * @private\n * @memberof Meeting\n */\n private enqueueMediaUpdate(mediaUpdateType: string, options: any = {}): Promise<void> {\n const canUpdateMediaNow = this.canUpdateMedia();\n\n return new Promise((resolve, reject) => {\n const queueItem = {\n pendingPromiseResolve: resolve,\n pendingPromiseReject: reject,\n mediaUpdateType,\n options,\n };\n\n LoggerProxy.logger.log(\n `Meeting:index#enqueueMediaUpdate --> enqueuing media update type=${mediaUpdateType}`\n );\n this.queuedMediaUpdates.push(queueItem);\n\n if (canUpdateMediaNow) {\n this.processNextQueuedMediaUpdate();\n }\n });\n }\n\n /**\n * emits event when the negotation is completed\n * @returns {void}\n * @private\n * @memberof Meeting\n */\n mediaNegotiatedEvent = () => {\n // @ts-ignore - config coming from registerPlugin\n if (this.config.experimental.enableMediaNegotiatedEvent) {\n LoggerProxy.logger.info('Meeting:mediaNegotiatedEvent --> Media server negotiated');\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'mediaNegotiatedEvent',\n },\n EVENT_TRIGGERS.MEDIA_NEGOTIATED\n );\n }\n };\n\n /**\n * Checks if there are any queued media updates and runs the first one from\n * the queue if we are in a state that allows doing that.\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n processNextQueuedMediaUpdate = () => {\n if (this.canUpdateMedia() && this.queuedMediaUpdates.length > 0) {\n const {pendingPromiseResolve, pendingPromiseReject, mediaUpdateType, options} =\n this.queuedMediaUpdates.shift();\n\n LoggerProxy.logger.log(\n `Meeting:index#processNextQueuedMediaUpdate --> performing delayed media update type=${mediaUpdateType}`\n );\n let mediaUpdate = Promise.resolve();\n\n switch (mediaUpdateType) {\n case MEDIA_UPDATE_TYPE.TRANSCODED_MEDIA_CONNECTION:\n mediaUpdate = this.updateTranscodedMediaConnection();\n break;\n case MEDIA_UPDATE_TYPE.SHARE_FLOOR_REQUEST:\n mediaUpdate = this.requestScreenShareFloor();\n break;\n case MEDIA_UPDATE_TYPE.UPDATE_MEDIA:\n mediaUpdate = this.updateMedia(options);\n break;\n default:\n LoggerProxy.logger.error(\n `Peer-connection-manager:index#processNextQueuedMediaUpdate --> unsupported media update type ${mediaUpdateType} found in the queue`\n );\n break;\n }\n\n mediaUpdate\n .then(pendingPromiseResolve, pendingPromiseReject)\n .then(() => this.processNextQueuedMediaUpdate());\n }\n };\n\n /**\n * Updates the media connection - it allows to enable/disable all audio/video/share in the meeting.\n * This does not affect the published tracks, so for example if a microphone track is published and\n * updateMedia({audioEnabled: false}) is called, the audio will not be sent or received anymore,\n * but the track's \"published\" state is not changed and when updateMedia({audioEnabled: true}) is called,\n * the sending of the audio from the same track will resume.\n *\n * @param {Object} options\n * @param {boolean} options.audioEnabled [optional] enables/disables receiving and sending of main audio in the meeting\n * @param {boolean} options.videoEnabled [optional] enables/disables receiving and sending of main video in the meeting\n * @param {boolean} options.shareEnabled [optional] enables/disables receiving and sending of screen share in the meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public async updateMedia(options: {\n audioEnabled?: boolean;\n videoEnabled?: boolean;\n shareAudioEnabled?: boolean;\n shareVideoEnabled?: boolean;\n }) {\n this.checkMediaConnection();\n\n const {audioEnabled, videoEnabled, shareAudioEnabled, shareVideoEnabled} = options;\n\n LoggerProxy.logger.log(\n `Meeting:index#updateMedia --> called with options=${JSON.stringify(options)}`\n );\n\n if (!this.canUpdateMedia()) {\n return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.UPDATE_MEDIA, options);\n }\n\n if (this.isMultistream) {\n if (shareAudioEnabled !== undefined || shareVideoEnabled !== undefined) {\n throw new Error(\n 'toggling shareAudioEnabled or shareVideoEnabled in a multistream meeting is not supported, to control receiving screen share call meeting.remoteMediaManager.setLayout() with appropriate layout'\n );\n }\n } else if (shareAudioEnabled !== undefined) {\n throw new Error(\n 'toggling shareAudioEnabled in a transcoded meeting is not supported as of now'\n );\n }\n\n if (audioEnabled !== undefined) {\n this.mediaProperties.mediaDirection.sendAudio = audioEnabled;\n this.mediaProperties.mediaDirection.receiveAudio = audioEnabled;\n this.audio?.enable(this, audioEnabled);\n if (this.isMultistream) {\n this.sendSlotManager.setActive(MediaType.AudioMain, audioEnabled);\n }\n }\n\n if (videoEnabled !== undefined) {\n this.mediaProperties.mediaDirection.sendVideo = videoEnabled;\n this.mediaProperties.mediaDirection.receiveVideo = videoEnabled;\n this.video?.enable(this, videoEnabled);\n if (this.isMultistream) {\n this.sendSlotManager.setActive(MediaType.VideoMain, videoEnabled);\n }\n }\n\n if (shareAudioEnabled !== undefined || shareVideoEnabled !== undefined) {\n this.mediaProperties.mediaDirection.receiveShare = !!(shareAudioEnabled || shareVideoEnabled);\n }\n\n if (!this.isMultistream) {\n await this.updateTranscodedMediaConnection();\n }\n\n return undefined;\n }\n\n /**\n * Acknowledge the meeting, outgoing or incoming\n * @param {String} type\n * @returns {Promise} resolve {message, ringing, response}\n * @public\n * @memberof Meeting\n */\n public acknowledge(type: string) {\n if (!type) {\n return Promise.reject(new ParameterError('Type must be set to acknowledge the meeting.'));\n }\n if (type === _INCOMING_) {\n return this.meetingRequest\n .acknowledgeMeeting({\n locusUrl: this.locusUrl,\n deviceUrl: this.deviceUrl,\n correlationId: this.correlationId,\n })\n .then((response) => Promise.resolve(response))\n .then((response) => {\n this.meetingFiniteStateMachine.ring(type);\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.alert.displayed',\n options: {meetingId: this.id},\n });\n\n return Promise.resolve({\n response,\n });\n });\n }\n\n // TODO: outside of 1:1 incoming, and all outgoing calls\n return Promise.resolve({\n message: 'noop',\n });\n }\n\n /**\n * Decline this meeting\n * @param {String} reason\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n public decline(reason: string) {\n return MeetingUtil.declineMeeting(this, reason)\n .then((decline) => {\n this.meetingFiniteStateMachine.decline();\n\n return Promise.resolve(decline);\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for leaving a meeting.\n *\n * This is to support quickly submitting a leave request when the browser/tab is closing.\n * Calling meeting.leave will not work because there are some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when pagehide is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the $timings values will be wrong, but setRequestTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} options leave options\n * @param {String} options.resourceId the device with which to leave from, empty if just the computer\n * @param {any} options.reason the reason for leaving\n * @returns {Promise} resolves to options to be used with fetch\n */\n public buildLeaveFetchRequestOptions(options: {resourceId?: string; reason?: any} = {} as any) {\n const requestOptions = MeetingUtil.buildLeaveFetchRequestOptions(this, options);\n\n // @ts-ignore\n return this.webex.prepareFetchOptions(requestOptions);\n }\n\n /**\n * Leave the current meeting\n * @param {Object} options - leave options\n * @param {String} [options.resourceId] - the device with which to leave from, empty if just the computer\n * @param {String} [options.clientEventLeaveReason] - the leaveReason to include in the Call Analyzer event.\n * Must be one of: 'paired-leave' | 'one-to-one' | 'ended-by-locus' (defaults to no reason)\n * https://sqbu-github.cisco.com/WebExSquared/event-dictionary/blob/main/diagnostic-events.raml#L796\n * @param {String} [options.reason] - only used for logging\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public leave(\n options: {\n resourceId?: string;\n clientEventLeaveReason?: ClientEventLeaveReason;\n reason?: any;\n } = {} as any\n ) {\n const leaveReason = options.reason || MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;\n\n /// @ts-ignore\n this.webex.internal.newMetrics.submitInternalEvent({name: 'internal.reset.join.latencies'});\n\n const submitLeaveMetric = (payload = {}) =>\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.leave',\n payload: {\n trigger: 'user-interaction',\n canProceed: false,\n leaveReason: options.clientEventLeaveReason,\n ...payload,\n },\n options: {meetingId: this.id},\n });\n LoggerProxy.logger.log('Meeting:index#leave --> Leaving a meeting');\n\n return MeetingUtil.leaveMeeting(this, options)\n .then((leave) => {\n // CA team recommends submitting this *after* locus /leave\n submitLeaveMetric();\n\n this.meetingFiniteStateMachine.leave();\n this.clearMeetingData();\n\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'leave',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here\n if (this.wirelessShare || this.guest) {\n // If screen sharing clean the meeting object\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'leave',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: options.reason,\n meetingId: this.id,\n }\n );\n }\n LoggerProxy.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);\n\n return leave;\n })\n .catch((error) => {\n // CA team recommends submitting this *after* locus /leave\n submitLeaveMetric({\n errors: [\n {\n fatal: false,\n errorDescription: error.message,\n category: 'signaling',\n errorCode: 1000,\n name: 'client.leave',\n shownToUser: false,\n },\n ],\n });\n\n this.meetingFiniteStateMachine.fail(error);\n LoggerProxy.logger.error('Meeting:index#leave --> Failed to leave ', error);\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'leave',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_LEAVE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n code: error.code,\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Start sharing whiteboard given channelUrl\n * @param {string} channelUrl whiteboard url\n * @param {String} resourceToken token created by authorize media injector\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public startWhiteboardShare(channelUrl: string, resourceToken: string) {\n const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');\n\n if (!channelUrl) {\n return Promise.reject(new ParameterError('Cannot share without channelUrl.'));\n }\n\n if (whiteboard) {\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.initiated',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.initiated',\n payload: {\n mediaType: 'whiteboard',\n },\n options: {\n meetingId: this.id,\n },\n });\n\n const body: any = {\n disposition: FLOOR_ACTION.GRANTED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: whiteboard.url,\n resourceUrl: channelUrl,\n };\n\n if (resourceToken) {\n body.resourceToken = resourceToken;\n }\n\n return this.meetingRequest\n .changeMeetingFloor(body)\n .then(() => {\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.resolve();\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_START_WHITEBOARD_SHARE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n board: {channelUrl},\n });\n\n return Promise.reject(error);\n });\n }\n\n return Promise.reject(new ParameterError('Cannot share without whiteboard.'));\n }\n\n /**\n * Stop sharing whiteboard given channelUrl\n * @param {string} channelUrl whiteboard url\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public stopWhiteboardShare(channelUrl: string) {\n const whiteboard = this.locusInfo.mediaShares.find((element) => element.name === 'whiteboard');\n\n if (whiteboard) {\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.stopped',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.stopped',\n payload: {\n mediaType: 'whiteboard',\n // @ts-ignore\n shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),\n },\n options: {\n meetingId: this.id,\n },\n });\n\n return this.meetingRequest\n .changeMeetingFloor({\n disposition: FLOOR_ACTION.RELEASED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: whiteboard.url,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n board: {channelUrl},\n });\n\n return Promise.reject(error);\n })\n .finally(() => {});\n }\n\n return Promise.reject(new ParameterError('Cannot stop share without whiteboard.'));\n }\n\n /**\n * Sends a request to Locus to obtain the screen share floor\n * @returns {Promise} see #meetingRequest.changeMeetingFloor\n * @private\n * @memberof Meeting\n */\n private requestScreenShareFloor() {\n if (\n !this.mediaProperties.hasLocalShareStream() ||\n !this.mediaProperties.mediaDirection.sendShare\n ) {\n LoggerProxy.logger.log(\n `Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=${\n this.mediaProperties.shareVideoStream ? 'yes' : 'no'\n }, sendShare=${this.mediaProperties.mediaDirection.sendShare})`\n );\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.resolve({});\n }\n if (this.state === MEETING_STATE.STATES.JOINED) {\n this.screenShareFloorState = ScreenShareFloorStatus.PENDING;\n const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);\n\n if (content && this.shareStatus !== SHARE_STATUS.LOCAL_SHARE_ACTIVE) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-grant.request',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n return this.meetingRequest\n .changeMeetingFloor({\n disposition: FLOOR_ACTION.GRANTED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: content.url,\n resourceUrl: this.resourceUrl,\n shareInstanceId: this.localShareInstanceId,\n })\n .then(() => {\n this.screenShareFloorState = ScreenShareFloorStatus.GRANTED;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_SHARE_SUCCESS, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n });\n\n return Promise.resolve();\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#share --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_SHARE_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.floor-granted.local',\n payload: {\n mediaType: 'share',\n errors: MeetingUtil.getChangeMeetingFloorErrorPayload(error.message),\n shareInstanceId: this.localShareInstanceId,\n },\n options: {\n meetingId: this.id,\n },\n });\n\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.reject(error);\n });\n }\n if (!content) {\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n\n return Promise.reject(new ParameterError('Cannot share without content.'));\n }\n\n return Promise.resolve();\n }\n this.floorGrantPending = true;\n\n return Promise.resolve({});\n }\n\n /**\n * Requests screen share floor if such request is pending.\n * It should be called whenever meeting state changes to JOINED\n *\n * @returns {void}\n */\n private requestScreenShareFloorIfPending() {\n if (this.floorGrantPending && this.state === MEETING_STATE.STATES.JOINED) {\n this.requestScreenShareFloor().then(() => {\n this.floorGrantPending = false;\n });\n }\n }\n\n /**\n * Sends a request to Locus to release the screen share floor.\n * @returns {Promise} see #meetingRequest.changeMeetingFloor\n * @private\n * @memberof Meeting\n */\n private releaseScreenShareFloor() {\n const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);\n\n if (this.screenShareFloorState === ScreenShareFloorStatus.RELEASED) {\n return Promise.resolve();\n }\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n if (content) {\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.stopped',\n });\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.stopped',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n // @ts-ignore\n shareDuration: this.webex.internal.newMetrics.callDiagnosticLatencies.getShareDuration(),\n },\n options: {meetingId: this.id},\n });\n\n if (content.floor?.beneficiary.id !== this.selfId) {\n // remote participant started sharing and caused our sharing to stop, we don't want to send any floor action request in that case\n return Promise.resolve();\n }\n\n return this.meetingRequest\n .changeMeetingFloor({\n disposition: FLOOR_ACTION.RELEASED,\n personUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n uri: content.url,\n resourceUrl: this.resourceUrl,\n shareInstanceId: this.localShareInstanceId,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.STOP_FLOOR_REQUEST_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n return Promise.reject(error);\n });\n }\n\n // according to Locus there is no content, so we don't need to release the floor (it's probably already been released)\n return Promise.resolve();\n }\n\n /**\n * Intiate a recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public startRecording() {\n return this.recordingController.startRecording();\n }\n\n /**\n * set the mute on entry flag for participants if you're the host\n * @returns {Promise}\n * @param {boolean} enabled\n * @public\n * @memberof Meeting\n */\n public setMuteOnEntry(enabled: boolean) {\n return this.controlsOptionsManager.setMuteOnEntry(enabled);\n }\n\n /**\n * set the disallow unmute flag for participants if you're the host\n * @returns {Promise}\n * @param {boolean} enabled\n * @public\n * @memberof Meeting\n */\n public setDisallowUnmute(enabled: boolean) {\n return this.controlsOptionsManager.setDisallowUnmute(enabled);\n }\n\n /**\n * set the mute all flag for participants if you're the host\n * @returns {Promise}\n * @param {boolean} mutedEnabled\n * @param {boolean} disallowUnmuteEnabled\n * @param {boolean} muteOnEntryEnabled\n * @param {array} roles\n * @public\n * @memberof Meeting\n */\n public setMuteAll(\n mutedEnabled: boolean,\n disallowUnmuteEnabled: boolean,\n muteOnEntryEnabled: boolean,\n roles: Array<string>\n ) {\n return this.controlsOptionsManager.setMuteAll(\n mutedEnabled,\n disallowUnmuteEnabled,\n muteOnEntryEnabled,\n roles\n );\n }\n\n /**\n * End the recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public stopRecording() {\n return this.recordingController.stopRecording();\n }\n\n /**\n * Pauses the recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public pauseRecording() {\n return this.recordingController.pauseRecording();\n }\n\n /**\n * Resumes the recording of this meeting\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public resumeRecording() {\n return this.recordingController.resumeRecording();\n }\n\n /**\n * Locks the current meeting if possible\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public lockMeeting() {\n return MeetingUtil.lockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);\n }\n\n /**\n * Unlocks the current meeting if possible\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public unlockMeeting() {\n return MeetingUtil.unlockMeeting(this.inMeetingActions, this.meetingRequest, this.locusUrl);\n }\n\n /**\n * Logs an error message and returns a rejected promise with same message\n * @param {String} message\n * @returns {Promise}\n * @private\n * @memberof Meeting\n */\n private rejectWithErrorLog(message: string) {\n LoggerProxy.logger.error(message);\n\n return Promise.reject(new Error(message));\n }\n\n /**\n * Sends DTMF tones to the current meeting\n * @param {String} tones a string of one or more DTMF tones to send\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public sendDTMF(tones: string) {\n if (this.locusInfo && this.locusInfo.self) {\n if (this.locusInfo.self.enableDTMF) {\n return this.meetingRequest.sendDTMF({\n locusUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n tones,\n });\n }\n\n return this.rejectWithErrorLog(\n 'Meeting:index#sendDTMF --> cannot send DTMF, meeting does not have DTMF enabled'\n );\n }\n\n return this.rejectWithErrorLog(\n 'Meeting:index#sendDTMF --> cannot send DTMF, meeting does not have a connection to the \"locus\" call control service. Have you joined?'\n );\n }\n\n /**\n * Sends request to change layout type for the current meeting for the specific participant/device only\n * @param {String} [layoutType] a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} renderInfo preferred dimensions for the remote main and content streams (server can ignore it)\n * @param {Object} renderInfo.main preferred dimensions for the remote main video stream\n * @param {Number} renderInfo.main.width preferred width of main video stream\n * @param {Number} renderInfo.main.height preferred height of main video stream\n * @param {Object} renderInfo.content preferred dimensions for the remote content share stream\n * @param {Number} renderInfo.content.width preferred width of content share stream\n * @param {Number} renderInfo.content.height preferred height of content share stream\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public changeVideoLayout(\n layoutType?: string,\n renderInfo: {\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n } = {} as any\n ) {\n const {main, content} = renderInfo;\n const {mediaDirection, remoteShareStream, remoteVideoStream} = this.mediaProperties;\n\n const layoutInfo = cloneDeep(this.lastVideoLayoutInfo);\n\n // TODO: We need a real time value for Audio, Video and Share send indicator\n if (mediaDirection.receiveVideo !== true || !remoteVideoStream) {\n return this.rejectWithErrorLog(\n 'Meeting:index#changeVideoLayout --> cannot change video layout, you are not recieving any video/share stream'\n );\n }\n\n if (layoutType) {\n if (!LAYOUT_TYPES.includes(layoutType)) {\n return this.rejectWithErrorLog(\n `Meeting:index#changeVideoLayout --> cannot change video layout, invalid layoutType \"${layoutType}\" received.`\n );\n }\n\n layoutInfo.layoutType = layoutType;\n }\n\n if (main) {\n const mainWidth = Math.round(main.width);\n const mainHeight = Math.round(main.height);\n\n // Stop any \"twitching\" caused by very slight size changes\n if (\n !this.lastVideoLayoutInfo.main ||\n Math.abs(this.lastVideoLayoutInfo.main.height - mainHeight) > 2 ||\n Math.abs(this.lastVideoLayoutInfo.main.width - mainWidth) > 2\n ) {\n layoutInfo.main = {width: mainWidth, height: mainHeight};\n }\n }\n\n if (content) {\n if (this.mediaProperties.mediaDirection.receiveShare && remoteShareStream) {\n const contentWidth = Math.round(content.width);\n const contentHeight = Math.round(content.height);\n\n // Stop any \"twitching\" caused by very slight size changes\n if (\n !this.lastVideoLayoutInfo.content ||\n Math.abs(this.lastVideoLayoutInfo.content.height - contentHeight) > 2 ||\n Math.abs(this.lastVideoLayoutInfo.content.width - contentWidth) > 2\n ) {\n layoutInfo.content = {width: contentWidth, height: contentHeight};\n }\n } else {\n return this.rejectWithErrorLog(\n 'Meeting:index#changeVideoLayout --> unable to send renderInfo for content, you are not receiving remote share'\n );\n }\n }\n\n if (isEqual(layoutInfo, this.lastVideoLayoutInfo)) {\n // nothing changed, no need to send any request\n return Promise.resolve();\n }\n this.lastVideoLayoutInfo = cloneDeep(layoutInfo);\n\n this.locusInfo.once(LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, (envelope) => {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'changeVideoLayout',\n },\n EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE,\n {\n layout: envelope.layout,\n }\n );\n });\n\n return this.meetingRequest\n .changeVideoLayoutDebounced({\n locusUrl: this.locusInfo.self.url,\n deviceUrl: this.deviceUrl,\n layoutType,\n main: layoutInfo.main,\n content: layoutInfo.content,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:index#changeVideoLayout --> Error ', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Sets the quality level of the remote incoming media\n * @param {String} level {LOW|MEDIUM|HIGH}\n * @returns {Promise}\n */\n setRemoteQualityLevel(level: string) {\n LoggerProxy.logger.log(`Meeting:index#setRemoteQualityLevel --> Setting quality to ${level}`);\n\n if (!QUALITY_LEVELS[level]) {\n return this.rejectWithErrorLog(\n `Meeting:index#setRemoteQualityLevel --> ${level} not defined`\n );\n }\n\n if (\n !this.mediaProperties.mediaDirection.receiveAudio &&\n !this.mediaProperties.mediaDirection.receiveVideo\n ) {\n return this.rejectWithErrorLog(\n 'Meeting:index#setRemoteQualityLevel --> unable to change remote quality, receiveVideo and receiveAudio is disabled'\n );\n }\n\n // If level is already the same, don't do anything\n if (level === this.mediaProperties.remoteQualityLevel) {\n LoggerProxy.logger.warn(\n `Meeting:index#setRemoteQualityLevel --> Quality already set to ${level}`\n );\n\n return Promise.resolve();\n }\n\n // Set the quality level in properties\n this.mediaProperties.setRemoteQualityLevel(level);\n\n return this.updateTranscodedMediaConnection();\n }\n\n /**\n * Functionality for when a share audio is ended.\n * @private\n * @memberof Meeting\n * @returns {undefined}\n */\n private handleShareAudioStreamEnded = async () => {\n LoggerProxy.logger.info(\n `Meeting:index#handleShareAudioStreamEnded --> audio share stream ended`\n );\n // current share audio stream has ended, but there might be an active\n // share video stream. we only leave from wireless share if share has\n // completely ended, which means no share audio or video streams active\n if (this.wirelessShare && !this.mediaProperties.shareVideoStream) {\n this.leave({reason: MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS});\n } else {\n try {\n await this.unpublishStreams([this.mediaProperties.shareAudioStream]);\n } catch (error) {\n LoggerProxy.logger.log(\n 'Meeting:index#handleShareAudioStreamEnded --> Error stopping share: ',\n error\n );\n }\n }\n };\n\n /**\n * Functionality for when a share video is muted or unmuted.\n * @private\n * @memberof Meeting\n * @param {boolean} muted\n * @returns {undefined}\n */\n private handleShareVideoStreamMuteStateChange = (muted: boolean) => {\n LoggerProxy.logger.log(\n `Meeting:index#handleShareVideoStreamMuteStateChange --> Share video stream mute state changed to muted ${muted}`\n );\n\n const shareVideoStreamSettings = this.mediaProperties?.shareVideoStream?.getSettings();\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_SHARE_VIDEO_MUTE_STATE_CHANGE, {\n correlationId: this.correlationId,\n muted,\n encoderImplementation: this.statsAnalyzer?.shareVideoEncoderImplementation,\n // TypeScript 4 does not recognize the `displaySurface` property. Instead of upgrading the\n // SDK to TypeScript 5, which may affect other packages, use bracket notation for now, since\n // all we're doing here is adding metrics.\n // eslint-disable-next-line dot-notation\n displaySurface: shareVideoStreamSettings?.['displaySurface'],\n isMultistream: this.isMultistream,\n frameRate: shareVideoStreamSettings?.frameRate,\n });\n };\n\n /**\n * Functionality for when a share video is ended.\n * @private\n * @memberof Meeting\n * @returns {undefined}\n */\n private handleShareVideoStreamEnded = async () => {\n LoggerProxy.logger.info(\n `Meeting:index#handleShareVideoStreamEnded --> video share stream ended`\n );\n // current share video stream has ended, but there might be an active\n // share audio stream. we only leave from wireless share if share has\n // completely ended, which means no share audio or video streams active\n if (this.wirelessShare && !this.mediaProperties.shareAudioStream) {\n this.leave({reason: MEETING_REMOVED_REASON.USER_ENDED_SHARE_STREAMS});\n } else {\n try {\n await this.unpublishStreams([this.mediaProperties.shareVideoStream]);\n } catch (error) {\n LoggerProxy.logger.log(\n 'Meeting:index#handleShareVideoStreamEnded --> Error stopping share: ',\n error\n );\n }\n }\n this.triggerStoppedSharing();\n };\n\n /**\n * Emits meeting:stoppedSharingLocal\n * @private\n * @returns {undefined}\n * @memberof Meeting\n */\n private triggerStoppedSharing = () => {\n if (!this.mediaProperties.hasLocalShareStream()) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'handleShareStreamEnded',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\n {\n reason: SHARE_STOPPED_REASON.TRACK_ENDED,\n }\n );\n }\n };\n\n /**\n * Emits the 'network:quality' event\n * 1 indicates an acceptable uplink network.\n * 0 indicates an unacceptable uplink network based on a predefined threshold\n * @returns {undefined}\n * @param {Object} res - payload of emitNetworkQuality\n * @property {string} mediaType {video|audio}\n * @property {number} networkQualityScore - {1|0}\n * @private\n * @memberof Meeting\n */\n private sendNetworkQualityEvent(res: {networkQualityScore: number; mediaType: string}) {\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'addMedia',\n },\n EVENT_TRIGGERS.NETWORK_QUALITY,\n {\n networkQualityScore: res.networkQualityScore,\n mediaType: res.mediaType,\n }\n );\n }\n\n /**\n * Handle logging the media\n * @param {Object} mediaProperties\n * @private\n * @returns {undefined}\n */\n private handleMediaLogging(mediaProperties: {\n audioStream?: LocalMicrophoneStream;\n videoStream?: LocalCameraStream;\n }) {\n MeetingUtil.handleVideoLogging(mediaProperties.videoStream);\n MeetingUtil.handleAudioLogging(mediaProperties.audioStream);\n }\n\n /**\n *\n * @returns {string} one of 'panelist', 'attendee', 'host', 'cohost', returns the user type of the current user\n */\n getCurUserType(): RawClientEvent['userType'] | null {\n const {roles} = this;\n if (roles) {\n if (roles.includes(SELF_ROLES.MODERATOR)) {\n return 'host';\n }\n if (roles.includes(SELF_ROLES.COHOST)) {\n return 'cohost';\n }\n if (roles.includes(SELF_ROLES.PANELIST)) {\n return 'panelist';\n }\n if (roles.includes(SELF_ROLES.ATTENDEE)) {\n return 'attendee';\n }\n }\n\n return null;\n }\n\n /**\n * End the current meeting for all\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public endMeetingForAll() {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.leave',\n payload: {trigger: 'user-interaction', canProceed: false},\n options: {meetingId: this.id},\n });\n\n LoggerProxy.logger.log('Meeting:index#endMeetingForAll --> End meeting for All');\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_END_ALL_INITIATED, {\n correlation_id: this.correlationId,\n locus_id: this.locusId,\n });\n\n return MeetingUtil.endMeetingForAll(this)\n .then((end) => {\n this.meetingFiniteStateMachine.end();\n\n this.clearMeetingData();\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'endMeetingForAll',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n\n return end;\n })\n .catch((error) => {\n this.meetingFiniteStateMachine.fail(error);\n LoggerProxy.logger.error(\n 'Meeting:index#endMeetingForAll --> Failed to end meeting ',\n error\n );\n // upload logs on leave irrespective of meeting delete\n Trigger.trigger(\n this,\n {\n file: 'meeting/index',\n function: 'endMeetingForAll',\n },\n EVENTS.REQUEST_UPLOAD_LOGS,\n this\n );\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_END_ALL_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n code: error.code,\n });\n\n return Promise.reject(error);\n });\n }\n\n /**\n * clear the meeting data\n * @returns {undefined}\n * @public\n * @memberof Meeting\n */\n clearMeetingData = () => {\n this.audio = null;\n this.video = null;\n this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;\n if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {\n this.shareStatus = SHARE_STATUS.NO_SHARE;\n }\n this.queuedMediaUpdates = [];\n\n if (this.transcription) {\n this.stopTranscription();\n this.transcription = undefined;\n }\n\n this.annotation.deregisterEvents();\n\n // @ts-ignore - fix types\n this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);\n };\n\n /**\n * starts keepAlives being sent\n * @returns {void}\n * @private\n * @memberof Meeting\n */\n startKeepAlive = () => {\n if (this.keepAliveTimerId) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: keepAliveTimerId already exists'\n );\n\n return;\n }\n if (!this.joinedWith?.keepAliveUrl) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: no keepAliveUrl'\n );\n\n return;\n }\n if (!this.joinedWith?.keepAliveSecs) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: no keepAliveSecs'\n );\n\n return;\n }\n if (this.joinedWith.keepAliveSecs <= 1) {\n LoggerProxy.logger.warn(\n 'Meeting:index#startKeepAlive --> keepAlive not started: keepAliveSecs <= 1'\n );\n\n return;\n }\n\n const keepAliveInterval = (this.joinedWith.keepAliveSecs - 1) * 750; // taken from UCF\n\n this.keepAliveTimerId = setInterval(() => {\n const {keepAliveUrl} = this.joinedWith;\n\n this.meetingRequest.keepAlive({keepAliveUrl}).catch((error) => {\n LoggerProxy.logger.warn(\n `Meeting:index#startKeepAlive --> Stopping sending keepAlives to ${keepAliveUrl} after error ${error}`\n );\n this.stopKeepAlive();\n });\n }, keepAliveInterval);\n };\n\n /**\n * stops keepAlives being sent\n * @returns {void}\n * @private\n * @memberof Meeting\n */\n stopKeepAlive = () => {\n if (!this.keepAliveTimerId) {\n return;\n }\n clearInterval(this.keepAliveTimerId);\n this.keepAliveTimerId = null;\n };\n\n /**\n * Send a reaction inside the meeting.\n *\n * @param {ReactionServerType} reactionType - type of reaction to be sent. Example: \"thumbs_up\"\n * @param {SkinToneType} skinToneType - skin tone for the reaction. Example: \"medium_dark\"\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType) {\n const reactionChannelUrl = this.locusInfo?.controls?.reactions?.reactionChannelUrl as string;\n const participantId = this.members.selfId;\n\n const reactionData = Reactions[reactionType];\n\n if (!reactionData) {\n return Promise.reject(new Error(`${reactionType} is not a valid reaction.`));\n }\n const skinToneData = SkinTones[skinToneType] || SkinTones.normal;\n const reaction: Reaction = {\n ...reactionData,\n tone: skinToneData,\n };\n\n if (reactionChannelUrl) {\n return this.meetingRequest.sendReaction({reactionChannelUrl, reaction, participantId});\n }\n\n return Promise.reject(new Error('Error sending reaction, service url not found.'));\n }\n\n /**\n * Method to enable or disable reactions inside the meeting.\n *\n * @param {boolean} enable - enable or disable reactions\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public toggleReactions(enable: boolean) {\n const isEnabled = this.locusInfo?.controls?.reactions?.enabled;\n\n if ((isEnabled && enable) || (!isEnabled && !enable)) {\n return Promise.resolve(`Reactions are already ${isEnabled ? 'enabled' : 'disabled'}.`);\n }\n\n return this.meetingRequest.toggleReactions({\n enable,\n locusUrl: this.locusUrl,\n requestingParticipantId: this.members.selfId,\n });\n }\n\n /**\n * Method to set post meeting data consent.\n *\n * @param {boolean} accept - whether consent accepted or declined\n * @returns {Promise}\n * @public\n * @memberof Meeting\n */\n public setPostMeetingDataConsent(accept: boolean) {\n return this.meetingRequest.setPostMeetingDataConsent({\n postMeetingDataConsent: accept,\n locusUrl: this.locusUrl,\n deviceUrl: this.deviceUrl,\n selfId: this.members.selfId,\n });\n }\n\n /**\n * Throws if we don't have a media connection created\n *\n * @returns {void}\n */\n private checkMediaConnection() {\n if (this.mediaProperties?.webrtcMediaConnection) {\n return;\n }\n throw new NoMediaEstablishedYetError();\n }\n\n /**\n * Method to enable or disable the 'Music mode' effect on audio stream\n *\n * @param {boolean} shouldEnableMusicMode\n * @returns {Promise}\n */\n async enableMusicMode(shouldEnableMusicMode: boolean) {\n this.checkMediaConnection();\n\n if (!this.isMultistream) {\n throw new Error('enableMusicMode() only supported with multistream');\n }\n\n if (shouldEnableMusicMode) {\n await this.sendSlotManager.setCodecParameters(MediaType.AudioMain, {\n maxaveragebitrate: '64000',\n maxplaybackrate: '48000',\n });\n } else {\n await this.sendSlotManager.deleteCodecParameters(MediaType.AudioMain, [\n 'maxaveragebitrate',\n 'maxplaybackrate',\n ]);\n }\n }\n\n /** Updates the tracks being sent on the transcoded media connection\n *\n * @returns {Promise<void>}\n */\n private updateTranscodedMediaConnection(): Promise<void> {\n const LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';\n\n LoggerProxy.logger.info(`${LOG_HEADER} starting`);\n\n if (!this.canUpdateMedia()) {\n return this.enqueueMediaUpdate(MEDIA_UPDATE_TYPE.TRANSCODED_MEDIA_CONNECTION);\n }\n\n return this.mediaProperties.webrtcMediaConnection\n .update({\n // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now\n localTracks: {\n audio: this.mediaProperties.audioStream?.outputStream?.getTracks()[0] || null,\n video: this.mediaProperties.videoStream?.outputStream?.getTracks()[0] || null,\n screenShareVideo:\n this.mediaProperties.shareVideoStream?.outputStream?.getTracks()[0] || null,\n screenShareAudio:\n this.mediaProperties.shareAudioStream?.outputStream?.getTracks()[0] || null,\n },\n direction: {\n audio: Media.getDirection(\n true,\n this.mediaProperties.mediaDirection.receiveAudio,\n this.mediaProperties.mediaDirection.sendAudio\n ),\n video: Media.getDirection(\n true,\n this.mediaProperties.mediaDirection.receiveVideo,\n this.mediaProperties.mediaDirection.sendVideo\n ),\n screenShareVideo: Media.getDirection(\n false,\n this.mediaProperties.mediaDirection.receiveShare,\n this.mediaProperties.mediaDirection.sendShare\n ),\n },\n remoteQualityLevel: this.mediaProperties.remoteQualityLevel,\n })\n .then(() => {\n LoggerProxy.logger.info(`${LOG_HEADER} done`);\n })\n .catch((error) => {\n LoggerProxy.logger.error(`${LOG_HEADER} Error: `, error);\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.UPDATE_MEDIA_FAILURE, {\n correlation_id: this.correlationId,\n locus_id: this.locusUrl.split('/').pop(),\n reason: error.message,\n stack: error.stack,\n });\n\n throw error;\n });\n }\n\n /**\n * set sending named media group which the audio should send to\n * @param {MediaType} mediaType of the stream\n * @param {number} languageCode of the stream\n * @returns {void}\n */\n public setSendNamedMediaGroup(mediaType: MediaType, languageCode = 0): void {\n if (mediaType !== MediaType.AudioMain) {\n throw new Error(`cannot set send named media group which media type is ${mediaType}`);\n }\n\n const value = languageCode || this.simultaneousInterpretation.getTargetLanguageCode();\n let groups = [];\n\n if (value) {\n groups = [\n {\n type: NAMED_MEDIA_GROUP_TYPE_AUDIO,\n value,\n },\n ];\n }\n if (this.isMultistream && this.mediaProperties.webrtcMediaConnection) {\n this.sendSlotManager.setNamedMediaGroups(mediaType, groups);\n }\n }\n\n /**\n * Publishes a stream.\n *\n * @param {MediaType} mediaType of the stream\n * @param {LocalStream} stream to publish\n * @returns {Promise}\n */\n private async publishStream(mediaType: MediaType, stream?: LocalStream) {\n if (!stream) {\n return;\n }\n\n if (this.mediaProperties.webrtcMediaConnection) {\n if (this.isMultistream && this.mediaProperties.webrtcMediaConnection) {\n await this.sendSlotManager.publishStream(mediaType, stream);\n }\n\n this.emitPublishStateChangeEvent({\n isPublished: true,\n mediaType,\n stream,\n functionName: 'publishStream',\n });\n }\n }\n\n /**\n * Un-publishes a stream.\n *\n * @param {MediaType} mediaType of the stream\n * @param {LocalStream} stream to unpublish\n * @returns {Promise}\n */\n private async unpublishStream(mediaType: MediaType, stream?: LocalStream) {\n if (!stream) {\n return;\n }\n\n if (this.isMultistream && this.mediaProperties.webrtcMediaConnection) {\n await this.sendSlotManager.unpublishStream(mediaType);\n }\n\n this.emitPublishStateChangeEvent({\n isPublished: false,\n mediaType,\n stream,\n functionName: 'unpublishStream',\n });\n }\n\n /**\n * Publishes specified local streams in the meeting\n *\n * @param {Object} streams\n * @returns {Promise}\n */\n async publishStreams(streams: LocalStreams): Promise<void> {\n LoggerProxy.logger.info(\n `Meeting:index#publishStreams --> called with: ${JSON.stringify(streams)}`\n );\n this.checkMediaConnection();\n if (\n !streams.microphone &&\n !streams.camera &&\n !streams.screenShare?.audio &&\n !streams.screenShare?.video\n ) {\n // nothing to do\n return;\n }\n\n const streamChecks = [\n {stream: streams?.microphone, name: 'microphone'},\n {stream: streams?.camera, name: 'camera'},\n {stream: streams?.screenShare?.audio, name: 'screenShare audio'},\n {stream: streams?.screenShare?.video, name: 'screenShare video'},\n ];\n\n for (const {stream, name} of streamChecks) {\n if (stream?.readyState === 'ended') {\n throw new Error(\n `Attempted to publish ${name} stream with ended readyState, correlationId=${this.correlationId}`\n );\n }\n }\n\n let floorRequestNeeded = false;\n\n // Screenshare Audio is supported only in multi stream. So we check for screenshare audio presence only if it's a multi stream meeting\n if (this.isMultistream && streams.screenShare?.audio) {\n await this.setLocalShareAudioStream(streams.screenShare.audio);\n\n floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;\n }\n\n if (streams.screenShare?.video) {\n await this.setLocalShareVideoStream(streams.screenShare?.video);\n\n floorRequestNeeded = this.screenShareFloorState === ScreenShareFloorStatus.RELEASED;\n }\n\n if (streams.microphone) {\n await this.setLocalAudioStream(streams.microphone);\n }\n\n if (streams.camera) {\n await this.setLocalVideoStream(streams.camera);\n }\n\n if (!this.isMultistream) {\n await this.updateTranscodedMediaConnection();\n }\n\n if (floorRequestNeeded) {\n this.localShareInstanceId = uuid.v4();\n this.shareCAEventSentStatus.transmitStart = false;\n this.shareCAEventSentStatus.transmitStop = false;\n\n // @ts-ignore\n this.webex.internal.newMetrics.callDiagnosticLatencies.saveTimestamp({\n key: 'internal.client.share.initiated',\n });\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.share.initiated',\n payload: {\n mediaType: 'share',\n shareInstanceId: this.localShareInstanceId,\n },\n options: {meetingId: this.id},\n });\n\n this.statsAnalyzer.updateMediaStatus({\n expected: {\n sendShare: true,\n },\n });\n // we're sending the http request to Locus to request the screen share floor\n // only after the SDP update, because that's how it's always been done for transcoded meetings\n // and also if sharing from the start, we need confluence to have been created\n await this.enqueueScreenShareFloorRequest();\n }\n }\n\n /**\n * Un-publishes specified local streams in the meeting\n *\n * @param {Array<LocalStream>} streams\n * @returns {Promise}\n */\n async unpublishStreams(streams: LocalStream[]): Promise<void> {\n LoggerProxy.logger.info(\n `Meeting:index#unpublishStreams --> called with: ${JSON.stringify(streams)}`\n );\n this.checkMediaConnection();\n\n const promises = [];\n\n for (const stream of streams.filter((t) => !!t)) {\n if (stream === this.mediaProperties.shareAudioStream) {\n promises.push(this.setLocalShareAudioStream(undefined));\n }\n\n if (stream === this.mediaProperties.shareVideoStream) {\n promises.push(this.setLocalShareVideoStream(undefined));\n }\n\n if (stream === this.mediaProperties.audioStream) {\n promises.push(this.setLocalAudioStream(undefined));\n }\n\n if (stream === this.mediaProperties.videoStream) {\n promises.push(this.setLocalVideoStream(undefined));\n }\n }\n\n if (!this.isMultistream) {\n promises.push(this.updateTranscodedMediaConnection());\n }\n\n await Promise.all(promises);\n\n // we're allowing for the SDK to support just audio share as well\n // so a share could be active with only video, only audio, or both\n // we're only releasing the floor if both streams have ended\n if (!this.mediaProperties.hasLocalShareStream()) {\n try {\n this.releaseScreenShareFloor(); // we ignore the returned promise here on purpose\n\n this.statsAnalyzer.updateMediaStatus({\n expected: {\n sendShare: false,\n },\n });\n } catch (e) {\n // nothing to do here, error is logged already inside releaseScreenShareFloor()\n }\n }\n }\n\n /**\n * Gets permission token expiry information including timeLeft, expiryTime, currentTime\n * (from the time the function has been fired)\n *\n * @returns {object} permissionTokenExpiryInfo\n * @returns {number} permissionTokenExpiryInfo.timeLeft The time left for token to expire\n * @returns {number} permissionTokenExpiryInfo.expiryTime The expiry time of permission token from the server\n * @returns {number} permissionTokenExpiryInfo.currentTime The current time of the local machine\n */\n public getPermissionTokenExpiryInfo() {\n if (!this.permissionTokenPayload) {\n return undefined;\n }\n\n const permissionTokenExpiryFromServer = Number(this.permissionTokenPayload.exp);\n const permissionTokenIssuedTimeFromServer = Number(this.permissionTokenPayload.iat);\n\n const shiftInTime = this.permissionTokenReceivedLocalTime - permissionTokenIssuedTimeFromServer;\n\n // using new Date instead of Date.now() to allow for accurate unit testing\n // https://github.com/sinonjs/fake-timers/issues/321\n const currentTime = new Date().getTime();\n\n // adjusted time is calculated in case your machine time is wrong\n const adjustedCurrentTime = currentTime - shiftInTime;\n\n const timeLeft = (permissionTokenExpiryFromServer - adjustedCurrentTime) / 1000;\n\n return {timeLeft, expiryTime: permissionTokenExpiryFromServer, currentTime};\n }\n\n /**\n * Check if there is enough time left till the permission token expires\n * If not - refresh the permission token\n *\n * @param {number} threshold - time in seconds\n * @param {string} reason - reason for refreshing the permission token\n * @returns {Promise<void>}\n */\n public checkAndRefreshPermissionToken(threshold: number, reason: string): Promise<void> {\n const timeLeft = this.getPermissionTokenExpiryInfo()?.timeLeft;\n\n if (timeLeft !== undefined && timeLeft <= threshold) {\n return this.refreshPermissionToken(reason);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Gets the media reachability metrics\n *\n * @returns {Promise<MediaReachabilityMetrics>}\n */\n private async getMediaReachabilityMetricFields(): Promise<MediaReachabilityMetrics> {\n const reachabilityMetrics: ReachabilityMetrics =\n // @ts-ignore\n await this.webex.meetings.reachability.getReachabilityMetrics();\n\n const successKeys: Array<keyof ReachabilityMetrics> = [\n 'reachability_public_udp_success',\n 'reachability_public_tcp_success',\n 'reachability_public_xtls_success',\n 'reachability_vmn_udp_success',\n 'reachability_vmn_tcp_success',\n 'reachability_vmn_xtls_success',\n ];\n\n const totalSuccessCases = successKeys.reduce((total, key) => {\n const value = reachabilityMetrics[key];\n if (typeof value === 'number') {\n return total + value;\n }\n\n return total;\n }, 0);\n\n const selectedSubnetFirstOctet = this.mediaServerIp?.split('.')[0];\n\n let isSubnetReachable = null;\n if (totalSuccessCases > 0 && selectedSubnetFirstOctet) {\n isSubnetReachable =\n // @ts-ignore\n this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);\n }\n\n const selectedCluster = this.mediaConnections?.[0]?.mediaAgentCluster ?? null;\n\n return {\n ...reachabilityMetrics,\n subnet_reachable: isSubnetReachable,\n selected_cluster: selectedCluster,\n selected_subnet: selectedSubnetFirstOctet ? `${selectedSubnetFirstOctet}.X.X.X` : null,\n };\n }\n\n /**\n * Set the stage for the meeting\n *\n * @param {SetStageOptions} options Options to use when setting the stage\n * @returns {Promise} The locus request\n */\n setStage({\n activeSpeakerProportion = 0.5,\n customBackground,\n customLogo,\n customNameLabel,\n importantParticipants,\n lockAttendeeViewOnStage = false,\n showActiveSpeaker = false,\n }: SetStageOptions = {}) {\n const videoLayout: SetStageVideoLayout = {\n overrideDefault: true,\n lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,\n stageParameters: {\n activeSpeakerProportion,\n showActiveSpeaker: {show: showActiveSpeaker, order: 0},\n stageManagerType: 0,\n },\n };\n\n if (importantParticipants?.length) {\n videoLayout.stageParameters.importantParticipants = importantParticipants.map(\n (importantParticipant, index) => ({...importantParticipant, order: index + 1})\n );\n }\n\n if (customLogo) {\n if (!videoLayout.customLayouts) {\n videoLayout.customLayouts = {};\n }\n videoLayout.customLayouts.logo = customLogo;\n // eslint-disable-next-line no-bitwise\n videoLayout.stageParameters.stageManagerType |= STAGE_MANAGER_TYPE.LOGO;\n }\n\n if (customBackground) {\n if (!videoLayout.customLayouts) {\n videoLayout.customLayouts = {};\n }\n videoLayout.customLayouts.background = customBackground;\n // eslint-disable-next-line no-bitwise\n videoLayout.stageParameters.stageManagerType |= STAGE_MANAGER_TYPE.BACKGROUND;\n }\n\n if (customNameLabel) {\n videoLayout.nameLabelStyle = customNameLabel;\n // eslint-disable-next-line no-bitwise\n videoLayout.stageParameters.stageManagerType |= STAGE_MANAGER_TYPE.NAME_LABEL;\n }\n\n return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);\n }\n\n /**\n * Unset the stage for the meeting\n *\n * @returns {Promise} The locus request\n */\n unsetStage() {\n const videoLayout: UnsetStageVideoLayout = {overrideDefault: false};\n\n return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);\n }\n\n /**\n * Notifies the host with the given meeting UUID and display names.\n *\n * @param {string} meetingUuid - The UUID of the meeting.\n * @param {string[]} displayName - An array of display names to notify the host with.\n * @returns {Promise<any>} The result of the notifyHost request.\n */\n notifyHost(meetingUuid: string, displayName: string[]) {\n return this.meetingRequest.notifyHost(\n this.meetingInfo.siteFullUrl,\n this.locusId,\n meetingUuid,\n displayName\n );\n }\n}\n"],"mappings":"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;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAJA,IAKqBiD,OAAO,GAAAP,OAAA,CAAA1C,OAAA,0BA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"}
|