@webex/plugin-meetings 3.11.0 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/aiEnableRequest/index.js +184 -0
  2. package/dist/aiEnableRequest/index.js.map +1 -0
  3. package/dist/aiEnableRequest/utils.js +36 -0
  4. package/dist/aiEnableRequest/utils.js.map +1 -0
  5. package/dist/annotation/index.js +14 -5
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/index.js +1 -1
  9. package/dist/config.js +5 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +28 -6
  12. package/dist/constants.js.map +1 -1
  13. package/dist/hashTree/constants.js +3 -1
  14. package/dist/hashTree/constants.js.map +1 -1
  15. package/dist/hashTree/hashTree.js +18 -0
  16. package/dist/hashTree/hashTree.js.map +1 -1
  17. package/dist/hashTree/hashTreeParser.js +709 -380
  18. package/dist/hashTree/hashTreeParser.js.map +1 -1
  19. package/dist/hashTree/types.js +4 -2
  20. package/dist/hashTree/types.js.map +1 -1
  21. package/dist/hashTree/utils.js +10 -0
  22. package/dist/hashTree/utils.js.map +1 -1
  23. package/dist/index.js +11 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/interceptors/constant.js +12 -0
  26. package/dist/interceptors/constant.js.map +1 -0
  27. package/dist/interceptors/dataChannelAuthToken.js +290 -0
  28. package/dist/interceptors/dataChannelAuthToken.js.map +1 -0
  29. package/dist/interceptors/index.js +7 -0
  30. package/dist/interceptors/index.js.map +1 -1
  31. package/dist/interceptors/utils.js +27 -0
  32. package/dist/interceptors/utils.js.map +1 -0
  33. package/dist/interpretation/index.js +2 -2
  34. package/dist/interpretation/index.js.map +1 -1
  35. package/dist/interpretation/siLanguage.js +1 -1
  36. package/dist/locus-info/controlsUtils.js +5 -3
  37. package/dist/locus-info/controlsUtils.js.map +1 -1
  38. package/dist/locus-info/index.js +217 -79
  39. package/dist/locus-info/index.js.map +1 -1
  40. package/dist/locus-info/selfUtils.js +1 -0
  41. package/dist/locus-info/selfUtils.js.map +1 -1
  42. package/dist/locus-info/types.js.map +1 -1
  43. package/dist/media/MediaConnectionAwaiter.js +57 -1
  44. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  45. package/dist/media/properties.js +4 -2
  46. package/dist/media/properties.js.map +1 -1
  47. package/dist/meeting/in-meeting-actions.js +7 -1
  48. package/dist/meeting/in-meeting-actions.js.map +1 -1
  49. package/dist/meeting/index.js +1082 -861
  50. package/dist/meeting/index.js.map +1 -1
  51. package/dist/meeting/request.js +50 -0
  52. package/dist/meeting/request.js.map +1 -1
  53. package/dist/meeting/request.type.js.map +1 -1
  54. package/dist/meeting/util.js +133 -3
  55. package/dist/meeting/util.js.map +1 -1
  56. package/dist/meetings/index.js +100 -45
  57. package/dist/meetings/index.js.map +1 -1
  58. package/dist/member/index.js +10 -0
  59. package/dist/member/index.js.map +1 -1
  60. package/dist/member/util.js +10 -0
  61. package/dist/member/util.js.map +1 -1
  62. package/dist/metrics/constants.js +2 -1
  63. package/dist/metrics/constants.js.map +1 -1
  64. package/dist/multistream/mediaRequestManager.js +9 -60
  65. package/dist/multistream/mediaRequestManager.js.map +1 -1
  66. package/dist/multistream/remoteMediaManager.js +11 -0
  67. package/dist/multistream/remoteMediaManager.js.map +1 -1
  68. package/dist/reachability/index.js +18 -10
  69. package/dist/reachability/index.js.map +1 -1
  70. package/dist/reactions/reactions.type.js.map +1 -1
  71. package/dist/reconnection-manager/index.js +0 -1
  72. package/dist/reconnection-manager/index.js.map +1 -1
  73. package/dist/types/aiEnableRequest/index.d.ts +5 -0
  74. package/dist/types/aiEnableRequest/utils.d.ts +2 -0
  75. package/dist/types/config.d.ts +3 -0
  76. package/dist/types/constants.d.ts +23 -1
  77. package/dist/types/hashTree/constants.d.ts +1 -0
  78. package/dist/types/hashTree/hashTree.d.ts +7 -0
  79. package/dist/types/hashTree/hashTreeParser.d.ts +99 -14
  80. package/dist/types/hashTree/types.d.ts +3 -0
  81. package/dist/types/hashTree/utils.d.ts +6 -0
  82. package/dist/types/index.d.ts +1 -0
  83. package/dist/types/interceptors/constant.d.ts +5 -0
  84. package/dist/types/interceptors/dataChannelAuthToken.d.ts +43 -0
  85. package/dist/types/interceptors/index.d.ts +2 -1
  86. package/dist/types/interceptors/utils.d.ts +1 -0
  87. package/dist/types/locus-info/index.d.ts +21 -2
  88. package/dist/types/locus-info/types.d.ts +1 -0
  89. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  90. package/dist/types/media/properties.d.ts +2 -1
  91. package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
  92. package/dist/types/meeting/index.d.ts +38 -6
  93. package/dist/types/meeting/request.d.ts +16 -1
  94. package/dist/types/meeting/request.type.d.ts +5 -0
  95. package/dist/types/meeting/util.d.ts +31 -0
  96. package/dist/types/meetings/index.d.ts +4 -2
  97. package/dist/types/member/index.d.ts +1 -0
  98. package/dist/types/member/util.d.ts +5 -0
  99. package/dist/types/metrics/constants.d.ts +1 -0
  100. package/dist/types/multistream/mediaRequestManager.d.ts +0 -23
  101. package/dist/types/reactions/reactions.type.d.ts +1 -0
  102. package/dist/types/webinar/utils.d.ts +6 -0
  103. package/dist/webinar/index.js +260 -90
  104. package/dist/webinar/index.js.map +1 -1
  105. package/dist/webinar/utils.js +25 -0
  106. package/dist/webinar/utils.js.map +1 -0
  107. package/package.json +24 -23
  108. package/src/aiEnableRequest/README.md +84 -0
  109. package/src/aiEnableRequest/index.ts +170 -0
  110. package/src/aiEnableRequest/utils.ts +25 -0
  111. package/src/annotation/index.ts +27 -7
  112. package/src/config.ts +3 -0
  113. package/src/constants.ts +29 -1
  114. package/src/hashTree/constants.ts +1 -0
  115. package/src/hashTree/hashTree.ts +17 -0
  116. package/src/hashTree/hashTreeParser.ts +627 -249
  117. package/src/hashTree/types.ts +4 -0
  118. package/src/hashTree/utils.ts +9 -0
  119. package/src/index.ts +8 -1
  120. package/src/interceptors/constant.ts +6 -0
  121. package/src/interceptors/dataChannelAuthToken.ts +170 -0
  122. package/src/interceptors/index.ts +2 -1
  123. package/src/interceptors/utils.ts +16 -0
  124. package/src/interpretation/index.ts +2 -2
  125. package/src/locus-info/controlsUtils.ts +11 -0
  126. package/src/locus-info/index.ts +231 -61
  127. package/src/locus-info/selfUtils.ts +1 -0
  128. package/src/locus-info/types.ts +1 -0
  129. package/src/media/MediaConnectionAwaiter.ts +41 -1
  130. package/src/media/properties.ts +3 -1
  131. package/src/meeting/in-meeting-actions.ts +12 -0
  132. package/src/meeting/index.ts +205 -44
  133. package/src/meeting/request.ts +42 -0
  134. package/src/meeting/request.type.ts +6 -0
  135. package/src/meeting/util.ts +160 -2
  136. package/src/meetings/index.ts +135 -41
  137. package/src/member/index.ts +10 -0
  138. package/src/member/util.ts +12 -0
  139. package/src/metrics/constants.ts +1 -0
  140. package/src/multistream/mediaRequestManager.ts +4 -54
  141. package/src/multistream/remoteMediaManager.ts +13 -0
  142. package/src/reachability/index.ts +9 -0
  143. package/src/reactions/reactions.type.ts +1 -0
  144. package/src/reconnection-manager/index.ts +0 -1
  145. package/src/webinar/index.ts +162 -5
  146. package/src/webinar/utils.ts +16 -0
  147. package/test/unit/spec/aiEnableRequest/index.ts +981 -0
  148. package/test/unit/spec/aiEnableRequest/utils.ts +130 -0
  149. package/test/unit/spec/annotation/index.ts +69 -7
  150. package/test/unit/spec/hashTree/hashTree.ts +66 -0
  151. package/test/unit/spec/hashTree/hashTreeParser.ts +1869 -189
  152. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +210 -0
  153. package/test/unit/spec/interceptors/utils.ts +75 -0
  154. package/test/unit/spec/locus-info/controlsUtils.js +29 -0
  155. package/test/unit/spec/locus-info/index.js +383 -46
  156. package/test/unit/spec/media/MediaConnectionAwaiter.ts +41 -1
  157. package/test/unit/spec/media/properties.ts +12 -3
  158. package/test/unit/spec/meeting/in-meeting-actions.ts +8 -2
  159. package/test/unit/spec/meeting/index.js +716 -115
  160. package/test/unit/spec/meeting/request.js +70 -0
  161. package/test/unit/spec/meeting/utils.js +438 -26
  162. package/test/unit/spec/meetings/index.js +652 -31
  163. package/test/unit/spec/member/index.js +28 -4
  164. package/test/unit/spec/member/util.js +65 -27
  165. package/test/unit/spec/multistream/mediaRequestManager.ts +2 -85
  166. package/test/unit/spec/multistream/remoteMediaManager.ts +30 -0
  167. package/test/unit/spec/reachability/index.ts +23 -0
  168. package/test/unit/spec/reconnection-manager/index.js +4 -8
  169. package/test/unit/spec/webinar/index.ts +348 -36
  170. package/test/unit/spec/webinar/utils.ts +39 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_webexErrors","_loggerProxy","_interopRequireDefault","_constants","_browserDetection","_intentToJoin","_joinMeeting2","_parameter","_permission","_passwordError","_captchaError","_triggerProxy","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","MeetingUtil","parseLocusJoin","response","parsed","locus","body","dataSets","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","mediaConnection","mediaId","remoteUpdateAudioVideo","meeting","audioMuted","videoMuted","_promise","reject","ParameterError","locusMediaRequest","send","type","selfUrl","sequence","locusInfo","muteOptions","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","webex","_webex$internal$devic","internal","device","ipNetworkDetector","supportsIpV4","supportsIpV6","config","meetings","backendIpv6NativeSupport","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","getCaEventLabelsForIpVersion","ipver","joinMeeting","_joinMeeting","_asyncToGenerator2","_regenerator","mark","_callee","options","_meeting$meetingInfo","reachability","clientMediaPreferences","_t","wrap","_context","prev","abrupt","getWebexObject","newMetrics","submitClientEvent","meetingId","joinCookie","preferTranscoding","isMultistream","getClientMediaPreferences","sent","roapMessage","getReachabilityReportToAttachToRoap","LoggerProxy","logger","error","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","locusClusterUrl","meetingInfo","correlationId","permissionToken","resourceId","moderator","pin","moveToResource","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","alias","then","res","_res$headers","setLocus","isoLocalClientMeetingJoinTime","headers","date","payload","trigger","identifiers","trackingId","trackingid","catch","_meeting$meetingInfo2","meetingLookupUrl","rawError","stop","_x","_x2","cleanUp","_meeting$webex","_meeting$webex$intern","_meeting$webex$intern2","_meeting$webex$intern3","meetingEnded","stopPeriodicLogUpload","breakouts","simultaneousInterpretation","callDiagnosticMetrics","clearEventLimitsForCorrelationId","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","_meeting$config","enableAutomaticLLM","updateLLMConnection","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","concat","prepareLeaveMeetingOptions","defaultOptions","leaveMeeting","isUserInLeftState","UserNotJoinedError","leaveOptions","moveMeeting","declineMeeting","reason","_locusInfo$parsedLocu","_locusInfo$parsedLocu2","parsedLocus","state","_LEFT_","isUserInIdleState","_locusInfo$parsedLocu3","_locusInfo$parsedLocu4","_IDLE_","isUserInJoinedState","_locusInfo$parsedLocu5","_locusInfo$parsedLocu6","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","errorToThrow","CaptchaError","errors","fatal","category","shownToUser","code","errorDescription","rawErrorMessage","sdkMessage","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","IntentToJoinError","JoinMeetingError","buildLeaveFetchRequestOptions","buildLeaveMeetingRequestOptions","getTrack","stream","audioTrack","videoTrack","audioTracks","videoTracks","getAudioTracks","getVideoTracks","_audioTracks","_audioTracks2","_slicedToArray2","_videoTracks","_videoTracks2","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","_locusInfo$parsedLocu7","_locusInfo$parsedLocu8","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","canManageBreakout","BREAKOUT_MANAGEMENT","canStartBreakout","DISABLE_BREAKOUT_START","canBroadcastMessageToBreakout","policies","BROADCAST_MESSAGE_TO_BREAKOUT","SELF_POLICY","SUPPORT_BROADCAST_MESSAGE","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","audioStream","LOG_HEADER","settings","getSettings","deviceId","log","_stringify","handleVideoLogging","videoStream","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","canStartManualCaption","MANUAL_CAPTION_START","isLocalRecordingStarted","LOCAL_RECORDING_STATUS_STARTED","isLocalRecordingStopped","LOCAL_RECORDING_STATUS_STOPPED","isLocalRecordingPaused","LOCAL_RECORDING_STATUS_PAUSED","isLocalStreamingStarted","STREAMING_STATUS_STARTED","isLocalStreamingStopped","STREAMING_STATUS_STOPPED","canStopManualCaption","MANUAL_CAPTION_STOP","isManualCaptionActive","MANUAL_CAPTION_STATUS_ACTIVE","isSpokenLanguageAutoDetectionEnabled","SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","showAutoEndMeetingWarning","SHOW_AUTO_END_MEETING_WARNING","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","requiresPostMeetingDataConsentPrompt","SHOW_POST_MEETING_DATA_CONSENT_PROMPT","canUserRenameOthers","CAN_RENAME_OTHERS","canShareWhiteBoard","SHARE_WHITEBOARD","SUPPORT_WHITEBOARD","canMoveToLobby","MOVE_TO_LOBBY","addSequence","requestBody","_meeting$locusInfo","updateLocusFromApiResponse","_response$body","handleLocusAPIResponse","generateBuildLocusDeltaRequestOptions","originalMeeting","meetingRef","WeakRef","buildLocusDeltaRequestOptions","originalOptions","deref","cloneDeep","generateLocusDeltaRequest","locusDeltaRequest","selfSupportsFeature","feature","userPolicies","parseInterpretationInfo","_meetingInfo$meetingS","siInfo","updateMeetingSIEnabled","turnOnSimultaneousInterpretation","currentSIInterpreter","hostSIEnabled","meetingSiteSetting","enableHostInterpreterControlSI","updateHostSIEnabled","renameKey","obj","oldKey","newKey","_meeting$simultaneous","_meeting$simultaneous2","lanuagesInfo","siLanguages","_iterator","_step","language","updateInterpretation","Trigger","file","function","EVENT_TRIGGERS","MEETING_INTERPRETATION_UPDATE","getChangeMeetingFloorErrorPayload","errorPayload","LOCAL_SHARE_ERRORS","UNDEFINED","DEVICE_NOT_JOINED","NO_MEDIA_FOR_DEVICE","NO_CONFLUENCE_ID","CONTENT_SHARING_DISABLED","LOCUS_PARTICIPANT_DNE","CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD","_default","exports"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraStream, LocalMicrophoneStream} from '@webex/media-helpers';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n SELF_POLICY,\n EVENT_TRIGGERS,\n LOCAL_SHARE_ERRORS,\n IP_VERSION,\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport Trigger from '../common/events/trigger-proxy';\n\nconst MeetingUtil = {\n parseLocusJoin: (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.dataSets = response.body.dataSets;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n },\n\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n return meeting.locusMediaRequest.send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n });\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n /**\n * Returns the current state of knowledge about whether we are on an ipv4-only or ipv6-only or mixed (ipv4 and ipv6) network.\n * The return value matches the possible values of \"ipver\" parameter used by the backend APIs.\n *\n * @param {Object} webex webex instance\n * @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend\n */\n getIpVersion(webex: any): IP_VERSION | undefined {\n const {supportsIpV4, supportsIpV6} = webex.internal.device.ipNetworkDetector;\n\n if (\n !webex.config.meetings.backendIpv6NativeSupport &&\n BrowserDetection().isBrowser('firefox')\n ) {\n // when backend doesn't support native ipv6,\n // then our NAT64/DNS64 based solution relies on FQDN ICE candidates, but Firefox doesn't support them,\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1713128\n // so for Firefox we don't want the backend to activate the \"ipv6 feature\"\n return undefined;\n }\n\n if (supportsIpV4 && supportsIpV6) {\n return IP_VERSION.ipv4_and_ipv6;\n }\n\n if (supportsIpV4) {\n return IP_VERSION.only_ipv4;\n }\n\n if (supportsIpV6) {\n return IP_VERSION.only_ipv6;\n }\n\n return IP_VERSION.unknown;\n },\n\n /**\n * Returns CA event labels related to Orpheus ipver parameter that can be sent to CA with any CA event\n * @param {any} webex instance\n * @returns {Array<string>|undefined} array of CA event labels or undefined if no labels should be sent\n */\n getCaEventLabelsForIpVersion(webex: any): Array<string> | undefined {\n const ipver = MeetingUtil.getIpVersion(webex);\n\n switch (ipver) {\n case IP_VERSION.unknown:\n return undefined;\n case IP_VERSION.only_ipv4:\n return ['hasIpv4_true'];\n case IP_VERSION.only_ipv6:\n return ['hasIpv6_true'];\n case IP_VERSION.ipv4_and_ipv6:\n return ['hasIpv4_true', 'hasIpv6_true'];\n default:\n return undefined;\n }\n },\n\n joinMeeting: async (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const webex = meeting.getWebexObject();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.request',\n options: {meetingId: meeting.id},\n });\n\n let reachability;\n let clientMediaPreferences = {\n // bare minimum fallback value that should allow us to join\n ipver: IP_VERSION.unknown,\n joinCookie: undefined,\n preferTranscoding: !meeting.isMultistream,\n };\n\n try {\n clientMediaPreferences = await webex.meetings.reachability.getClientMediaPreferences(\n meeting.isMultistream,\n MeetingUtil.getIpVersion(webex)\n );\n if (options.roapMessage) {\n // we only need to attach reachability if we are sending a roap message\n // sending reachability on its own will cause Locus to reject our join request\n reachability = await webex.meetings.reachability.getReachabilityReportToAttachToRoap();\n }\n } catch (e) {\n LoggerProxy.logger.error(\n 'Meeting:util#joinMeeting --> Error getting reachability or clientMediaPreferences:',\n e\n );\n }\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n locusClusterUrl: meeting.meetingInfo?.locusClusterUrl,\n correlationId: meeting.correlationId,\n reachability,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n asResourceOccupant: options.asResourceOccupant,\n breakoutsSupported: options.breakoutsSupported,\n locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\n clientMediaPreferences,\n alias: options.alias,\n })\n .then((res) => {\n const parsed = MeetingUtil.parseLocusJoin(res);\n meeting.setLocus(parsed);\n meeting.isoLocalClientMeetingJoinTime = res?.headers?.date; // read from header if exist, else fall back to system clock : https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-555657\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n trigger: 'loci-update',\n identifiers: {\n trackingId: res.headers.trackingid,\n },\n },\n options: {\n meetingId: meeting.id,\n mediaConnections: parsed.mediaConnections,\n },\n });\n\n return parsed;\n })\n .catch((err) => {\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n identifiers: {meetingLookupUrl: meeting.meetingInfo?.meetingLookupUrl},\n },\n options: {meetingId: meeting.id, rawError: err},\n });\n\n throw err;\n });\n },\n\n cleanUp: (meeting) => {\n meeting.getWebexObject().internal.device.meetingEnded();\n meeting.stopPeriodicLogUpload();\n\n meeting.breakouts.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\n meeting.locusMediaRequest = undefined;\n\n meeting.webex?.internal?.newMetrics?.callDiagnosticMetrics?.clearEventLimitsForCorrelationId(\n meeting.correlationId\n );\n\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeRemoteStreams())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.cleanupLocalStreams();\n meeting.unsetRemoteStreams();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => {\n if (meeting.config?.enableAutomaticLLM) {\n meeting.updateLLMConnection();\n }\n });\n },\n\n disconnectPhoneAudio: (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest.disconnectPhoneAudio(options).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Returns options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} leave options\n */\n prepareLeaveMeetingOptions: (meeting, options: any = {}) => {\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n return {...defaultOptions, ...options};\n },\n\n // by default will leave on meeting's resourceId\n // if you explicity want it not to leave on resource id, pass\n // {resourceId: null}\n // TODO: chris, you can modify this however you want\n leaveMeeting: (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n joinMeetingOptions: (meeting, options: any = {}) => {\n const webex = meeting.getWebexObject();\n\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n const errorToThrow = new CaptchaError();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.meetinginfo.response',\n options: {\n meetingId: meeting.id,\n },\n payload: {\n errors: [\n {\n fatal: false,\n category: 'expected',\n name: 'other',\n shownToUser: false,\n errorCode: errorToThrow.code,\n errorDescription: errorToThrow.name,\n rawErrorMessage: errorToThrow.sdkMessage,\n },\n ],\n },\n });\n\n return Promise.reject(errorToThrow);\n }\n\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n const errorToThrow = new PasswordError();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.meetinginfo.response',\n options: {\n meetingId: meeting.id,\n },\n payload: {\n errors: [\n {\n fatal: false,\n category: 'expected',\n name: 'other',\n shownToUser: false,\n errorCode: errorToThrow.code,\n errorDescription: errorToThrow.name,\n rawErrorMessage: errorToThrow.sdkMessage,\n },\n ],\n },\n });\n\n return Promise.reject(errorToThrow);\n }\n\n if (options.pin) {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.collected',\n options: {\n meetingId: meeting.id,\n },\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options).catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.prompt',\n options: {\n meetingId: meeting.id,\n },\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n /**\n * Returns request options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} request options\n */\n buildLeaveFetchRequestOptions: (meeting, options: any = {}) => {\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest.buildLeaveMeetingRequestOptions(leaveOptions);\n },\n\n getTrack: (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n },\n\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n\n canStartBreakout: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_START),\n\n canBroadcastMessageToBreakout: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT) &&\n !!policies[SELF_POLICY.SUPPORT_BROADCAST_MESSAGE],\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n lockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n },\n\n unlockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n },\n\n handleAudioLogging: (audioStream?: LocalMicrophoneStream) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioStream) {\n const settings = audioStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleVideoLogging: (videoStream?: LocalCameraStream) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoStream) {\n const settings = videoStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n endMeetingForAll: (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n canStartManualCaption: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_START),\n\n isLocalRecordingStarted: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STARTED),\n\n isLocalRecordingStopped: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STOPPED),\n\n isLocalRecordingPaused: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_PAUSED),\n\n isLocalStreamingStarted: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STARTED),\n\n isLocalStreamingStopped: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STOPPED),\n\n canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),\n\n isManualCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STATUS_ACTIVE),\n\n isSpokenLanguageAutoDetectionEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n showAutoEndMeetingWarning: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SHOW_AUTO_END_MEETING_WARNING),\n\n canSendReactions: (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n },\n canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n requiresPostMeetingDataConsentPrompt: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SHOW_POST_MEETING_DATA_CONSENT_PROMPT),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n // Default empty value for policies if we get an undefined value (ie permissionToken is not available)\n canShareWhiteBoard: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.SHARE_WHITEBOARD) &&\n !!policies[SELF_POLICY.SUPPORT_WHITEBOARD],\n\n canMoveToLobby: (displayHints) => displayHints.includes(DISPLAY_HINTS.MOVE_TO_LOBBY),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the locus\n * information returned from API requests made to Locus\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusFromApiResponse: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n if (response?.body?.locus) {\n meeting.locusInfo.handleLocusAPIResponse(meeting, response.body);\n }\n\n return response;\n },\n\n generateBuildLocusDeltaRequestOptions: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return originalOptions;\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return options;\n };\n\n return buildLocusDeltaRequestOptions;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions =\n MeetingUtil.generateBuildLocusDeltaRequestOptions(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = buildLocusDeltaRequestOptions(originalOptions);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusFromApiResponse(meeting, response));\n };\n\n return locusDeltaRequest;\n },\n\n selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => {\n if (!userPolicies) {\n return true;\n }\n\n return userPolicies[feature];\n },\n\n parseInterpretationInfo: (meeting, meetingInfo) => {\n if (!meeting || !meetingInfo) {\n return;\n }\n const siInfo = meetingInfo.simultaneousInterpretation;\n meeting.simultaneousInterpretation.updateMeetingSIEnabled(\n !!meetingInfo.turnOnSimultaneousInterpretation,\n !!siInfo?.currentSIInterpreter\n );\n const hostSIEnabled = !!(\n meetingInfo.turnOnSimultaneousInterpretation &&\n meetingInfo?.meetingSiteSetting?.enableHostInterpreterControlSI\n );\n meeting.simultaneousInterpretation.updateHostSIEnabled(hostSIEnabled);\n\n function renameKey(obj, oldKey, newKey) {\n if (oldKey in obj) {\n obj[newKey] = obj[oldKey];\n delete obj[oldKey];\n }\n }\n if (siInfo) {\n const lanuagesInfo = cloneDeep(siInfo.siLanguages);\n for (const language of lanuagesInfo) {\n renameKey(language, 'languageCode', 'languageName');\n renameKey(language, 'languageGroupId', 'languageCode');\n }\n if (!meeting.simultaneousInterpretation?.siLanguages?.length) {\n meeting.simultaneousInterpretation.updateInterpretation({siLanguages: lanuagesInfo});\n }\n }\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'parseInterpretationInfo',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n },\n\n /**\n * Returns a CA-recognized error payload for the specified raw error message/reason.\n *\n * New errors can be added to this function for handling in the future\n *\n * @param {String} reason the raw error message\n * @returns {Array<object>} an array of payload objects\n */\n getChangeMeetingFloorErrorPayload: (reason: string) => {\n const errorPayload = {\n errorDescription: reason,\n name: 'locus.response',\n shownToUser: false,\n };\n if (reason.includes(LOCAL_SHARE_ERRORS.UNDEFINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.DEVICE_NOT_JOINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4050,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_MEDIA_FOR_DEVICE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'media',\n errorCode: 2048,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_CONFLUENCE_ID)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4064,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_SHARING_DISABLED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4065,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.LOCUS_PARTICIPANT_DNE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4066,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4067,\n },\n ];\n }\n\n // return unknown error\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n },\n};\n\nexport default MeetingUtil;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_url","_interopRequireDefault","require","_lodash","_webexErrors","_loggerProxy","_constants","_browserDetection","_intentToJoin","_joinMeeting2","_parameter","_permission","_passwordError","_captchaError","_triggerProxy","_types","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","MeetingUtil","parseLocusJoin","response","parsed","locus","body","dataSets","metadata","metaData","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","mediaConnection","mediaId","sanitizeWebSocketUrl","urlString","parsedUrl","parse","protocol","host","pathname","normalizedPathname","concat","error","LoggerProxy","logger","warn","_urlsPartiallyMatch","url1","url2","parsedUrl1","parsedUrl2","host1","host2","pathname1","pathname2","combined1","combined2","endsWith","getSocketUrlInfo","webex","_webex$internal","_webex$internal$mercu","_webex$internal$mercu2","_webex$internal2","_webex$internal2$devi","mercuryUrl","internal","mercury","socket","deviceUrl","device","webSocketUrl","sanitizedMercuryUrl","sanitizedDeviceUrl","hasMismatchedSocket","mercurySocketUrl","deviceSocketUrl","remoteUpdateAudioVideo","meeting","audioMuted","videoMuted","_promise","reject","ParameterError","locusMediaRequest","send","type","selfUrl","sequence","locusInfo","muteOptions","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","err","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","_webex$internal$devic","ipNetworkDetector","supportsIpV4","supportsIpV6","config","meetings","backendIpv6NativeSupport","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","getCaEventLabelsForIpVersion","ipver","joinMeeting","_joinMeeting","_asyncToGenerator2","_regenerator","mark","_callee","options","_meeting$meetingInfo","reachability","clientMediaPreferences","_t","wrap","_context","prev","abrupt","getWebexObject","newMetrics","submitClientEvent","meetingId","joinCookie","preferTranscoding","isMultistream","getClientMediaPreferences","sent","roapMessage","getReachabilityReportToAttachToRoap","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","locusClusterUrl","meetingInfo","correlationId","permissionToken","resourceId","moderator","pin","moveToResource","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","alias","then","res","_res$headers","setLocus","isoLocalClientMeetingJoinTime","headers","date","socketUrlInfo","payload","trigger","identifiers","trackingId","trackingid","eventData","catch","_meeting$meetingInfo2","meetingLookupUrl","rawError","stop","_x","_x2","cleanUp","_meeting$webex","_meeting$webex$intern","_meeting$webex$intern2","_meeting$webex$intern3","meetingEnded","stopPeriodicLogUpload","breakouts","webinar","simultaneousInterpretation","callDiagnosticMetrics","clearEventLimitsForCorrelationId","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","_meeting$config","enableAutomaticLLM","cleanupLLMConneciton","throwOnError","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","prepareLeaveMeetingOptions","defaultOptions","leaveMeeting","isUserInLeftState","UserNotJoinedError","leaveOptions","moveMeeting","declineMeeting","reason","_locusInfo$parsedLocu","_locusInfo$parsedLocu2","parsedLocus","state","_LEFT_","isUserInIdleState","_locusInfo$parsedLocu3","_locusInfo$parsedLocu4","_IDLE_","isUserInJoinedState","_locusInfo$parsedLocu5","_locusInfo$parsedLocu6","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","errorToThrow","CaptchaError","errors","fatal","category","shownToUser","code","errorDescription","rawErrorMessage","sdkMessage","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","IntentToJoinError","JoinMeetingError","buildLeaveFetchRequestOptions","buildLeaveMeetingRequestOptions","getTrack","stream","audioTrack","videoTrack","audioTracks","videoTracks","getAudioTracks","getVideoTracks","_audioTracks","_audioTracks2","_slicedToArray2","_videoTracks","_videoTracks2","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","_locusInfo$parsedLocu7","_locusInfo$parsedLocu8","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","requireHostEndMeetingBeforeLeave","REQUIRE_HOST_END_MEETING_BEFORE_LEAVE","END_MEETING","canManageBreakout","BREAKOUT_MANAGEMENT","canStartBreakout","DISABLE_BREAKOUT_START","canBroadcastMessageToBreakout","policies","BROADCAST_MESSAGE_TO_BREAKOUT","SELF_POLICY","SUPPORT_BROADCAST_MESSAGE","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","audioStream","LOG_HEADER","settings","getSettings","deviceId","log","_stringify","handleVideoLogging","videoStream","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","canStartManualCaption","MANUAL_CAPTION_START","isLocalRecordingStarted","LOCAL_RECORDING_STATUS_STARTED","isLocalRecordingStopped","LOCAL_RECORDING_STATUS_STOPPED","isLocalRecordingPaused","LOCAL_RECORDING_STATUS_PAUSED","isLocalStreamingStarted","STREAMING_STATUS_STARTED","isLocalStreamingStopped","STREAMING_STATUS_STOPPED","canStopManualCaption","MANUAL_CAPTION_STOP","isManualCaptionActive","MANUAL_CAPTION_STATUS_ACTIVE","isSpokenLanguageAutoDetectionEnabled","SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","showAutoEndMeetingWarning","SHOW_AUTO_END_MEETING_WARNING","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","requiresPostMeetingDataConsentPrompt","SHOW_POST_MEETING_DATA_CONSENT_PROMPT","canUserRenameOthers","CAN_RENAME_OTHERS","canShareWhiteBoard","SHARE_WHITEBOARD","SUPPORT_WHITEBOARD","canMoveToLobby","MOVE_TO_LOBBY","addSequence","requestBody","_meeting$locusInfo","updateLocusFromApiResponse","_response$body","handleLocusAPIResponse","generateBuildLocusDeltaRequestOptions","originalMeeting","meetingRef","WeakRef","buildLocusDeltaRequestOptions","originalOptions","deref","cloneDeep","generateLocusDeltaRequest","locusDeltaRequest","canAttendeeRequestAiAssistantEnabled","roles","isHostOrCoHost","ServerRoles","Cohost","Moderator","ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED","attendeeRequestAiAssistantDeclinedAll","ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL","selfSupportsFeature","feature","userPolicies","parseInterpretationInfo","_meetingInfo$meetingS","siInfo","updateMeetingSIEnabled","turnOnSimultaneousInterpretation","currentSIInterpreter","hostSIEnabled","meetingSiteSetting","enableHostInterpreterControlSI","updateHostSIEnabled","renameKey","obj","oldKey","newKey","_meeting$simultaneous","_meeting$simultaneous2","lanuagesInfo","siLanguages","_iterator","_step","language","updateInterpretation","Trigger","file","function","EVENT_TRIGGERS","MEETING_INTERPRETATION_UPDATE","getChangeMeetingFloorErrorPayload","errorPayload","LOCAL_SHARE_ERRORS","UNDEFINED","DEVICE_NOT_JOINED","NO_MEDIA_FOR_DEVICE","NO_CONFLUENCE_ID","CONTENT_SHARING_DISABLED","LOCUS_PARTICIPANT_DNE","CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD","_default","exports"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraStream, LocalMicrophoneStream} from '@webex/media-helpers';\nimport url from 'url';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n SELF_POLICY,\n EVENT_TRIGGERS,\n LOCAL_SHARE_ERRORS,\n IP_VERSION,\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport Trigger from '../common/events/trigger-proxy';\nimport {ServerRoles} from '../member/types';\n\nconst MeetingUtil = {\n parseLocusJoin: (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.dataSets = response.body.dataSets;\n parsed.metadata = response.body.metaData;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n },\n\n /**\n * Sanitizes a WebSocket URL by extracting only protocol, host, and pathname\n * Returns concatenated protocol + host + pathname for safe logging\n * Note: This is used for logging only; URL matching uses partial matching via _urlsPartiallyMatch\n * @param {string} urlString - The URL to sanitize\n * @returns {string} Sanitized URL or empty string if parsing fails\n */\n sanitizeWebSocketUrl: (urlString: string): string => {\n if (!urlString || typeof urlString !== 'string') {\n return '';\n }\n\n try {\n const parsedUrl = url.parse(urlString);\n const protocol = parsedUrl.protocol || '';\n const host = parsedUrl.host || '';\n\n // If we don't have at least protocol and host, it's not a valid URL\n if (!protocol || !host) {\n return '';\n }\n\n const pathname = parsedUrl.pathname || '';\n\n // Strip trailing slash if pathname is just '/'\n const normalizedPathname = pathname === '/' ? '' : pathname;\n\n return `${protocol}//${host}${normalizedPathname}`;\n } catch (error) {\n LoggerProxy.logger.warn(\n `Meeting:util#sanitizeWebSocketUrl --> unable to parse URL: ${error}`\n );\n\n return '';\n }\n },\n\n /**\n * Checks if two URLs partially match using an endsWith approach\n * Combines host and pathname, then checks if one ends with the other\n * This handles cases where one URL goes through a proxy (e.g., /webproxy/) while the other is direct\n * @param {string} url1 - First URL to compare\n * @param {string} url2 - Second URL to compare\n * @returns {boolean} True if one URL path ends with the other (partial match), false otherwise\n */\n _urlsPartiallyMatch: (url1: string, url2: string): boolean => {\n if (!url1 || !url2) {\n return false;\n }\n\n try {\n const parsedUrl1 = url.parse(url1);\n const parsedUrl2 = url.parse(url2);\n\n const host1 = parsedUrl1.host || '';\n const host2 = parsedUrl2.host || '';\n const pathname1 = parsedUrl1.pathname || '';\n const pathname2 = parsedUrl2.pathname || '';\n\n // If either failed to parse, they don't match\n if (!host1 || !host2 || !pathname1 || !pathname2) {\n return false;\n }\n\n // Combine host and pathname for comparison\n const combined1 = host1 + pathname1;\n const combined2 = host2 + pathname2;\n\n // Check if one combined path ends with the other (handles proxy URLs)\n return combined1.endsWith(combined2) || combined2.endsWith(combined1);\n } catch (e) {\n LoggerProxy.logger.warn('Meeting:util#_urlsPartiallyMatch --> error comparing URLs', e);\n\n return false;\n }\n },\n\n /**\n * Gets socket URL information for metrics, including whether the socket URLs match\n * Uses partial matching to handle proxy URLs (e.g., URLs with /webproxy/ prefix)\n * @param {Object} webex - The webex instance\n * @returns {Object} Object with hasMismatchedSocket, mercurySocketUrl, and deviceSocketUrl properties\n */\n getSocketUrlInfo: (\n webex: any\n ): {hasMismatchedSocket: boolean; mercurySocketUrl: string; deviceSocketUrl: string} => {\n try {\n const mercuryUrl = webex?.internal?.mercury?.socket?.url;\n const deviceUrl = webex?.internal?.device?.webSocketUrl;\n\n const sanitizedMercuryUrl = MeetingUtil.sanitizeWebSocketUrl(mercuryUrl);\n const sanitizedDeviceUrl = MeetingUtil.sanitizeWebSocketUrl(deviceUrl);\n\n // Only report a mismatch if both URLs are present and they don't match\n // If either URL is missing, we can't determine if there's a mismatch, so return false\n let hasMismatchedSocket = false;\n if (sanitizedMercuryUrl && sanitizedDeviceUrl) {\n hasMismatchedSocket = !MeetingUtil._urlsPartiallyMatch(mercuryUrl, deviceUrl);\n }\n\n return {\n hasMismatchedSocket,\n mercurySocketUrl: sanitizedMercuryUrl,\n deviceSocketUrl: sanitizedDeviceUrl,\n };\n } catch (error) {\n LoggerProxy.logger.warn(\n `Meeting:util#getSocketUrlInfo --> error getting socket URL info: ${error}`\n );\n\n return {\n hasMismatchedSocket: false,\n mercurySocketUrl: '',\n deviceSocketUrl: '',\n };\n }\n },\n\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n return meeting.locusMediaRequest.send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n });\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n /**\n * Returns the current state of knowledge about whether we are on an ipv4-only or ipv6-only or mixed (ipv4 and ipv6) network.\n * The return value matches the possible values of \"ipver\" parameter used by the backend APIs.\n *\n * @param {Object} webex webex instance\n * @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend\n */\n getIpVersion(webex: any): IP_VERSION | undefined {\n const {supportsIpV4, supportsIpV6} = webex.internal.device.ipNetworkDetector;\n\n if (\n !webex.config.meetings.backendIpv6NativeSupport &&\n BrowserDetection().isBrowser('firefox')\n ) {\n // when backend doesn't support native ipv6,\n // then our NAT64/DNS64 based solution relies on FQDN ICE candidates, but Firefox doesn't support them,\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1713128\n // so for Firefox we don't want the backend to activate the \"ipv6 feature\"\n return undefined;\n }\n\n if (supportsIpV4 && supportsIpV6) {\n return IP_VERSION.ipv4_and_ipv6;\n }\n\n if (supportsIpV4) {\n return IP_VERSION.only_ipv4;\n }\n\n if (supportsIpV6) {\n return IP_VERSION.only_ipv6;\n }\n\n return IP_VERSION.unknown;\n },\n\n /**\n * Returns CA event labels related to Orpheus ipver parameter that can be sent to CA with any CA event\n * @param {any} webex instance\n * @returns {Array<string>|undefined} array of CA event labels or undefined if no labels should be sent\n */\n getCaEventLabelsForIpVersion(webex: any): Array<string> | undefined {\n const ipver = MeetingUtil.getIpVersion(webex);\n\n switch (ipver) {\n case IP_VERSION.unknown:\n return undefined;\n case IP_VERSION.only_ipv4:\n return ['hasIpv4_true'];\n case IP_VERSION.only_ipv6:\n return ['hasIpv6_true'];\n case IP_VERSION.ipv4_and_ipv6:\n return ['hasIpv4_true', 'hasIpv6_true'];\n default:\n return undefined;\n }\n },\n\n joinMeeting: async (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const webex = meeting.getWebexObject();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.request',\n options: {meetingId: meeting.id},\n });\n\n let reachability;\n let clientMediaPreferences = {\n // bare minimum fallback value that should allow us to join\n ipver: IP_VERSION.unknown,\n joinCookie: undefined,\n preferTranscoding: !meeting.isMultistream,\n };\n\n try {\n clientMediaPreferences = await webex.meetings.reachability.getClientMediaPreferences(\n meeting.isMultistream,\n MeetingUtil.getIpVersion(webex)\n );\n if (options.roapMessage) {\n // we only need to attach reachability if we are sending a roap message\n // sending reachability on its own will cause Locus to reject our join request\n reachability = await webex.meetings.reachability.getReachabilityReportToAttachToRoap();\n }\n } catch (e) {\n LoggerProxy.logger.error(\n 'Meeting:util#joinMeeting --> Error getting reachability or clientMediaPreferences:',\n e\n );\n }\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n locusClusterUrl: meeting.meetingInfo?.locusClusterUrl,\n correlationId: meeting.correlationId,\n reachability,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n asResourceOccupant: options.asResourceOccupant,\n breakoutsSupported: options.breakoutsSupported,\n locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\n clientMediaPreferences,\n alias: options.alias,\n })\n .then((res) => {\n const parsed = MeetingUtil.parseLocusJoin(res);\n meeting.setLocus(parsed);\n meeting.isoLocalClientMeetingJoinTime = res?.headers?.date; // read from header if exist, else fall back to system clock : https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-555657\n const socketUrlInfo = MeetingUtil.getSocketUrlInfo(webex);\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n trigger: 'loci-update',\n identifiers: {\n trackingId: res.headers.trackingid,\n },\n eventData: {\n ...socketUrlInfo,\n },\n },\n options: {\n meetingId: meeting.id,\n mediaConnections: parsed.mediaConnections,\n },\n });\n\n return parsed;\n })\n .catch((err) => {\n const socketUrlInfo = MeetingUtil.getSocketUrlInfo(webex);\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n identifiers: {meetingLookupUrl: meeting.meetingInfo?.meetingLookupUrl},\n eventData: {\n ...socketUrlInfo,\n },\n },\n options: {\n meetingId: meeting.id,\n rawError: err,\n },\n });\n\n throw err;\n });\n },\n\n cleanUp: (meeting) => {\n meeting.getWebexObject().internal.device.meetingEnded();\n meeting.stopPeriodicLogUpload();\n\n meeting.breakouts.cleanUp();\n meeting.webinar.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\n meeting.locusMediaRequest = undefined;\n\n meeting.webex?.internal?.newMetrics?.callDiagnosticMetrics?.clearEventLimitsForCorrelationId(\n meeting.correlationId\n );\n\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeRemoteStreams())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.cleanupLocalStreams();\n meeting.unsetRemoteStreams();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => {\n if (meeting.config?.enableAutomaticLLM) {\n return meeting.cleanupLLMConneciton({throwOnError: false});\n }\n\n return undefined;\n });\n },\n\n disconnectPhoneAudio: (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest.disconnectPhoneAudio(options).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Returns options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} leave options\n */\n prepareLeaveMeetingOptions: (meeting, options: any = {}) => {\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n return {...defaultOptions, ...options};\n },\n\n // by default will leave on meeting's resourceId\n // if you explicity want it not to leave on resource id, pass\n // {resourceId: null}\n // TODO: chris, you can modify this however you want\n leaveMeeting: (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n joinMeetingOptions: (meeting, options: any = {}) => {\n const webex = meeting.getWebexObject();\n\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n const errorToThrow = new CaptchaError();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.meetinginfo.response',\n options: {\n meetingId: meeting.id,\n },\n payload: {\n errors: [\n {\n fatal: false,\n category: 'expected',\n name: 'other',\n shownToUser: false,\n errorCode: errorToThrow.code,\n errorDescription: errorToThrow.name,\n rawErrorMessage: errorToThrow.sdkMessage,\n },\n ],\n },\n });\n\n return Promise.reject(errorToThrow);\n }\n\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n const errorToThrow = new PasswordError();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.meetinginfo.response',\n options: {\n meetingId: meeting.id,\n },\n payload: {\n errors: [\n {\n fatal: false,\n category: 'expected',\n name: 'other',\n shownToUser: false,\n errorCode: errorToThrow.code,\n errorDescription: errorToThrow.name,\n rawErrorMessage: errorToThrow.sdkMessage,\n },\n ],\n },\n });\n\n return Promise.reject(errorToThrow);\n }\n\n if (options.pin) {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.collected',\n options: {\n meetingId: meeting.id,\n },\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options).catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.prompt',\n options: {\n meetingId: meeting.id,\n },\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n /**\n * Returns request options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} request options\n */\n buildLeaveFetchRequestOptions: (meeting, options: any = {}) => {\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest.buildLeaveMeetingRequestOptions(leaveOptions);\n },\n\n getTrack: (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n },\n\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n requireHostEndMeetingBeforeLeave: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.REQUIRE_HOST_END_MEETING_BEFORE_LEAVE) ||\n (!displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) &&\n displayHints.includes(DISPLAY_HINTS.END_MEETING)),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n\n canStartBreakout: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_START),\n\n canBroadcastMessageToBreakout: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT) &&\n !!policies[SELF_POLICY.SUPPORT_BROADCAST_MESSAGE],\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n lockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n },\n\n unlockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n },\n\n handleAudioLogging: (audioStream?: LocalMicrophoneStream) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioStream) {\n const settings = audioStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleVideoLogging: (videoStream?: LocalCameraStream) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoStream) {\n const settings = videoStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n endMeetingForAll: (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n canStartManualCaption: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_START),\n\n isLocalRecordingStarted: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STARTED),\n\n isLocalRecordingStopped: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STOPPED),\n\n isLocalRecordingPaused: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_PAUSED),\n\n isLocalStreamingStarted: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STARTED),\n\n isLocalStreamingStopped: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STOPPED),\n\n canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),\n\n isManualCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STATUS_ACTIVE),\n\n isSpokenLanguageAutoDetectionEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SPOKEN_LANGUAGE_AUTO_DETECTION_ENABLED),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n showAutoEndMeetingWarning: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SHOW_AUTO_END_MEETING_WARNING),\n\n canSendReactions: (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n },\n canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n requiresPostMeetingDataConsentPrompt: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SHOW_POST_MEETING_DATA_CONSENT_PROMPT),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n // Default empty value for policies if we get an undefined value (ie permissionToken is not available)\n canShareWhiteBoard: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.SHARE_WHITEBOARD) &&\n !!policies[SELF_POLICY.SUPPORT_WHITEBOARD],\n\n canMoveToLobby: (displayHints) => displayHints.includes(DISPLAY_HINTS.MOVE_TO_LOBBY),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the locus\n * information returned from API requests made to Locus\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusFromApiResponse: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n if (response?.body?.locus) {\n meeting.locusInfo.handleLocusAPIResponse(meeting, response.body);\n }\n\n return response;\n },\n\n generateBuildLocusDeltaRequestOptions: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return originalOptions;\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return options;\n };\n\n return buildLocusDeltaRequestOptions;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions =\n MeetingUtil.generateBuildLocusDeltaRequestOptions(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = buildLocusDeltaRequestOptions(originalOptions);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusFromApiResponse(meeting, response));\n };\n\n return locusDeltaRequest;\n },\n\n canAttendeeRequestAiAssistantEnabled: (displayHints = [], roles: any[] = []) => {\n const isHostOrCoHost =\n roles.includes(ServerRoles.Cohost) || roles.includes(ServerRoles.Moderator);\n\n if (isHostOrCoHost) {\n return false;\n }\n\n if (displayHints.includes(DISPLAY_HINTS.ATTENDEE_REQUEST_AI_ASSISTANT_ENABLED)) {\n return true;\n }\n\n return false;\n },\n\n attendeeRequestAiAssistantDeclinedAll: (displayHints = []) =>\n displayHints.includes(DISPLAY_HINTS.ATTENDEE_REQUEST_AI_ASSISTANT_DECLINED_ALL),\n\n selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => {\n if (!userPolicies) {\n return true;\n }\n\n return userPolicies[feature];\n },\n\n parseInterpretationInfo: (meeting, meetingInfo) => {\n if (!meeting || !meetingInfo) {\n return;\n }\n const siInfo = meetingInfo.simultaneousInterpretation;\n meeting.simultaneousInterpretation.updateMeetingSIEnabled(\n !!meetingInfo.turnOnSimultaneousInterpretation,\n !!siInfo?.currentSIInterpreter\n );\n const hostSIEnabled = !!(\n meetingInfo.turnOnSimultaneousInterpretation &&\n meetingInfo?.meetingSiteSetting?.enableHostInterpreterControlSI\n );\n meeting.simultaneousInterpretation.updateHostSIEnabled(hostSIEnabled);\n\n function renameKey(obj, oldKey, newKey) {\n if (oldKey in obj) {\n obj[newKey] = obj[oldKey];\n delete obj[oldKey];\n }\n }\n if (siInfo) {\n const lanuagesInfo = cloneDeep(siInfo.siLanguages);\n for (const language of lanuagesInfo) {\n renameKey(language, 'languageCode', 'languageName');\n renameKey(language, 'languageGroupId', 'languageCode');\n }\n if (!meeting.simultaneousInterpretation?.siLanguages?.length) {\n meeting.simultaneousInterpretation.updateInterpretation({siLanguages: lanuagesInfo});\n }\n }\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'parseInterpretationInfo',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n },\n\n /**\n * Returns a CA-recognized error payload for the specified raw error message/reason.\n *\n * New errors can be added to this function for handling in the future\n *\n * @param {String} reason the raw error message\n * @returns {Array<object>} an array of payload objects\n */\n getChangeMeetingFloorErrorPayload: (reason: string) => {\n const errorPayload = {\n errorDescription: reason,\n name: 'locus.response',\n shownToUser: false,\n };\n if (reason.includes(LOCAL_SHARE_ERRORS.UNDEFINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.DEVICE_NOT_JOINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4050,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_MEDIA_FOR_DEVICE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'media',\n errorCode: 2048,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_CONFLUENCE_ID)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4064,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_SHARING_DISABLED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4065,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.LOCUS_PARTICIPANT_DNE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4066,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4067,\n },\n ];\n }\n\n // return unknown error\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n },\n};\n\nexport default MeetingUtil;\n"],"mappings":"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","ignoreList":[]}
@@ -63,6 +63,7 @@ var _webexErrors = require("../common/errors/webex-errors");
63
63
  var _noMeetingInfo = _interopRequireDefault(require("../common/errors/no-meeting-info"));
64
64
  var _joinForbiddenError = _interopRequireDefault(require("../common/errors/join-forbidden-error"));
65
65
  var _utils = require("../hashTree/utils");
66
+ var _locusInfo = require("../locus-info");
66
67
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
67
68
  function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
68
69
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -194,6 +195,8 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
194
195
  (0, _defineProperty2.default)(_this, "preferredWebexSite", void 0);
195
196
  (0, _defineProperty2.default)(_this, "reachability", void 0);
196
197
  (0, _defineProperty2.default)(_this, "registered", void 0);
198
+ (0, _defineProperty2.default)(_this, "registrationPromise", void 0);
199
+ (0, _defineProperty2.default)(_this, "unregistrationPromise", void 0);
197
200
  (0, _defineProperty2.default)(_this, "request", void 0);
198
201
  (0, _defineProperty2.default)(_this, "geoHintInfo", void 0);
199
202
  (0, _defineProperty2.default)(_this, "meetingInfo", void 0);
@@ -519,25 +522,29 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
519
522
  // };
520
523
  // rather then locus object change to locus url
521
524
 
522
- if (data.eventType !== _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
523
- if (data.locus && data.locus.fullState && data.locus.fullState.state === _constants.LOCUS.STATE.INACTIVE) {
524
- // just ignore the event as its already ended and not active
525
- _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
526
- return;
527
- }
525
+ if (data.eventType === _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
526
+ // We're about to create a new meeting object from this hash tree message.
527
+ // There is some existing (pre-hash trees) SDK logic here that requires a locus object
528
+ // (at the very minimum we need locus.url to be set)
529
+ // so we try to create locus from the received hash tree message
530
+ // it will not be complete, in most cases it will only have the self part, but that's still better than nothing
531
+ var _createLocusFromHashT = (0, _locusInfo.createLocusFromHashTreeMessage)(data.stateElementsMessage),
532
+ locus = _createLocusFromHashT.locus;
533
+ data.locus = locus;
534
+ }
535
+ if (data.locus && data.locus.fullState && data.locus.fullState.state === _constants.LOCUS.STATE.INACTIVE) {
536
+ // just ignore the event as its already ended and not active
537
+ _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
538
+ return;
539
+ }
528
540
 
529
- // When its wireless share or guest and user leaves the meeting we dont have to keep the meeting object
530
- // Any future events will be neglected
541
+ // When its wireless share or guest and user leaves the meeting we dont have to keep the meeting object
542
+ // Any future events will be neglected
531
543
 
532
- if (data.locus && data.locus.self && data.locus.self.state === _constants._LEFT_ && data.locus.self.removed === true) {
533
- // just ignore the event as its already ended and not active
534
- _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
535
- return;
536
- }
537
- }
538
- if (data.eventType === _constants.LOCUSEVENT.HASH_TREE_DATA_UPDATED) {
539
- // in hash tree messages we don't ge the locus object, but the meeting constructor needs at least locus.url
540
- (0, _lodash.set)(data, 'locus.url', data.stateElementsMessage.locusUrl);
544
+ if (data.locus && data.locus.self && data.locus.self.state === _constants._LEFT_ && data.locus.self.removed === true) {
545
+ // just ignore the event as its already ended and not active
546
+ _loggerProxy.default.logger.warn('Meetings:index#handleLocusEvent --> Locus event received for meeting, after it was ended.');
547
+ return;
541
548
  }
542
549
  this.create(data.locus, _constants.DESTINATION_TYPE.LOCUS_ID, useRandomDelayForInfo).then(/*#__PURE__*/function () {
543
550
  var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(newMeeting) {
@@ -608,7 +615,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
608
615
  }
609
616
 
610
617
  /**
611
- * handles locus events through mercury that are not roap
618
+ * handles locus events through mercury that are not roap or approval request events
612
619
  * @param {Object} envelope
613
620
  * @param {Object} envelope.data
614
621
  * @param {String} envelope.data.eventType
@@ -622,7 +629,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
622
629
  var data = envelope.data;
623
630
  // eslint-disable-next-line @typescript-eslint/no-shadow
624
631
  var eventType = data.eventType;
625
- if (eventType && eventType !== _constants.LOCUSEVENT.MESSAGE_ROAP) {
632
+ if (eventType && eventType !== _constants.LOCUSEVENT.MESSAGE_ROAP && eventType !== _constants.LOCUSEVENT.APPROVAL_REQUEST) {
626
633
  this.handleLocusEvent(data, true);
627
634
  }
628
635
  }
@@ -943,7 +950,11 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
943
950
  value: function executeRegistrationStep(step, stepName) {
944
951
  var _this5 = this;
945
952
  return step().then(function () {
953
+ _loggerProxy.default.logger.info("Meetings:index#executeRegistrationStep --> INFO, ".concat(stepName, " completed"));
946
954
  _this5.registrationStatus[stepName] = true;
955
+ }).catch(function (error) {
956
+ _loggerProxy.default.logger.error("Meetings:index#executeRegistrationStep --> ERROR, ".concat(stepName, " failed: ").concat(error.message));
957
+ return _promise.default.reject(error);
947
958
  });
948
959
  }
949
960
 
@@ -960,7 +971,20 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
960
971
  key: "register",
961
972
  value: function register(deviceRegistrationOptions) {
962
973
  var _this6 = this;
963
- this.registrationStatus = (0, _lodash.clone)(_constants.INITIAL_REGISTRATION_STATUS);
974
+ if (this.unregistrationPromise) {
975
+ _loggerProxy.default.logger.info('Meetings:index#register --> INFO, Meetings plugin unregistration in progress, waiting to register');
976
+ this.registrationPromise = this.unregistrationPromise.catch(function () {}) // It doesn't matter what happened during unregistration
977
+ .finally(function () {
978
+ _loggerProxy.default.logger.info('Meetings:index#register --> INFO, Meetings plugin unregistration completed, proceeding to register');
979
+ _this6.registrationPromise = null;
980
+ return _this6.register(deviceRegistrationOptions);
981
+ });
982
+ return this.registrationPromise;
983
+ }
984
+ if (this.registrationPromise) {
985
+ _loggerProxy.default.logger.info('Meetings:index#register --> INFO, Meetings plugin registration in progress, returning existing promise');
986
+ return this.registrationPromise;
987
+ }
964
988
 
965
989
  // @ts-ignore
966
990
  if (!this.webex.canAuthorize) {
@@ -971,7 +995,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
971
995
  _loggerProxy.default.logger.info('Meetings:index#register --> INFO, Meetings plugin already registered');
972
996
  return _promise.default.resolve();
973
997
  }
974
- return _promise.default.all([this.executeRegistrationStep(function () {
998
+ _loggerProxy.default.logger.info('Meetings:index#register --> INFO, Registering Meetings plugin');
999
+ this.registrationStatus = (0, _lodash.clone)(_constants.INITIAL_REGISTRATION_STATUS);
1000
+ this.registrationPromise = _promise.default.all([this.executeRegistrationStep(function () {
975
1001
  return _this6.fetchUserPreferredWebexSite();
976
1002
  }, 'fetchWebexSite'), this.executeRegistrationStep(function () {
977
1003
  return _this6.getGeoHint();
@@ -1012,7 +1038,10 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1012
1038
  stack: error.stack
1013
1039
  });
1014
1040
  return _promise.default.reject(error);
1041
+ }).finally(function () {
1042
+ _this6.registrationPromise = null;
1015
1043
  });
1044
+ return this.registrationPromise;
1016
1045
  }
1017
1046
 
1018
1047
  /**
@@ -1027,35 +1056,61 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1027
1056
  key: "unregister",
1028
1057
  value: function unregister() {
1029
1058
  var _this7 = this;
1059
+ if (this.unregistrationPromise) {
1060
+ _loggerProxy.default.logger.info('Meetings:index#unregister --> INFO, Meetings plugin unregistration in progress, returning existing promise');
1061
+ return this.unregistrationPromise;
1062
+ }
1063
+ if (this.registrationPromise) {
1064
+ _loggerProxy.default.logger.info('Meetings:index#unregister --> INFO, Meetings plugin registration in progress, waiting to unregister');
1065
+
1066
+ // Wait for registration to complete (success or failure), then call unregister again
1067
+ this.unregistrationPromise = this.registrationPromise.catch(function () {}) // It doesn't matter what happened during registration
1068
+ .finally(function () {
1069
+ _loggerProxy.default.logger.info('Meetings:index#unregister --> INFO, Meetings plugin registration completed, proceeding to unregister');
1070
+ _this7.unregistrationPromise = null;
1071
+ return _this7.unregister();
1072
+ });
1073
+ return this.unregistrationPromise;
1074
+ }
1030
1075
  if (!this.registered) {
1031
1076
  _loggerProxy.default.logger.info('Meetings:index#unregister --> INFO, Meetings plugin already unregistered');
1032
1077
  return _promise.default.resolve();
1033
1078
  }
1034
1079
  this.stopListeningForEvents();
1035
- return (
1036
- // @ts-ignore
1037
- this.webex.internal.mercury.disconnect()
1038
- // @ts-ignore
1039
- .then(function () {
1040
- return _this7.webex.internal.device.unregister();
1041
- }).catch(function (error) {
1042
- // If error status code is 404, continue the chain
1043
- if (error.statusCode === 404) {
1044
- _loggerProxy.default.logger.info('Meetings:index#unregister --> 404 error during device unregister, proceeding normally');
1045
- return; // returning undefined allows the chain to continue
1046
- }
1047
- // For any other status code, break the chain by rethrowing
1048
- _loggerProxy.default.logger.error("Meetings:index#unregister --> Failed to unregister device: ".concat(error.message));
1049
- throw error; // rethrow to break the promise chain
1050
- }).then(function () {
1051
- _triggerProxy.default.trigger(_this7, {
1052
- file: 'meetings',
1053
- function: 'unregister'
1054
- }, _constants.EVENT_TRIGGERS.MEETINGS_UNREGISTERED);
1055
- _this7.registered = false;
1056
- _this7.registrationStatus = (0, _lodash.clone)(_constants.INITIAL_REGISTRATION_STATUS);
1057
- })
1058
- );
1080
+ this.unregistrationPromise =
1081
+ // @ts-ignore
1082
+ this.webex.internal.mercury
1083
+ // Use code 3050 with a non-reconnecting reason to prevent Mercury auto-reconnect
1084
+ // during unregister. Without this, disconnect() defaults to code 1000/"Done" which
1085
+ // force-closes as "Done (forced)" - a normalReconnectReason that triggers auto-reconnect,
1086
+ // causing a race condition with device.unregister().
1087
+ .disconnect({
1088
+ code: 3050,
1089
+ reason: 'meetings unregister'
1090
+ })
1091
+ // @ts-ignore
1092
+ .then(function () {
1093
+ return _this7.webex.internal.device.unregister();
1094
+ }).catch(function (error) {
1095
+ // If error status code is 404, continue the chain
1096
+ if (error.statusCode === 404) {
1097
+ _loggerProxy.default.logger.info('Meetings:index#unregister --> 404 error during device unregister, proceeding normally');
1098
+ return; // returning undefined allows the chain to continue
1099
+ }
1100
+ // For any other status code, break the chain by rethrowing
1101
+ _loggerProxy.default.logger.error("Meetings:index#unregister --> Failed to unregister device: ".concat(error.message));
1102
+ throw error; // rethrow to break the promise chain
1103
+ }).then(function () {
1104
+ _triggerProxy.default.trigger(_this7, {
1105
+ file: 'meetings',
1106
+ function: 'unregister'
1107
+ }, _constants.EVENT_TRIGGERS.MEETINGS_UNREGISTERED);
1108
+ _this7.registered = false;
1109
+ _this7.registrationStatus = (0, _lodash.clone)(_constants.INITIAL_REGISTRATION_STATUS);
1110
+ }).finally(function () {
1111
+ _this7.unregistrationPromise = null;
1112
+ });
1113
+ return this.unregistrationPromise;
1059
1114
  }
1060
1115
  }, {
1061
1116
  key: "uploadLogs",