@webex/plugin-meetings 2.35.4 → 2.36.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/dist/media/index.js +6 -2
- package/dist/media/index.js.map +1 -1
- package/dist/meeting/index.js +55 -14
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +28 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/reactions/reactions.js +111 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +40 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/package.json +17 -17
- package/src/media/index.ts +6 -2
- package/src/meeting/index.ts +47 -15
- package/src/meeting/request.ts +23 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +36 -0
- package/test/unit/spec/meeting/index.js +120 -14
- package/test/unit/spec/meeting/request.js +25 -1
package/dist/meeting/request.js
CHANGED
|
@@ -796,6 +796,34 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
796
796
|
uri: keepAliveUrl
|
|
797
797
|
});
|
|
798
798
|
}
|
|
799
|
+
/**
|
|
800
|
+
* Make a network request to send a reaction.
|
|
801
|
+
* @param {Object} options
|
|
802
|
+
* @param {Url} options.reactionChannelUrl
|
|
803
|
+
* @param {Reaction} options.reaction
|
|
804
|
+
* @param {string} options.senderID
|
|
805
|
+
* @returns {Promise}
|
|
806
|
+
*/
|
|
807
|
+
|
|
808
|
+
}, {
|
|
809
|
+
key: "sendReaction",
|
|
810
|
+
value: function sendReaction(_ref10) {
|
|
811
|
+
var reactionChannelUrl = _ref10.reactionChannelUrl,
|
|
812
|
+
reaction = _ref10.reaction,
|
|
813
|
+
participantId = _ref10.participantId;
|
|
814
|
+
var uri = reactionChannelUrl; // @ts-ignore
|
|
815
|
+
|
|
816
|
+
return this.request({
|
|
817
|
+
method: _constants.HTTP_VERBS.POST,
|
|
818
|
+
uri: uri,
|
|
819
|
+
body: {
|
|
820
|
+
sender: {
|
|
821
|
+
participantId: participantId
|
|
822
|
+
},
|
|
823
|
+
reaction: reaction
|
|
824
|
+
}
|
|
825
|
+
});
|
|
826
|
+
}
|
|
799
827
|
}]);
|
|
800
828
|
return MeetingRequest;
|
|
801
829
|
}(_webexCore.StatelessWebexPlugin);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","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 CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_\n} from '../constants';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n\n constructor(attrs: any, options: any) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});\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 * @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 }) {\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 } = options;\n\n LoggerProxy.logger.info(\n 'Meeting:request#joinMeeting --> Joining a meeting',\n correlationId\n );\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 preferTranscoding: preferTranscoding ?? true\n }\n };\n\n // @ts-ignore\n if (this.webex.meetings.clientRegion) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.clientRegion.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 }\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 }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`);\n throw (e);\n }\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({ captchaRefreshUrl, captchaId }: { captchaRefreshUrl: string; captchaId: string }) {\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.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);\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.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options: { desync: boolean; syncUrl: string }) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options: { desync: boolean; locusUrl: string }) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);\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.request({\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(\n 'Meeting:request#leaveMeeting --> Leaving a meeting',\n correlationId\n );\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 // @ts-ignore\n return this.request({\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 // @ts-ignore\n return this.request({\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.id\n * @returns {Promise}\n */\n recordMeeting(options: { locusUrl: string; deviceUrl: string; id: string, recording: any, paused: any }) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused\n }\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock\n }\n };\n\n // @ts-ignore\n return this.request({\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 // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\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.localMedias local sdps\n * @returns {Promise}\n */\n remoteAudioVideoToggle(options: {\n selfId: string;\n locusUrl: string;\n deviceUrl: string;\n resourceId: string;\n localMedias: string;\n } | any) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n };\n\n // @ts-ignore\n return this.request({\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(options: {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n } | any) {\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\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.request({\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(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));\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 = (renderInfoMain || renderInfoContent) ?\n {\n renderInfo:\n {\n main: renderInfoMain,\n content: renderInfoContent\n }\n } : undefined;\n\n // @ts-ignore\n return this.request({\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.request({\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MeetingRequest","attrs","options","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","LoggerProxy","logger","info","url","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","webex","clientRegion","countryCode","regionCode","undefined","PARTICIPANT","internal","services","waitForCatalog","get","LOCI","CALL","invitee","address","error","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","catch","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","desync","syncUrl","split","LOCUS","SYNCDEBUG","GET","reject","phoneUrl","selfId","LEAVE","PUT","ALERT","CONTROLS","record","recording","paused","PATCH","lock","locked","DECLINE","reason","MEDIA","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","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","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 CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n LOCUS,\n MEDIA,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n SEND_DTMF_ENDPOINT,\n _SLIDES_\n} from '../constants';\nimport {Reaction} from '../reactions/reactions.type';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n\n constructor(attrs: any, options: any) {\n super(attrs, options);\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {leading: true, trailing: true});\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 * @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 }) {\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 } = options;\n\n LoggerProxy.logger.info(\n 'Meeting:request#joinMeeting --> Joining a meeting',\n correlationId\n );\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 preferTranscoding: preferTranscoding ?? true\n }\n };\n\n // @ts-ignore\n if (this.webex.meetings.clientRegion) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.clientRegion.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.clientRegion.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 }\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 }\n catch (e) {\n LoggerProxy.logger.error(`Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`);\n throw (e);\n }\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({ captchaRefreshUrl, captchaId }: { captchaRefreshUrl: string; captchaId: string }) {\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.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`);\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.request({\n method: HTTP_VERBS.POST,\n uri,\n body\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Syns the missed delta event\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.syncUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n syncMeeting(options: { desync: boolean; syncUrl: string }) {\n /* eslint-disable no-else-return */\n const {desync} = options;\n let {syncUrl} = options;\n\n /* istanbul ignore else */\n if (desync) {\n // check for existing URL parameters\n syncUrl = syncUrl.concat(syncUrl.split('?')[1] ? '&' : '?').concat(`${LOCUS.SYNCDEBUG}=${desync}`);\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: syncUrl\n }) // TODO: Handle if delta sync failed . Get the full locus object\n .catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`);\n\n return err;\n });\n }\n\n /**\n * Request to get the complete locus object\n * @param {Object} options\n * @param {boolean} options.desync flag to get partial or whole locus object\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getFullLocus(options: { desync: boolean; locusUrl: string }) {\n let {locusUrl} = options;\n const {desync} = options;\n\n if (locusUrl) {\n if (desync) {\n locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#getFullLocus --> Error getting full locus, error ${err}`);\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.request({\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(\n 'Meeting:request#leaveMeeting --> Leaving a meeting',\n correlationId\n );\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 // @ts-ignore\n return this.request({\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 // @ts-ignore\n return this.request({\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.id\n * @returns {Promise}\n */\n recordMeeting(options: { locusUrl: string; deviceUrl: string; id: string, recording: any, paused: any }) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n record: {\n recording: options.recording,\n paused: options.paused\n }\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri,\n body\n });\n }\n\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock\n }\n };\n\n // @ts-ignore\n return this.request({\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 // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body\n });\n }\n\n /**\n * Toggle remote audio and/or video\n * @param {Object} options options for toggling\n * @param {String} options.selfId Locus self id??\n * @param {String} options.locusUrl Locus url\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.localMedias local sdps\n * @returns {Promise}\n */\n remoteAudioVideoToggle(options: {\n selfId: string;\n locusUrl: string;\n deviceUrl: string;\n resourceId: string;\n localMedias: string;\n } | any) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl\n },\n usingResource: options.resourceId || null,\n correlationId: options.correlationId,\n respOnlySdp: true,\n localMedias: options.localMedias,\n clientMediaPreferences: {\n preferTranscoding: options.preferTranscoding ?? true\n }\n };\n\n // @ts-ignore\n return this.request({\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(options: {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n } | any) {\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\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.request({\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(new Error(`Both width and height must be specified. One of them is missing for main: ${JSON.stringify(main)}`));\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(new Error(`Both width and height must be specified. One of them is missing for content: ${JSON.stringify(content)}`));\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 = (renderInfoMain || renderInfoContent) ?\n {\n renderInfo:\n {\n main: renderInfoMain,\n content: renderInfoContent\n }\n } : undefined;\n\n // @ts-ignore\n return this.request({\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.request({\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 }: { reactionChannelUrl: string, reaction: Reaction, participantId: string }) {\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"],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
exports.SkinTones = exports.Reactions = void 0;
|
|
10
|
+
var Reactions = {
|
|
11
|
+
smile: {
|
|
12
|
+
type: 'smile',
|
|
13
|
+
codepoints: '1F642',
|
|
14
|
+
shortcodes: ':slightly_smiling_face:'
|
|
15
|
+
},
|
|
16
|
+
sad: {
|
|
17
|
+
type: 'sad',
|
|
18
|
+
codepoints: '1F625',
|
|
19
|
+
shortcodes: ':sad_but_relieved_face:'
|
|
20
|
+
},
|
|
21
|
+
wow: {
|
|
22
|
+
type: 'wow',
|
|
23
|
+
codepoints: '1F62E',
|
|
24
|
+
shortcodes: ':open_mouth:'
|
|
25
|
+
},
|
|
26
|
+
haha: {
|
|
27
|
+
type: 'haha',
|
|
28
|
+
codepoints: '1F603',
|
|
29
|
+
shortcodes: ':smiley:'
|
|
30
|
+
},
|
|
31
|
+
celebrate: {
|
|
32
|
+
type: 'celebrate',
|
|
33
|
+
codepoints: '1F389',
|
|
34
|
+
shortcodes: ':party_popper:'
|
|
35
|
+
},
|
|
36
|
+
clap: {
|
|
37
|
+
type: 'clap',
|
|
38
|
+
codepoints: '1F44F',
|
|
39
|
+
shortcodes: ':clap:'
|
|
40
|
+
},
|
|
41
|
+
thumbs_up: {
|
|
42
|
+
type: 'thumb_up',
|
|
43
|
+
codepoints: '1F44D',
|
|
44
|
+
shortcodes: ':thumbsup:'
|
|
45
|
+
},
|
|
46
|
+
thumbs_down: {
|
|
47
|
+
type: 'thumb_down',
|
|
48
|
+
codepoints: '1F44E',
|
|
49
|
+
shortcodes: ':thumbsdown:'
|
|
50
|
+
},
|
|
51
|
+
heart: {
|
|
52
|
+
type: 'heart',
|
|
53
|
+
codepoints: '2764',
|
|
54
|
+
shortcodes: ':heart:'
|
|
55
|
+
},
|
|
56
|
+
fire: {
|
|
57
|
+
type: 'fire',
|
|
58
|
+
codepoints: '1F525',
|
|
59
|
+
shortcodes: ':fire:'
|
|
60
|
+
},
|
|
61
|
+
prayer: {
|
|
62
|
+
type: 'prayer',
|
|
63
|
+
codepoints: '1F64F',
|
|
64
|
+
shortcodes: ':pray:'
|
|
65
|
+
},
|
|
66
|
+
speed_up: {
|
|
67
|
+
type: 'speed_up',
|
|
68
|
+
codepoints: '1F407',
|
|
69
|
+
shortcodes: ':rabbit:'
|
|
70
|
+
},
|
|
71
|
+
slow_down: {
|
|
72
|
+
type: 'slow_down',
|
|
73
|
+
codepoints: '1F422',
|
|
74
|
+
shortcodes: ':turtle:'
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
exports.Reactions = Reactions;
|
|
78
|
+
var SkinTones = {
|
|
79
|
+
normal: {
|
|
80
|
+
type: 'normal_skin_tone',
|
|
81
|
+
codepoints: '',
|
|
82
|
+
shortcodes: ''
|
|
83
|
+
},
|
|
84
|
+
light: {
|
|
85
|
+
type: 'light_skin_tone',
|
|
86
|
+
codepoints: '1F3FB',
|
|
87
|
+
shortcodes: ':skin-tone-2:'
|
|
88
|
+
},
|
|
89
|
+
medium_light: {
|
|
90
|
+
type: 'medium_light_skin_tone',
|
|
91
|
+
codepoints: '1F3FC',
|
|
92
|
+
shortcodes: ':skin-tone-3:'
|
|
93
|
+
},
|
|
94
|
+
medium: {
|
|
95
|
+
type: 'medium_skin_tone',
|
|
96
|
+
codepoints: '1F3FD',
|
|
97
|
+
shortcodes: ':skin-tone-4:'
|
|
98
|
+
},
|
|
99
|
+
medium_dark: {
|
|
100
|
+
type: 'medium_dark_skin_tone',
|
|
101
|
+
codepoints: '1F3FE',
|
|
102
|
+
shortcodes: ':skin-tone-5:'
|
|
103
|
+
},
|
|
104
|
+
dark: {
|
|
105
|
+
type: 'dark_skin_tone',
|
|
106
|
+
codepoints: '1F3FF',
|
|
107
|
+
shortcodes: ':skin-tone-6:'
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
exports.SkinTones = SkinTones;
|
|
111
|
+
//# sourceMappingURL=reactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Reactions","smile","type","codepoints","shortcodes","sad","wow","haha","celebrate","clap","thumbs_up","thumbs_down","heart","fire","prayer","speed_up","slow_down","SkinTones","normal","light","medium_light","medium","medium_dark","dark"],"sources":["reactions.ts"],"sourcesContent":["import {Reaction, ReactionType, SkinTone, SkinToneType} from './reactions.type';\n\nconst Reactions: Record<ReactionType, Reaction> = {\n smile: {\n type: 'smile',\n codepoints: '1F642',\n shortcodes: ':slightly_smiling_face:'\n },\n sad: {\n type: 'sad',\n codepoints: '1F625',\n shortcodes: ':sad_but_relieved_face:',\n },\n wow: {\n type: 'wow',\n codepoints: '1F62E',\n shortcodes: ':open_mouth:',\n },\n haha: {\n type: 'haha',\n codepoints: '1F603',\n shortcodes: ':smiley:'\n },\n celebrate: {\n type: 'celebrate',\n codepoints: '1F389',\n shortcodes: ':party_popper:',\n },\n clap: {\n type: 'clap',\n codepoints: '1F44F',\n shortcodes: ':clap:',\n },\n thumbs_up: {\n type: 'thumb_up',\n codepoints: '1F44D',\n shortcodes: ':thumbsup:',\n },\n thumbs_down: {\n type: 'thumb_down',\n codepoints: '1F44E',\n shortcodes: ':thumbsdown:',\n },\n heart: {\n type: 'heart',\n codepoints: '2764',\n shortcodes: ':heart:',\n },\n fire: {\n type: 'fire',\n codepoints: '1F525',\n shortcodes: ':fire:',\n },\n prayer: {\n type: 'prayer',\n codepoints: '1F64F',\n shortcodes: ':pray:',\n },\n speed_up: {\n type: 'speed_up',\n codepoints: '1F407',\n shortcodes: ':rabbit:',\n },\n slow_down: {\n type: 'slow_down',\n codepoints: '1F422',\n shortcodes: ':turtle:',\n }\n};\n\nconst SkinTones: Record<SkinToneType, SkinTone> = {\n normal: {\n type: 'normal_skin_tone',\n codepoints: '',\n shortcodes: '',\n },\n light: {\n type: 'light_skin_tone',\n codepoints: '1F3FB',\n shortcodes: ':skin-tone-2:',\n },\n medium_light: {\n type: 'medium_light_skin_tone',\n codepoints: '1F3FC',\n shortcodes: ':skin-tone-3:',\n },\n medium: {\n type: 'medium_skin_tone',\n codepoints: '1F3FD',\n shortcodes: ':skin-tone-4:',\n },\n medium_dark: {\n type: 'medium_dark_skin_tone',\n codepoints: '1F3FE',\n shortcodes: ':skin-tone-5:',\n },\n dark: {\n type: 'dark_skin_tone',\n codepoints: '1F3FF',\n shortcodes: ':skin-tone-6:',\n }\n};\n\nexport {Reactions, SkinTones};\n"],"mappings":";;;;;;;;;AAEA,IAAMA,SAAyC,GAAG;EAChDC,KAAK,EAAE;IACLC,IAAI,EAAE,OADD;IAELC,UAAU,EAAE,OAFP;IAGLC,UAAU,EAAE;EAHP,CADyC;EAMhDC,GAAG,EAAE;IACHH,IAAI,EAAE,KADH;IAEHC,UAAU,EAAE,OAFT;IAGHC,UAAU,EAAE;EAHT,CAN2C;EAWhDE,GAAG,EAAE;IACHJ,IAAI,EAAE,KADH;IAEHC,UAAU,EAAE,OAFT;IAGHC,UAAU,EAAE;EAHT,CAX2C;EAgBhDG,IAAI,EAAE;IACJL,IAAI,EAAE,MADF;IAEJC,UAAU,EAAE,OAFR;IAGJC,UAAU,EAAE;EAHR,CAhB0C;EAqBhDI,SAAS,EAAE;IACTN,IAAI,EAAE,WADG;IAETC,UAAU,EAAE,OAFH;IAGTC,UAAU,EAAE;EAHH,CArBqC;EA0BhDK,IAAI,EAAE;IACJP,IAAI,EAAE,MADF;IAEJC,UAAU,EAAE,OAFR;IAGJC,UAAU,EAAE;EAHR,CA1B0C;EA+BhDM,SAAS,EAAE;IACTR,IAAI,EAAE,UADG;IAETC,UAAU,EAAE,OAFH;IAGTC,UAAU,EAAE;EAHH,CA/BqC;EAoChDO,WAAW,EAAE;IACXT,IAAI,EAAE,YADK;IAEXC,UAAU,EAAE,OAFD;IAGXC,UAAU,EAAE;EAHD,CApCmC;EAyChDQ,KAAK,EAAE;IACLV,IAAI,EAAE,OADD;IAELC,UAAU,EAAE,MAFP;IAGLC,UAAU,EAAE;EAHP,CAzCyC;EA8ChDS,IAAI,EAAE;IACJX,IAAI,EAAE,MADF;IAEJC,UAAU,EAAE,OAFR;IAGJC,UAAU,EAAE;EAHR,CA9C0C;EAmDhDU,MAAM,EAAE;IACNZ,IAAI,EAAE,QADA;IAENC,UAAU,EAAE,OAFN;IAGNC,UAAU,EAAE;EAHN,CAnDwC;EAwDhDW,QAAQ,EAAE;IACRb,IAAI,EAAE,UADE;IAERC,UAAU,EAAE,OAFJ;IAGRC,UAAU,EAAE;EAHJ,CAxDsC;EA6DhDY,SAAS,EAAE;IACTd,IAAI,EAAE,WADG;IAETC,UAAU,EAAE,OAFH;IAGTC,UAAU,EAAE;EAHH;AA7DqC,CAAlD;;AAoEA,IAAMa,SAAyC,GAAG;EAChDC,MAAM,EAAE;IACNhB,IAAI,EAAE,kBADA;IAENC,UAAU,EAAE,EAFN;IAGNC,UAAU,EAAE;EAHN,CADwC;EAMhDe,KAAK,EAAE;IACLjB,IAAI,EAAE,iBADD;IAELC,UAAU,EAAE,OAFP;IAGLC,UAAU,EAAE;EAHP,CANyC;EAWhDgB,YAAY,EAAE;IACZlB,IAAI,EAAE,wBADM;IAEZC,UAAU,EAAE,OAFA;IAGZC,UAAU,EAAE;EAHA,CAXkC;EAgBhDiB,MAAM,EAAE;IACNnB,IAAI,EAAE,kBADA;IAENC,UAAU,EAAE,OAFN;IAGNC,UAAU,EAAE;EAHN,CAhBwC;EAqBhDkB,WAAW,EAAE;IACXpB,IAAI,EAAE,uBADK;IAEXC,UAAU,EAAE,OAFD;IAGXC,UAAU,EAAE;EAHD,CArBmC;EA0BhDmB,IAAI,EAAE;IACJrB,IAAI,EAAE,gBADF;IAEJC,UAAU,EAAE,OAFR;IAGJC,UAAU,EAAE;EAHR;AA1B0C,CAAlD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
exports.SkinToneType = exports.ReactionType = void 0;
|
|
10
|
+
var ReactionType;
|
|
11
|
+
exports.ReactionType = ReactionType;
|
|
12
|
+
|
|
13
|
+
(function (ReactionType) {
|
|
14
|
+
ReactionType["smile"] = "smile";
|
|
15
|
+
ReactionType["sad"] = "sad";
|
|
16
|
+
ReactionType["wow"] = "wow";
|
|
17
|
+
ReactionType["haha"] = "haha";
|
|
18
|
+
ReactionType["celebrate"] = "celebrate";
|
|
19
|
+
ReactionType["clap"] = "clap";
|
|
20
|
+
ReactionType["thumbs_up"] = "thumbs_up";
|
|
21
|
+
ReactionType["thumbs_down"] = "thumbs_down";
|
|
22
|
+
ReactionType["heart"] = "heart";
|
|
23
|
+
ReactionType["fire"] = "fire";
|
|
24
|
+
ReactionType["prayer"] = "prayer";
|
|
25
|
+
ReactionType["speed_up"] = "speed_up";
|
|
26
|
+
ReactionType["slow_down"] = "slow_down";
|
|
27
|
+
})(ReactionType || (exports.ReactionType = ReactionType = {}));
|
|
28
|
+
|
|
29
|
+
var SkinToneType;
|
|
30
|
+
exports.SkinToneType = SkinToneType;
|
|
31
|
+
|
|
32
|
+
(function (SkinToneType) {
|
|
33
|
+
SkinToneType["normal"] = "normal";
|
|
34
|
+
SkinToneType["light"] = "light";
|
|
35
|
+
SkinToneType["medium_light"] = "medium_light";
|
|
36
|
+
SkinToneType["medium"] = "medium";
|
|
37
|
+
SkinToneType["medium_dark"] = "medium_dark";
|
|
38
|
+
SkinToneType["dark"] = "dark";
|
|
39
|
+
})(SkinToneType || (exports.SkinToneType = SkinToneType = {}));
|
|
40
|
+
//# sourceMappingURL=reactions.type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ReactionType","SkinToneType"],"sources":["reactions.type.ts"],"sourcesContent":["\nexport type EmoticonData = {\n type: string;\n codepoints?: string;\n shortcodes?: string;\n}\n\nexport type SkinTone = EmoticonData;\nexport type Reaction = ReactionData & {\n tone?: SkinTone;\n}\n\nexport enum ReactionType {\n smile = 'smile',\n sad = 'sad',\n wow = 'wow',\n haha = 'haha',\n celebrate = 'celebrate',\n clap = 'clap',\n thumbs_up = 'thumbs_up',\n thumbs_down = 'thumbs_down',\n heart = 'heart',\n fire = 'fire',\n prayer = 'prayer',\n speed_up = 'speed_up',\n slow_down = 'slow_down',\n}\n\nexport enum SkinToneType {\n normal = 'normal',\n light = 'light',\n medium_light = 'medium_light',\n medium = 'medium',\n medium_dark = 'medium_dark',\n dark = 'dark',\n}\n"],"mappings":";;;;;;;;;IAYYA,Y;;;WAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;GAAAA,Y,4BAAAA,Y;;IAgBAC,Y;;;WAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;EAAAA,Y;GAAAA,Y,4BAAAA,Y"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.36.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -28,30 +28,30 @@
|
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@webex/plugin-meetings": "2.
|
|
32
|
-
"@webex/test-helper-chai": "2.
|
|
33
|
-
"@webex/test-helper-mocha": "2.
|
|
34
|
-
"@webex/test-helper-mock-webex": "2.
|
|
35
|
-
"@webex/test-helper-retry": "2.
|
|
36
|
-
"@webex/test-helper-test-users": "2.
|
|
31
|
+
"@webex/plugin-meetings": "2.36.1",
|
|
32
|
+
"@webex/test-helper-chai": "2.36.1",
|
|
33
|
+
"@webex/test-helper-mocha": "2.36.1",
|
|
34
|
+
"@webex/test-helper-mock-webex": "2.36.1",
|
|
35
|
+
"@webex/test-helper-retry": "2.36.1",
|
|
36
|
+
"@webex/test-helper-test-users": "2.36.1",
|
|
37
37
|
"chai": "^4.3.4",
|
|
38
38
|
"chai-as-promised": "^7.1.1",
|
|
39
39
|
"jsdom-global": "3.0.2",
|
|
40
40
|
"sinon": "^9.2.4"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@webex/common": "2.
|
|
43
|
+
"@webex/common": "2.36.1",
|
|
44
44
|
"@webex/internal-media-core": "0.0.7-beta",
|
|
45
|
-
"@webex/internal-plugin-conversation": "2.
|
|
46
|
-
"@webex/internal-plugin-device": "2.
|
|
47
|
-
"@webex/internal-plugin-mercury": "2.
|
|
48
|
-
"@webex/internal-plugin-metrics": "2.
|
|
49
|
-
"@webex/internal-plugin-support": "2.
|
|
50
|
-
"@webex/internal-plugin-user": "2.
|
|
51
|
-
"@webex/plugin-people": "2.
|
|
52
|
-
"@webex/plugin-rooms": "2.
|
|
45
|
+
"@webex/internal-plugin-conversation": "2.36.1",
|
|
46
|
+
"@webex/internal-plugin-device": "2.36.1",
|
|
47
|
+
"@webex/internal-plugin-mercury": "2.36.1",
|
|
48
|
+
"@webex/internal-plugin-metrics": "2.36.1",
|
|
49
|
+
"@webex/internal-plugin-support": "2.36.1",
|
|
50
|
+
"@webex/internal-plugin-user": "2.36.1",
|
|
51
|
+
"@webex/plugin-people": "2.36.1",
|
|
52
|
+
"@webex/plugin-rooms": "2.36.1",
|
|
53
53
|
"@webex/ts-sdp": "1.0.1",
|
|
54
|
-
"@webex/webex-core": "2.
|
|
54
|
+
"@webex/webex-core": "2.36.1",
|
|
55
55
|
"bowser": "^2.11.0",
|
|
56
56
|
"btoa": "^1.2.1",
|
|
57
57
|
"dotenv": "^4.0.0",
|
package/src/media/index.ts
CHANGED
|
@@ -490,12 +490,16 @@ Media.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {
|
|
|
490
490
|
{
|
|
491
491
|
deviceId: video.deviceId ? video.deviceId : undefined,
|
|
492
492
|
width: 320,
|
|
493
|
-
height: 180
|
|
493
|
+
height: 180,
|
|
494
|
+
frameRate: video.frameRate ? video.frameRate : undefined,
|
|
495
|
+
facingMode: video.facingMode ? video.facingMode : undefined,
|
|
494
496
|
} :
|
|
495
497
|
{
|
|
496
498
|
deviceId: video.deviceId ? video.deviceId : undefined,
|
|
497
499
|
width: video.width ? video.width : defaultWidth,
|
|
498
|
-
height: video.height ? video.height : defaultHeight
|
|
500
|
+
height: video.height ? video.height : defaultHeight,
|
|
501
|
+
frameRate: video.frameRate ? video.frameRate : undefined,
|
|
502
|
+
facingMode: video.facingMode ? video.facingMode : undefined,
|
|
499
503
|
} :
|
|
500
504
|
false,
|
|
501
505
|
fake: process.env.NODE_ENV === 'test' // Special case to get fake media for Firefox browser for testing
|
package/src/meeting/index.ts
CHANGED
|
@@ -77,6 +77,8 @@ import MediaError from '../common/errors/media';
|
|
|
77
77
|
import {MeetingInfoV2PasswordError, MeetingInfoV2CaptchaError} from '../meeting-info/meeting-info-v2';
|
|
78
78
|
import BrowserDetection from '../common/browser-detection';
|
|
79
79
|
import RoapCollection from '../roap/collection';
|
|
80
|
+
import {SkinTones, Reactions} from '../reactions/reactions';
|
|
81
|
+
import {Reaction, ReactionType, SkinToneType} from '../reactions/reactions.type';
|
|
80
82
|
|
|
81
83
|
import InMeetingActions from './in-meeting-actions';
|
|
82
84
|
|
|
@@ -407,7 +409,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
407
409
|
mediaConnections: any[];
|
|
408
410
|
meetingFiniteStateMachine: any;
|
|
409
411
|
meetingInfo: object;
|
|
410
|
-
meetingRequest:
|
|
412
|
+
meetingRequest: MeetingRequest;
|
|
411
413
|
members: Members;
|
|
412
414
|
options: object;
|
|
413
415
|
orgId: string;
|
|
@@ -467,8 +469,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
467
469
|
resourceId: any;
|
|
468
470
|
resourceUrl: string;
|
|
469
471
|
selfId: string;
|
|
470
|
-
state: any;
|
|
471
|
-
|
|
472
|
+
state: any;
|
|
472
473
|
namespace = MEETINGS;
|
|
473
474
|
|
|
474
475
|
/**
|
|
@@ -1502,7 +1503,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1502
1503
|
|
|
1503
1504
|
// If user moved to a JOINED state and there is a pending floor grant trigger it
|
|
1504
1505
|
if (this.floorGrantPending && payload.newSelf.state === MEETING_STATE.STATES.JOINED) {
|
|
1505
|
-
this.
|
|
1506
|
+
this.requestScreenShareFloor()
|
|
1506
1507
|
.then(() => { this.floorGrantPending = false; });
|
|
1507
1508
|
}
|
|
1508
1509
|
});
|
|
@@ -1792,7 +1793,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1792
1793
|
this,
|
|
1793
1794
|
{
|
|
1794
1795
|
file: 'meeting/index',
|
|
1795
|
-
function: '
|
|
1796
|
+
function: 'localShare'
|
|
1796
1797
|
},
|
|
1797
1798
|
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
1798
1799
|
{
|
|
@@ -3999,7 +4000,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3999
4000
|
|
|
4000
4001
|
try {
|
|
4001
4002
|
if (this.isSharing) {
|
|
4002
|
-
await this.
|
|
4003
|
+
await this.releaseScreenShareFloor();
|
|
4003
4004
|
}
|
|
4004
4005
|
const mediaSettings = {
|
|
4005
4006
|
mediaDirection: {
|
|
@@ -4479,7 +4480,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4479
4480
|
|
|
4480
4481
|
if (mediaSettings && mediaSettings.sendShare && localShare) {
|
|
4481
4482
|
if (this.state === MEETING_STATE.STATES.JOINED) {
|
|
4482
|
-
return this.
|
|
4483
|
+
return this.requestScreenShareFloor();
|
|
4483
4484
|
}
|
|
4484
4485
|
|
|
4485
4486
|
// When the self state changes to JOINED then request the floor
|
|
@@ -4712,7 +4713,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4712
4713
|
// we actually get a OFFER from the server and a GLAR condition happens
|
|
4713
4714
|
if (startShare) {
|
|
4714
4715
|
// We are assuming that the clients are connected when doing an update
|
|
4715
|
-
return this.
|
|
4716
|
+
return this.requestScreenShareFloor();
|
|
4716
4717
|
}
|
|
4717
4718
|
|
|
4718
4719
|
return Promise.resolve();
|
|
@@ -4861,7 +4862,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4861
4862
|
|
|
4862
4863
|
if (!sendShare && previousShareStatus) {
|
|
4863
4864
|
// When user stops sharing
|
|
4864
|
-
return this.
|
|
4865
|
+
return this.releaseScreenShareFloor()
|
|
4865
4866
|
.then(() => Promise.resolve(false));
|
|
4866
4867
|
}
|
|
4867
4868
|
|
|
@@ -4913,7 +4914,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4913
4914
|
})
|
|
4914
4915
|
.then(() => {
|
|
4915
4916
|
if (startShare) {
|
|
4916
|
-
return this.
|
|
4917
|
+
return this.requestScreenShareFloor();
|
|
4917
4918
|
}
|
|
4918
4919
|
|
|
4919
4920
|
return Promise.resolve();
|
|
@@ -5199,12 +5200,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5199
5200
|
}
|
|
5200
5201
|
|
|
5201
5202
|
/**
|
|
5202
|
-
*
|
|
5203
|
+
* Sends a request to Locus to obtain the screen share floor
|
|
5203
5204
|
* @returns {Promise} see #meetingRequest.changeMeetingFloor
|
|
5204
5205
|
* @private
|
|
5205
5206
|
* @memberof Meeting
|
|
5206
5207
|
*/
|
|
5207
|
-
private
|
|
5208
|
+
private requestScreenShareFloor() {
|
|
5208
5209
|
const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);
|
|
5209
5210
|
|
|
5210
5211
|
if (content && (this.shareStatus !== SHARE_STATUS.LOCAL_SHARE_ACTIVE)) {
|
|
@@ -5259,12 +5260,12 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5259
5260
|
}
|
|
5260
5261
|
|
|
5261
5262
|
/**
|
|
5262
|
-
*
|
|
5263
|
+
* Sends a request to Locus to release the screen share floor.
|
|
5263
5264
|
* @returns {Promise} see #meetingRequest.changeMeetingFloor
|
|
5264
5265
|
* @private
|
|
5265
5266
|
* @memberof Meeting
|
|
5266
5267
|
*/
|
|
5267
|
-
private
|
|
5268
|
+
private releaseScreenShareFloor() {
|
|
5268
5269
|
const content = this.locusInfo.mediaShares.find((element) => element.name === CONTENT);
|
|
5269
5270
|
|
|
5270
5271
|
if (content && (this.mediaProperties.mediaDirection.sendShare)) {
|
|
@@ -5286,7 +5287,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5286
5287
|
resourceUrl: this.resourceUrl
|
|
5287
5288
|
})
|
|
5288
5289
|
.catch((error) => {
|
|
5289
|
-
LoggerProxy.logger.error('Meeting:index#
|
|
5290
|
+
LoggerProxy.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
|
|
5290
5291
|
|
|
5291
5292
|
Metrics.sendBehavioralMetric(
|
|
5292
5293
|
BEHAVIORAL_METRICS.STOP_FLOOR_REQUEST_FAILURE,
|
|
@@ -6212,4 +6213,35 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6212
6213
|
clearInterval(this.keepAliveTimerId);
|
|
6213
6214
|
this.keepAliveTimerId = null;
|
|
6214
6215
|
};
|
|
6216
|
+
|
|
6217
|
+
/**
|
|
6218
|
+
* Send a reaction inside the meeting.
|
|
6219
|
+
*
|
|
6220
|
+
* @param {ReactionType} reactionType - type of reaction to be sent. Example: "thumbs_up"
|
|
6221
|
+
* @param {SkinToneType} skinToneType - skin tone for the reaction. Example: "medium_dark"
|
|
6222
|
+
* @returns {Promise}
|
|
6223
|
+
* @public
|
|
6224
|
+
* @memberof Meeting
|
|
6225
|
+
*/
|
|
6226
|
+
public sendReaction(reactionType: ReactionType, skinToneType?: SkinToneType) {
|
|
6227
|
+
const reactionChannelUrl = this.locusInfo?.controls?.reactions?.reactionChannelUrl as string;
|
|
6228
|
+
const participantId = this.members.selfId;
|
|
6229
|
+
|
|
6230
|
+
const reactionData = Reactions[reactionType];
|
|
6231
|
+
|
|
6232
|
+
if (!reactionData) {
|
|
6233
|
+
return Promise.reject(new Error(`${reactionType} is not a valid reaction.`));
|
|
6234
|
+
}
|
|
6235
|
+
const skinToneData = SkinTones[skinToneType] || SkinTones.normal;
|
|
6236
|
+
const reaction: Reaction = {
|
|
6237
|
+
...reactionData,
|
|
6238
|
+
tone: skinToneData
|
|
6239
|
+
};
|
|
6240
|
+
|
|
6241
|
+
if (reactionChannelUrl) {
|
|
6242
|
+
return this.meetingRequest.sendReaction({reactionChannelUrl, reaction, participantId});
|
|
6243
|
+
}
|
|
6244
|
+
|
|
6245
|
+
return Promise.reject(new Error('Error sending reaction, service url not found.'));
|
|
6246
|
+
}
|
|
6215
6247
|
}
|