@webex/plugin-meetings 3.6.0-next.9 → 3.7.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +24 -2
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +10 -3
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +12 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +28 -4
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +2 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/index.js +61 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +19 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +564 -441
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +2 -6
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/request.js +21 -29
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +94 -59
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +2 -0
- package/dist/meetings/index.js.map +1 -1
- package/dist/members/index.js +3 -2
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +9 -5
- package/dist/members/util.js.map +1 -1
- package/dist/reachability/clusterReachability.js +0 -4
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +433 -136
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +7 -0
- package/dist/reachability/reachability.types.js.map +1 -0
- package/dist/reachability/request.js +23 -9
- package/dist/reachability/request.js.map +1 -1
- package/dist/roap/index.js +5 -7
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +45 -79
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +3 -6
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/constants.d.ts +19 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/index.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +9 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
- package/dist/types/meeting/index.d.ts +14 -3
- package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
- package/dist/types/meeting/request.d.ts +2 -2
- package/dist/types/meeting/util.d.ts +2 -2
- package/dist/types/meetings/index.d.ts +1 -1
- package/dist/types/members/index.d.ts +2 -1
- package/dist/types/members/util.d.ts +3 -1
- package/dist/types/reachability/clusterReachability.d.ts +1 -10
- package/dist/types/reachability/index.d.ts +74 -35
- package/dist/types/reachability/reachability.types.d.ts +64 -0
- package/dist/types/reachability/request.d.ts +5 -1
- package/dist/types/roap/request.d.ts +1 -13
- package/dist/webinar/index.js +32 -19
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/config.ts +1 -0
- package/src/constants.ts +25 -0
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/index.ts +19 -2
- package/src/controls-options-manager/types.ts +2 -0
- package/src/controls-options-manager/util.ts +12 -0
- package/src/locus-info/controlsUtils.ts +46 -2
- package/src/locus-info/fullState.ts +1 -0
- package/src/locus-info/index.ts +60 -0
- package/src/meeting/in-meeting-actions.ts +37 -0
- package/src/meeting/index.ts +114 -11
- package/src/meeting/locusMediaRequest.ts +4 -8
- package/src/meeting/request.ts +4 -11
- package/src/meeting/util.ts +24 -4
- package/src/meetings/index.ts +46 -39
- package/src/members/index.ts +4 -2
- package/src/members/util.ts +3 -1
- package/src/reachability/clusterReachability.ts +1 -14
- package/src/reachability/index.ts +285 -77
- package/src/reachability/reachability.types.ts +85 -0
- package/src/reachability/request.ts +55 -30
- package/src/roap/index.ts +4 -5
- package/src/roap/request.ts +30 -44
- package/src/roap/turnDiscovery.ts +2 -4
- package/src/webinar/index.ts +31 -17
- package/test/unit/spec/controls-options-manager/index.js +56 -32
- package/test/unit/spec/controls-options-manager/util.js +44 -0
- package/test/unit/spec/locus-info/controlsUtils.js +80 -4
- package/test/unit/spec/locus-info/index.js +59 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
- package/test/unit/spec/meeting/index.js +231 -100
- package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
- package/test/unit/spec/meeting/request.js +3 -26
- package/test/unit/spec/meeting/utils.js +53 -13
- package/test/unit/spec/meetings/index.js +16 -1
- package/test/unit/spec/members/index.js +25 -2
- package/test/unit/spec/members/request.js +37 -3
- package/test/unit/spec/members/utils.js +15 -1
- package/test/unit/spec/reachability/index.ts +265 -1
- package/test/unit/spec/reachability/request.js +56 -15
- package/test/unit/spec/roap/index.ts +1 -1
- package/test/unit/spec/roap/request.ts +51 -109
- package/test/unit/spec/roap/turnDiscovery.ts +202 -147
- package/test/unit/spec/webinar/index.ts +82 -16
|
@@ -197,11 +197,7 @@ var LocusMediaRequest = exports.LocusMediaRequest = /*#__PURE__*/function (_Webe
|
|
|
197
197
|
// first setup things common to all requests
|
|
198
198
|
var body = {
|
|
199
199
|
device: this.config.device,
|
|
200
|
-
correlationId: this.config.correlationId
|
|
201
|
-
clientMediaPreferences: {
|
|
202
|
-
preferTranscoding: this.config.preferTranscoding,
|
|
203
|
-
ipver: request.type === 'RoapMessage' ? request.ipVersion : undefined
|
|
204
|
-
}
|
|
200
|
+
correlationId: this.config.correlationId
|
|
205
201
|
};
|
|
206
202
|
var localMedias = {
|
|
207
203
|
audioMuted: audioMuted,
|
|
@@ -217,7 +213,7 @@ var LocusMediaRequest = exports.LocusMediaRequest = /*#__PURE__*/function (_Webe
|
|
|
217
213
|
case 'RoapMessage':
|
|
218
214
|
localMedias.roapMessage = request.roapMessage;
|
|
219
215
|
localMedias.reachability = request.reachability;
|
|
220
|
-
body.clientMediaPreferences
|
|
216
|
+
body.clientMediaPreferences = request.clientMediaPreferences;
|
|
221
217
|
|
|
222
218
|
// @ts-ignore
|
|
223
219
|
this.webex.internal.newMetrics.submitClientEvent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_common","_webexCore","_constants","_loggerProxy","_interopRequireDefault","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","InternalRequestInfo","request","pendingPromise","sendRequestFn","_classCallCheck2","_defineProperty2","pendingPromises","_createClass2","key","value","getPendingPromises","addPendingPromises","_this$pendingPromises","push","_toConsumableArray2","execute","_this","then","forEach","d","resolve","catch","reject","isRequestAffectingConfluenceState","type","roapMessage","messageType","ROAP","ROAP_TYPES","OFFER","LocusMediaRequest","exports","_WebexPlugin","_inherits2","_super","config","options","_this2","_assertThisInitialized2","isRequestInProgress","queuedRequests","confluenceState","addToQueue","info","length","filter","r","executeNextQueuedRequest","_this3","nextRequest","shift","getLatestMuteState","audioMuted","latestAudioMuted","undefined","videoMuted","latestVideoMuted","sendHttpRequest","_this4","uri","concat","selfUrl","MEDIA","_this$getLatestMuteSt","body","device","correlationId","clientMediaPreferences","preferTranscoding","ipver","ipVersion","localMedias","respOnlySdp","usingResource","reachability","joinCookie","webex","internal","newMetrics","submitClientEvent","name","meetingId","sequence","localSdp","_stringify","mediaId","LoggerProxy","logger","method","HTTP_VERBS","PUT","rawError","send","_this5","_request$muteOptions","muteOptions","_promise","Defer","newRequest","bind","defer","promise","isConfluenceCreated","WebexPlugin"],"sources":["locusMediaRequest.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {defer} from 'lodash';\nimport {Defer} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\nimport {MEDIA, HTTP_VERBS, ROAP, IP_VERSION} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nexport type MediaRequestType = 'RoapMessage' | 'LocalMute';\nexport type RequestResult = any;\n\nexport type RoapRequest = {\n type: 'RoapMessage';\n selfUrl: string;\n mediaId: string;\n roapMessage: any;\n reachability: any;\n sequence?: any;\n joinCookie: any; // any, because this is opaque to the client, we pass whatever object we got from one backend component (Orpheus) to the other (Locus)\n ipVersion?: IP_VERSION;\n};\n\nexport type LocalMuteRequest = {\n type: 'LocalMute';\n selfUrl: string;\n mediaId: string;\n sequence?: any;\n muteOptions: {\n audioMuted?: boolean;\n videoMuted?: boolean;\n };\n};\n\nexport type Request = RoapRequest | LocalMuteRequest;\n\n/** Class representing a single /media request being sent to Locus */\nclass InternalRequestInfo {\n public readonly request: Request;\n private pendingPromises: Defer[];\n private sendRequestFn: (request: Request) => Promise<RequestResult>;\n\n /** Constructor */\n constructor(\n request: Request,\n pendingPromise: Defer,\n sendRequestFn: (request: Request) => Promise<RequestResult>\n ) {\n this.request = request;\n this.pendingPromises = [pendingPromise];\n this.sendRequestFn = sendRequestFn;\n }\n\n /**\n * Returns the list of pending promises associated with this request\n */\n public getPendingPromises() {\n return this.pendingPromises;\n }\n\n /**\n * Adds promises to the list of pending promises associated with this request\n */\n public addPendingPromises(pendingPromises: Defer[]) {\n this.pendingPromises.push(...pendingPromises);\n }\n\n /**\n * Executes the request. Returned promise is resolved once the request\n * is completed (no matter if it succeeded or failed).\n */\n public execute(): Promise<void> {\n return this.sendRequestFn(this.request)\n .then((result) => {\n // resolve all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.resolve(result));\n })\n .catch((e) => {\n // reject all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.reject(e));\n });\n }\n}\n\nexport type Config = {\n device: {\n url: string;\n deviceType: string;\n countryCode?: string;\n regionCode?: string;\n };\n correlationId: string;\n meetingId: string;\n preferTranscoding: boolean;\n};\n\n/**\n * Returns true if the request is triggering confluence creation in the server\n */\nfunction isRequestAffectingConfluenceState(request: Request): boolean {\n return (\n request.type === 'RoapMessage' && request.roapMessage.messageType === ROAP.ROAP_TYPES.OFFER\n );\n}\n\n/**\n * This class manages all /media API requests to Locus. Every call to that\n * Locus API has to go through this class.\n */\nexport class LocusMediaRequest extends WebexPlugin {\n private config: Config;\n private latestAudioMuted?: boolean;\n private latestVideoMuted?: boolean;\n private isRequestInProgress: boolean;\n private queuedRequests: InternalRequestInfo[];\n private confluenceState: 'not created' | 'creation in progress' | 'created';\n /**\n * Constructor\n */\n constructor(config: Config, options: any) {\n super({}, options);\n this.isRequestInProgress = false;\n this.queuedRequests = [];\n this.config = config;\n this.confluenceState = 'not created';\n }\n\n /**\n * Add a request to the internal queue.\n */\n private addToQueue(info: InternalRequestInfo) {\n if (info.request.type === 'LocalMute' && this.queuedRequests.length > 0) {\n // We don't need additional local mute requests in the queue.\n // We only need at most 1 local mute or 1 roap request, because\n // roap requests also include mute state, so whatever request\n // is sent out, it will send the latest local mute state.\n // We only need to store the pendingPromises so that they get resolved\n // when the roap request is sent out.\n this.queuedRequests[0].addPendingPromises(info.getPendingPromises());\n\n return;\n }\n\n if (info.request.type === 'RoapMessage' && this.queuedRequests.length > 0) {\n // remove any LocalMute requests from the queue, because this Roap message\n // will also update the mute status in Locus, so they are redundant\n this.queuedRequests = this.queuedRequests.filter((r) => {\n if (r.request.type === 'LocalMute') {\n // we need to keep the pending promises from the local mute request\n // that we're removing from the queue\n info.addPendingPromises(r.getPendingPromises());\n\n return false;\n }\n\n return true;\n });\n }\n\n this.queuedRequests.push(info);\n }\n\n /**\n * Takes the next request from the queue and executes it. Once that\n * request is completed, the next one will be taken from the queue\n * and executed and this is repeated until the queue is empty.\n */\n private executeNextQueuedRequest(): void {\n if (this.isRequestInProgress) {\n return;\n }\n\n const nextRequest = this.queuedRequests.shift();\n\n if (nextRequest) {\n this.isRequestInProgress = true;\n nextRequest.execute().then(() => {\n this.isRequestInProgress = false;\n this.executeNextQueuedRequest();\n });\n }\n }\n\n /**\n * Returns latest requested audio and video mute values. If they have never been\n * requested, we assume audio/video to be muted.\n */\n private getLatestMuteState() {\n const audioMuted = this.latestAudioMuted !== undefined ? this.latestAudioMuted : true;\n const videoMuted = this.latestVideoMuted !== undefined ? this.latestVideoMuted : true;\n\n return {audioMuted, videoMuted};\n }\n\n /**\n * Prepares the uri and body for the media request to be sent to Locus\n */\n private sendHttpRequest(request: Request) {\n const uri = `${request.selfUrl}/${MEDIA}`;\n\n const {audioMuted, videoMuted} = this.getLatestMuteState();\n\n // first setup things common to all requests\n const body: any = {\n device: this.config.device,\n correlationId: this.config.correlationId,\n clientMediaPreferences: {\n preferTranscoding: this.config.preferTranscoding,\n ipver: request.type === 'RoapMessage' ? request.ipVersion : undefined,\n },\n };\n\n const localMedias: any = {\n audioMuted,\n videoMuted,\n };\n\n // now add things specific to request type\n switch (request.type) {\n case 'LocalMute':\n body.respOnlySdp = true;\n body.usingResource = null;\n break;\n\n case 'RoapMessage':\n localMedias.roapMessage = request.roapMessage;\n localMedias.reachability = request.reachability;\n body.clientMediaPreferences.joinCookie = request.joinCookie;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n break;\n }\n\n if (request.sequence) {\n body.sequence = request.sequence;\n }\n\n body.localMedias = [\n {\n localSdp: JSON.stringify(localMedias), // this part must be JSON stringified, Locus requires this\n mediaId: request.mediaId,\n },\n ];\n\n LoggerProxy.logger.info(\n `Meeting:LocusMediaRequest#sendHttpRequest --> ${request.type} audioMuted=${audioMuted} videoMuted=${videoMuted}`\n );\n\n if (isRequestAffectingConfluenceState(request) && this.confluenceState === 'not created') {\n this.confluenceState = 'creation in progress';\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n })\n .then((result) => {\n if (isRequestAffectingConfluenceState(request)) {\n this.confluenceState = 'created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n }\n\n return result;\n })\n .catch((e) => {\n if (\n isRequestAffectingConfluenceState(request) &&\n this.confluenceState === 'creation in progress'\n ) {\n this.confluenceState = 'not created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n rawError: e,\n },\n });\n }\n\n throw e;\n });\n }\n\n /**\n * Sends a media request to Locus\n */\n public send(request: Request): Promise<RequestResult> {\n if (request.type === 'LocalMute') {\n const {audioMuted, videoMuted} = request.muteOptions;\n\n if (audioMuted !== undefined) {\n this.latestAudioMuted = audioMuted;\n }\n if (videoMuted !== undefined) {\n this.latestVideoMuted = videoMuted;\n }\n\n if (this.confluenceState === 'not created') {\n // if there is no confluence, there is no point sending out local mute request\n // as it will fail so we just store the latest audio/video muted values\n // and resolve immediately, so that higher layer (MuteState class) doesn't get blocked\n // and can call us again if user mutes/unmutes again before confluence is created\n LoggerProxy.logger.info(\n 'Meeting:LocusMediaRequest#send --> called with LocalMute request before confluence creation'\n );\n\n return Promise.resolve({});\n }\n }\n\n const pendingPromise = new Defer();\n\n const newRequest = new InternalRequestInfo(\n request,\n pendingPromise,\n this.sendHttpRequest.bind(this)\n );\n\n this.addToQueue(newRequest);\n\n defer(() => this.executeNextQueuedRequest());\n\n return pendingPromise.promise;\n }\n\n /** Returns true if a confluence on the server is already created */\n public isConfluenceCreated() {\n return this.confluenceState === 'created';\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_common","_webexCore","_constants","_loggerProxy","_interopRequireDefault","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","InternalRequestInfo","request","pendingPromise","sendRequestFn","_classCallCheck2","_defineProperty2","pendingPromises","_createClass2","key","value","getPendingPromises","addPendingPromises","_this$pendingPromises","push","_toConsumableArray2","execute","_this","then","forEach","d","resolve","catch","reject","isRequestAffectingConfluenceState","type","roapMessage","messageType","ROAP","ROAP_TYPES","OFFER","LocusMediaRequest","exports","_WebexPlugin","_inherits2","_super","config","options","_this2","_assertThisInitialized2","isRequestInProgress","queuedRequests","confluenceState","addToQueue","info","length","filter","r","executeNextQueuedRequest","_this3","nextRequest","shift","getLatestMuteState","audioMuted","latestAudioMuted","undefined","videoMuted","latestVideoMuted","sendHttpRequest","_this4","uri","concat","selfUrl","MEDIA","_this$getLatestMuteSt","body","device","correlationId","localMedias","respOnlySdp","usingResource","reachability","clientMediaPreferences","webex","internal","newMetrics","submitClientEvent","name","meetingId","sequence","localSdp","_stringify","mediaId","LoggerProxy","logger","method","HTTP_VERBS","PUT","rawError","send","_this5","_request$muteOptions","muteOptions","_promise","Defer","newRequest","bind","defer","promise","isConfluenceCreated","WebexPlugin"],"sources":["locusMediaRequest.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {defer} from 'lodash';\nimport {Defer} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\nimport {MEDIA, HTTP_VERBS, ROAP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\nexport type MediaRequestType = 'RoapMessage' | 'LocalMute';\nexport type RequestResult = any;\n\nexport type RoapRequest = {\n type: 'RoapMessage';\n selfUrl: string;\n mediaId: string;\n roapMessage: any;\n reachability: any;\n clientMediaPreferences: ClientMediaPreferences;\n sequence?: any;\n};\n\nexport type LocalMuteRequest = {\n type: 'LocalMute';\n selfUrl: string;\n mediaId: string;\n sequence?: any;\n muteOptions: {\n audioMuted?: boolean;\n videoMuted?: boolean;\n };\n};\n\nexport type Request = RoapRequest | LocalMuteRequest;\n\n/** Class representing a single /media request being sent to Locus */\nclass InternalRequestInfo {\n public readonly request: Request;\n private pendingPromises: Defer[];\n private sendRequestFn: (request: Request) => Promise<RequestResult>;\n\n /** Constructor */\n constructor(\n request: Request,\n pendingPromise: Defer,\n sendRequestFn: (request: Request) => Promise<RequestResult>\n ) {\n this.request = request;\n this.pendingPromises = [pendingPromise];\n this.sendRequestFn = sendRequestFn;\n }\n\n /**\n * Returns the list of pending promises associated with this request\n */\n public getPendingPromises() {\n return this.pendingPromises;\n }\n\n /**\n * Adds promises to the list of pending promises associated with this request\n */\n public addPendingPromises(pendingPromises: Defer[]) {\n this.pendingPromises.push(...pendingPromises);\n }\n\n /**\n * Executes the request. Returned promise is resolved once the request\n * is completed (no matter if it succeeded or failed).\n */\n public execute(): Promise<void> {\n return this.sendRequestFn(this.request)\n .then((result) => {\n // resolve all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.resolve(result));\n })\n .catch((e) => {\n // reject all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.reject(e));\n });\n }\n}\n\nexport type Config = {\n device: {\n url: string;\n deviceType: string;\n countryCode?: string;\n regionCode?: string;\n };\n correlationId: string;\n meetingId: string;\n preferTranscoding: boolean;\n};\n\n/**\n * Returns true if the request is triggering confluence creation in the server\n */\nfunction isRequestAffectingConfluenceState(request: Request): boolean {\n return (\n request.type === 'RoapMessage' && request.roapMessage.messageType === ROAP.ROAP_TYPES.OFFER\n );\n}\n\n/**\n * This class manages all /media API requests to Locus. Every call to that\n * Locus API has to go through this class.\n */\nexport class LocusMediaRequest extends WebexPlugin {\n private config: Config;\n private latestAudioMuted?: boolean;\n private latestVideoMuted?: boolean;\n private isRequestInProgress: boolean;\n private queuedRequests: InternalRequestInfo[];\n private confluenceState: 'not created' | 'creation in progress' | 'created';\n /**\n * Constructor\n */\n constructor(config: Config, options: any) {\n super({}, options);\n this.isRequestInProgress = false;\n this.queuedRequests = [];\n this.config = config;\n this.confluenceState = 'not created';\n }\n\n /**\n * Add a request to the internal queue.\n */\n private addToQueue(info: InternalRequestInfo) {\n if (info.request.type === 'LocalMute' && this.queuedRequests.length > 0) {\n // We don't need additional local mute requests in the queue.\n // We only need at most 1 local mute or 1 roap request, because\n // roap requests also include mute state, so whatever request\n // is sent out, it will send the latest local mute state.\n // We only need to store the pendingPromises so that they get resolved\n // when the roap request is sent out.\n this.queuedRequests[0].addPendingPromises(info.getPendingPromises());\n\n return;\n }\n\n if (info.request.type === 'RoapMessage' && this.queuedRequests.length > 0) {\n // remove any LocalMute requests from the queue, because this Roap message\n // will also update the mute status in Locus, so they are redundant\n this.queuedRequests = this.queuedRequests.filter((r) => {\n if (r.request.type === 'LocalMute') {\n // we need to keep the pending promises from the local mute request\n // that we're removing from the queue\n info.addPendingPromises(r.getPendingPromises());\n\n return false;\n }\n\n return true;\n });\n }\n\n this.queuedRequests.push(info);\n }\n\n /**\n * Takes the next request from the queue and executes it. Once that\n * request is completed, the next one will be taken from the queue\n * and executed and this is repeated until the queue is empty.\n */\n private executeNextQueuedRequest(): void {\n if (this.isRequestInProgress) {\n return;\n }\n\n const nextRequest = this.queuedRequests.shift();\n\n if (nextRequest) {\n this.isRequestInProgress = true;\n nextRequest.execute().then(() => {\n this.isRequestInProgress = false;\n this.executeNextQueuedRequest();\n });\n }\n }\n\n /**\n * Returns latest requested audio and video mute values. If they have never been\n * requested, we assume audio/video to be muted.\n */\n private getLatestMuteState() {\n const audioMuted = this.latestAudioMuted !== undefined ? this.latestAudioMuted : true;\n const videoMuted = this.latestVideoMuted !== undefined ? this.latestVideoMuted : true;\n\n return {audioMuted, videoMuted};\n }\n\n /**\n * Prepares the uri and body for the media request to be sent to Locus\n */\n private sendHttpRequest(request: Request) {\n const uri = `${request.selfUrl}/${MEDIA}`;\n\n const {audioMuted, videoMuted} = this.getLatestMuteState();\n\n // first setup things common to all requests\n const body: any = {\n device: this.config.device,\n correlationId: this.config.correlationId,\n };\n\n const localMedias: any = {\n audioMuted,\n videoMuted,\n };\n\n // now add things specific to request type\n switch (request.type) {\n case 'LocalMute':\n body.respOnlySdp = true;\n body.usingResource = null;\n break;\n\n case 'RoapMessage':\n localMedias.roapMessage = request.roapMessage;\n localMedias.reachability = request.reachability;\n body.clientMediaPreferences = request.clientMediaPreferences;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n break;\n }\n\n if (request.sequence) {\n body.sequence = request.sequence;\n }\n\n body.localMedias = [\n {\n localSdp: JSON.stringify(localMedias), // this part must be JSON stringified, Locus requires this\n mediaId: request.mediaId,\n },\n ];\n\n LoggerProxy.logger.info(\n `Meeting:LocusMediaRequest#sendHttpRequest --> ${request.type} audioMuted=${audioMuted} videoMuted=${videoMuted}`\n );\n\n if (isRequestAffectingConfluenceState(request) && this.confluenceState === 'not created') {\n this.confluenceState = 'creation in progress';\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n })\n .then((result) => {\n if (isRequestAffectingConfluenceState(request)) {\n this.confluenceState = 'created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n }\n\n return result;\n })\n .catch((e) => {\n if (\n isRequestAffectingConfluenceState(request) &&\n this.confluenceState === 'creation in progress'\n ) {\n this.confluenceState = 'not created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n rawError: e,\n },\n });\n }\n\n throw e;\n });\n }\n\n /**\n * Sends a media request to Locus\n */\n public send(request: Request): Promise<RequestResult> {\n if (request.type === 'LocalMute') {\n const {audioMuted, videoMuted} = request.muteOptions;\n\n if (audioMuted !== undefined) {\n this.latestAudioMuted = audioMuted;\n }\n if (videoMuted !== undefined) {\n this.latestVideoMuted = videoMuted;\n }\n\n if (this.confluenceState === 'not created') {\n // if there is no confluence, there is no point sending out local mute request\n // as it will fail so we just store the latest audio/video muted values\n // and resolve immediately, so that higher layer (MuteState class) doesn't get blocked\n // and can call us again if user mutes/unmutes again before confluence is created\n LoggerProxy.logger.info(\n 'Meeting:LocusMediaRequest#send --> called with LocalMute request before confluence creation'\n );\n\n return Promise.resolve({});\n }\n }\n\n const pendingPromise = new Defer();\n\n const newRequest = new InternalRequestInfo(\n request,\n pendingPromise,\n this.sendHttpRequest.bind(this)\n );\n\n this.addToQueue(newRequest);\n\n defer(() => this.executeNextQueuedRequest());\n\n return pendingPromise.promise;\n }\n\n /** Returns true if a confluence on the server is already created */\n public isConfluenceCreated() {\n return this.confluenceState === 'created';\n }\n}\n"],"mappings":"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"}
|
package/dist/meeting/request.js
CHANGED
|
@@ -131,17 +131,13 @@ var MeetingRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlu
|
|
|
131
131
|
*/
|
|
132
132
|
function () {
|
|
133
133
|
var _joinMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
|
|
134
|
-
var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, locusClusterUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, reachability,
|
|
134
|
+
var asResourceOccupant, inviteeAddress, meetingNumber, permissionToken, deviceUrl, locusUrl, locusClusterUrl, resourceId, correlationId, ensureConversation, moderator, pin, moveToResource, roapMessage, reachability, breakoutsSupported, locale, _options$deviceCapabi, deviceCapabilities, liveAnnotationSupported, clientMediaPreferences, alias, url, body, clusterUrl;
|
|
135
135
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
136
136
|
while (1) switch (_context2.prev = _context2.next) {
|
|
137
137
|
case 0:
|
|
138
|
-
asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, locusClusterUrl = options.locusClusterUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, reachability = options.reachability,
|
|
138
|
+
asResourceOccupant = options.asResourceOccupant, inviteeAddress = options.inviteeAddress, meetingNumber = options.meetingNumber, permissionToken = options.permissionToken, deviceUrl = options.deviceUrl, locusUrl = options.locusUrl, locusClusterUrl = options.locusClusterUrl, resourceId = options.resourceId, correlationId = options.correlationId, ensureConversation = options.ensureConversation, moderator = options.moderator, pin = options.pin, moveToResource = options.moveToResource, roapMessage = options.roapMessage, reachability = options.reachability, breakoutsSupported = options.breakoutsSupported, locale = options.locale, _options$deviceCapabi = options.deviceCapabilities, deviceCapabilities = _options$deviceCapabi === void 0 ? [] : _options$deviceCapabi, liveAnnotationSupported = options.liveAnnotationSupported, clientMediaPreferences = options.clientMediaPreferences, alias = options.alias;
|
|
139
139
|
_loggerProxy.default.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
140
140
|
url = '';
|
|
141
|
-
_context2.next = 5;
|
|
142
|
-
return this.getJoinCookie();
|
|
143
|
-
case 5:
|
|
144
|
-
joinCookie = _context2.sent;
|
|
145
141
|
body = {
|
|
146
142
|
asResourceOccupant: asResourceOccupant,
|
|
147
143
|
device: {
|
|
@@ -156,11 +152,7 @@ var MeetingRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlu
|
|
|
156
152
|
allowMultiDevice: true,
|
|
157
153
|
ensureConversation: ensureConversation || false,
|
|
158
154
|
supportsNativeLobby: 1,
|
|
159
|
-
clientMediaPreferences:
|
|
160
|
-
preferTranscoding: preferTranscoding !== null && preferTranscoding !== void 0 ? preferTranscoding : true,
|
|
161
|
-
joinCookie: joinCookie,
|
|
162
|
-
ipver: ipVersion
|
|
163
|
-
}
|
|
155
|
+
clientMediaPreferences: clientMediaPreferences
|
|
164
156
|
};
|
|
165
157
|
if (alias) {
|
|
166
158
|
body.alias = alias;
|
|
@@ -206,44 +198,44 @@ var MeetingRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlu
|
|
|
206
198
|
body.pin = pin;
|
|
207
199
|
}
|
|
208
200
|
if (!locusUrl) {
|
|
209
|
-
_context2.next =
|
|
201
|
+
_context2.next = 18;
|
|
210
202
|
break;
|
|
211
203
|
}
|
|
212
204
|
url = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT);
|
|
213
|
-
_context2.next =
|
|
205
|
+
_context2.next = 35;
|
|
214
206
|
break;
|
|
215
|
-
case
|
|
207
|
+
case 18:
|
|
216
208
|
if (!(inviteeAddress || meetingNumber)) {
|
|
217
|
-
_context2.next =
|
|
209
|
+
_context2.next = 35;
|
|
218
210
|
break;
|
|
219
211
|
}
|
|
220
|
-
_context2.prev =
|
|
212
|
+
_context2.prev = 19;
|
|
221
213
|
if (!locusClusterUrl) {
|
|
222
|
-
_context2.next =
|
|
214
|
+
_context2.next = 24;
|
|
223
215
|
break;
|
|
224
216
|
}
|
|
225
217
|
clusterUrl = "https://".concat(locusClusterUrl, "/locus/api/v1");
|
|
226
|
-
_context2.next =
|
|
218
|
+
_context2.next = 27;
|
|
227
219
|
break;
|
|
228
|
-
case
|
|
229
|
-
_context2.next =
|
|
220
|
+
case 24:
|
|
221
|
+
_context2.next = 26;
|
|
230
222
|
return this.webex.internal.services.waitForCatalog('postauth');
|
|
231
|
-
case
|
|
223
|
+
case 26:
|
|
232
224
|
// @ts-ignore
|
|
233
225
|
clusterUrl = this.webex.internal.services.get('locus');
|
|
234
|
-
case
|
|
226
|
+
case 27:
|
|
235
227
|
url = "".concat(clusterUrl, "/").concat(_constants.LOCI, "/").concat(_constants.CALL);
|
|
236
228
|
body.invitee = {
|
|
237
229
|
address: inviteeAddress || "wbxmn:".concat(meetingNumber)
|
|
238
230
|
};
|
|
239
|
-
_context2.next =
|
|
231
|
+
_context2.next = 35;
|
|
240
232
|
break;
|
|
241
|
-
case
|
|
242
|
-
_context2.prev =
|
|
243
|
-
_context2.t0 = _context2["catch"](
|
|
233
|
+
case 31:
|
|
234
|
+
_context2.prev = 31;
|
|
235
|
+
_context2.t0 = _context2["catch"](19);
|
|
244
236
|
_loggerProxy.default.logger.error("Meeting:request#joinMeeting Error Joining ".concat(inviteeAddress || meetingNumber, " --> ").concat(_context2.t0));
|
|
245
237
|
throw _context2.t0;
|
|
246
|
-
case
|
|
238
|
+
case 35:
|
|
247
239
|
// TODO: -- this will be resolved in SDK request
|
|
248
240
|
url = url.concat("?".concat(_constants.ALTERNATE_REDIRECT_TRUE));
|
|
249
241
|
if (resourceId === inviteeAddress) {
|
|
@@ -266,11 +258,11 @@ var MeetingRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlu
|
|
|
266
258
|
uri: url,
|
|
267
259
|
body: body
|
|
268
260
|
}));
|
|
269
|
-
case
|
|
261
|
+
case 39:
|
|
270
262
|
case "end":
|
|
271
263
|
return _context2.stop();
|
|
272
264
|
}
|
|
273
|
-
}, _callee2, this, [[
|
|
265
|
+
}, _callee2, this, [[19, 31]]);
|
|
274
266
|
}));
|
|
275
267
|
function joinMeeting(_x) {
|
|
276
268
|
return _joinMeeting.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_webexCore","_common","_internalPluginMetrics","_loggerProxy","_constants","_util","_excluded","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","meeting","otherAttrs","_objectWithoutProperties2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee","joinCookieRaw","joinCookie","wrap","_callee$","_context","prev","next","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","sent","JSON","parse","abrupt","t0","LoggerProxy","logger","error","concat","stop","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","debounce","changeVideoLayout","leading","trailing","_createClass2","key","value","_joinMeeting","_callee2","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","preferTranscoding","breakoutsSupported","locale","_options$deviceCapabi","deviceCapabilities","liveAnnotationSupported","ipVersion","alias","url","body","clusterUrl","_callee2$","_context2","info","getJoinCookie","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","ipver","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","services","waitForCatalog","LOCI","CALL","invitee","address","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","_stringify","request","method","HTTP_VERBS","POST","uri","joinMeeting","_x","refreshCaptcha","_ref2","captchaRefreshUrl","captchaId","err","dialIn","_ref3","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOut","_ref4","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","getLocusDTO","GET","_promise","reject","disconnectPhoneAudio","_ref5","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","_ref6","leaveMeeting","_ref7","buildLeaveMeetingRequestOptions","acknowledgeMeeting","ALERT","lockMeeting","CONTROLS","lock","locked","PATCH","declineMeeting","DECLINE","reason","changeMeetingFloor","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","sendDTMF","_ref8","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","_ref9","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","endMeetingForAll","_ref10","END","keepAlive","_ref11","keepAliveUrl","sendReaction","_ref12","reactionChannelUrl","reaction","participantId","sender","toggleReactions","_ref13","enable","requestingParticipantId","reactions","enabled","getLocusStatusByUrl","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n IP_VERSION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @param {String} options.alias\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n ipVersion?: IP_VERSION;\n alias?: string;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n ipVersion,\n alias,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const joinCookie = await this.getJoinCookie();\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n joinCookie,\n ipver: ipVersion,\n },\n };\n\n if (alias) {\n body.alias = alias;\n }\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_webexCore","_common","_internalPluginMetrics","_loggerProxy","_constants","_util","_excluded","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","meeting","otherAttrs","_objectWithoutProperties2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee","joinCookieRaw","joinCookie","wrap","_callee$","_context","prev","next","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","sent","JSON","parse","abrupt","t0","LoggerProxy","logger","error","concat","stop","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","debounce","changeVideoLayout","leading","trailing","_createClass2","key","value","_joinMeeting","_callee2","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","breakoutsSupported","locale","_options$deviceCapabi","deviceCapabilities","liveAnnotationSupported","clientMediaPreferences","alias","url","body","clusterUrl","_callee2$","_context2","info","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","services","waitForCatalog","LOCI","CALL","invitee","address","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","_stringify","request","method","HTTP_VERBS","POST","uri","joinMeeting","_x","refreshCaptcha","_ref2","captchaRefreshUrl","captchaId","err","dialIn","_ref3","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOut","_ref4","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","getLocusDTO","GET","_promise","reject","disconnectPhoneAudio","_ref5","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","_ref6","leaveMeeting","_ref7","buildLeaveMeetingRequestOptions","acknowledgeMeeting","ALERT","lockMeeting","CONTROLS","lock","locked","PATCH","declineMeeting","DECLINE","reason","changeMeetingFloor","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","sendDTMF","_ref8","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","_ref9","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","endMeetingForAll","_ref10","END","keepAlive","_ref11","keepAliveUrl","sendReaction","_ref12","reactionChannelUrl","reaction","participantId","sender","toggleReactions","_ref13","enable","requestingParticipantId","reactions","enabled","getLocusStatusByUrl","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @param {String} options.alias\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n alias?: string;\n clientMediaPreferences: ClientMediaPreferences;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n clientMediaPreferences,\n alias,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences,\n };\n\n if (alias) {\n body.alias = alias;\n }\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
|