@webex/plugin-meetings 2.6.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +31 -13
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/util.js +8 -0
- package/dist/meeting/util.js.map +1 -1
- package/dist/members/index.js +26 -0
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +11 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +24 -2
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +5 -1
- package/dist/metrics/constants.js.map +1 -1
- package/package.json +6 -6
- package/src/constants.js +3 -1
- package/src/meeting/in-meeting-actions.js +5 -2
- package/src/meeting/index.js +28 -1
- package/src/meeting/util.js +4 -0
- package/src/members/index.js +20 -0
- package/src/members/request.js +10 -0
- package/src/members/util.js +23 -2
- package/src/metrics/constants.js +5 -1
- package/test/unit/spec/meeting/in-meeting-actions.js +5 -1
- package/test/unit/spec/meeting/index.js +39 -3
- package/test/unit/spec/meeting/utils.js +14 -1
- package/test/unit/spec/members/index.js +23 -0
- package/test/unit/spec/members/request.js +21 -0
package/dist/members/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MembersUtil","generateAddMemberOptions","invitee","locusUrl","alertIfActive","generateAdmitMemberOptions","memberIds","getAddMemberBody","options","invitees","address","emailAddress","email","phoneNumber","getAdmitMemberRequestBody","admit","participantIds","getAdmitMemberRequestParams","format","body","uri","CONTROLS","method","HTTP_VERBS","PUT","getAddMemberRequestParams","requestParams","isInvalidInvitee","DIALER_REGEX","E164_FORMAT","test","VALID_EMAIL_ADDRESS","getRemoveMemberRequestParams","reason","PARTICIPANT","memberId","LEAVE","generateTransferHostMemberOptions","transfer","moderator","generateRemoveMemberOptions","removal","_FORCED_","generateMuteMemberOptions","mute","status","muted","getMuteMemberRequestParams","audio","PATCH","getTransferHostToMemberRequestParams","role","genderateSendDTMFOptions","url","tones","generateSendDTMFRequestParams","device","dtmf","correlationId","uuid","v4","direction","SEND_DTMF_ENDPOINT","POST","cancelPhoneInviteOptions","generateCancelInviteRequestParams","actionType","_REMOVE_"],"sources":["util.js"],"sourcesContent":["import uuid from 'uuid';\n\nimport {\n HTTP_VERBS,\n CONTROLS,\n _FORCED_,\n LEAVE,\n PARTICIPANT,\n VALID_EMAIL_ADDRESS,\n DIALER_REGEX,\n SEND_DTMF_ENDPOINT,\n _REMOVE_\n} from '../constants';\n\nconst MembersUtil = {};\n\n/**\n * @param {Object} invitee with emailAddress, email or phoneNumber\n * @param {String} locusUrl\n * @param {Boolean} alertIfActive\n * @returns {Object} the format object\n */\nMembersUtil.generateAddMemberOptions = (invitee, locusUrl, alertIfActive) => ({\n invitee,\n locusUrl,\n alertIfActive\n});\n\n/**\n * @param {Array} memberIds\n * @param {String} locusUrl\n * @returns {Object} the format object\n */\nMembersUtil.generateAdmitMemberOptions = (memberIds, locusUrl) => ({\n locusUrl,\n memberIds\n});\n\n/**\n * @param {Object} options with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}\n * @returns {Object} with {invitees: [{address}], alertIfActive}\n */\nMembersUtil.getAddMemberBody = (options) => ({\n invitees: [\n {\n address: options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber\n }\n ],\n alertIfActive: options.alertIfActive\n});\n\n/**\n * @param {Object} options with {memberIds}\n * @returns {Object} admit with {memberIds}\n */\nMembersUtil.getAdmitMemberRequestBody = (options) => ({\n admit: {participantIds: options.memberIds}\n});\n\n/**\n * @param {Object} format with {memberIds, locusUrl}\n * @returns {Object} the request parameters (method, uri, body) needed to make a admitMember request\n */\nMembersUtil.getAdmitMemberRequestParams = (format) => {\n const body = MembersUtil.getAdmitMemberRequestBody(format);\n const uri = `${format.locusUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\n/**\n * @param {Object} format with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}\n * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request\n */\nMembersUtil.getAddMemberRequestParams = (format) => {\n const body = MembersUtil.getAddMemberBody(format);\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: format.locusUrl,\n body\n };\n\n return requestParams;\n};\n\nMembersUtil.isInvalidInvitee = (invitee) => {\n if (!(invitee && (invitee.email || invitee.emailAddress || invitee.phoneNumber))) {\n return true;\n }\n\n if (invitee.phoneNumber) {\n return !DIALER_REGEX.E164_FORMAT.test(invitee.phoneNumber);\n }\n\n return !VALID_EMAIL_ADDRESS.test(invitee.email || invitee.emailAddress);\n};\n\nMembersUtil.getRemoveMemberRequestParams = (options) => {\n const body = {\n reason: options.reason\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${LEAVE}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\nMembersUtil.generateTransferHostMemberOptions = (transfer, moderator, locusUrl) => ({\n moderator,\n locusUrl,\n memberId: transfer\n});\n\nMembersUtil.generateRemoveMemberOptions = (removal, locusUrl) => ({\n reason: _FORCED_,\n memberId: removal,\n locusUrl\n});\n\nMembersUtil.generateMuteMemberOptions = (mute, status, locusUrl) => ({\n memberId: mute,\n muted: status,\n locusUrl\n});\n\nMembersUtil.getMuteMemberRequestParams = (options) => {\n const body = {\n audio: {\n muted: options.muted\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nMembersUtil.getTransferHostToMemberRequestParams = (options) => {\n const body = {\n role: {\n moderator: options.moderator\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nMembersUtil.genderateSendDTMFOptions = (url, tones, memberId, locusUrl) => ({\n url,\n tones,\n memberId,\n locusUrl\n});\n\nMembersUtil.generateSendDTMFRequestParams = ({\n url, tones, memberId, locusUrl\n}) => {\n const body = {\n device: {\n url\n },\n memberId,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n direction: 'transmit'\n }\n };\n const uri = `${locusUrl}/${PARTICIPANT}/${memberId}/${SEND_DTMF_ENDPOINT}`;\n\n return {\n method: HTTP_VERBS.POST,\n uri,\n body\n };\n};\n\nMembersUtil.cancelPhoneInviteOptions = (invitee, locusUrl) => ({\n invitee,\n locusUrl\n});\n\nMembersUtil.generateCancelInviteRequestParams = (options) => {\n const body = {\n actionType: _REMOVE_,\n invitees: [\n {\n address: options.invitee.phoneNumber\n }\n ]\n };\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: options.locusUrl,\n body\n };\n\n return requestParams;\n};\n\nexport default MembersUtil;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MembersUtil","generateAddMemberOptions","invitee","locusUrl","alertIfActive","generateAdmitMemberOptions","memberIds","getAddMemberBody","options","invitees","address","emailAddress","email","phoneNumber","getAdmitMemberRequestBody","admit","participantIds","getAdmitMemberRequestParams","format","body","uri","CONTROLS","method","HTTP_VERBS","PUT","getAddMemberRequestParams","requestParams","isInvalidInvitee","DIALER_REGEX","E164_FORMAT","test","VALID_EMAIL_ADDRESS","getRemoveMemberRequestParams","reason","PARTICIPANT","memberId","LEAVE","generateTransferHostMemberOptions","transfer","moderator","generateRemoveMemberOptions","removal","_FORCED_","generateMuteMemberOptions","status","muted","generateRaiseHandMemberOptions","raised","getMuteMemberRequestParams","audio","PATCH","getRaiseHandMemberRequestParams","hand","getTransferHostToMemberRequestParams","role","genderateSendDTMFOptions","url","tones","generateSendDTMFRequestParams","device","dtmf","correlationId","uuid","v4","direction","SEND_DTMF_ENDPOINT","POST","cancelPhoneInviteOptions","generateCancelInviteRequestParams","actionType","_REMOVE_"],"sources":["util.js"],"sourcesContent":["import uuid from 'uuid';\n\nimport {\n HTTP_VERBS,\n CONTROLS,\n _FORCED_,\n LEAVE,\n PARTICIPANT,\n VALID_EMAIL_ADDRESS,\n DIALER_REGEX,\n SEND_DTMF_ENDPOINT,\n _REMOVE_\n} from '../constants';\n\nconst MembersUtil = {};\n\n/**\n * @param {Object} invitee with emailAddress, email or phoneNumber\n * @param {String} locusUrl\n * @param {Boolean} alertIfActive\n * @returns {Object} the format object\n */\nMembersUtil.generateAddMemberOptions = (invitee, locusUrl, alertIfActive) => ({\n invitee,\n locusUrl,\n alertIfActive\n});\n\n/**\n * @param {Array} memberIds\n * @param {String} locusUrl\n * @returns {Object} the format object\n */\nMembersUtil.generateAdmitMemberOptions = (memberIds, locusUrl) => ({\n locusUrl,\n memberIds\n});\n\n/**\n * @param {Object} options with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}\n * @returns {Object} with {invitees: [{address}], alertIfActive}\n */\nMembersUtil.getAddMemberBody = (options) => ({\n invitees: [\n {\n address: options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber\n }\n ],\n alertIfActive: options.alertIfActive\n});\n\n/**\n * @param {Object} options with {memberIds}\n * @returns {Object} admit with {memberIds}\n */\nMembersUtil.getAdmitMemberRequestBody = (options) => ({\n admit: {participantIds: options.memberIds}\n});\n\n/**\n * @param {Object} format with {memberIds, locusUrl}\n * @returns {Object} the request parameters (method, uri, body) needed to make a admitMember request\n */\nMembersUtil.getAdmitMemberRequestParams = (format) => {\n const body = MembersUtil.getAdmitMemberRequestBody(format);\n const uri = `${format.locusUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\n/**\n * @param {Object} format with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}\n * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request\n */\nMembersUtil.getAddMemberRequestParams = (format) => {\n const body = MembersUtil.getAddMemberBody(format);\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: format.locusUrl,\n body\n };\n\n return requestParams;\n};\n\nMembersUtil.isInvalidInvitee = (invitee) => {\n if (!(invitee && (invitee.email || invitee.emailAddress || invitee.phoneNumber))) {\n return true;\n }\n\n if (invitee.phoneNumber) {\n return !DIALER_REGEX.E164_FORMAT.test(invitee.phoneNumber);\n }\n\n return !VALID_EMAIL_ADDRESS.test(invitee.email || invitee.emailAddress);\n};\n\nMembersUtil.getRemoveMemberRequestParams = (options) => {\n const body = {\n reason: options.reason\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${LEAVE}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body\n };\n};\n\nMembersUtil.generateTransferHostMemberOptions = (transfer, moderator, locusUrl) => ({\n moderator,\n locusUrl,\n memberId: transfer\n});\n\nMembersUtil.generateRemoveMemberOptions = (removal, locusUrl) => ({\n reason: _FORCED_,\n memberId: removal,\n locusUrl\n});\n\nMembersUtil.generateMuteMemberOptions = (memberId, status, locusUrl) => ({\n memberId,\n muted: status,\n locusUrl\n});\n\nMembersUtil.generateRaiseHandMemberOptions = (memberId, status, locusUrl) => ({\n memberId,\n raised: status,\n locusUrl\n});\n\nMembersUtil.getMuteMemberRequestParams = (options) => {\n const body = {\n audio: {\n muted: options.muted\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nMembersUtil.getRaiseHandMemberRequestParams = (options) => {\n const body = {\n hand: {\n raised: options.raised\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nMembersUtil.getTransferHostToMemberRequestParams = (options) => {\n const body = {\n role: {\n moderator: options.moderator\n }\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body\n };\n};\n\nMembersUtil.genderateSendDTMFOptions = (url, tones, memberId, locusUrl) => ({\n url,\n tones,\n memberId,\n locusUrl\n});\n\nMembersUtil.generateSendDTMFRequestParams = ({\n url, tones, memberId, locusUrl\n}) => {\n const body = {\n device: {\n url\n },\n memberId,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n direction: 'transmit'\n }\n };\n const uri = `${locusUrl}/${PARTICIPANT}/${memberId}/${SEND_DTMF_ENDPOINT}`;\n\n return {\n method: HTTP_VERBS.POST,\n uri,\n body\n };\n};\n\nMembersUtil.cancelPhoneInviteOptions = (invitee, locusUrl) => ({\n invitee,\n locusUrl\n});\n\nMembersUtil.generateCancelInviteRequestParams = (options) => {\n const body = {\n actionType: _REMOVE_,\n invitees: [\n {\n address: options.invitee.phoneNumber\n }\n ]\n };\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: options.locusUrl,\n body\n };\n\n return requestParams;\n};\n\nexport default MembersUtil;\n"],"mappings":"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"}
|
|
@@ -46,7 +46,11 @@ var BEHAVIORAL_METRICS = {
|
|
|
46
46
|
PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',
|
|
47
47
|
INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',
|
|
48
48
|
UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',
|
|
49
|
-
RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure'
|
|
49
|
+
RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',
|
|
50
|
+
ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',
|
|
51
|
+
ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',
|
|
52
|
+
DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',
|
|
53
|
+
DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure'
|
|
50
54
|
};
|
|
51
55
|
exports.default = BEHAVIORAL_METRICS;
|
|
52
56
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE;
|
|
1
|
+
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","RECEIVE_TRANSCRIPTION_FAILURE","ENABLE_BNR_SUCCESS","ENABLE_BNR_FAILURE","DISABLE_BNR_SUCCESS","DISABLE_BNR_FAILURE"],"sources":["constants.js"],"sourcesContent":["\n// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',\n ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',\n DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',\n DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure'\n};\n\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;;;AACA;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCADL;EAEzBC,6BAA6B,EAAE,sCAFN;EAGzBC,0BAA0B,EAAE,mCAHH;EAIzBC,2BAA2B,EAAE,oCAJJ;EAKzBC,YAAY,EAAE,qBALW;EAMzBC,YAAY,EAAE,sBANW;EAOzBC,iBAAiB,EAAE,0BAPM;EAQzBC,iBAAiB,EAAE,2BARM;EASzBC,kBAAkB,EAAE,2BATK;EAUzBC,kBAAkB,EAAE,4BAVK;EAWzBC,qBAAqB,EAAE,8BAXE;EAYzBC,uBAAuB,EAAE,oCAZA;EAazBC,yBAAyB,EAAE,sCAbF;EAczBC,sBAAsB,EAAE,gCAdC;EAezBC,yBAAyB,EAAE,mCAfF;EAgBzBC,uBAAuB,EAAE,iCAhBA;EAkBzBC,4BAA4B,EAAE,qCAlBL;EAmBzBC,sBAAsB,EAAE,+BAnBC;EAoBzBC,yBAAyB,EAAE,mCApBF;EAqBzBC,0BAA0B,EAAE,mCArBH;EAsBzBC,qBAAqB,EAAE,+BAtBE;EAuBzBC,sCAAsC,EAAE,gDAvBf;EAwBzBC,qCAAqC,EAAE,+CAxBd;EAyBzBC,kBAAkB,EAAE,4BAzBK;EA0BzBC,kBAAkB,EAAE,4BA1BK;EA2BzBC,2BAA2B,EAAE,qCA3BJ;EA4BzBC,0BAA0B,EAAE,oCA5BH;EA6BzBC,mBAAmB,EAAE,4BA7BI;EA8BzBC,oBAAoB,EAAE,6BA9BG;EA+BzBC,oBAAoB,EAAE,8BA/BG;EAgCzBC,oBAAoB,EAAE,8BAhCG;EAiCzBC,oBAAoB,EAAE,8BAjCG;EAkCzBC,mBAAmB,EAAE,6BAlCI;EAmCzBC,oBAAoB,EAAE,4BAnCG;EAoCzBC,sBAAsB,EAAE,gCApCC;EAqCzBC,qBAAqB,EAAE,8BArCE;EAsCzBC,mBAAmB,EAAE,4BAtCI;EAuCzBC,6BAA6B,EAAE,sCAvCN;EAwCzBC,kBAAkB,EAAE,2BAxCK;EAyCzBC,kBAAkB,EAAE,2BAzCK;EA0CzBC,mBAAmB,EAAE,4BA1CI;EA2CzBC,mBAAmB,EAAE;AA3CI,CAA3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"contributors": [
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@babel/runtime-corejs2": "^7.14.8",
|
|
27
|
-
"@webex/webex-core": "2.
|
|
28
|
-
"@webex/internal-plugin-mercury": "2.
|
|
29
|
-
"@webex/internal-plugin-conversation": "2.
|
|
27
|
+
"@webex/webex-core": "2.9.0",
|
|
28
|
+
"@webex/internal-plugin-mercury": "2.9.0",
|
|
29
|
+
"@webex/internal-plugin-conversation": "2.9.0",
|
|
30
30
|
"webrtc-adapter": "^7.7.0",
|
|
31
31
|
"lodash": "^4.17.21",
|
|
32
32
|
"uuid": "^3.3.2",
|
|
33
33
|
"global": "^4.4.0",
|
|
34
34
|
"ip-anonymize": "^0.1.0",
|
|
35
|
-
"@webex/common": "2.
|
|
35
|
+
"@webex/common": "2.9.0",
|
|
36
36
|
"bowser": "^2.11.0",
|
|
37
37
|
"sdp-transform": "^2.12.0",
|
|
38
38
|
"readable-stream": "^3.6.0",
|
|
39
|
-
"@webex/common-timers": "2.
|
|
39
|
+
"@webex/common-timers": "2.9.0",
|
|
40
40
|
"btoa": "^1.2.1",
|
|
41
41
|
"@webex/internal-media-core": "^0.0.4-beta",
|
|
42
42
|
"javascript-state-machine": "^3.1.0",
|
package/src/constants.js
CHANGED
|
@@ -820,7 +820,9 @@ export const DISPLAY_HINTS = {
|
|
|
820
820
|
LOCK_CONTROL_UNLOCK: 'LOCK_CONTROL_UNLOCK',
|
|
821
821
|
LOCK_CONTROL_LOCK: 'LOCK_CONTROL_LOCK',
|
|
822
822
|
LOCK_STATUS_LOCKED: 'LOCK_STATUS_LOCKED',
|
|
823
|
-
LOCK_STATUS_UNLOCKED: 'LOCK_STATUS_UNLOCKED'
|
|
823
|
+
LOCK_STATUS_UNLOCKED: 'LOCK_STATUS_UNLOCKED',
|
|
824
|
+
RAISE_HAND: 'RAISE_HAND',
|
|
825
|
+
LOWER_ALL_HANDS: 'LOWER_ALL_HANDS',
|
|
824
826
|
};
|
|
825
827
|
|
|
826
828
|
export const SELF_ROLES = {
|
|
@@ -20,6 +20,8 @@ export default class InMeetingActions {
|
|
|
20
20
|
this.canPauseRecording = null;
|
|
21
21
|
this.canResumeRecording = null;
|
|
22
22
|
this.canStopRecording = null;
|
|
23
|
+
this.canRaiseHand = null;
|
|
24
|
+
this.canLowerAllHands = null;
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
get() {
|
|
@@ -30,7 +32,9 @@ export default class InMeetingActions {
|
|
|
30
32
|
canStartRecording: this.canStartRecording,
|
|
31
33
|
canPauseRecording: this.canPauseRecording,
|
|
32
34
|
canResumeRecording: this.canResumeRecording,
|
|
33
|
-
canStopRecording: this.canStopRecording
|
|
35
|
+
canStopRecording: this.canStopRecording,
|
|
36
|
+
canRaiseHand: this.canRaiseHand,
|
|
37
|
+
canLowerAllHands: this.canLowerAllHands,
|
|
34
38
|
};
|
|
35
39
|
}
|
|
36
40
|
|
|
@@ -51,4 +55,3 @@ export default class InMeetingActions {
|
|
|
51
55
|
return changed;
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
|
-
|
package/src/meeting/index.js
CHANGED
|
@@ -1871,7 +1871,9 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
1871
1871
|
canStartRecording: MeetingUtil.canUserRecord(payload.info.userDisplayHints),
|
|
1872
1872
|
canStopRecording: MeetingUtil.canUserStop(payload.info.userDisplayHints),
|
|
1873
1873
|
canPauseRecording: MeetingUtil.canUserPause(payload.info.userDisplayHints),
|
|
1874
|
-
canResumeRecording: MeetingUtil.canUserResume(payload.info.userDisplayHints)
|
|
1874
|
+
canResumeRecording: MeetingUtil.canUserResume(payload.info.userDisplayHints),
|
|
1875
|
+
canRaiseHand: MeetingUtil.canUserRaiseHand(payload.info.userDisplayHints),
|
|
1876
|
+
canLowerAllHands: MeetingUtil.canUserLowerAllHands(payload.info.userDisplayHints),
|
|
1875
1877
|
});
|
|
1876
1878
|
|
|
1877
1879
|
if (changed) {
|
|
@@ -5767,9 +5769,21 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5767
5769
|
});
|
|
5768
5770
|
this.isBnrEnabled = true;
|
|
5769
5771
|
isSuccess = true;
|
|
5772
|
+
Metrics.sendBehavioralMetric(
|
|
5773
|
+
BEHAVIORAL_METRICS.ENABLE_BNR_SUCCESS,
|
|
5774
|
+
);
|
|
5770
5775
|
}
|
|
5771
5776
|
catch (error) {
|
|
5772
5777
|
LoggerProxy.logger.error(`Meeting:index#enableBNR. ${error}`);
|
|
5778
|
+
|
|
5779
|
+
Metrics.sendBehavioralMetric(
|
|
5780
|
+
BEHAVIORAL_METRICS.ENABLE_BNR_FAILURE,
|
|
5781
|
+
{
|
|
5782
|
+
reason: error.message,
|
|
5783
|
+
stack: error.stack
|
|
5784
|
+
}
|
|
5785
|
+
);
|
|
5786
|
+
|
|
5773
5787
|
throw error;
|
|
5774
5788
|
}
|
|
5775
5789
|
|
|
@@ -5801,9 +5815,22 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5801
5815
|
});
|
|
5802
5816
|
this.isBnrEnabled = false;
|
|
5803
5817
|
isSuccess = true;
|
|
5818
|
+
|
|
5819
|
+
Metrics.sendBehavioralMetric(
|
|
5820
|
+
BEHAVIORAL_METRICS.DISABLE_BNR_SUCCESS
|
|
5821
|
+
);
|
|
5804
5822
|
}
|
|
5805
5823
|
catch (error) {
|
|
5806
5824
|
LoggerProxy.logger.error(`Meeting:index#disableBNR. ${error}`);
|
|
5825
|
+
|
|
5826
|
+
Metrics.sendBehavioralMetric(
|
|
5827
|
+
BEHAVIORAL_METRICS.DISABLE_BNR_FAILURE,
|
|
5828
|
+
{
|
|
5829
|
+
reason: error.message,
|
|
5830
|
+
stack: error.stack
|
|
5831
|
+
}
|
|
5832
|
+
);
|
|
5833
|
+
|
|
5807
5834
|
throw error;
|
|
5808
5835
|
}
|
|
5809
5836
|
|
package/src/meeting/util.js
CHANGED
|
@@ -441,6 +441,10 @@ MeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {
|
|
|
441
441
|
return Promise.reject(new PermissionError('Stop recording not allowed, due to moderator property.'));
|
|
442
442
|
};
|
|
443
443
|
|
|
444
|
+
MeetingUtil.canUserRaiseHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND);
|
|
445
|
+
|
|
446
|
+
MeetingUtil.canUserLowerAllHands = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS);
|
|
447
|
+
|
|
444
448
|
MeetingUtil.lockMeeting = (actions, request, locusUrl) => {
|
|
445
449
|
if (actions && actions.canLock) {
|
|
446
450
|
return request.lockMeeting({locusUrl, lock: true});
|
package/src/members/index.js
CHANGED
|
@@ -739,6 +739,26 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
739
739
|
return this.membersRequest.muteMember(options);
|
|
740
740
|
}
|
|
741
741
|
|
|
742
|
+
/**
|
|
743
|
+
* Raise or lower the hand of a member in a meeting
|
|
744
|
+
* @param {String} memberId
|
|
745
|
+
* @param {boolean} [raise] - to raise hand (=true) or lower (=false), default: true
|
|
746
|
+
* @returns {Promise}
|
|
747
|
+
* @public
|
|
748
|
+
* @memberof Members
|
|
749
|
+
*/
|
|
750
|
+
raiseOrLowerHand(memberId, raise = true) {
|
|
751
|
+
if (!this.locusUrl) {
|
|
752
|
+
return Promise.reject(new ParameterError('The associated locus url for this meetings members object must be defined.'));
|
|
753
|
+
}
|
|
754
|
+
if (!memberId) {
|
|
755
|
+
return Promise.reject(new ParameterError('The member id must be defined to raise/lower the hand of the member.'));
|
|
756
|
+
}
|
|
757
|
+
const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
|
|
758
|
+
|
|
759
|
+
return this.membersRequest.raiseLowerHandMember(options);
|
|
760
|
+
}
|
|
761
|
+
|
|
742
762
|
/**
|
|
743
763
|
* Transfers the host to another member
|
|
744
764
|
* @param {String} memberId
|
package/src/members/request.js
CHANGED
|
@@ -64,6 +64,16 @@ export default class MembersRequest extends StatelessWebexPlugin {
|
|
|
64
64
|
return this.request(requestParams);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
raiseOrLowerHandMember(options) {
|
|
68
|
+
if (!options || !options.locusUrl || !options.memberId) {
|
|
69
|
+
throw new ParameterError('memberId must be defined, and the associated locus url for this meeting object must be defined.');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const requestParams = MembersUtil.getRaiseHandMemberRequestParams(options);
|
|
73
|
+
|
|
74
|
+
return this.request(requestParams);
|
|
75
|
+
}
|
|
76
|
+
|
|
67
77
|
transferHostToMember(options) {
|
|
68
78
|
if (!options || !options.locusUrl || !options.memberId || !options.moderator) {
|
|
69
79
|
throw new ParameterError('memberId must be defined, the associated locus url, and the moderator for this meeting object must be defined.');
|
package/src/members/util.js
CHANGED
|
@@ -124,12 +124,18 @@ MembersUtil.generateRemoveMemberOptions = (removal, locusUrl) => ({
|
|
|
124
124
|
locusUrl
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
MembersUtil.generateMuteMemberOptions = (
|
|
128
|
-
memberId
|
|
127
|
+
MembersUtil.generateMuteMemberOptions = (memberId, status, locusUrl) => ({
|
|
128
|
+
memberId,
|
|
129
129
|
muted: status,
|
|
130
130
|
locusUrl
|
|
131
131
|
});
|
|
132
132
|
|
|
133
|
+
MembersUtil.generateRaiseHandMemberOptions = (memberId, status, locusUrl) => ({
|
|
134
|
+
memberId,
|
|
135
|
+
raised: status,
|
|
136
|
+
locusUrl
|
|
137
|
+
});
|
|
138
|
+
|
|
133
139
|
MembersUtil.getMuteMemberRequestParams = (options) => {
|
|
134
140
|
const body = {
|
|
135
141
|
audio: {
|
|
@@ -145,6 +151,21 @@ MembersUtil.getMuteMemberRequestParams = (options) => {
|
|
|
145
151
|
};
|
|
146
152
|
};
|
|
147
153
|
|
|
154
|
+
MembersUtil.getRaiseHandMemberRequestParams = (options) => {
|
|
155
|
+
const body = {
|
|
156
|
+
hand: {
|
|
157
|
+
raised: options.raised
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
method: HTTP_VERBS.PATCH,
|
|
164
|
+
uri,
|
|
165
|
+
body
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
|
|
148
169
|
MembersUtil.getTransferHostToMemberRequestParams = (options) => {
|
|
149
170
|
const body = {
|
|
150
171
|
role: {
|
package/src/metrics/constants.js
CHANGED
|
@@ -40,7 +40,11 @@ const BEHAVIORAL_METRICS = {
|
|
|
40
40
|
PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',
|
|
41
41
|
INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',
|
|
42
42
|
UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',
|
|
43
|
-
RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure'
|
|
43
|
+
RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',
|
|
44
|
+
ENABLE_BNR_SUCCESS: 'js_sdk_enable_bnr_success',
|
|
45
|
+
ENABLE_BNR_FAILURE: 'js_sdk_enable_bnr_failure',
|
|
46
|
+
DISABLE_BNR_SUCCESS: 'js_sdk_disable_bnr_success',
|
|
47
|
+
DISABLE_BNR_FAILURE: 'js_sdk_disable_bnr_failure'
|
|
44
48
|
};
|
|
45
49
|
|
|
46
50
|
|
|
@@ -14,6 +14,8 @@ describe('plugin-meetings', () => {
|
|
|
14
14
|
canPauseRecording: null,
|
|
15
15
|
canResumeRecording: null,
|
|
16
16
|
canStopRecording: null,
|
|
17
|
+
canRaiseHand: null,
|
|
18
|
+
canLowerAllHands: null,
|
|
17
19
|
...expected
|
|
18
20
|
};
|
|
19
21
|
|
|
@@ -33,7 +35,9 @@ describe('plugin-meetings', () => {
|
|
|
33
35
|
'canStartRecording',
|
|
34
36
|
'canPauseRecording',
|
|
35
37
|
'canResumeRecording',
|
|
36
|
-
'canStopRecording'
|
|
38
|
+
'canStopRecording',
|
|
39
|
+
'canRaiseHand',
|
|
40
|
+
'canLowerAllHands',
|
|
37
41
|
].forEach((key) => {
|
|
38
42
|
it(`get and set for ${key} work as expected`, () => {
|
|
39
43
|
const inMeetingActions = new InMeetingActions();
|
|
@@ -74,6 +74,13 @@ describe('plugin-meetings', () => {
|
|
|
74
74
|
debug: () => {}
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
+
beforeEach(() => {
|
|
78
|
+
sinon.stub(Metrics, 'sendBehavioralMetric');
|
|
79
|
+
});
|
|
80
|
+
afterEach(() => {
|
|
81
|
+
sinon.restore();
|
|
82
|
+
});
|
|
83
|
+
|
|
77
84
|
before(() => {
|
|
78
85
|
const MediaStream = {
|
|
79
86
|
getVideoTracks: () => [{
|
|
@@ -577,7 +584,7 @@ describe('plugin-meetings', () => {
|
|
|
577
584
|
assert.equal(response, true);
|
|
578
585
|
});
|
|
579
586
|
|
|
580
|
-
it('should throw error for inappropriate sample rate', async () => {
|
|
587
|
+
it('should throw error for inappropriate sample rate and send error metrics', async () => {
|
|
581
588
|
const fakeMediaTrack = () => ({
|
|
582
589
|
stop: () => {},
|
|
583
590
|
readyState: 'live',
|
|
@@ -588,9 +595,28 @@ describe('plugin-meetings', () => {
|
|
|
588
595
|
|
|
589
596
|
sinon.stub(meeting.mediaProperties, 'audioTrack').value(fakeMediaTrack());
|
|
590
597
|
await meeting.enableBNR().catch((err) => {
|
|
598
|
+
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
599
|
+
assert.calledWith(
|
|
600
|
+
Metrics.sendBehavioralMetric,
|
|
601
|
+
BEHAVIORAL_METRICS.ENABLE_BNR_FAILURE, {
|
|
602
|
+
reason: err.message,
|
|
603
|
+
stack: err.stack
|
|
604
|
+
}
|
|
605
|
+
);
|
|
591
606
|
assert.equal(err.message, 'Sample rate of 49000 is not supported.');
|
|
592
607
|
});
|
|
593
608
|
});
|
|
609
|
+
|
|
610
|
+
it('should send metrics for enable bnr success', async () => {
|
|
611
|
+
const response = await meeting.enableBNR();
|
|
612
|
+
|
|
613
|
+
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
614
|
+
assert.calledWith(
|
|
615
|
+
Metrics.sendBehavioralMetric,
|
|
616
|
+
BEHAVIORAL_METRICS.ENABLE_BNR_SUCCESS,
|
|
617
|
+
);
|
|
618
|
+
assert.equal(response, true);
|
|
619
|
+
});
|
|
594
620
|
});
|
|
595
621
|
});
|
|
596
622
|
|
|
@@ -605,8 +631,13 @@ describe('plugin-meetings', () => {
|
|
|
605
631
|
assert.equal(response, true);
|
|
606
632
|
});
|
|
607
633
|
|
|
608
|
-
it('should throw error if bnr is not enabled before disabling', async () => {
|
|
634
|
+
it('should throw error if bnr is not enabled before disabling and send error metrics', async () => {
|
|
609
635
|
await meeting.disableBNR().catch((err) => {
|
|
636
|
+
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
637
|
+
assert.calledWith(
|
|
638
|
+
Metrics.sendBehavioralMetric,
|
|
639
|
+
BEHAVIORAL_METRICS.DISABLE_BNR_FAILURE,
|
|
640
|
+
);
|
|
610
641
|
assert.equal(err.message, 'Can not disable as BNR is not enabled');
|
|
611
642
|
});
|
|
612
643
|
});
|
|
@@ -2773,7 +2804,6 @@ describe('plugin-meetings', () => {
|
|
|
2773
2804
|
});
|
|
2774
2805
|
|
|
2775
2806
|
it('should send metrics on reconnect failure', async () => {
|
|
2776
|
-
sandbox.stub(Metrics, 'sendBehavioralMetric');
|
|
2777
2807
|
await assert.isRejected(meeting.reconnect());
|
|
2778
2808
|
assert(Metrics.sendBehavioralMetric.calledOnce);
|
|
2779
2809
|
assert.calledWith(
|
|
@@ -3369,6 +3399,8 @@ describe('plugin-meetings', () => {
|
|
|
3369
3399
|
let canUserStopSpy;
|
|
3370
3400
|
let canUserPauseSpy;
|
|
3371
3401
|
let canUserResumeSpy;
|
|
3402
|
+
let canUserRaiseHandSpy;
|
|
3403
|
+
let canUserLowerAllHandsSpy;
|
|
3372
3404
|
|
|
3373
3405
|
|
|
3374
3406
|
beforeEach(() => {
|
|
@@ -3380,6 +3412,8 @@ describe('plugin-meetings', () => {
|
|
|
3380
3412
|
canUserPauseSpy = sinon.spy(MeetingUtil, 'canUserPause');
|
|
3381
3413
|
canUserResumeSpy = sinon.spy(MeetingUtil, 'canUserResume');
|
|
3382
3414
|
inMeetingActionsSetSpy = sinon.spy(meeting.inMeetingActions, 'set');
|
|
3415
|
+
canUserRaiseHandSpy = sinon.spy(MeetingUtil, 'canUserRaiseHand');
|
|
3416
|
+
canUserLowerAllHandsSpy = sinon.spy(MeetingUtil, 'canUserLowerAllHands');
|
|
3383
3417
|
});
|
|
3384
3418
|
|
|
3385
3419
|
afterEach(() => {
|
|
@@ -3412,6 +3446,8 @@ describe('plugin-meetings', () => {
|
|
|
3412
3446
|
assert.calledWith(canUserStopSpy, payload.info.userDisplayHints);
|
|
3413
3447
|
assert.calledWith(canUserPauseSpy, payload.info.userDisplayHints);
|
|
3414
3448
|
assert.calledWith(canUserResumeSpy, payload.info.userDisplayHints);
|
|
3449
|
+
assert.calledWith(canUserRaiseHandSpy, payload.info.userDisplayHints);
|
|
3450
|
+
assert.calledWith(canUserLowerAllHandsSpy, payload.info.userDisplayHints);
|
|
3415
3451
|
|
|
3416
3452
|
assert.calledWith(
|
|
3417
3453
|
TriggerProxy.trigger,
|
|
@@ -214,6 +214,20 @@ describe('plugin-meetings', () => {
|
|
|
214
214
|
});
|
|
215
215
|
});
|
|
216
216
|
|
|
217
|
+
describe('canUserRaiseHand', () => {
|
|
218
|
+
it('works as expected', () => {
|
|
219
|
+
assert.deepEqual(MeetingUtil.canUserRaiseHand(['RAISE_HAND']), true);
|
|
220
|
+
assert.deepEqual(MeetingUtil.canUserRaiseHand([]), false);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
describe('canUserLowerAllHands', () => {
|
|
225
|
+
it('works as expected', () => {
|
|
226
|
+
assert.deepEqual(MeetingUtil.canUserLowerAllHands(['LOWER_ALL_HANDS']), true);
|
|
227
|
+
assert.deepEqual(MeetingUtil.canUserLowerAllHands([]), false);
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
|
|
217
231
|
describe('canUserLock', () => {
|
|
218
232
|
it('works as expected', () => {
|
|
219
233
|
assert.deepEqual(MeetingUtil.canUserLock(['LOCK_CONTROL_LOCK', 'LOCK_STATUS_UNLOCKED']), true);
|
|
@@ -362,4 +376,3 @@ describe('plugin-meetings', () => {
|
|
|
362
376
|
});
|
|
363
377
|
});
|
|
364
378
|
});
|
|
365
|
-
|
|
@@ -11,6 +11,7 @@ import {Credentials} from '@webex/webex-core';
|
|
|
11
11
|
import Support from '@webex/internal-plugin-support';
|
|
12
12
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
13
13
|
import Meetings from '@webex/plugin-meetings';
|
|
14
|
+
|
|
14
15
|
import Members from '@webex/plugin-meetings/src/members';
|
|
15
16
|
import MembersUtil from '@webex/plugin-meetings/src/members/util';
|
|
16
17
|
|
|
@@ -189,5 +190,27 @@ describe('plugin-meetings', () => {
|
|
|
189
190
|
assert.isRejected(members.cancelPhoneInvite({phoneNumber: '+18578675309'}));
|
|
190
191
|
});
|
|
191
192
|
});
|
|
193
|
+
|
|
194
|
+
describe('#raiseHand', () => {
|
|
195
|
+
it('should fire spies correctly when raiseOrLowerHand is called with valid params', async () => {
|
|
196
|
+
const members = createMembers({url: url1});
|
|
197
|
+
|
|
198
|
+
const {membersRequest} = members;
|
|
199
|
+
|
|
200
|
+
const generateOptionsSpy = sandbox.spy(MembersUtil, 'generateRaiseHandMemberOptions');
|
|
201
|
+
const raiseOrLowerHandMemberSpy = sandbox.spy(membersRequest, 'raiseOrLowerHandMember');
|
|
202
|
+
|
|
203
|
+
await members.raiseOrLowerHand('test1', true);
|
|
204
|
+
|
|
205
|
+
assert.calledOnce(generateOptionsSpy);
|
|
206
|
+
assert.calledOnce(raiseOrLowerHandMemberSpy);
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
it('should throw a rejection if there is no locus url', async () => {
|
|
210
|
+
const members = createMembers({url: false});
|
|
211
|
+
|
|
212
|
+
assert.isRejected(members.raiseOrLowerHand('test1', true));
|
|
213
|
+
});
|
|
214
|
+
});
|
|
192
215
|
});
|
|
193
216
|
});
|
|
@@ -4,6 +4,7 @@ import uuid from 'uuid';
|
|
|
4
4
|
import chaiAsPromised from 'chai-as-promised';
|
|
5
5
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
6
6
|
import Meetings from '@webex/plugin-meetings';
|
|
7
|
+
|
|
7
8
|
import MembersRequest from '@webex/plugin-meetings/src/members/request';
|
|
8
9
|
|
|
9
10
|
const {assert} = chai;
|
|
@@ -97,5 +98,25 @@ describe('plugin-meetings', () => {
|
|
|
97
98
|
assert.equal(requestParams.body.actionType, 'REMOVE');
|
|
98
99
|
});
|
|
99
100
|
});
|
|
101
|
+
|
|
102
|
+
describe('#raiseHand', () => {
|
|
103
|
+
it('sends a PATCH to the locus endpoint', async () => {
|
|
104
|
+
const locusUrl = url1;
|
|
105
|
+
const memberId = 'test1';
|
|
106
|
+
|
|
107
|
+
const options = {
|
|
108
|
+
memberId,
|
|
109
|
+
locusUrl,
|
|
110
|
+
raised: true
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
await membersRequest.raiseOrLowerHandMember(options);
|
|
114
|
+
const requestParams = membersRequest.request.getCall(0).args[0];
|
|
115
|
+
|
|
116
|
+
assert.equal(requestParams.method, 'PATCH');
|
|
117
|
+
assert.equal(requestParams.uri, `${locusUrl}/participant/${memberId}/controls`);
|
|
118
|
+
assert.equal(requestParams.body.hand.raised, true);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
100
121
|
});
|
|
101
122
|
});
|