@webex/plugin-meetings 3.0.0-beta.213 → 3.0.0-beta.215
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/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +38 -2
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +69 -26
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +45 -11
- package/dist/meeting/util.js.map +1 -1
- package/dist/types/meeting/index.d.ts +32 -2
- package/dist/types/meeting/request.d.ts +31 -1
- package/dist/types/meeting/util.d.ts +15 -0
- package/package.json +19 -19
- package/src/meeting/index.ts +47 -4
- package/src/meeting/request.ts +48 -1
- package/src/meeting/util.ts +55 -12
- package/test/unit/spec/meeting/index.js +40 -3
- package/test/unit/spec/meeting/request.js +114 -41
- package/test/unit/spec/meeting/utils.js +186 -47
package/dist/meeting/request.js
CHANGED
|
@@ -56,6 +56,7 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
56
56
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "changeVideoLayoutDebounced", void 0);
|
|
57
57
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingRef", void 0);
|
|
58
58
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "locusDeltaRequest", void 0);
|
|
59
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "buildLocusDeltaRequestOptions", void 0);
|
|
59
60
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getJoinCookie", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
60
61
|
var joinCookieRaw, joinCookie;
|
|
61
62
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -92,6 +93,7 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
92
93
|
}, _callee, null, [[4, 10]]);
|
|
93
94
|
})));
|
|
94
95
|
_this.locusDeltaRequest = _util.default.generateLocusDeltaRequest(meeting);
|
|
96
|
+
_this.buildLocusDeltaRequestOptions = _util.default.generateBuildLocusDeltaRequestOptions(meeting);
|
|
95
97
|
_this.changeVideoLayoutDebounced = (0, _debounce2.default)(_this.changeVideoLayout, 2000, {
|
|
96
98
|
leading: true,
|
|
97
99
|
trailing: true
|
|
@@ -417,23 +419,53 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
417
419
|
}
|
|
418
420
|
|
|
419
421
|
/**
|
|
420
|
-
*
|
|
422
|
+
* Prepares request options to to leave a meeting
|
|
421
423
|
* @param {Object} options
|
|
422
424
|
* @param {Url} options.locusUrl
|
|
423
425
|
* @param {String} options.selfId
|
|
424
426
|
* @param {Url} options.deviceUrl
|
|
425
427
|
* @param {String} options.resourceId,
|
|
426
428
|
* @param {String} options.correlationId
|
|
427
|
-
* @returns {
|
|
429
|
+
* @returns {Object} request options
|
|
428
430
|
*/
|
|
429
431
|
}, {
|
|
430
|
-
key: "
|
|
431
|
-
value: function
|
|
432
|
+
key: "prepareLeaveMeetingRequestOptions",
|
|
433
|
+
value: function prepareLeaveMeetingRequestOptions(_ref6) {
|
|
432
434
|
var locusUrl = _ref6.locusUrl,
|
|
433
435
|
selfId = _ref6.selfId,
|
|
434
436
|
url = _ref6.deviceUrl,
|
|
435
437
|
resourceId = _ref6.resourceId,
|
|
436
438
|
correlationId = _ref6.correlationId;
|
|
439
|
+
var uri = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT, "/").concat(selfId, "/").concat(_constants.LEAVE);
|
|
440
|
+
var body = {
|
|
441
|
+
device: {
|
|
442
|
+
// @ts-ignore
|
|
443
|
+
deviceType: this.config.meetings.deviceType,
|
|
444
|
+
url: url
|
|
445
|
+
},
|
|
446
|
+
usingResource: resourceId || null,
|
|
447
|
+
correlationId: correlationId
|
|
448
|
+
};
|
|
449
|
+
return {
|
|
450
|
+
method: _constants.HTTP_VERBS.PUT,
|
|
451
|
+
uri: uri,
|
|
452
|
+
body: body
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Make a network request to leave a meeting
|
|
458
|
+
* @param {Object} options
|
|
459
|
+
* @returns {Promise}
|
|
460
|
+
*/
|
|
461
|
+
}, {
|
|
462
|
+
key: "leaveMeeting",
|
|
463
|
+
value: function leaveMeeting(_ref7) {
|
|
464
|
+
var locusUrl = _ref7.locusUrl,
|
|
465
|
+
selfId = _ref7.selfId,
|
|
466
|
+
url = _ref7.deviceUrl,
|
|
467
|
+
resourceId = _ref7.resourceId,
|
|
468
|
+
correlationId = _ref7.correlationId;
|
|
437
469
|
_loggerProxy.default.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);
|
|
438
470
|
var uri = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT, "/").concat(selfId, "/").concat(_constants.LEAVE);
|
|
439
471
|
var body = {
|
|
@@ -452,6 +484,17 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
452
484
|
});
|
|
453
485
|
}
|
|
454
486
|
|
|
487
|
+
/**
|
|
488
|
+
* Builds request options to leave a meeting
|
|
489
|
+
* @param {Object} options
|
|
490
|
+
* @returns {Object} request options
|
|
491
|
+
*/
|
|
492
|
+
}, {
|
|
493
|
+
key: "buildLeaveMeetingRequestOptions",
|
|
494
|
+
value: function buildLeaveMeetingRequestOptions(options) {
|
|
495
|
+
return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
|
|
496
|
+
}
|
|
497
|
+
|
|
455
498
|
/**
|
|
456
499
|
* Make a network request to acknowledge a meeting
|
|
457
500
|
* @param {Object} options
|
|
@@ -592,10 +635,10 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
592
635
|
*/
|
|
593
636
|
}, {
|
|
594
637
|
key: "sendDTMF",
|
|
595
|
-
value: function sendDTMF(
|
|
596
|
-
var locusUrl =
|
|
597
|
-
deviceUrl =
|
|
598
|
-
tones =
|
|
638
|
+
value: function sendDTMF(_ref8) {
|
|
639
|
+
var locusUrl = _ref8.locusUrl,
|
|
640
|
+
deviceUrl = _ref8.deviceUrl,
|
|
641
|
+
tones = _ref8.tones;
|
|
599
642
|
// @ts-ignore
|
|
600
643
|
return this.locusDeltaRequest({
|
|
601
644
|
method: _constants.HTTP_VERBS.POST,
|
|
@@ -626,12 +669,12 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
626
669
|
*/
|
|
627
670
|
}, {
|
|
628
671
|
key: "changeVideoLayout",
|
|
629
|
-
value: function changeVideoLayout(
|
|
630
|
-
var locusUrl =
|
|
631
|
-
deviceUrl =
|
|
632
|
-
layoutType =
|
|
633
|
-
main =
|
|
634
|
-
content =
|
|
672
|
+
value: function changeVideoLayout(_ref9) {
|
|
673
|
+
var locusUrl = _ref9.locusUrl,
|
|
674
|
+
deviceUrl = _ref9.deviceUrl,
|
|
675
|
+
layoutType = _ref9.layoutType,
|
|
676
|
+
main = _ref9.main,
|
|
677
|
+
content = _ref9.content;
|
|
635
678
|
// send main/content renderInfo only if both width and height are specified
|
|
636
679
|
if (main && (!main.width || !main.height)) {
|
|
637
680
|
return _promise.default.reject(new Error("Both width and height must be specified. One of them is missing for main: ".concat((0, _stringify.default)(main))));
|
|
@@ -676,8 +719,8 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
676
719
|
*/
|
|
677
720
|
}, {
|
|
678
721
|
key: "endMeetingForAll",
|
|
679
|
-
value: function endMeetingForAll(
|
|
680
|
-
var locusUrl =
|
|
722
|
+
value: function endMeetingForAll(_ref10) {
|
|
723
|
+
var locusUrl = _ref10.locusUrl;
|
|
681
724
|
var uri = "".concat(locusUrl, "/").concat(_constants.END);
|
|
682
725
|
|
|
683
726
|
// @ts-ignore
|
|
@@ -695,8 +738,8 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
695
738
|
*/
|
|
696
739
|
}, {
|
|
697
740
|
key: "keepAlive",
|
|
698
|
-
value: function keepAlive(
|
|
699
|
-
var keepAliveUrl =
|
|
741
|
+
value: function keepAlive(_ref11) {
|
|
742
|
+
var keepAliveUrl = _ref11.keepAliveUrl;
|
|
700
743
|
// @ts-ignore
|
|
701
744
|
return this.request({
|
|
702
745
|
method: _constants.HTTP_VERBS.GET,
|
|
@@ -714,10 +757,10 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
714
757
|
*/
|
|
715
758
|
}, {
|
|
716
759
|
key: "sendReaction",
|
|
717
|
-
value: function sendReaction(
|
|
718
|
-
var reactionChannelUrl =
|
|
719
|
-
reaction =
|
|
720
|
-
participantId =
|
|
760
|
+
value: function sendReaction(_ref12) {
|
|
761
|
+
var reactionChannelUrl = _ref12.reactionChannelUrl,
|
|
762
|
+
reaction = _ref12.reaction,
|
|
763
|
+
participantId = _ref12.participantId;
|
|
721
764
|
var uri = reactionChannelUrl;
|
|
722
765
|
|
|
723
766
|
// @ts-ignore
|
|
@@ -741,10 +784,10 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
741
784
|
*/
|
|
742
785
|
}, {
|
|
743
786
|
key: "toggleReactions",
|
|
744
|
-
value: function toggleReactions(
|
|
745
|
-
var enable =
|
|
746
|
-
locusUrl =
|
|
747
|
-
requestingParticipantId =
|
|
787
|
+
value: function toggleReactions(_ref13) {
|
|
788
|
+
var enable = _ref13.enable,
|
|
789
|
+
locusUrl = _ref13.locusUrl,
|
|
790
|
+
requestingParticipantId = _ref13.requestingParticipantId;
|
|
748
791
|
var uri = "".concat(locusUrl, "/").concat(_constants.CONTROLS);
|
|
749
792
|
|
|
750
793
|
// @ts-ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","length","geoHintInfo","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","annotationInfo","annotation","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","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';\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';\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\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\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 * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: 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 breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\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 },\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 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 }\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 // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n url = `${this.webex.internal.services.get('locus')}/${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) {\n body.localMedias = roapMessage.localMedias;\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 return 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 * Make a network request 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 {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 * 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 * @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 }\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?.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":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","length","geoHintInfo","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","GET","reject","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","annotationInfo","annotation","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","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';\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';\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 * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: 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 breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\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 },\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 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 }\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 // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n url = `${this.webex.internal.services.get('locus')}/${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) {\n body.localMedias = roapMessage.localMedias;\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 return 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 * @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 }\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?.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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"}
|
package/dist/meeting/util.js
CHANGED
|
@@ -190,6 +190,23 @@ var MeetingUtil = {
|
|
|
190
190
|
return _promise.default.reject(err);
|
|
191
191
|
});
|
|
192
192
|
},
|
|
193
|
+
/**
|
|
194
|
+
* Returns options for leaving a meeting.
|
|
195
|
+
* @param {any} meeting
|
|
196
|
+
* @param {any} options
|
|
197
|
+
* @returns {any} leave options
|
|
198
|
+
*/
|
|
199
|
+
prepareLeaveMeetingOptions: function prepareLeaveMeetingOptions(meeting) {
|
|
200
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
201
|
+
var defaultOptions = {
|
|
202
|
+
locusUrl: meeting.locusUrl,
|
|
203
|
+
selfId: meeting.selfId,
|
|
204
|
+
correlationId: meeting.correlationId,
|
|
205
|
+
resourceId: meeting.resourceId,
|
|
206
|
+
deviceUrl: meeting.deviceUrl
|
|
207
|
+
};
|
|
208
|
+
return _objectSpread(_objectSpread({}, defaultOptions), options);
|
|
209
|
+
},
|
|
193
210
|
// by default will leave on meeting's resourceId
|
|
194
211
|
// if you explicity want it not to leave on resource id, pass
|
|
195
212
|
// {resourceId: null}
|
|
@@ -203,14 +220,7 @@ var MeetingUtil = {
|
|
|
203
220
|
if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {
|
|
204
221
|
return _promise.default.reject(new _webexErrors.UserNotJoinedError());
|
|
205
222
|
}
|
|
206
|
-
var
|
|
207
|
-
locusUrl: meeting.locusUrl,
|
|
208
|
-
selfId: meeting.selfId,
|
|
209
|
-
correlationId: meeting.correlationId,
|
|
210
|
-
resourceId: meeting.resourceId,
|
|
211
|
-
deviceUrl: meeting.deviceUrl
|
|
212
|
-
};
|
|
213
|
-
var leaveOptions = _objectSpread(_objectSpread({}, defaultOptions), options);
|
|
223
|
+
var leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);
|
|
214
224
|
return meeting.meetingRequest.leaveMeeting(leaveOptions).then(function () {
|
|
215
225
|
if (options.moveMeeting) {
|
|
216
226
|
return _promise.default.resolve();
|
|
@@ -289,6 +299,17 @@ var MeetingUtil = {
|
|
|
289
299
|
return _promise.default.reject(new _joinMeeting.default(options, 'Error Joining Meeting', err));
|
|
290
300
|
});
|
|
291
301
|
},
|
|
302
|
+
/**
|
|
303
|
+
* Returns request options for leaving a meeting.
|
|
304
|
+
* @param {any} meeting
|
|
305
|
+
* @param {any} options
|
|
306
|
+
* @returns {any} request options
|
|
307
|
+
*/
|
|
308
|
+
buildLeaveFetchRequestOptions: function buildLeaveFetchRequestOptions(meeting) {
|
|
309
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
310
|
+
var leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);
|
|
311
|
+
return meeting.meetingRequest.buildLeaveMeetingRequestOptions(leaveOptions);
|
|
312
|
+
},
|
|
292
313
|
getTrack: function getTrack(stream) {
|
|
293
314
|
var audioTrack = null;
|
|
294
315
|
var videoTrack = null;
|
|
@@ -513,18 +534,31 @@ var MeetingUtil = {
|
|
|
513
534
|
}
|
|
514
535
|
return response;
|
|
515
536
|
},
|
|
516
|
-
|
|
537
|
+
generateBuildLocusDeltaRequestOptions: function generateBuildLocusDeltaRequestOptions(originalMeeting) {
|
|
517
538
|
var meetingRef = new WeakRef(originalMeeting);
|
|
518
|
-
var
|
|
539
|
+
var buildLocusDeltaRequestOptions = function buildLocusDeltaRequestOptions(originalOptions) {
|
|
519
540
|
var meeting = meetingRef.deref();
|
|
520
541
|
if (!meeting) {
|
|
521
|
-
return
|
|
542
|
+
return originalOptions;
|
|
522
543
|
}
|
|
523
544
|
var options = (0, _cloneDeep2.default)(originalOptions);
|
|
524
545
|
if (!options.body) {
|
|
525
546
|
options.body = {};
|
|
526
547
|
}
|
|
527
548
|
MeetingUtil.addSequence(meeting, options.body);
|
|
549
|
+
return options;
|
|
550
|
+
};
|
|
551
|
+
return buildLocusDeltaRequestOptions;
|
|
552
|
+
},
|
|
553
|
+
generateLocusDeltaRequest: function generateLocusDeltaRequest(originalMeeting) {
|
|
554
|
+
var meetingRef = new WeakRef(originalMeeting);
|
|
555
|
+
var buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(originalMeeting);
|
|
556
|
+
var locusDeltaRequest = function locusDeltaRequest(originalOptions) {
|
|
557
|
+
var meeting = meetingRef.deref();
|
|
558
|
+
if (!meeting) {
|
|
559
|
+
return _promise.default.resolve();
|
|
560
|
+
}
|
|
561
|
+
var options = buildLocusDeltaRequestOptions(originalOptions);
|
|
528
562
|
return meeting.request(options).then(function (response) {
|
|
529
563
|
return MeetingUtil.updateLocusWithDelta(meeting, response);
|
|
530
564
|
});
|