@webex/plugin-meetings 3.9.0-webinar5k.1 → 3.9.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.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +40 -328
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +6 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +196 -160
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +5 -2
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/type.js +7 -0
- package/dist/meeting/type.js.map +1 -0
- package/dist/meeting/util.js +79 -10
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +37 -39
- package/dist/meetings/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/members/collection.js +0 -13
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +21 -40
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +1 -1
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +34 -5
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +42 -2
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/types/constants.d.ts +16 -0
- package/dist/types/locus-info/index.d.ts +3 -102
- package/dist/types/meeting/in-meeting-actions.d.ts +6 -0
- package/dist/types/meeting/index.d.ts +23 -28
- package/dist/types/meeting/type.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +6 -3
- package/dist/types/member/types.d.ts +0 -1
- package/dist/types/members/collection.d.ts +0 -6
- package/dist/types/members/index.d.ts +7 -16
- package/dist/types/members/util.d.ts +2 -1
- package/dist/types/multistream/remoteMedia.d.ts +20 -1
- package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +22 -24
- package/src/constants.ts +16 -2
- package/src/locus-info/index.ts +39 -409
- package/src/meeting/in-meeting-actions.ts +13 -0
- package/src/meeting/index.ts +92 -63
- package/src/meeting/muteState.ts +6 -2
- package/src/meeting/type.ts +9 -0
- package/src/meeting/util.ts +93 -19
- package/src/meetings/index.ts +6 -19
- package/src/member/types.ts +0 -1
- package/src/members/collection.ts +0 -11
- package/src/members/index.ts +10 -33
- package/src/members/util.ts +2 -1
- package/src/multistream/mediaRequestManager.ts +7 -7
- package/src/multistream/remoteMedia.ts +34 -4
- package/src/multistream/remoteMediaGroup.ts +37 -2
- package/test/unit/spec/locus-info/index.js +8 -365
- package/test/unit/spec/meeting/in-meeting-actions.ts +6 -0
- package/test/unit/spec/meeting/index.js +254 -38
- package/test/unit/spec/meeting/utils.js +122 -1
- package/test/unit/spec/meetings/index.js +2 -0
- package/test/unit/spec/members/index.js +37 -1
- package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
- package/test/unit/spec/multistream/remoteMedia.ts +66 -2
- package/dist/hashTree/constants.js +0 -23
- package/dist/hashTree/constants.js.map +0 -1
- package/dist/hashTree/hashTree.js +0 -516
- package/dist/hashTree/hashTree.js.map +0 -1
- package/dist/hashTree/hashTreeParser.js +0 -521
- package/dist/hashTree/hashTreeParser.js.map +0 -1
- package/dist/types/hashTree/constants.d.ts +0 -8
- package/dist/types/hashTree/hashTree.d.ts +0 -128
- package/dist/types/hashTree/hashTreeParser.d.ts +0 -152
- package/src/hashTree/constants.ts +0 -12
- package/src/hashTree/hashTree.ts +0 -460
- package/src/hashTree/hashTreeParser.ts +0 -556
- package/test/unit/spec/hashTree/hashTree.ts +0 -394
- package/test/unit/spec/hashTree/hashTreeParser.ts +0 -156
@@ -269,10 +269,13 @@ var MuteState = exports.MuteState = /*#__PURE__*/function () {
|
|
269
269
|
var audioMuted = this.type === _constants.AUDIO ? this.getClientLocalMuteState() : undefined;
|
270
270
|
var videoMuted = this.type === _constants.VIDEO ? this.getClientLocalMuteState() : undefined;
|
271
271
|
_loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(this.type, ": sending local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server"));
|
272
|
-
return _util.default.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted).then(function (
|
272
|
+
return _util.default.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted).then(function (locus) {
|
273
273
|
_loggerProxy.default.logger.info("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this2.type, ": local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") applied to server"));
|
274
274
|
_this2.state.server.localMute = _this2.type === _constants.AUDIO ? audioMuted : videoMuted;
|
275
|
-
|
275
|
+
if (locus) {
|
276
|
+
meeting.locusInfo.handleLocusDelta(locus, meeting);
|
277
|
+
}
|
278
|
+
return locus;
|
276
279
|
}).catch(function (remoteUpdateError) {
|
277
280
|
_loggerProxy.default.logger.warn("Meeting:muteState#sendLocalMuteRequestToServer --> ".concat(_this2.type, ": failed to apply local mute (audio=").concat(audioMuted, ", video=").concat(videoMuted, ") to server: ").concat(remoteUpdateError));
|
278
281
|
return _promise.default.reject(remoteUpdateError);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_parameter","_util","_constants","createMuteState","exports","type","meeting","enabled","LoggerProxy","logger","info","concat","id","muteState","MuteState","_meeting$remoteVideoM","_meeting$unmuteVideoA","_classCallCheck2","default","_defineProperty2","AUDIO","VIDEO","ParameterError","ignoreMuteStateChange","state","client","localMute","server","remoteMute","remoteMuted","remoteVideoMuted","unmuteAllowed","unmuteVideoAllowed","syncToServerInProgress","_createClass2","key","value","init","_meeting$mediaPropert","_meeting$mediaPropert2","applyUnmuteAllowedToStream","muteLocalStream","initialMute","mediaProperties","audioStream","muted","videoStream","undefined","applyClientStateToServer","handleLocalStreamChange","enable","mute","reason","_meeting$mediaPropert3","setServerMuted","_meeting$mediaPropert4","handleLocalStreamMuteStateChange","newMuteState","userMuteState","systemMuteState","_meeting$mediaPropert5","_meeting$mediaPropert6","_meeting$mediaPropert7","userMuted","systemMuted","_meeting$mediaPropert8","_meeting$mediaPropert9","_meeting$mediaPropert10","applyClientStateLocally","getClientLocalMuteState","_this","localMuteState","localMuteRequiresSync","remoteMuteRequiresSync","localMuteSyncPromise","sendLocalMuteRequestToServer","_promise","resolve","then","sendRemoteMuteRequestToServer","catch","e","warn","_this2","audioMuted","videoMuted","MeetingUtil","remoteUpdateAudioVideo","response","updateLocusFromApiResponse","remoteUpdateError","reject","_this3","members","muteMember","selfId","_meeting$mediaPropert11","setUnmuteAllowed","_meeting$mediaPropert12","handleServerRemoteMuteUpdate","handleServerLocalUnmuteRequired","_meeting$mediaPropert13","_meeting$mediaPropert14","isMuted","isRemotelyMuted","isUnmuteAllowed","isLocallyMuted"],"sources":["muteState.ts"],"sourcesContent":["import {ServerMuteReason} from '@webex/media-helpers';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\nimport MeetingUtil from './util';\nimport {AUDIO, VIDEO} from '../constants';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const createMuteState = (type, meeting, enabled: boolean) => {\n // todo: remove the meeting argument (SPARK-399695)\n\n LoggerProxy.logger.info(\n `Meeting:muteState#createMuteState --> ${type}: creating MuteState for meeting id ${meeting?.id}`\n );\n\n const muteState = new MuteState(type, meeting, enabled);\n\n return muteState;\n};\n\n/** The purpose of this class is to manage the local and remote mute state and make sure that the server state always matches\n the last requested state by the client.\n\n More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#\n\n This class is exported only for unit tests. It should never be instantiated directly with new MuteState(), instead createMuteState() should be called\n*/\nexport class MuteState {\n state: {\n client: {\n enabled: boolean; // indicates if audio/video is enabled at all or not\n localMute: boolean;\n };\n server: {localMute: boolean; remoteMute: boolean; unmuteAllowed: boolean};\n syncToServerInProgress: boolean;\n };\n\n type: any;\n ignoreMuteStateChange: boolean;\n\n /**\n * Constructor\n *\n * @param {String} type - audio or video\n * @param {Object} meeting - the meeting object (used for reading current remote mute status)\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(type: string, meeting: any, enabled: boolean) {\n if (type !== AUDIO && type !== VIDEO) {\n throw new ParameterError('Mute state is designed for handling audio or video only');\n }\n this.type = type;\n this.ignoreMuteStateChange = false;\n this.state = {\n client: {\n enabled,\n localMute: true,\n },\n server: {\n localMute: true,\n // because remoteVideoMuted and unmuteVideoAllowed are updated seperately, they might be undefined\n remoteMute: type === AUDIO ? meeting.remoteMuted : meeting.remoteVideoMuted ?? false,\n unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : meeting.unmuteVideoAllowed ?? true,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Starts the mute state machine. Needs to be called after a new MuteState instance is created.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public init(meeting: any) {\n this.applyUnmuteAllowedToStream(meeting);\n\n // if we are remotely muted, we need to apply that to the local stream now (mute on-entry)\n if (this.state.server.remoteMute) {\n this.muteLocalStream(meeting, this.state.server.remoteMute, 'remotelyMuted');\n }\n\n const initialMute =\n this.type === AUDIO\n ? meeting.mediaProperties.audioStream?.muted\n : meeting.mediaProperties.videoStream?.muted;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#init --> ${this.type}: local stream initial mute state: ${initialMute}`\n );\n\n if (initialMute !== undefined) {\n this.state.client.localMute = initialMute;\n } else {\n // there is no stream, so it's like we are locally muted\n // (this is important especially for transcoded meetings, in which the SDP m-line direction always stays \"sendrecv\")\n this.state.client.localMute = true;\n }\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * This method needs to be called whenever the local audio/video stream has changed.\n * It reapplies the remote mute state onto the new stream and also reads the current\n * local mute state from the stream and updates the internal state machine and sends\n * any required requests to the server.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public handleLocalStreamChange(meeting: any) {\n return this.init(meeting);\n }\n\n /**\n * Enables/disables audio/video\n *\n * @param {Object} meeting - the meeting object\n * @param {boolean} enable\n * @returns {void}\n */\n public enable(meeting: any, enable: boolean) {\n if (enable !== this.state.client.enabled) {\n this.state.client.enabled = enable;\n\n this.applyClientStateToServer(meeting);\n }\n }\n\n /**\n * Mutes/unmutes local stream\n *\n * @param {Object} meeting - the meeting object\n * @param {Boolean} mute - true to mute the stream, false to unmute it\n * @param {ServerMuteReason} reason - reason for muting/unmuting\n * @returns {void}\n */\n private muteLocalStream(meeting: any, mute: boolean, reason: ServerMuteReason) {\n this.ignoreMuteStateChange = true;\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setServerMuted(mute, reason);\n } else {\n meeting.mediaProperties.videoStream?.setServerMuted(mute, reason);\n }\n this.ignoreMuteStateChange = false;\n }\n\n /**\n * This method should be called when the local stream mute state is changed\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @returns {void}\n */\n public handleLocalStreamMuteStateChange(meeting?: any) {\n if (this.ignoreMuteStateChange) {\n return;\n }\n\n // either user or system may have triggered a mute state change, but localMute should reflect both\n let newMuteState: boolean;\n let userMuteState: boolean;\n let systemMuteState: boolean;\n if (this.type === AUDIO) {\n newMuteState = meeting.mediaProperties.audioStream?.muted;\n userMuteState = meeting.mediaProperties.audioStream?.userMuted;\n systemMuteState = meeting.mediaProperties.audioStream?.systemMuted;\n } else {\n newMuteState = meeting.mediaProperties.videoStream?.muted;\n userMuteState = meeting.mediaProperties.videoStream?.userMuted;\n systemMuteState = meeting.mediaProperties.videoStream?.systemMuted;\n }\n\n LoggerProxy.logger.info(\n `Meeting:muteState#handleLocalStreamMuteStateChange --> ${this.type}: local stream new mute state: ${newMuteState} (user mute: ${userMuteState}, system mute: ${systemMuteState})`\n );\n\n this.state.client.localMute = newMuteState;\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Applies the current mute state to the local stream (by enabling or disabling it accordingly)\n *\n * @public\n * @param {Object} [meeting] the meeting object\n * @param {ServerMuteReason} reason - reason why we're applying our client state to the local stream\n * @memberof MuteState\n * @returns {void}\n */\n public applyClientStateLocally(meeting?: any, reason?: ServerMuteReason) {\n this.muteLocalStream(meeting, this.state.client.localMute, reason);\n }\n\n /** Returns true if client is locally muted - it takes into account not just the client local mute state,\n * but also whether audio/video is enabled at all\n *\n * @returns {boolean}\n */\n private getClientLocalMuteState() {\n return this.state.client.enabled ? this.state.client.localMute : true;\n }\n\n /**\n * Updates the server local and remote mute values so that they match the current client desired state.\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {void}\n */\n private applyClientStateToServer(meeting?: any) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: request to server in progress, we need to wait for it to complete`\n );\n\n return;\n }\n\n const localMuteState = this.getClientLocalMuteState();\n const localMuteRequiresSync = localMuteState !== this.state.server.localMute;\n const remoteMuteRequiresSync = !localMuteState && this.state.server.remoteMute;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: localMuteRequiresSync: ${localMuteRequiresSync} (${localMuteState} ?= ${this.state.server.localMute})`\n );\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: remoteMuteRequiresSync: ${remoteMuteRequiresSync}`\n );\n\n if (!localMuteRequiresSync && !remoteMuteRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: client state already matching server state, nothing to do`\n );\n\n return;\n }\n\n this.state.syncToServerInProgress = true;\n\n // first sync local mute with server\n const localMuteSyncPromise = localMuteRequiresSync\n ? this.sendLocalMuteRequestToServer(meeting)\n : Promise.resolve();\n\n localMuteSyncPromise\n .then(() =>\n // then follow it up with remote mute sync\n remoteMuteRequiresSync ? this.sendRemoteMuteRequestToServer(meeting) : Promise.resolve()\n )\n .then(() => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(meeting);\n })\n .catch((e) => {\n this.state.syncToServerInProgress = false;\n\n LoggerProxy.logger.warn(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: error: ${e}`\n );\n\n // failed to apply client state to server, so revert stream mute state to server state\n this.muteLocalStream(\n meeting,\n this.state.server.localMute || this.state.server.remoteMute,\n 'clientRequestFailed'\n );\n });\n }\n\n /**\n * Sets the local mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendLocalMuteRequestToServer(meeting?: any) {\n const audioMuted = this.type === AUDIO ? this.getClientLocalMuteState() : undefined;\n const videoMuted = this.type === VIDEO ? this.getClientLocalMuteState() : undefined;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: sending local mute (audio=${audioMuted}, video=${videoMuted}) to server`\n );\n\n return MeetingUtil.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted)\n .then((response) => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: local mute (audio=${audioMuted}, video=${videoMuted}) applied to server`\n );\n\n this.state.server.localMute = this.type === AUDIO ? audioMuted : videoMuted;\n\n return MeetingUtil.updateLocusFromApiResponse(meeting, response);\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: failed to apply local mute (audio=${audioMuted}, video=${videoMuted}) to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /**\n * Sets the remote mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendRemoteMuteRequestToServer(meeting?: any) {\n const remoteMute = this.getClientLocalMuteState();\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: sending remote mute:${remoteMute} to server`\n );\n\n return meeting.members\n .muteMember(meeting.members.selfId, remoteMute, this.type === AUDIO)\n .then(() => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: remote mute:${remoteMute} applied to server`\n );\n\n this.state.server.remoteMute = remoteMute;\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: failed to apply remote mute ${remoteMute} to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /** Applies the current value for unmute allowed to the underlying stream\n *\n * @param {Meeting} meeting\n * @returns {void}\n */\n private applyUnmuteAllowedToStream(meeting: any) {\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n } else {\n meeting.mediaProperties.videoStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n }\n }\n\n /**\n * This method should be called whenever the server remote mute state is changed\n *\n * @public\n * @memberof MuteState\n * @param {Meeting} meeting\n * @param {Boolean} [muted] true if user is remotely muted, false otherwise\n * @param {Boolean} [unmuteAllowed] indicates if user is allowed to unmute self (false when \"hard mute\" feature is used)\n * @returns {undefined}\n */\n public handleServerRemoteMuteUpdate(meeting: any, muted?: boolean, unmuteAllowed?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerRemoteMuteUpdate --> ${this.type}: updating server remoteMute to (${muted})`\n );\n if (unmuteAllowed !== undefined) {\n this.state.server.unmuteAllowed = unmuteAllowed;\n this.applyUnmuteAllowedToStream(meeting);\n }\n if (muted !== undefined) {\n this.state.server.remoteMute = muted;\n this.muteLocalStream(meeting, muted, 'remotelyMuted');\n }\n }\n\n /**\n * This method should be called whenever we receive from the server a requirement to locally unmute\n *\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @param {Boolean} [unmuteAllowed] whether the user is allowed to unmute self\n * @returns {undefined}\n */\n public handleServerLocalUnmuteRequired(meeting: any, unmuteAllowed: boolean) {\n if (!this.state.client.enabled) {\n LoggerProxy.logger.warn(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received while ${this.type} is disabled -> local unmute will not result in ${this.type} being sent`\n );\n } else {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received -> doing local unmute (unmuteAllowed=${unmuteAllowed})`\n );\n }\n\n // todo: I'm seeing \"you can now unmute yourself \" popup when this happens - but same thing happens on web.w.c so we can ignore for now\n this.state.server.remoteMute = false;\n this.state.server.unmuteAllowed = unmuteAllowed;\n\n this.applyUnmuteAllowedToStream(meeting);\n\n // change user mute state to false, but keep localMute true if overall mute state is still true\n this.muteLocalStream(meeting, false, 'localUnmuteRequired');\n if (this.type === AUDIO) {\n this.state.client.localMute = meeting.mediaProperties.audioStream?.muted;\n } else {\n this.state.client.localMute = meeting.mediaProperties.videoStream?.muted;\n }\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Returns true if the user is locally or remotely muted.\n * It only checks the mute status, ignoring the fact whether audio/video is enabled.\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isMuted() {\n return (\n this.state.client.localMute || this.state.server.localMute || this.state.server.remoteMute\n );\n }\n\n /**\n * Returns true if the user is remotely muted\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isRemotelyMuted() {\n return this.state.server.remoteMute;\n }\n\n /**\n * Returns true if unmute is allowed\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isUnmuteAllowed() {\n return this.state.server.unmuteAllowed;\n }\n\n /**\n * Returns true if the user is locally muted or audio/video is disabled\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isLocallyMuted() {\n return this.getClientLocalMuteState();\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_parameter","_util","_constants","createMuteState","exports","type","meeting","enabled","LoggerProxy","logger","info","concat","id","muteState","MuteState","_meeting$remoteVideoM","_meeting$unmuteVideoA","_classCallCheck2","default","_defineProperty2","AUDIO","VIDEO","ParameterError","ignoreMuteStateChange","state","client","localMute","server","remoteMute","remoteMuted","remoteVideoMuted","unmuteAllowed","unmuteVideoAllowed","syncToServerInProgress","_createClass2","key","value","init","_meeting$mediaPropert","_meeting$mediaPropert2","applyUnmuteAllowedToStream","muteLocalStream","initialMute","mediaProperties","audioStream","muted","videoStream","undefined","applyClientStateToServer","handleLocalStreamChange","enable","mute","reason","_meeting$mediaPropert3","setServerMuted","_meeting$mediaPropert4","handleLocalStreamMuteStateChange","newMuteState","userMuteState","systemMuteState","_meeting$mediaPropert5","_meeting$mediaPropert6","_meeting$mediaPropert7","userMuted","systemMuted","_meeting$mediaPropert8","_meeting$mediaPropert9","_meeting$mediaPropert10","applyClientStateLocally","getClientLocalMuteState","_this","localMuteState","localMuteRequiresSync","remoteMuteRequiresSync","localMuteSyncPromise","sendLocalMuteRequestToServer","_promise","resolve","then","sendRemoteMuteRequestToServer","catch","e","warn","_this2","audioMuted","videoMuted","MeetingUtil","remoteUpdateAudioVideo","locus","locusInfo","handleLocusDelta","remoteUpdateError","reject","_this3","members","muteMember","selfId","_meeting$mediaPropert11","setUnmuteAllowed","_meeting$mediaPropert12","handleServerRemoteMuteUpdate","handleServerLocalUnmuteRequired","_meeting$mediaPropert13","_meeting$mediaPropert14","isMuted","isRemotelyMuted","isUnmuteAllowed","isLocallyMuted"],"sources":["muteState.ts"],"sourcesContent":["import {ServerMuteReason} from '@webex/media-helpers';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\nimport MeetingUtil from './util';\nimport {AUDIO, VIDEO} from '../constants';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const createMuteState = (type, meeting, enabled: boolean) => {\n // todo: remove the meeting argument (SPARK-399695)\n\n LoggerProxy.logger.info(\n `Meeting:muteState#createMuteState --> ${type}: creating MuteState for meeting id ${meeting?.id}`\n );\n\n const muteState = new MuteState(type, meeting, enabled);\n\n return muteState;\n};\n\n/** The purpose of this class is to manage the local and remote mute state and make sure that the server state always matches\n the last requested state by the client.\n\n More info about Locus muting API: https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html#\n\n This class is exported only for unit tests. It should never be instantiated directly with new MuteState(), instead createMuteState() should be called\n*/\nexport class MuteState {\n state: {\n client: {\n enabled: boolean; // indicates if audio/video is enabled at all or not\n localMute: boolean;\n };\n server: {localMute: boolean; remoteMute: boolean; unmuteAllowed: boolean};\n syncToServerInProgress: boolean;\n };\n\n type: any;\n ignoreMuteStateChange: boolean;\n\n /**\n * Constructor\n *\n * @param {String} type - audio or video\n * @param {Object} meeting - the meeting object (used for reading current remote mute status)\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(type: string, meeting: any, enabled: boolean) {\n if (type !== AUDIO && type !== VIDEO) {\n throw new ParameterError('Mute state is designed for handling audio or video only');\n }\n this.type = type;\n this.ignoreMuteStateChange = false;\n this.state = {\n client: {\n enabled,\n localMute: true,\n },\n server: {\n localMute: true,\n // because remoteVideoMuted and unmuteVideoAllowed are updated seperately, they might be undefined\n remoteMute: type === AUDIO ? meeting.remoteMuted : meeting.remoteVideoMuted ?? false,\n unmuteAllowed: type === AUDIO ? meeting.unmuteAllowed : meeting.unmuteVideoAllowed ?? true,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Starts the mute state machine. Needs to be called after a new MuteState instance is created.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public init(meeting: any) {\n this.applyUnmuteAllowedToStream(meeting);\n\n // if we are remotely muted, we need to apply that to the local stream now (mute on-entry)\n if (this.state.server.remoteMute) {\n this.muteLocalStream(meeting, this.state.server.remoteMute, 'remotelyMuted');\n }\n\n const initialMute =\n this.type === AUDIO\n ? meeting.mediaProperties.audioStream?.muted\n : meeting.mediaProperties.videoStream?.muted;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#init --> ${this.type}: local stream initial mute state: ${initialMute}`\n );\n\n if (initialMute !== undefined) {\n this.state.client.localMute = initialMute;\n } else {\n // there is no stream, so it's like we are locally muted\n // (this is important especially for transcoded meetings, in which the SDP m-line direction always stays \"sendrecv\")\n this.state.client.localMute = true;\n }\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * This method needs to be called whenever the local audio/video stream has changed.\n * It reapplies the remote mute state onto the new stream and also reads the current\n * local mute state from the stream and updates the internal state machine and sends\n * any required requests to the server.\n *\n * @param {Object} meeting - the meeting object\n * @returns {void}\n */\n public handleLocalStreamChange(meeting: any) {\n return this.init(meeting);\n }\n\n /**\n * Enables/disables audio/video\n *\n * @param {Object} meeting - the meeting object\n * @param {boolean} enable\n * @returns {void}\n */\n public enable(meeting: any, enable: boolean) {\n if (enable !== this.state.client.enabled) {\n this.state.client.enabled = enable;\n\n this.applyClientStateToServer(meeting);\n }\n }\n\n /**\n * Mutes/unmutes local stream\n *\n * @param {Object} meeting - the meeting object\n * @param {Boolean} mute - true to mute the stream, false to unmute it\n * @param {ServerMuteReason} reason - reason for muting/unmuting\n * @returns {void}\n */\n private muteLocalStream(meeting: any, mute: boolean, reason: ServerMuteReason) {\n this.ignoreMuteStateChange = true;\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setServerMuted(mute, reason);\n } else {\n meeting.mediaProperties.videoStream?.setServerMuted(mute, reason);\n }\n this.ignoreMuteStateChange = false;\n }\n\n /**\n * This method should be called when the local stream mute state is changed\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @returns {void}\n */\n public handleLocalStreamMuteStateChange(meeting?: any) {\n if (this.ignoreMuteStateChange) {\n return;\n }\n\n // either user or system may have triggered a mute state change, but localMute should reflect both\n let newMuteState: boolean;\n let userMuteState: boolean;\n let systemMuteState: boolean;\n if (this.type === AUDIO) {\n newMuteState = meeting.mediaProperties.audioStream?.muted;\n userMuteState = meeting.mediaProperties.audioStream?.userMuted;\n systemMuteState = meeting.mediaProperties.audioStream?.systemMuted;\n } else {\n newMuteState = meeting.mediaProperties.videoStream?.muted;\n userMuteState = meeting.mediaProperties.videoStream?.userMuted;\n systemMuteState = meeting.mediaProperties.videoStream?.systemMuted;\n }\n\n LoggerProxy.logger.info(\n `Meeting:muteState#handleLocalStreamMuteStateChange --> ${this.type}: local stream new mute state: ${newMuteState} (user mute: ${userMuteState}, system mute: ${systemMuteState})`\n );\n\n this.state.client.localMute = newMuteState;\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Applies the current mute state to the local stream (by enabling or disabling it accordingly)\n *\n * @public\n * @param {Object} [meeting] the meeting object\n * @param {ServerMuteReason} reason - reason why we're applying our client state to the local stream\n * @memberof MuteState\n * @returns {void}\n */\n public applyClientStateLocally(meeting?: any, reason?: ServerMuteReason) {\n this.muteLocalStream(meeting, this.state.client.localMute, reason);\n }\n\n /** Returns true if client is locally muted - it takes into account not just the client local mute state,\n * but also whether audio/video is enabled at all\n *\n * @returns {boolean}\n */\n private getClientLocalMuteState() {\n return this.state.client.enabled ? this.state.client.localMute : true;\n }\n\n /**\n * Updates the server local and remote mute values so that they match the current client desired state.\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {void}\n */\n private applyClientStateToServer(meeting?: any) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: request to server in progress, we need to wait for it to complete`\n );\n\n return;\n }\n\n const localMuteState = this.getClientLocalMuteState();\n const localMuteRequiresSync = localMuteState !== this.state.server.localMute;\n const remoteMuteRequiresSync = !localMuteState && this.state.server.remoteMute;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: localMuteRequiresSync: ${localMuteRequiresSync} (${localMuteState} ?= ${this.state.server.localMute})`\n );\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: remoteMuteRequiresSync: ${remoteMuteRequiresSync}`\n );\n\n if (!localMuteRequiresSync && !remoteMuteRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: client state already matching server state, nothing to do`\n );\n\n return;\n }\n\n this.state.syncToServerInProgress = true;\n\n // first sync local mute with server\n const localMuteSyncPromise = localMuteRequiresSync\n ? this.sendLocalMuteRequestToServer(meeting)\n : Promise.resolve();\n\n localMuteSyncPromise\n .then(() =>\n // then follow it up with remote mute sync\n remoteMuteRequiresSync ? this.sendRemoteMuteRequestToServer(meeting) : Promise.resolve()\n )\n .then(() => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.info(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(meeting);\n })\n .catch((e) => {\n this.state.syncToServerInProgress = false;\n\n LoggerProxy.logger.warn(\n `Meeting:muteState#applyClientStateToServer --> ${this.type}: error: ${e}`\n );\n\n // failed to apply client state to server, so revert stream mute state to server state\n this.muteLocalStream(\n meeting,\n this.state.server.localMute || this.state.server.remoteMute,\n 'clientRequestFailed'\n );\n });\n }\n\n /**\n * Sets the local mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendLocalMuteRequestToServer(meeting?: any) {\n const audioMuted = this.type === AUDIO ? this.getClientLocalMuteState() : undefined;\n const videoMuted = this.type === VIDEO ? this.getClientLocalMuteState() : undefined;\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: sending local mute (audio=${audioMuted}, video=${videoMuted}) to server`\n );\n\n return MeetingUtil.remoteUpdateAudioVideo(meeting, audioMuted, videoMuted)\n .then((locus) => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: local mute (audio=${audioMuted}, video=${videoMuted}) applied to server`\n );\n\n this.state.server.localMute = this.type === AUDIO ? audioMuted : videoMuted;\n\n if (locus) {\n meeting.locusInfo.handleLocusDelta(locus, meeting);\n }\n\n return locus;\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendLocalMuteRequestToServer --> ${this.type}: failed to apply local mute (audio=${audioMuted}, video=${videoMuted}) to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /**\n * Sets the remote mute value in the server\n *\n * @private\n * @param {Object} [meeting] the meeting object\n * @memberof MuteState\n * @returns {Promise}\n */\n private sendRemoteMuteRequestToServer(meeting?: any) {\n const remoteMute = this.getClientLocalMuteState();\n\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: sending remote mute:${remoteMute} to server`\n );\n\n return meeting.members\n .muteMember(meeting.members.selfId, remoteMute, this.type === AUDIO)\n .then(() => {\n LoggerProxy.logger.info(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: remote mute:${remoteMute} applied to server`\n );\n\n this.state.server.remoteMute = remoteMute;\n })\n .catch((remoteUpdateError) => {\n LoggerProxy.logger.warn(\n `Meeting:muteState#sendRemoteMuteRequestToServer --> ${this.type}: failed to apply remote mute ${remoteMute} to server: ${remoteUpdateError}`\n );\n\n return Promise.reject(remoteUpdateError);\n });\n }\n\n /** Applies the current value for unmute allowed to the underlying stream\n *\n * @param {Meeting} meeting\n * @returns {void}\n */\n private applyUnmuteAllowedToStream(meeting: any) {\n if (this.type === AUDIO) {\n meeting.mediaProperties.audioStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n } else {\n meeting.mediaProperties.videoStream?.setUnmuteAllowed(this.state.server.unmuteAllowed);\n }\n }\n\n /**\n * This method should be called whenever the server remote mute state is changed\n *\n * @public\n * @memberof MuteState\n * @param {Meeting} meeting\n * @param {Boolean} [muted] true if user is remotely muted, false otherwise\n * @param {Boolean} [unmuteAllowed] indicates if user is allowed to unmute self (false when \"hard mute\" feature is used)\n * @returns {undefined}\n */\n public handleServerRemoteMuteUpdate(meeting: any, muted?: boolean, unmuteAllowed?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerRemoteMuteUpdate --> ${this.type}: updating server remoteMute to (${muted})`\n );\n if (unmuteAllowed !== undefined) {\n this.state.server.unmuteAllowed = unmuteAllowed;\n this.applyUnmuteAllowedToStream(meeting);\n }\n if (muted !== undefined) {\n this.state.server.remoteMute = muted;\n this.muteLocalStream(meeting, muted, 'remotelyMuted');\n }\n }\n\n /**\n * This method should be called whenever we receive from the server a requirement to locally unmute\n *\n * @public\n * @memberof MuteState\n * @param {Object} [meeting] the meeting object\n * @param {Boolean} [unmuteAllowed] whether the user is allowed to unmute self\n * @returns {undefined}\n */\n public handleServerLocalUnmuteRequired(meeting: any, unmuteAllowed: boolean) {\n if (!this.state.client.enabled) {\n LoggerProxy.logger.warn(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received while ${this.type} is disabled -> local unmute will not result in ${this.type} being sent`\n );\n } else {\n LoggerProxy.logger.info(\n `Meeting:muteState#handleServerLocalUnmuteRequired --> ${this.type}: localAudioUnmuteRequired received -> doing local unmute (unmuteAllowed=${unmuteAllowed})`\n );\n }\n\n // todo: I'm seeing \"you can now unmute yourself \" popup when this happens - but same thing happens on web.w.c so we can ignore for now\n this.state.server.remoteMute = false;\n this.state.server.unmuteAllowed = unmuteAllowed;\n\n this.applyUnmuteAllowedToStream(meeting);\n\n // change user mute state to false, but keep localMute true if overall mute state is still true\n this.muteLocalStream(meeting, false, 'localUnmuteRequired');\n if (this.type === AUDIO) {\n this.state.client.localMute = meeting.mediaProperties.audioStream?.muted;\n } else {\n this.state.client.localMute = meeting.mediaProperties.videoStream?.muted;\n }\n\n this.applyClientStateToServer(meeting);\n }\n\n /**\n * Returns true if the user is locally or remotely muted.\n * It only checks the mute status, ignoring the fact whether audio/video is enabled.\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isMuted() {\n return (\n this.state.client.localMute || this.state.server.localMute || this.state.server.remoteMute\n );\n }\n\n /**\n * Returns true if the user is remotely muted\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isRemotelyMuted() {\n return this.state.server.remoteMute;\n }\n\n /**\n * Returns true if unmute is allowed\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isUnmuteAllowed() {\n return this.state.server.unmuteAllowed;\n }\n\n /**\n * Returns true if the user is locally muted or audio/video is disabled\n *\n * @public\n * @memberof MuteState\n * @returns {Boolean}\n */\n public isLocallyMuted() {\n return this.getClientLocalMuteState();\n }\n}\n"],"mappings":";;;;;;;;;;;;AACA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA;AACO,IAAMI,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAAlBA,eAAeA,CAAIE,IAAI,EAAEC,OAAO,EAAEC,OAAgB,EAAK;EAClE;;EAEAC,oBAAW,CAACC,MAAM,CAACC,IAAI,0CAAAC,MAAA,CACoBN,IAAI,0CAAAM,MAAA,CAAuCL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,EAAE,CACjG,CAAC;EAED,IAAMC,SAAS,GAAG,IAAIC,SAAS,CAACT,IAAI,EAAEC,OAAO,EAAEC,OAAO,CAAC;EAEvD,OAAOM,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOaC,SAAS,GAAAV,OAAA,CAAAU,SAAA;EAapB;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,UAAYT,IAAY,EAAEC,OAAY,EAAEC,OAAgB,EAAE;IAAA,IAAAQ,qBAAA,EAAAC,qBAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,SAAA;IAAA,IAAAK,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IACxD,IAAIb,IAAI,KAAKe,gBAAK,IAAIf,IAAI,KAAKgB,gBAAK,EAAE;MACpC,MAAM,IAAIC,kBAAc,CAAC,yDAAyD,CAAC;IACrF;IACA,IAAI,CAACjB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACkB,qBAAqB,GAAG,KAAK;IAClC,IAAI,CAACC,KAAK,GAAG;MACXC,MAAM,EAAE;QACNlB,OAAO,EAAPA,OAAO;QACPmB,SAAS,EAAE;MACb,CAAC;MACDC,MAAM,EAAE;QACND,SAAS,EAAE,IAAI;QACf;QACAE,UAAU,EAAEvB,IAAI,KAAKe,gBAAK,GAAGd,OAAO,CAACuB,WAAW,IAAAd,qBAAA,GAAGT,OAAO,CAACwB,gBAAgB,cAAAf,qBAAA,cAAAA,qBAAA,GAAI,KAAK;QACpFgB,aAAa,EAAE1B,IAAI,KAAKe,gBAAK,GAAGd,OAAO,CAACyB,aAAa,IAAAf,qBAAA,GAAGV,OAAO,CAAC0B,kBAAkB,cAAAhB,qBAAA,cAAAA,qBAAA,GAAI;MACxF,CAAC;MACDiB,sBAAsB,EAAE;IAC1B,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE,IAAAC,aAAA,CAAAhB,OAAA,EAAAJ,SAAA;IAAAqB,GAAA;IAAAC,KAAA,EAMA,SAAAC,KAAY/B,OAAY,EAAE;MAAA,IAAAgC,qBAAA,EAAAC,sBAAA;MACxB,IAAI,CAACC,0BAA0B,CAAClC,OAAO,CAAC;;MAExC;MACA,IAAI,IAAI,CAACkB,KAAK,CAACG,MAAM,CAACC,UAAU,EAAE;QAChC,IAAI,CAACa,eAAe,CAACnC,OAAO,EAAE,IAAI,CAACkB,KAAK,CAACG,MAAM,CAACC,UAAU,EAAE,eAAe,CAAC;MAC9E;MAEA,IAAMc,WAAW,GACf,IAAI,CAACrC,IAAI,KAAKe,gBAAK,IAAAkB,qBAAA,GACfhC,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAN,qBAAA,uBAAnCA,qBAAA,CAAqCO,KAAK,IAAAN,sBAAA,GAC1CjC,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAP,sBAAA,uBAAnCA,sBAAA,CAAqCM,KAAK;MAEhDrC,oBAAW,CAACC,MAAM,CAACC,IAAI,+BAAAC,MAAA,CACS,IAAI,CAACN,IAAI,yCAAAM,MAAA,CAAsC+B,WAAW,CAC1F,CAAC;MAED,IAAIA,WAAW,KAAKK,SAAS,EAAE;QAC7B,IAAI,CAACvB,KAAK,CAACC,MAAM,CAACC,SAAS,GAAGgB,WAAW;MAC3C,CAAC,MAAM;QACL;QACA;QACA,IAAI,CAAClB,KAAK,CAACC,MAAM,CAACC,SAAS,GAAG,IAAI;MACpC;MACA,IAAI,CAACsB,wBAAwB,CAAC1C,OAAO,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA6B,GAAA;IAAAC,KAAA,EASA,SAAAa,wBAA+B3C,OAAY,EAAE;MAC3C,OAAO,IAAI,CAAC+B,IAAI,CAAC/B,OAAO,CAAC;IAC3B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA6B,GAAA;IAAAC,KAAA,EAOA,SAAAc,OAAc5C,OAAY,EAAE4C,OAAe,EAAE;MAC3C,IAAIA,OAAM,KAAK,IAAI,CAAC1B,KAAK,CAACC,MAAM,CAAClB,OAAO,EAAE;QACxC,IAAI,CAACiB,KAAK,CAACC,MAAM,CAAClB,OAAO,GAAG2C,OAAM;QAElC,IAAI,CAACF,wBAAwB,CAAC1C,OAAO,CAAC;MACxC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA6B,GAAA;IAAAC,KAAA,EAQA,SAAAK,gBAAwBnC,OAAY,EAAE6C,IAAa,EAAEC,MAAwB,EAAE;MAC7E,IAAI,CAAC7B,qBAAqB,GAAG,IAAI;MACjC,IAAI,IAAI,CAAClB,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAAiC,sBAAA;QACvB,CAAAA,sBAAA,GAAA/C,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAS,sBAAA,uBAAnCA,sBAAA,CAAqCC,cAAc,CAACH,IAAI,EAAEC,MAAM,CAAC;MACnE,CAAC,MAAM;QAAA,IAAAG,sBAAA;QACL,CAAAA,sBAAA,GAAAjD,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAS,sBAAA,uBAAnCA,sBAAA,CAAqCD,cAAc,CAACH,IAAI,EAAEC,MAAM,CAAC;MACnE;MACA,IAAI,CAAC7B,qBAAqB,GAAG,KAAK;IACpC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAY,GAAA;IAAAC,KAAA,EAOA,SAAAoB,iCAAwClD,OAAa,EAAE;MACrD,IAAI,IAAI,CAACiB,qBAAqB,EAAE;QAC9B;MACF;;MAEA;MACA,IAAIkC,YAAqB;MACzB,IAAIC,aAAsB;MAC1B,IAAIC,eAAwB;MAC5B,IAAI,IAAI,CAACtD,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAAwC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;QACvBL,YAAY,IAAAG,sBAAA,GAAGtD,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAgB,sBAAA,uBAAnCA,sBAAA,CAAqCf,KAAK;QACzDa,aAAa,IAAAG,sBAAA,GAAGvD,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAiB,sBAAA,uBAAnCA,sBAAA,CAAqCE,SAAS;QAC9DJ,eAAe,IAAAG,sBAAA,GAAGxD,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAkB,sBAAA,uBAAnCA,sBAAA,CAAqCE,WAAW;MACpE,CAAC,MAAM;QAAA,IAAAC,sBAAA,EAAAC,sBAAA,EAAAC,uBAAA;QACLV,YAAY,IAAAQ,sBAAA,GAAG3D,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAmB,sBAAA,uBAAnCA,sBAAA,CAAqCpB,KAAK;QACzDa,aAAa,IAAAQ,sBAAA,GAAG5D,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAoB,sBAAA,uBAAnCA,sBAAA,CAAqCH,SAAS;QAC9DJ,eAAe,IAAAQ,uBAAA,GAAG7D,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAqB,uBAAA,uBAAnCA,uBAAA,CAAqCH,WAAW;MACpE;MAEAxD,oBAAW,CAACC,MAAM,CAACC,IAAI,2DAAAC,MAAA,CACqC,IAAI,CAACN,IAAI,qCAAAM,MAAA,CAAkC8C,YAAY,mBAAA9C,MAAA,CAAgB+C,aAAa,qBAAA/C,MAAA,CAAkBgD,eAAe,MACjL,CAAC;MAED,IAAI,CAACnC,KAAK,CAACC,MAAM,CAACC,SAAS,GAAG+B,YAAY;MAE1C,IAAI,CAACT,wBAAwB,CAAC1C,OAAO,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA6B,GAAA;IAAAC,KAAA,EASA,SAAAgC,wBAA+B9D,OAAa,EAAE8C,MAAyB,EAAE;MACvE,IAAI,CAACX,eAAe,CAACnC,OAAO,EAAE,IAAI,CAACkB,KAAK,CAACC,MAAM,CAACC,SAAS,EAAE0B,MAAM,CAAC;IACpE;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAjB,GAAA;IAAAC,KAAA,EAKA,SAAAiC,wBAAA,EAAkC;MAChC,OAAO,IAAI,CAAC7C,KAAK,CAACC,MAAM,CAAClB,OAAO,GAAG,IAAI,CAACiB,KAAK,CAACC,MAAM,CAACC,SAAS,GAAG,IAAI;IACvE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAS,GAAA;IAAAC,KAAA,EAQA,SAAAY,yBAAiC1C,OAAa,EAAE;MAAA,IAAAgE,KAAA;MAC9C,IAAI,IAAI,CAAC9C,KAAK,CAACS,sBAAsB,EAAE;QACrCzB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,wEAC7D,CAAC;QAED;MACF;MAEA,IAAMkE,cAAc,GAAG,IAAI,CAACF,uBAAuB,CAAC,CAAC;MACrD,IAAMG,qBAAqB,GAAGD,cAAc,KAAK,IAAI,CAAC/C,KAAK,CAACG,MAAM,CAACD,SAAS;MAC5E,IAAM+C,sBAAsB,GAAG,CAACF,cAAc,IAAI,IAAI,CAAC/C,KAAK,CAACG,MAAM,CAACC,UAAU;MAE9EpB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,+BAAAM,MAAA,CAA4B6D,qBAAqB,QAAA7D,MAAA,CAAK4D,cAAc,UAAA5D,MAAA,CAAO,IAAI,CAACa,KAAK,CAACG,MAAM,CAACD,SAAS,MACnK,CAAC;MACDlB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,gCAAAM,MAAA,CAA6B8D,sBAAsB,CAChH,CAAC;MAED,IAAI,CAACD,qBAAqB,IAAI,CAACC,sBAAsB,EAAE;QACrDjE,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B,IAAI,CAACN,IAAI,gEAC7D,CAAC;QAED;MACF;MAEA,IAAI,CAACmB,KAAK,CAACS,sBAAsB,GAAG,IAAI;;MAExC;MACA,IAAMyC,oBAAoB,GAAGF,qBAAqB,GAC9C,IAAI,CAACG,4BAA4B,CAACrE,OAAO,CAAC,GAC1CsE,QAAA,CAAA1D,OAAA,CAAQ2D,OAAO,CAAC,CAAC;MAErBH,oBAAoB,CACjBI,IAAI,CAAC;QAAA;UACJ;UACAL,sBAAsB,GAAGH,KAAI,CAACS,6BAA6B,CAACzE,OAAO,CAAC,GAAGsE,QAAA,CAAA1D,OAAA,CAAQ2D,OAAO,CAAC;QAAC;MAAA,CAC1F,CAAC,CACAC,IAAI,CAAC,YAAM;QACVR,KAAI,CAAC9C,KAAK,CAACS,sBAAsB,GAAG,KAAK;QACzCzB,oBAAW,CAACC,MAAM,CAACC,IAAI,mDAAAC,MAAA,CAC6B2D,KAAI,CAACjE,IAAI,iCAC7D,CAAC;;QAED;QACAiE,KAAI,CAACtB,wBAAwB,CAAC1C,OAAO,CAAC;MACxC,CAAC,CAAC,CACD0E,KAAK,CAAC,UAACC,CAAC,EAAK;QACZX,KAAI,CAAC9C,KAAK,CAACS,sBAAsB,GAAG,KAAK;QAEzCzB,oBAAW,CAACC,MAAM,CAACyE,IAAI,mDAAAvE,MAAA,CAC6B2D,KAAI,CAACjE,IAAI,eAAAM,MAAA,CAAYsE,CAAC,CAC1E,CAAC;;QAED;QACAX,KAAI,CAAC7B,eAAe,CAClBnC,OAAO,EACPgE,KAAI,CAAC9C,KAAK,CAACG,MAAM,CAACD,SAAS,IAAI4C,KAAI,CAAC9C,KAAK,CAACG,MAAM,CAACC,UAAU,EAC3D,qBACF,CAAC;MACH,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAO,GAAA;IAAAC,KAAA,EAQA,SAAAuC,6BAAqCrE,OAAa,EAAE;MAAA,IAAA6E,MAAA;MAClD,IAAMC,UAAU,GAAG,IAAI,CAAC/E,IAAI,KAAKe,gBAAK,GAAG,IAAI,CAACiD,uBAAuB,CAAC,CAAC,GAAGtB,SAAS;MACnF,IAAMsC,UAAU,GAAG,IAAI,CAAChF,IAAI,KAAKgB,gBAAK,GAAG,IAAI,CAACgD,uBAAuB,CAAC,CAAC,GAAGtB,SAAS;MAEnFvC,oBAAW,CAACC,MAAM,CAACC,IAAI,uDAAAC,MAAA,CACiC,IAAI,CAACN,IAAI,kCAAAM,MAAA,CAA+ByE,UAAU,cAAAzE,MAAA,CAAW0E,UAAU,gBAC/H,CAAC;MAED,OAAOC,aAAW,CAACC,sBAAsB,CAACjF,OAAO,EAAE8E,UAAU,EAAEC,UAAU,CAAC,CACvEP,IAAI,CAAC,UAACU,KAAK,EAAK;QACfhF,oBAAW,CAACC,MAAM,CAACC,IAAI,uDAAAC,MAAA,CACiCwE,MAAI,CAAC9E,IAAI,0BAAAM,MAAA,CAAuByE,UAAU,cAAAzE,MAAA,CAAW0E,UAAU,wBACvH,CAAC;QAEDF,MAAI,CAAC3D,KAAK,CAACG,MAAM,CAACD,SAAS,GAAGyD,MAAI,CAAC9E,IAAI,KAAKe,gBAAK,GAAGgE,UAAU,GAAGC,UAAU;QAE3E,IAAIG,KAAK,EAAE;UACTlF,OAAO,CAACmF,SAAS,CAACC,gBAAgB,CAACF,KAAK,EAAElF,OAAO,CAAC;QACpD;QAEA,OAAOkF,KAAK;MACd,CAAC,CAAC,CACDR,KAAK,CAAC,UAACW,iBAAiB,EAAK;QAC5BnF,oBAAW,CAACC,MAAM,CAACyE,IAAI,uDAAAvE,MAAA,CACiCwE,MAAI,CAAC9E,IAAI,0CAAAM,MAAA,CAAuCyE,UAAU,cAAAzE,MAAA,CAAW0E,UAAU,mBAAA1E,MAAA,CAAgBgF,iBAAiB,CACxK,CAAC;QAED,OAAOf,QAAA,CAAA1D,OAAA,CAAQ0E,MAAM,CAACD,iBAAiB,CAAC;MAC1C,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAxD,GAAA;IAAAC,KAAA,EAQA,SAAA2C,8BAAsCzE,OAAa,EAAE;MAAA,IAAAuF,MAAA;MACnD,IAAMjE,UAAU,GAAG,IAAI,CAACyC,uBAAuB,CAAC,CAAC;MAEjD7D,oBAAW,CAACC,MAAM,CAACC,IAAI,wDAAAC,MAAA,CACkC,IAAI,CAACN,IAAI,4BAAAM,MAAA,CAAyBiB,UAAU,eACrG,CAAC;MAED,OAAOtB,OAAO,CAACwF,OAAO,CACnBC,UAAU,CAACzF,OAAO,CAACwF,OAAO,CAACE,MAAM,EAAEpE,UAAU,EAAE,IAAI,CAACvB,IAAI,KAAKe,gBAAK,CAAC,CACnE0D,IAAI,CAAC,YAAM;QACVtE,oBAAW,CAACC,MAAM,CAACC,IAAI,wDAAAC,MAAA,CACkCkF,MAAI,CAACxF,IAAI,oBAAAM,MAAA,CAAiBiB,UAAU,uBAC7F,CAAC;QAEDiE,MAAI,CAACrE,KAAK,CAACG,MAAM,CAACC,UAAU,GAAGA,UAAU;MAC3C,CAAC,CAAC,CACDoD,KAAK,CAAC,UAACW,iBAAiB,EAAK;QAC5BnF,oBAAW,CAACC,MAAM,CAACyE,IAAI,wDAAAvE,MAAA,CACkCkF,MAAI,CAACxF,IAAI,oCAAAM,MAAA,CAAiCiB,UAAU,kBAAAjB,MAAA,CAAegF,iBAAiB,CAC7I,CAAC;QAED,OAAOf,QAAA,CAAA1D,OAAA,CAAQ0E,MAAM,CAACD,iBAAiB,CAAC;MAC1C,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAxD,GAAA;IAAAC,KAAA,EAKA,SAAAI,2BAAmClC,OAAY,EAAE;MAC/C,IAAI,IAAI,CAACD,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAA6E,uBAAA;QACvB,CAAAA,uBAAA,GAAA3F,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAAqD,uBAAA,uBAAnCA,uBAAA,CAAqCC,gBAAgB,CAAC,IAAI,CAAC1E,KAAK,CAACG,MAAM,CAACI,aAAa,CAAC;MACxF,CAAC,MAAM;QAAA,IAAAoE,uBAAA;QACL,CAAAA,uBAAA,GAAA7F,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAqD,uBAAA,uBAAnCA,uBAAA,CAAqCD,gBAAgB,CAAC,IAAI,CAAC1E,KAAK,CAACG,MAAM,CAACI,aAAa,CAAC;MACxF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAI,GAAA;IAAAC,KAAA,EAUA,SAAAgE,6BAAoC9F,OAAY,EAAEuC,KAAe,EAAEd,aAAuB,EAAE;MAC1FvB,oBAAW,CAACC,MAAM,CAACC,IAAI,uDAAAC,MAAA,CACiC,IAAI,CAACN,IAAI,uCAAAM,MAAA,CAAoCkC,KAAK,MAC1G,CAAC;MACD,IAAId,aAAa,KAAKgB,SAAS,EAAE;QAC/B,IAAI,CAACvB,KAAK,CAACG,MAAM,CAACI,aAAa,GAAGA,aAAa;QAC/C,IAAI,CAACS,0BAA0B,CAAClC,OAAO,CAAC;MAC1C;MACA,IAAIuC,KAAK,KAAKE,SAAS,EAAE;QACvB,IAAI,CAACvB,KAAK,CAACG,MAAM,CAACC,UAAU,GAAGiB,KAAK;QACpC,IAAI,CAACJ,eAAe,CAACnC,OAAO,EAAEuC,KAAK,EAAE,eAAe,CAAC;MACvD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAV,GAAA;IAAAC,KAAA,EASA,SAAAiE,gCAAuC/F,OAAY,EAAEyB,aAAsB,EAAE;MAC3E,IAAI,CAAC,IAAI,CAACP,KAAK,CAACC,MAAM,CAAClB,OAAO,EAAE;QAC9BC,oBAAW,CAACC,MAAM,CAACyE,IAAI,0DAAAvE,MAAA,CACoC,IAAI,CAACN,IAAI,gDAAAM,MAAA,CAA6C,IAAI,CAACN,IAAI,sDAAAM,MAAA,CAAmD,IAAI,CAACN,IAAI,gBACtL,CAAC;MACH,CAAC,MAAM;QACLG,oBAAW,CAACC,MAAM,CAACC,IAAI,0DAAAC,MAAA,CACoC,IAAI,CAACN,IAAI,+EAAAM,MAAA,CAA4EoB,aAAa,MAC7J,CAAC;MACH;;MAEA;MACA,IAAI,CAACP,KAAK,CAACG,MAAM,CAACC,UAAU,GAAG,KAAK;MACpC,IAAI,CAACJ,KAAK,CAACG,MAAM,CAACI,aAAa,GAAGA,aAAa;MAE/C,IAAI,CAACS,0BAA0B,CAAClC,OAAO,CAAC;;MAExC;MACA,IAAI,CAACmC,eAAe,CAACnC,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC;MAC3D,IAAI,IAAI,CAACD,IAAI,KAAKe,gBAAK,EAAE;QAAA,IAAAkF,uBAAA;QACvB,IAAI,CAAC9E,KAAK,CAACC,MAAM,CAACC,SAAS,IAAA4E,uBAAA,GAAGhG,OAAO,CAACqC,eAAe,CAACC,WAAW,cAAA0D,uBAAA,uBAAnCA,uBAAA,CAAqCzD,KAAK;MAC1E,CAAC,MAAM;QAAA,IAAA0D,uBAAA;QACL,IAAI,CAAC/E,KAAK,CAACC,MAAM,CAACC,SAAS,IAAA6E,uBAAA,GAAGjG,OAAO,CAACqC,eAAe,CAACG,WAAW,cAAAyD,uBAAA,uBAAnCA,uBAAA,CAAqC1D,KAAK;MAC1E;MAEA,IAAI,CAACG,wBAAwB,CAAC1C,OAAO,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA6B,GAAA;IAAAC,KAAA,EAQA,SAAAoE,QAAA,EAAiB;MACf,OACE,IAAI,CAAChF,KAAK,CAACC,MAAM,CAACC,SAAS,IAAI,IAAI,CAACF,KAAK,CAACG,MAAM,CAACD,SAAS,IAAI,IAAI,CAACF,KAAK,CAACG,MAAM,CAACC,UAAU;IAE9F;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAO,GAAA;IAAAC,KAAA,EAOA,SAAAqE,gBAAA,EAAyB;MACvB,OAAO,IAAI,CAACjF,KAAK,CAACG,MAAM,CAACC,UAAU;IACrC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAO,GAAA;IAAAC,KAAA,EAOA,SAAAsE,gBAAA,EAAyB;MACvB,OAAO,IAAI,CAAClF,KAAK,CAACG,MAAM,CAACI,aAAa;IACxC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAI,GAAA;IAAAC,KAAA,EAOA,SAAAuE,eAAA,EAAwB;MACtB,OAAO,IAAI,CAACtC,uBAAuB,CAAC,CAAC;IACvC;EAAC;EAAA,OAAAvD,SAAA;AAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":[],"sources":["type.ts"],"sourcesContent":["export type Invitee = {\n memberId: string;\n emailAddress: string;\n email: string;\n phoneNumber: string;\n roles: Array<string>;\n skipEmailValidation?: boolean;\n isInternalNumber?: boolean;\n};\n"],"mappings":""}
|
package/dist/meeting/util.js
CHANGED
@@ -44,7 +44,6 @@ var MeetingUtil = {
|
|
44
44
|
|
45
45
|
// First todo: add check for existance
|
46
46
|
parsed.locus = response.body.locus;
|
47
|
-
parsed.dataSets = response.body.dataSets;
|
48
47
|
parsed.mediaConnections = response.body.mediaConnections;
|
49
48
|
parsed.locusUrl = parsed.locus.url;
|
50
49
|
parsed.locusId = parsed.locus.url.split('/').pop();
|
@@ -74,6 +73,9 @@ var MeetingUtil = {
|
|
74
73
|
audioMuted: audioMuted,
|
75
74
|
videoMuted: videoMuted
|
76
75
|
}
|
76
|
+
}).then(function (response) {
|
77
|
+
var _response$body;
|
78
|
+
return response === null || response === void 0 ? void 0 : (_response$body = response.body) === null || _response$body === void 0 ? void 0 : _response$body.locus;
|
77
79
|
});
|
78
80
|
},
|
79
81
|
hasOwner: function hasOwner(info) {
|
@@ -202,6 +204,21 @@ var MeetingUtil = {
|
|
202
204
|
}
|
203
205
|
});
|
204
206
|
return parsed;
|
207
|
+
}).catch(function (err) {
|
208
|
+
var _meeting$meetingInfo2;
|
209
|
+
webex.internal.newMetrics.submitClientEvent({
|
210
|
+
name: 'client.locus.join.response',
|
211
|
+
payload: {
|
212
|
+
identifiers: {
|
213
|
+
meetingLookupUrl: (_meeting$meetingInfo2 = meeting.meetingInfo) === null || _meeting$meetingInfo2 === void 0 ? void 0 : _meeting$meetingInfo2.meetingLookupUrl
|
214
|
+
}
|
215
|
+
},
|
216
|
+
options: {
|
217
|
+
meetingId: meeting.id,
|
218
|
+
rawError: err
|
219
|
+
}
|
220
|
+
});
|
221
|
+
throw err;
|
205
222
|
}));
|
206
223
|
case 19:
|
207
224
|
case "end":
|
@@ -215,11 +232,13 @@ var MeetingUtil = {
|
|
215
232
|
return joinMeeting;
|
216
233
|
}(),
|
217
234
|
cleanUp: function cleanUp(meeting) {
|
235
|
+
var _meeting$webex, _meeting$webex$intern, _meeting$webex$intern2, _meeting$webex$intern3;
|
218
236
|
meeting.getWebexObject().internal.device.meetingEnded();
|
219
237
|
meeting.stopPeriodicLogUpload();
|
220
238
|
meeting.breakouts.cleanUp();
|
221
239
|
meeting.simultaneousInterpretation.cleanUp();
|
222
240
|
meeting.locusMediaRequest = undefined;
|
241
|
+
(_meeting$webex = meeting.webex) === null || _meeting$webex === void 0 ? void 0 : (_meeting$webex$intern = _meeting$webex.internal) === null || _meeting$webex$intern === void 0 ? void 0 : (_meeting$webex$intern2 = _meeting$webex$intern.newMetrics) === null || _meeting$webex$intern2 === void 0 ? void 0 : (_meeting$webex$intern3 = _meeting$webex$intern2.callDiagnosticMetrics) === null || _meeting$webex$intern3 === void 0 ? void 0 : _meeting$webex$intern3.clearEventLimitsForCorrelationId(meeting.correlationId);
|
223
242
|
|
224
243
|
// make sure we send last metrics before we close the peerconnection
|
225
244
|
var stopStatsAnalyzer = meeting.statsAnalyzer ? meeting.statsAnalyzer.stopAnalyzer() : _promise.default.resolve();
|
@@ -327,10 +346,50 @@ var MeetingUtil = {
|
|
327
346
|
var webex = meeting.getWebexObject();
|
328
347
|
meeting.resourceId = meeting.resourceId || options.resourceId;
|
329
348
|
if (meeting.requiredCaptcha) {
|
330
|
-
|
349
|
+
var errorToThrow = new _captchaError.default();
|
350
|
+
|
351
|
+
// @ts-ignore
|
352
|
+
webex.internal.newMetrics.submitClientEvent({
|
353
|
+
name: 'client.meetinginfo.response',
|
354
|
+
options: {
|
355
|
+
meetingId: meeting.id
|
356
|
+
},
|
357
|
+
payload: {
|
358
|
+
errors: [{
|
359
|
+
fatal: false,
|
360
|
+
category: 'expected',
|
361
|
+
name: 'other',
|
362
|
+
shownToUser: false,
|
363
|
+
errorCode: errorToThrow.code,
|
364
|
+
errorDescription: errorToThrow.name,
|
365
|
+
rawErrorMessage: errorToThrow.sdkMessage
|
366
|
+
}]
|
367
|
+
}
|
368
|
+
});
|
369
|
+
return _promise.default.reject(errorToThrow);
|
331
370
|
}
|
332
371
|
if (meeting.passwordStatus === _constants.PASSWORD_STATUS.REQUIRED) {
|
333
|
-
|
372
|
+
var _errorToThrow = new _passwordError.default();
|
373
|
+
|
374
|
+
// @ts-ignore
|
375
|
+
webex.internal.newMetrics.submitClientEvent({
|
376
|
+
name: 'client.meetinginfo.response',
|
377
|
+
options: {
|
378
|
+
meetingId: meeting.id
|
379
|
+
},
|
380
|
+
payload: {
|
381
|
+
errors: [{
|
382
|
+
fatal: false,
|
383
|
+
category: 'expected',
|
384
|
+
name: 'other',
|
385
|
+
shownToUser: false,
|
386
|
+
errorCode: _errorToThrow.code,
|
387
|
+
errorDescription: _errorToThrow.name,
|
388
|
+
rawErrorMessage: _errorToThrow.sdkMessage
|
389
|
+
}]
|
390
|
+
}
|
391
|
+
});
|
392
|
+
return _promise.default.reject(_errorToThrow);
|
334
393
|
}
|
335
394
|
if (options.pin) {
|
336
395
|
// @ts-ignore
|
@@ -528,6 +587,15 @@ var MeetingUtil = {
|
|
528
587
|
canStartManualCaption: function canStartManualCaption(displayHints) {
|
529
588
|
return displayHints.includes(_constants.DISPLAY_HINTS.MANUAL_CAPTION_START);
|
530
589
|
},
|
590
|
+
isLocalRecordingStarted: function isLocalRecordingStarted(displayHints) {
|
591
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STARTED);
|
592
|
+
},
|
593
|
+
isLocalRecordingStopped: function isLocalRecordingStopped(displayHints) {
|
594
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.LOCAL_RECORDING_STATUS_STOPPED);
|
595
|
+
},
|
596
|
+
isLocalRecordingPaused: function isLocalRecordingPaused(displayHints) {
|
597
|
+
return displayHints.includes(_constants.DISPLAY_HINTS.LOCAL_RECORDING_STATUS_PAUSED);
|
598
|
+
},
|
531
599
|
canStopManualCaption: function canStopManualCaption(displayHints) {
|
532
600
|
return displayHints.includes(_constants.DISPLAY_HINTS.MANUAL_CAPTION_STOP);
|
533
601
|
},
|
@@ -590,20 +658,21 @@ var MeetingUtil = {
|
|
590
658
|
requestBody.sequence = sequence;
|
591
659
|
},
|
592
660
|
/**
|
593
|
-
* Updates the locus info for the meeting with the locus
|
594
|
-
*
|
661
|
+
* Updates the locus info for the meeting with the delta locus
|
662
|
+
* returned from requests that include the sequence information
|
595
663
|
* Returns the original response object
|
596
664
|
* @param {Object} meeting The meeting object
|
597
665
|
* @param {Object} response The response of the http request
|
598
666
|
* @returns {Object}
|
599
667
|
*/
|
600
|
-
|
601
|
-
var _response$
|
668
|
+
updateLocusWithDelta: function updateLocusWithDelta(meeting, response) {
|
669
|
+
var _response$body2;
|
602
670
|
if (!meeting) {
|
603
671
|
return response;
|
604
672
|
}
|
605
|
-
|
606
|
-
|
673
|
+
var locus = response === null || response === void 0 ? void 0 : (_response$body2 = response.body) === null || _response$body2 === void 0 ? void 0 : _response$body2.locus;
|
674
|
+
if (locus) {
|
675
|
+
meeting.locusInfo.handleLocusDelta(locus, meeting);
|
607
676
|
}
|
608
677
|
return response;
|
609
678
|
},
|
@@ -633,7 +702,7 @@ var MeetingUtil = {
|
|
633
702
|
}
|
634
703
|
var options = buildLocusDeltaRequestOptions(originalOptions);
|
635
704
|
return meeting.request(options).then(function (response) {
|
636
|
-
return MeetingUtil.
|
705
|
+
return MeetingUtil.updateLocusWithDelta(meeting, response);
|
637
706
|
});
|
638
707
|
};
|
639
708
|
return locusDeltaRequest;
|